ROS-2Dslam算法比较

ros系统上常用的2d建图算法有四种,它们分别是gmapping、谷歌cartographer、hector、Karto。

Gmapping算法

目前激光2Dslam用得最广的方法,gmapping是基于RBPF粒子滤波的算法,优点是定位准确,但需要完整的硬件平台,需要激光数据和里程计数据。主要框架如下:

ROS-2Dslam算法比较_第1张图片

优点:是在构建小场景地图所需的计算量较小且精度较高,相比Cartographer在构建小场景地图时,Gmapping不需要太多的粒子并且没有回环检测因此计算量小于Cartographer而精度并没有差太多。并且CPU资源消耗比Cartographer小。在长廊及低特征场景中建图效果好。

缺点:随着场景增大所需的粒子增加,因为每个粒子都携带一幅地图,因此在构建大地图时所需内存和计算量都会增加。因此不适合构建大场景地图。并且没有回环检测,因此在回环闭合时可能会造成地图错位,虽然增加粒子数目可以使地图闭合但是以增加计算量和内存为代价。依赖里程计(odometry),无法适用无人机及地面小车不平坦区域;无回环。

问题的关键在计算量,gmapping为单线程程序,多核cpu不起作用。计算量与地图分辨率、粒子数成正比,分辨率越大、粒子数越多,cpu占用率越高。cpu的高负荷导致一次数据处理的时间变长,从而导致部分数据得不到处理。cpu负荷越高,遗漏的数据越多,造成状态估计的不连续。这就是为什么随着粒子数的增加或地图分辨率的提高,会出现地图扭曲、未知区域变大、直接拼图失败等现象。
 

cartographer算法

cartographer是google推出的一套基于图优化的SLAM算法,cartographer采取的是google的ceres构建problem优化,采取的是4线程后端优化。

Cartographer主要理论是通过闭环检测来消除构图过程中产生的累积误差。用于闭环检测的基本单元是submap。一个submap是由一定数量的laser scan构成。将一个laser scan插入其对应的submap时,会基于submap已有的laser scan及其它传感器数据估计其在该submap中的最佳位置。submap的创建在短时间内的误差累积被认为是足够小的。然而随着时间推移,越来越多的submap被创建后,submap间的误差累积则会越来越大。

因此需要通过闭环检测适当的优化这些submap的位姿进而消除这些累积误差,这就将问题转化成一个位姿优化问题。当一个submap的构建完成时,也就是不会再有新的laser scan插入到该submap时,该submap就会加入到闭环检测中。闭环检测会考虑所有的已完成创建的submap。当一个新的laser scan加入到地图中时,如果该laser scan的估计位姿与地图中某个submap的某个laser scan的位姿比较接近的话,那么通过某种 scan match策略就会找到该闭环。

Cartographer中的scan match策略通过在新加入地图的laser scan的估计位姿附近取一个窗口,进而在该窗口内寻找该laser scan的一个可能的匹配,如果找到了一个足够好的匹配,则会将该匹配的闭环约束加入到位姿优化问题中。Cartographer的重点内容就是融合多传感器数据的局部submap创建以及用于闭环检测的scan match策略的实现。

优点:有回环检测,不会出现地图错位。累计误差低,能天然的输出协方差矩阵,后端优化的输入项。成本较低的雷达也能跑出不错的效果。没有imu和odom,只有雷达也可以建图,还可以手持建图。可以建图上万平米。

缺点:只有5cm的地图分辨率。内存占用较大,算法体量较大,需要花上很久的时间才能稍微看得懂。

hector算法

HectorSLAM是一种结合了鲁棒性较好的扫描匹方法2D SLAM方法和使用惯性传感系统的导航技术。传感器的要求:高更新频率小测量噪声的激光扫描仪。不需要里程计,使空中无人机与地面小车在不平坦区域运行存在运用的可能性。作者利用现代激光雷达的高更新率和低距离测量噪声,通过扫描匹配实时地对机器人运动进行估计。所以当只有低更新率的激光传感器时,即便测距估计很精确,对该系统都会出现一定的问题。

优点:不需要里程计数据,可以行驶不平坦路面。

缺点:对激光硬件要求比较高,没有回环检测,机器人行驶速度过快会导致建图失败。

karto算法

这里写图片描述

 

karto_slam是基于图优化的方法,用高度优化和非迭代cholesky矩阵进行稀疏系统解耦作为解。图优化方法利用图的均值表示地图,每个节点表示机器人轨迹的一个位置点和传感器测量数据集,箭头的指向的连接表示连续机器人位置点的运动,每个新节点加入,地图就会依据空间中的节点箭头的约束进行计算更新。

karto_slam的ROS版本,其中采用的稀疏点调整(the Spare Pose Adjustment(SPA))与扫描匹配和闭环检测相关。landmark越多,内存需求越大,然而图优化方式相比其他方法在大环境下制图优势更大。在某些情况下karto_slam更有效,因为他仅包含点的图(robot pose),求得位置后再求map。

优点:在大环境下,优势大。

缺点:需要内存空间更大。

参考资料:

http://keaa.net/ros-gmapping-map.html#:~:text=%E5%9C%B0%E5%9B%BE%E6%98%AF%E5%AF%BC%E8%88%AA%E5%BF%85%E8%A6%81%E7%9A%84%E8%8A%82%E7%82%B9%EF%BC%8C%E5%9C%A8ROS%E4%B8%8A%E9%9D%A2%E5%B8%B8%E8%A7%81%E6%9C%89%E5%9B%9B%E7%A7%8D%E4%BA%8C%E7%BB%B4SLAM%E5%BB%BA%E5%9B%BE%E6%96%B9%E5%BC%8F%EF%BC%8C%E5%AE%83%E4%BB%AC%E5%88%86%E5%88%AB%E6%98%AFgmapping%E3%80%81%E8%B0%B7%E6%AD%8Ccartographer%E3%80%81hector%E3%80%81Karto%EF%BC%8C%E6%AF%8F%E7%A7%8D%E7%AE%97%E6%B3%95%E9%83%BD%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BC%98%E7%BC%BA%E7%82%B9%EF%BC%8C,%E6%84%9F%E5%85%B4%E8%B6%A3%E5%8F%AF%E4%BB%A5%E7%9C%8B%E7%9C%8B%E8%BF%99%E9%87%8C%E7%9A%84SLAM%E7%AE%97%E6%B3%95%E5%AF%B9%E6%AF%94%20%E3%80%82

https://blog.csdn.net/wangguchao/article/details/85328459

https://www.cnblogs.com/kuangxionghui/p/8494566.html

https://blog.csdn.net/h1475457833/article/details/118439886

https://www.cnblogs.com/li-yao7758258/p/8213578.html

https://www.slamtec.com/cn/News/Detail/72#:~:text=%E7%9B%B8%E6%AF%94Hector,SLAM%E5%AF%B9%E6%BF%80%E5%85%89%E9%9B%B7%E8%BE%BE%E9%A2%91%E7%8E%87%E8%A6%81%E6%B1%82%E4%BD%8E%E3%80%81%E9%B2%81%E6%A3%92%E6%80%A7%E9%AB%98%EF%BC%88Hector%20%E5%9C%A8%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%BF%AB%E9%80%9F%E8%BD%AC%E5%90%91%E6%97%B6%E5%BE%88%E5%AE%B9%E6%98%93%E5%8F%91%E7%94%9F%E9%94%99%E8%AF%AF%E5%8C%B9%E9%85%8D%EF%BC%8C%E5%BB%BA%E5%87%BA%E7%9A%84%E5%9C%B0%E5%9B%BE%E5%8F%91%E7%94%9F%E9%94%99%E4%BD%8D%EF%BC%8C%E5%8E%9F%E5%9B%A0%E4%B8%BB%E8%A6%81%E6%98%AF%E4%BC%98%E5%8C%96%E7%AE%97%E6%B3%95%E5%AE%B9%E6%98%93%E9%99%B7%E5%85%A5%E5%B1%80%E9%83%A8%E6%9C%80%E5%B0%8F%E5%80%BC%EF%BC%89%EF%BC%9B%E8%80%8C%E7%9B%B8%E6%AF%94Cartographer%E5%9C%A8%E6%9E%84%E5%BB%BA%E5%B0%8F%E5%9C%BA%E6%99%AF%E5%9C%B0%E5%9B%BE%E6%97%B6%EF%BC%8CGmapping%E4%B8%8D%E9%9C%80%E8%A6%81%E5%A4%AA%E5%A4%9A%E7%9A%84%E7%B2%92%E5%AD%90%E5%B9%B6%E4%B8%94%E6%B2%A1%E6%9C%89%E5%9B%9E%E7%8E%AF%E6%A3%80%E6%B5%8B%E5%9B%A0%E6%AD%A4%E8%AE%A1%E7%AE%97%E9%87%8F%E5%B0%8F%E4%BA%8ECartographer%E8%80%8C%E7%B2%BE%E5%BA%A6%E5%B9%B6%E6%B2%A1%E6%9C%89%E5%B7%AE%E5%A4%AA%E5%A4%9A%E3%80%82https://blog.csdn.net/qq_24893115/article/details/52965410

你可能感兴趣的:(自动驾驶,人工智能,机器学习,linux)