常见的激光雷达SLAM算法有哪些?

MEMS/传感技术

1292人已加入

描述

方法一

激光雷达分单线和多线这两大类,针对这两类Lidar所使用的算法也不尽相同。 首先单线雷达一般应用在平面运动场景,多线雷达则可以应用于三维运动场景。

2D Lidar SLAM

一般将使用单线雷达建构二维地图的SLAM算法,称为2D Lidar SLAM。大家熟知的2D Lidar SLAM算法有:gmapping, hector, karto, cartographer。通常数据和运动都限制在2D平面内且运动平面与激光扫描平面平行。

gmapping[1]

基于粒子滤波的2D激光雷达SLAM,构建二维栅格地图。融合里程计信息,没有回环检测。 优点是在小场景中,计算量小,速度较快。 缺点是每个粒子都携带一幅地图,无法应对大场景(内存和计算量巨大);如果里程不准或标定参数不准,在长回廊等环境中容易把图建歪。

算法

 

算法

hector[2]

hector SLAM是完全基于scan-matching的,使用迭代优化的方法来求匹配的最佳位置,为避免陷入局部极值,也采用多分辨率的地图匹配。 由于完全依赖于scan matching,要求雷达的测量精度较高、角度范围大,扫描速度较高(或移动速度慢)。噪声多、边角特征点少的场景就很容易失败。 原文所提出方法的特点还在于,加入IMU,使用EKF估计整体的6DoF位姿,并根据roll, pitch角将激光扫描数据投影到XY平面,因而支持激光雷达有一定程度的倾斜,比如手持或机器人运动在不是很平整的地面上。

karto[3][4]

karto是基于scan-matching,回环检测和图优化SLAM算法,采用SPA(Sparse Pose Adjustment)进行优化。 关于karto 和 cartographer 的比较,可以看看这里:https://blog.csdn.net/hzy925/article/details/78857241

cartographer[5][6]

cartographer是谷歌开源的激光SLAM框架,主要特点在于: 1.引入submap,scan to submap matching,新到的一帧数据与最近的submap匹配,放到最优位置上。如果不再有新的scan更新到最近的submap,再封存该submap,再去创建新的submap。 2.回环检测和优化。利用submap和当前scan作回环检测,如果当前scan与已经创建的submap在距离上足够近,则进行回环检测。检测到回环之后用ceres进行优化,调整submap之间的相对位姿。为了加快回环检测,采用分枝定界法。 cartographer也可以应用于3D Lidar SLAM(我还没试过),不过最出名的还是她在2D Lidar SLAM方面的出色表现,毕竟论文标题就是“Real-time loop closure in 2D LIDAR SLAM”。

3D Lidar SLAM

3D Lidar SLAM主要是针对多线雷达的SLAM算法。比较出名的有LOAM, LeGO-LOAM, LOAM-livox等。

LOAM[7]

LOAM是针对多线激光雷达的SLAM算法,主要特点在于:1) 前端抽取平面点和边缘点,然后利用scan-to-scan的匹配来计算帧间位姿,也就形成了里程计;2) 由估计的帧间运动,对scan中的每一个点进行运动补偿;3) 生成map时,利用里程计的信息作为submap-to-map的初始估计,再在利用submap和map之间的匹配做一次优化。 LOAM提出的年代较早(2014),还没有加入回环优化。 关于LOAM的详细解析,可以参考这篇专栏文章: https://zhuanlan.zhihu.com/p/111388877 ALOAM[8]是Advanced implementation of LOAM,使用Eigen和ceres-solver简化代码实现。

LeGO-LOAM[9]

LeGO-LOAM在LOAM的基础上主要改进:1) 地面点分割,点云聚类去噪;2)添加了ICP回环检测和gtsam优化。 关于LeGO-LOAM的详细解析,可以查看这个专栏文章: https://zhuanlan.zhihu.com/p/115986186

LOAM_livox[10]

大疆2019年公布的面向小FOV Lidar的LOAM算法。相比LOAM,做了一些改动。算法的特点: 1.添加策略提取更鲁棒的特征点:a) 忽略视角边缘有畸变的区域; b) 剔除反射强度过大或过小的点 ; c) 剔除射线方向与所在平台夹角过小的点; d) 部分被遮挡的点 2.与LOAM一样,有运动补偿 3.里程计中剔除相对位姿解算后匹配度不高的点(比如运动物体)之后,再优化一次求解相对位姿。

视觉和Lidar 融合的SLAM算法

VLOAM[11]

VLOAM 是视觉和激光雷达紧耦合的方案。

算法

视觉里程计部分,图像帧之间的相对位姿估计以60Hz运行。先抽取和匹配图像特征,雷达点云融合成深度地图,再将深度地图与视觉特征点关联起来,以帮助计算两帧之间的相对位姿。 雷达里程计部分,将1s内的数据作为一个完整扫描 sweep。Sweep-to-Sweep refinement模块优化求解两个sweep之间的相对运动并去除运动畸变,Sweep-to-Map Registration模块将局部点云注册到已经构建的地图上面。 Transform Integration模块则结合两个里程计,以视觉里程计的高帧率输出位姿估计。 待补充 。。。

参考

1.Grisetti, G., et al. (2007). "Improved techniques for grid mapping with rao-blackwellized particle filters."  23(1): 34-46.

 2.Kohlbrecher, S., et al. (2011). A flexible and scalable slam system with full 3d motion estimation. 2011 IEEE international symposium on safety, security, and rescue robotics, IEEE.

3.https://github.com/ros-perception/slam_karto

4.https://github.com/skasperski/OpenKarto

5.https://github.com/cartographer-project/cartographer

6.Hess, W., et al. (2016). Real-time loop closure in 2D LIDAR SLAM. Robotics and Automation (ICRA), 2016 IEEE International Conference on, IEEE.

7.Zhang, J. and S. Singh (2014). LOAM: Lidar Odometry and Mapping in Real-time. Robotics: Science and Systems.

8.https://github.com/HKUST-Aerial-Robotics/A-LOAM

9.Shan, T. and B. Englot (2018). Lego-loam: Lightweight and ground-optimized lidar odometry and mapping on variable terrain. 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), IEEE.

10.Lin, J. and F. Zhang (2020). Loam livox: A fast, robust, high-precision LiDAR odometry and mapping package for LiDARs of small FoV. 2020 IEEE International Conference on Robotics and Automation (ICRA), IEEE.

11.Zhang, J. and S. Singh (2015). Visual-lidar odometry and mapping: Low-drift, robust, and fast. 2015 IEEE International Conference on Robotics and Automation (ICRA), IEEE.

编辑:黄飞

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分