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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

SLAM可以说是近几年最火的机器人技术之一也是机器人领域的关键技术。不少同学表示学了几年还在「爬坑」甚至感觉「越学越难」。本文通过整理机器人领域常用的SLAM算法架构及特点希望为大家的方向选择提供一些参考。

01 SLAM是啥

我们先界定一下SLAM技术。SLAM是指即时定位和地图构建一种同时实现机器人自身定位和环境地图构建的技术。

原理是使用相机、激光雷达、惯性测量单元等传感器来收集环境信息然后用算法将这些信息融合起来以确定机器人在未知环境中的位置并构建一张环境地图。

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

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

02 SLAM的通用架构

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

其中二维激光SLAM常用的有CartographerKarto三维激光SLAM较流行的是LIO-SAMLOAM系列视觉SLAM主流的方案为ORB-SLAM3VINS-Fusion……

 不同的SLAM算法实现的具体细节会有所不同但一般都包含前端和后端。

前端

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

  • 数据采集通过传感器获取机器人周围环境的数据如激光点云数据、图像数据等。 

  • 数据时空同步将从不同传感器或不同时间戳接收到的数据进行同步以便后续配准。

  • 特征提取从采集的数据中提取用于建图的特征点如关键点、特征描述子等。

  • 数据融合将不同传感器获取的数据融合起来提高建图的准确性和稳定性。

  • 数据关联将当前帧的特征与之前的地图或者其他帧之间的特征进行匹配以确定机器人的运动轨迹。

  • 运动估计通过数据关联得到机器人的运动轨迹可以是平移、旋转等运动。

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

使用激光SLAM构建的点云地图

使用视觉SLAM构建的稠密点云地图

前端的质量对SLAM系统的准确性及稳定性有着至关重要的影响因此前端的算法设计和实现需要精心制定以确保系统的可靠性和实用性。

后端

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

  • 非线性优化通过非线性最小二乘法等对机器人姿态和地图进行优化使得机器人的位置和地图更加准确。

  • 回环检测识别机器人经过的相似位置避免累积误差的产生。可以有效降低机器人的定位误差提高SLAM算法的精度和鲁棒性。

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

03 6大主流SLAM算法

  • Cartographer

由谷歌开发的一款基于激光雷达和RGB-D相机数据的SLAM算法。可以跨平台使用支持Lidar、IMU、Odemetry、GPS、Landmark等多种传感器配置被广泛用于机器人导航、自动驾驶等领域。

Cartographer系统架构图

Cartographer算法在前端完成占据栅格地图的构建得出激光雷达扫描帧的最佳位姿后将扫描帧插入到子地图Submap中得到局部优化的子地图并记录位姿。

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

  • Karto

一种基于位姿图优化的SLAM方法使用了高度优化和非迭代的cholesky矩阵对系统进行解耦并求解。适用于各种室内环境可以处理静态和动态障碍物。

Karto系统架构图

Karto使用图论的标准形式表示地图其中每个节点代表了移动机器人运行轨迹上的一个位姿点以及当前位姿下传感器返回的感知信息。

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

  • LIO-SAM

一种新型的激光惯性导航系统结合了激光雷达和惯性测量单元数据可以实现机器人的高精度定位和运动轨迹的建图。

LIO-SAM系统架构图

前端在传统的LIDAR-SLAM基础上利用卡尔曼滤波和因子图优化算法将激光雷达和IMU数据融合进一步提高机器人的定位精度和建图效果。后端加入优化算法使得机器人的定位精度和建图精度都得到极大提升。

  • LOAM系列

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

其中LOAM使用3D激光雷达的数据来进行建图和定位利用点云数据的特征如空间聚类、连续性约束等来估计位姿。

LOAM系统架构图

LOAM-Velodyne则使用Velodyne激光雷达的3D点云数据以实现更高精度的地图重建和定位LOAM-LiDAR采用LiDAR传感器来进行建图和定位可以高效获取目标物体的三维坐标信息在一些机器人应用场景具有很大的优势。

基于LOAM系统的地图构建局部

  • ORB-SLAM3

当前最优秀的基于特征点的视觉SLAM系统之一支持单目、双目、RBG-D等多种相机模式在特征提取、关键帧选取、地图维护、位姿优化等方面进行了优化并能建立短期、中期和长期的数据关联使得该系统兼具精度和鲁棒性。

ORB-SLAM3系统架构图

前端视觉里程计基于ORB特征建立图像帧之间特征点的数据关联以及图像特征点和地图点之间3D到2D的数据关联具有较好的鲁棒性和提取效率回环检测和重定位也基于ORB特征实现。

  • VINS-Fusion

一种基于视觉惯性传感器的视觉SLAM算法。它将视觉和惯性信息进行融合来提高机器人在未知环境下的定位和导航能力。

VINS-Fusion系统架构图

前端和后端之间通过一个状态传递机制来交换数据。前端将IMU和图像数据合并生成一组状态量然后将其传递给后端进行融合和优化后端将优化后的状态量传递回前端以便更新机器人的运动估计。

04 如何选择SLAM方案

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

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

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

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

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

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

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

 总的来说这些算法各有优劣如何选择最合适的算法需要根据具体的应用场景和实际需求来综合考虑。

以上就是本期的全部内容后续我们还将对个别算法进行详细解读和细节分析感兴趣的同学可以持续关注。

参考资料

[1]https://zhuanlan.zhihu.com/p/501102444

[2]罗琦-基于惯性测量单元和激光点云的SLAM算法优化.广西大学

[3]朱建康-结构化场景下的主动SLAM算法研究.电子科技大学

[4]王琪-基于非线性优化的单目VINS系统的研究.哈尔滨工业大学

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“盘点机器人常用的几大主流SLAM算法” 的相关文章