一个雷达跑通了五种 SLAM 算法 用 M360 做了一个实验:同一个场景,跑五款不同的 SLAM 算法,看哪个效果好。 不是为了证明 M360 兼容性好——这个不用证明,只要是 ROS2 支持的 LiDAR,理论上都能跑。我们想知道的是,M360 的非重复扫描点云在不同算法里的表现差异有多大,哪种算法最适合 M360。 测试环境 硬件:工控机(Intel i7-12700H,32GB 内存),M360 安装在一台 AGV 上。 软件:Ubuntu 22.04,ROS2 Humble,五款 SLAM 算法分别是 FAST-LIO2、LIO-SAM、Point-LIO、RT-LOAM 和 Cartographer。 测试场景:一条 200m 长的仓库通道,两侧是货架,通道宽度 3m,末端有一个 90° 转弯。 跑的时候 AGV 以 0.8m/s 的速度匀速行驶,M360 装在车顶正中间,光学中心朝上 5°。 FAST-LIO2:最稳的选择 FAST-LIO2 是目前用得最多的 LiDAR-IMU 融合 SLAM 算法,对非重复扫描的支持很成熟。 测试结果:建图效果最好。点云地图很干净,几乎没有漂移。跑完 200m 通道再回到起点,回环误差大概 2~3cm。 CPU 占用率在 i7-12700H 上只有 15~20%,非常轻量。M360 的内置 IMU 数据直接喂给 FAST-LIO2 的 IMU 预积分模块,不需要外接 IMU。 有一个小问题:FAST-LIO2 默认的点云降采样分辨率是 0.5m,对于 3m 宽的通道来说太粗了。我们改成 0.1m 之后,地图精细了很多,但 CPU 占用涨到了 35%。对 i7 来说无所谓,对低性能平台(树莓派、Jetson Nano)就需要权衡了。 适合 M360 的原因 :FAST-LIO2 的 iKD-Tree 数据结构对非重复扫描的高密度点云处理效率很高,不需要均匀扫描也能工作得很好。 LIO-SAM:老牌但不太适合 LIO-SAM 是基于因子图优化的 SLAM 算法,在均匀扫描的机械式雷达上表现很好。 测试结果:能用,但不如 FAST-LIO2。 问题在于 LIO-SAM 的角点提取模块。角点提取算法假设点云是均匀分布的扫描线(每一线是一条水平线),但 M360 的非重复扫描不是线状的,角点提取的效果打折扣。建图出来之后,地图的细节比 FAST-LIO2 少很多,边缘不够锐利。 另外一个问题:LIO-SAM 的回环检测模块依赖子地图匹配,在通道场景里特征比较单一,回环检测经常失败。FAST-LIO2 虽然也有这个问题,但因为有更好的 IMU 融合,漂移更小,回环误差也小。 结论 :LIO-SAM 能跑,但不是 M360 的最佳搭配。如果你已经有 LIO-SAM 的代码和经验,迁移到 M360 不会太困难,但效果不如 FAST-LIO2。 Point-LIO:低算力平台的救星 Point-LIO 是 FAST-LIO2 的精简版,专门为低算力平台优化。 测试结果:建图效果跟 FAST-LIO2 接近(几乎一样),但 CPU 占用率更低。在 i7 上只有 8~12%,大概比 FAST-LIO2 省了一半。 Point-LIO 的核心思想是逐点处理而不是逐帧处理——每来一个点就更新一次状态估计,不需要等一帧完整的点云。这个特性跟 M360 的非重复扫描天然契合:M360 的点云是非均匀的,"一帧"的概念本身就比较模糊,逐点处理反而更合适。 适合场景 :如果工控机性能有限(Jetson Nano、树莓派 4),Point-LIO 是首选。 RT-LOAM:实时的代价 RT-LOAM 强调实时性,在嵌入式平台上跑得快。 测试结果:速度确实快,CPU 占用率 5~8%。但建图质量不如 FAST-LIO2 和 Point-LIO,地图比较稀疏,漂移也稍大。 RT-LOAM 的实时性来自于简化了特征提取和状态估计的流程,在均匀扫描的雷达上这种简化影响不大,但在非重复扫描的雷达上,简化的流程对不规则点云的处理能力更弱。 结论 :如果对实时性要求极高、对精度要求一般,可以考虑。大部分项目还是建议用 FAST-LIO2 或 Point-LIO。 Cartographer:Google 的方案 Cartographer 是 Google 开源的 2D/3D SLAM 算法,支持纯 LiDAR(不需要 IMU)。 测试结果:3D 模式下能跑,但效果一般。纯 LiDAR 模式下漂移比带 IMU 的方案大很多,200m 通道回环误差在 10~15cm 左右。 Cartographer 对点云的均匀性要求比较高,非重复扫描给它带来了一些挑战。它内部用了一系列滤波器来处理点云,这些滤波器假设输入是均匀扫描的点云,遇到 M360 的非均匀点云,滤波效果会打折扣。 2D 模式下反而表现不错——Cartographer 先把 3D 点云投影到 2D 平面做建图,投影之后的点云均匀性就好了很多。如果你的项目只需要 2D 地图(比如简单的室内导航),Cartographer 的 2D 模式配合 M360 是一个简单可靠的方案。 结论 :2D 导航场景可以用,3D 场景不推荐。 总结 算法 建图质量 CPU 占用 适合 M360 推荐度 首选 低算力首选 可用但非最优 极致实时场景 不推荐 2D 导航可用 实际项目中最常用的组合是: ,覆盖 90% 的场景。如果工控机性能不够,换成 Point-LIO。如果只需要 2D 导航,Cartographer 2D 也可以。 M360 的内置 IMU 在这个测试中发挥了很大作用——所有带 IMU 融合的算法(FAST-LIO2、Point-LIO、LIO-SAM)都比纯 LiDAR 方案(Cartographer)表现好。IMU 提供的短期姿态估计弥补了非重复扫描在单帧覆盖上的不足。 以上测试结果基于特定硬件和场景,仅供参考。不同环境下的表现可能有差异。