Page 59 - 《软件学报》2020年第9期
P. 59
2680 Journal of Software 软件学报 Vol.31, No.9, September 2020
1.1 Cartographer算法架构
Cartographer 是一个实时的室内建图算法,能生成分辨率 r=5cm 的栅格地图 [9,10] .在前端将最新的激光雷达
扫描数据在相邻的子图上(整个地图的一小块)完成扫描匹配,得到一个在短时间内准确的最佳插入位置(位姿)
后,将扫描插入到子图中.扫描匹配中,位姿估计的误差会在整个地图中随时间逐渐累积,在后端中,通过回环检
测加约束进行优化消除误差.
图 1 为 Cartographer 算法框架图.整个框架分为数据源、局部 SLAM 以及全局 SLAM 以及数据融合等部
分,其中,红虚线框表示本文设计的位姿融合方法所处位置,红框表示融合的数据.
Fig.1 Cartographer algorithm framework diagram
图 1 Cartographer 算法框架图
Cartographer 是基于图优化的 SLAM,采用误差累积小、计算成本低的 Scan to Map 匹配方式,而不是会造
成误差快速累积以及计算成本高的 Scan to Scan 匹配方式 [11,12] .整个算法分为局部 SLAM 和全局 SLAM 两部分,
两部分均会对激光雷达观测的位姿(即扫描)进行优化.
• 在局部 SLAM 中,使用非线性优化将每个连续的扫描与子图进行匹配,优化将扫描与子图对齐,也就是
扫描匹配,生成较好的子图.在这部分中,设计了基于位姿增量的多传感器位姿融合方法,更快速、更准
确地为下一时刻提供估计位姿;
• 而在全局 SLAM 中,将局部 SLAM 累积的误差消除,将不同的子图以最匹配的位姿融合.
1.2 局部SLAM的组成与位姿优化
一帧扫描即一次激光雷达采集的数据,子图由多个扫描构成,构建子图是一个重复对齐扫描和子图坐标帧
的迭代过程.多个扫描构成的子图由概率网格表示,将给定分辨率的离散网格点映射为值,这些值是网格点被占
用的可能.对于每个网格点,定义对应的像素以包含最接近这个网格点的所有点.
在将一个扫描插入子图之前,使用基于 Ceres [13] 的扫描匹配器对插入的扫描位姿相对于当前匹配的子图进
行局部优化.扫描器的目标是在子图中找到使插入扫描中扫描点概率最大的扫描位姿,可以将此问题转变为一
个非线性最小二乘问题: