煜禾森|自动驾驶分享:Cartographer算法

#技术分享 · 2024-09-29

防爆化工移动机器人

目前国内有27万家石油石化企业,需要进行数字化巡检作业改革。

面对高温、高热、有毒有害气体等复杂环境,防爆化工移动机器人可智能化设定巡检路线、绕开障碍物,对厂区进行更大范围、更深入的巡检工作。

有效降低作业强度。未来防爆化工移动机器人市场预期达到数千亿市场规模。

在行业应用中移动机器人多种建图算法说明-Cartographer

1.Cartographer原理分析

基于优化方法的激光SLAM已经不是一个新研究领域了,谷歌的Cartographer算法主要是在提高建图精度和提高后端优化效率方面做了创新。


当然Cartographer算法在工程应用上的创新也很有价值,Cartographer算法最初是为谷歌的背包设计的建图算法,谷歌的背包是一个搭载了水平单线激光雷达、垂直单线激光雷达和IMU的装置,用户只要背上背包行走就能将环境地图扫描出来。


由于背包是背在人身上的,最开始Cartographer算法是只支持激光雷达和IMU建图的,后来为了适应移动机器人的需求,将轮式里程计、GPS、环境已知信标也加入到算法,也就是说Cartographer算法是一个支持多激光雷达、IMU、轮式里程计、GPS、环境已知信标的传感器融合建图算法。


2.Cartographer局部建图算法简述

介绍Cartographer局部建图的具体过程之前,需要先了解一下Cartographer地图的组成形式。Cartographer采用局部子图(submap)来组织整个地图,其中若干个激光雷达扫描帧(scan)构成一个submap,然后所有的submap构成全局地图(submaps)不管是雷达扫描帧(scan),局部子图(submap),还是全局地图(submaps),它们之间都是通过位姿关系进行关联的。


这里只讨论2D SLAM建图,所以位姿坐标可以表示为。假设机器人初始位姿为,该位姿处雷达扫描帧为scan(1),并利用scan(1)初始化第一个局部子图submap(1)。利用Scan-to-map matching方法计算scan(2)相应的机器人位姿,并基于位姿将scan(2)加入submap(1)。


不断执行Scan-to-map matching方法添加新得到的雷达帧,直到新出现的雷达帧完全包含在submap(1)中时,换句话说就是新雷达帧观测不到submap(1)之外的新信息时,就结束submap(1)的创建。这里假设submap(1)由scan(1)、scan(2)和scan(3)构建而成,然后重复上面的步骤构建新的局部子图submap(2)。


而所有局部子图{submap(m)}就构成了最终的全局地图submaps。


3.综合对比

Gmapping代码实现相对简洁,非常适合初学者入门学习。但是Gmapping属于基于滤波方法的SLAM系统,明显的缺点是无法构建大规模的地图,这一点已经在第前面讨论过了。

而基于优化的方法则可以构建大规模的地图,基于优化的方法实现的激光SLAM算法也有很多,比如Hector、Karto、Cartographer等。而Cartographer是其中获好评最多的算法 。

Cartographer是这几种算法中提出时间最新、开发团队来自著名的谷歌公司、代码的工程稳定性较高、少有的建图和重定位兼具的算法。