google cartographer 的论文 Real-Time Loop Closure in 2D LIDAR SLAM
刚刚研究完 gmapping,现在来看看谷歌开源的 cartographer,在看源码之前先研究一下它的论文;
(所有的都是在看完后根据自己理解写的,如有疑问,疏漏,错误等可留言)
摘要:便携式激光测距仪比如雷达再配合 SLAM 是获得平面地图的一种有效方法,实时的产生可视化平面图可以帮助处理评估所捕获数据的质量.在有限的计算资源下建立一个易用的平台很有必要,我们实现了在 mapping 后台的一种实时建图和闭环检测的方法,可以生成 5cm 分辨率的栅格地图.为了实现闭环检测,我们采用了 branch-and-bound 方法来作为计算 scan-to-submap 的约束.
(总而言之,他们使用了 branch-and-bound 作为计算 scan-to-submap 的约束,然后与其它现有建图方法对比,谷歌认为他们的的方法是有竞争性的...)
简介:建立平面图对很多应用很有用,人工使用激光测量设备并使用 CAD 等辅助设计软件任然需要大量的方法对直线等进行优化,这也不一定会得到空间准确的测量数据.而使用 SLAM 就可能短时间能够准确的建立空间尺寸和复杂结构.
应用 SLAM 在这个领域并不是一个新的方法,但是本文的贡献在于减少了计算从激光数据中回环约束的需求量,这样能够保证我们建立更大的地图,1w 平米的尺寸,并且提供实时的优化结果.
(也不知道计算资源是不是真的减少了,是在什么平台,什么计算硬件下进行的???)
相关工作:
Scan-to-scan 是基于激光 SLAM 中频繁使用的用来计算坐标变换的的方法,比如文献[1-4] ,就本身而言,scan-to-scan 匹配法是会积累累计误差的.
scan-to-map 匹配法有助于减少这种误差,这种方法使用高斯牛顿法采用线性插值图找出局部最优解(参考文献 5),当前坐标的估计由高数据平率的雷达提供,局部最优 scan-to-map 匹配是有效的和鲁邦的,在不稳定的平台,可以使用 IMU 获得重力方位.(本论文使用的方法)
pixel-accurate scan 方法能够进一步减少局部误差,尽管有很大的花费,这个方法使用用于回环除错.一些方法通过匹配激光额外的特征来改善计算花费.其他的用于回环检测的比如 histogram-based matching,feature detection in scan data 和用 machine learning.
解决累计误差的方法有两种,粒子滤波和基于图优化.
粒子滤波会为每一个粒子保存系统状态,这会使得地图花费的资源你大大增加.
图优化是基于位姿和特征的集合法,图中的边事从观察的结果中得到的约束,节点存储位置和特征.
系统综述:
谷歌的 cartographer 提供实时的室内 slam,可以采用背包形式背着传感器建立分辨率为 5cm 的室内地图.激光数据在最好的估计位置时插入子图,这个最好的位置是使用短期的数据进行测量的,误差会在全局进行积累.
为了在较差的传感器上获得好的表现,我们的 SLAM 没有采用粒子滤波器,为了处理积累误,我们定时跑一个坐标优化,当一个子图生成完毕,将不会有新的激光加入,这个子图将用来进行回环检测.所有完成的子图和激光数据将自动进行回环检测.如果基于现在的坐标估计足够近,那么一个极光数据的试图匹配会在子图中找到接近的激光数据,如果找到了,那么将添加作为优化问题的闭环约束.通过几秒钟就进行一次优化,要求闭环检测必须在新的点被加入到 submap 中之前完成,否则失败,通过分支上界法以及对于每个完成的 submap 有对应的几个预处理的网格.
局部 SLAM:
这个系统包括了局部和全局的优化方法(关于 2Dslam).每一个连续的激光点集与全局地图的一部分进行匹配,也是 submap,使用非线性优化法把激光和 suamap 进行匹配,最后再在全局中进行优化去除累积误差.
A.Scans
子图的构建,是激光数据的连续处理,...这个地方的描述看得不是很明白;需要研究一下.
B.Submaps
少数连续的激光数据用来构建一个子图 ,这些子图以栅格地图的形式存在,这种图以给的雷达距离给定激光点,
拿 5cm 举例,表示 5*5 的范围内被占据.对于每一个栅格,我们定义这个像素代表着所有的栅格内的点.
无论何时插入一个激光数据到栅格地图上,一系列被占据的栅格和没有被占据的栅格计算出来,对于每一个激光线,我们把点插入到最近点,hit?miss?似乎没怎么看明白,好吧...这部分也忽略..
来源: http://www.bubuko.com/infodetail-2470903.html