方法一
激光雷达分单线和多线这两大类,针对这两类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.
人工智能领域的发展迎来新一波高潮,人工智能与实体经济快速融合势在必行
深度:智能汽车-嵌入式系统的软件架构设计!
关于透雾技术的分析的介绍
美国证券交易委员会SEC将在2020年对数字资产进行检查
VSS/虚拟演播室系统,如何构建iSCSI磁盘阵列
常见的激光雷达SLAM算法有哪些?
ADI推出战术级10自由度MEMS IMU-ADIS16488
3D打印机OEM厂商WAS推出全新生产型FDM系统
学会Linux添加自定义系统调用
物联网思维怎样去看待灾情
为推动Portal项目发展,Facebook聘请谷歌AR/VR负责人Ryan Cairns
万物互联,5G似乎出了严重的安全问题?
简约大方轮廓灯 瞬间提升家庭的氛围
中兴发力5G只为翻身赢华为,结果却不如预期
维信诺发布关于获得政府补助的公告
苹果14promax和13promax哪个更值得入手
电小二户外电源80开箱评测 非常适合于户外工作及娱乐使用
图森未来与Aeva合作 部署4D激光雷达
一文详细了解OpenHarmony新图形框架
Spring AOP如何破解java应用