谷歌cartographer 论文翻译笔记
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?似乎没怎么看明白,好吧。。。这部分也忽略。。
C.Ceres scan matching
在将一个scan点插入submap中之前,这个scan点集的位置必须使用Ceres-based的scanmatcher的方法进行优化,这个scan matcher目的是为了找到一个点。。。
未完待续
。。。。少数几个连续的激光点合成一个submap,所以误差很小。
。。。。优化问题,被表示为非线性最小二乘问题,每隔几秒,就会使用Ceres计算一个解决办法。
pixel-accurate match 找到最佳位置点,通过不停的调整x,y与角度进行调整;
本文使用的是分支上界法
参考文献:http://blog.csdn.net/LilyNothing/article/details/60875825