机器人常用的几大主流SLAM算法

转自:https://zhuanlan.zhihu.com/p/614769897

1. SLAM是啥?

SLAM,是指即时定位和地图构建,一种同时实现机器人自身定位和环境地图构建的技术。
在这里插入图片描述
原理是使用相机、激光雷达、惯性测量单元等传感器,来收集环境信息,然后用算法将这些信息融合起来,以确定机器人在未知环境中的位置,并构建一张环境地图。

通过SLAM技术,机器人可以在未知环境中进行自主探索和导航。像家用的扫地机,就是一个非常好的应用实例。

SLAM技术也不只用于机器人,还广泛应用在AR、VR、无人机、自动驾驶等领域。

常见开源项目网站

2. SLAM的通用架构

根据传感器的不同,机器人用的SLAM算法可以分为二维激光SLAM、三维激光SLAM,以及视觉SLAM。

其中,二维激光SLAM常用的有Cartographer、Karto,三维激光SLAM较流行的是LIO-SAM和LOAM系列,视觉SLAM主流的方案为ORB-SLAM3、VINS-Fusion……
在这里插入图片描述
不同的SLAM算法,实现的具体细节会有所不同,但一般都包含前端和后端。

2.1 前端

从传感器中获取原始数据,并将这些数据与已有地图进行关联,从而确定机器人轨迹的过程。

  • 数据采集:通过传感器获取机器人周围环境的数据,如激光点云数据、图像数据等。
  • 数据时空同步:将从不同传感器或不同时间戳接收到的数据进行同步,以便后续配准。
  • 特征提取:从采集的数据中提取用于建图的特征点,如关键点、特征描述子等。
  • 数据融合:将不同传感器获取的数据融合起来,提高建图的准确性和稳定性。
  • 数据关联:将当前帧的特征与之前的地图,或者其他帧之间的特征进行匹配,以确定机器人的运动轨迹。
  • 运动估计:通过数据关联得到机器人的运动轨迹,可以是平移、旋转等运动。

使用激光SLAM构建的栅格地图
使用激光SLAM构建的栅格地图

使用激光SLAM构建的点云地图
在这里插入图片描述

使用视觉SLAM构建的稠密点云地图
在这里插入图片描述
前端的质量对SLAM系统的准确性及稳定性有着至关重要的影响,因此前端的算法设计和实现需要精心制定,以确保系统的可靠性和实用性。

2.2 后端

根据前端获取的运动轨迹和地图信息,对机器人的状态、地图和传感器误差等进行估计和优化的过程。

  • 非线性优化:通过非线性最小二乘法等,对机器人姿态和地图进行优化,使得机器人的位置和地图更加准确。
  • 回环检测:识别机器人经过的相似位置,避免累积误差的产生。可以有效降低机器人的定位误差,提高SLAM算法的精度和鲁棒性。

后端优化的关键,是对整个系统的运动轨迹和地图进行全局优化,以消除积累误差和提高定位的准确性。

3. 六大主流SLAM算法

3.1 Cartographe

由谷歌开发的一款基于激光雷达和RGB-D相机数据的SLAM算法。可以跨平台使用,支持Lidar、IMU、Odemetry、GPS、Landmark等多种传感器配置,被广泛用于机器人导航、自动驾驶等领域。
在这里插入图片描述
Cartographer算法在前端完成占据栅格地图的构建,得出激光雷达扫描帧的最佳位姿后,将扫描帧插入到子地图Submap中,得到局部优化的子地图并记录位姿。

后端根据扫描帧间的位姿关系进行全局的地图优化,并使用分支定界法加速求解,进而得出闭环扫描帧在全局地图中的最佳位姿。

3.2 Karto

一种基于位姿图优化的SLAM方法,使用了高度优化和非迭代的cholesky矩阵对系统进行解耦并求解。适用于各种室内环境,可以处理静态和动态障碍物。
在这里插入图片描述
Karto使用图论的标准形式表示地图,其中每个节点代表了移动机器人运行轨迹上的一个位姿点,以及当前位姿下传感器返回的感知信息。

节点之间的边,代表了相邻机器人位姿之间的位移矢量。对每一个新的位姿点定位,需要节点间匹配关系和边带来的约束,保持定位估计误差的前后一致。

3.3 LIO-SAM

一种新型的激光惯性导航系统,结合了激光雷达和惯性测量单元数据,可以实现机器人的高精度定位和运动轨迹的建图。
在这里插入图片描述
前端在传统的LIDAR-SLAM基础上,利用卡尔曼滤波和因子图优化算法,将激光雷达和IMU数据融合,进一步提高机器人的定位精度和建图效果。后端加入优化算法,使得机器人的定位精度和建图精度都得到极大提升。

3.4 LOAM系列

一种成熟的基于激光雷达的SLAM算法,包括LOAM、LOAM-Velodyne、LOAM-LiDAR等。

其中LOAM使用3D激光雷达的数据来进行建图和定位,利用点云数据的特征,如空间聚类、连续性约束等来估计位姿。
在这里插入图片描述
LOAM-Velodyne则使用Velodyne激光雷达的3D点云数据,以实现更高精度的地图重建和定位;LOAM-LiDAR采用LiDAR传感器来进行建图和定位,可以高效获取目标物体的三维坐标信息,在一些机器人应用场景具有很大的优势。

基于LOAM系统的地图构建局部
在这里插入图片描述

3.5 ORB-SLAM3

当前最优秀的基于特征点的视觉SLAM系统之一,支持单目、双目、RBG-D等多种相机模式,在特征提取、关键帧选取、地图维护、位姿优化等方面进行了优化,并能建立短期、中期和长期的数据关联,使得该系统兼具精度和鲁棒性。
在这里插入图片描述
前端视觉里程计基于ORB特征,建立图像帧之间特征点的数据关联,以及图像特征点和地图点之间3D到2D的数据关联,具有较好的鲁棒性和提取效率,回环检测和重定位也基于ORB特征实现。

3.6 VINS-Fusion

一种基于视觉惯性传感器的视觉SLAM算法。它将视觉和惯性信息进行融合,来提高机器人在未知环境下的定位和导航能力。
在这里插入图片描述
前端和后端之间通过一个状态传递机制来交换数据。前端将IMU和图像数据合并,生成一组状态量,然后将其传递给后端进行融合和优化;后端将优化后的状态量传递回前端,以便更新机器人的运动估计。

4. 如何选择SLAM方案?

事实上,不同方案的SLAM算法,都有它的应用空间。

二维SLAM就适合在二维平面上运动的机器人,如扫地机、配送机器人、迎宾机器人等。

具体来看,Cartographer的总体表现最为优秀,定位精度和建图质量都很高,同时鲁棒性也很强,能承受一定的噪声和漂移干扰,可以应用于大范围建图;Karto适合建图面积不是太大的低成本应用场景,可以在一定程度上满足建图需求,同时工程实现难度也不太高。

三维SLAM则适用于机器人需要在三维空间中进行建模和定位的场景,比如无人机在室外飞行、机器人在户外环境中进行探测等。

其中,LIO-SAM的鲁棒性和实时性表现相对优秀,适用于建图面积和硬件资源有限的小型机器人应用场景;在建图面积和鲁棒性方面比较弱的LOAM方案,适用于小而快速的机器人及小型场景的定位、建图任务。

视觉SLAM通过摄像头等可视传感器来获取机器人与环境之间的相对位置关系,不需要其他传感器,更为轻量化。但对于光照变化、运动模糊等情况的处理仍存在挑战。

定位精度和实时性都比较高的ORB-SLAM3,面对场景变化能够快速适应,适用于多种场景的建图。与之相比,VINS-Fusion适用于对定位精度要求较高,且建图面积相对较小的机器人应用场景。
在这里插入图片描述

5. 参考资料

SLAM技术综述
[2]罗琦-基于惯性测量单元和激光点云的SLAM算法优化.广西大学
[3]朱建康-结构化场景下的主动SLAM算法研究.电子科技大学
[4]王琪-基于非线性优化的单目VINS系统的研究.哈尔滨工业大学
激光雷达3D SLAM技术

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值