Rtab-map -- 开源 2014
about 如何实现闭环检测
可视化slam 应用于摄像头上
原理:数据结构,点中存储彩色图,深度图,和用来做odomtry得位置,可以认为图片,location和image都是点
将图片解析为一些features,可以用visual words表示,各图片之间相互联系,一部分图片相互连续,一部分图片相互闭环;
闭环检测方法分为三个步骤:
(1)闭环检测的方法:依据于两个图片的相似性,利用如下公式
similarity = Npair/max(Nzt,Nzc)
两个图片match到的features的数量/两个图片中最多的features的数量,使用Bayesian filter方法完善了设定至少环上有5个点(图片)之间的相似性,通过相似性检测得到成环的可能性probablity
(2)使用TORO的办法来进行一个图像的优化,将成环部分的area做全局性优化,该文章中使用到的内存管理的方法是一种online的成环检测,首先一个彩色图片(Node)节点,采集之后存储正在Short-Term Memory中,一共可以存储10个节点,如果达到10个节点数字的时候,最先的节点转移到Working Memory,进行闭环检测,储存的节点根据每个节点被访问到的数量来储存的
(3)working memory会储存以前地图的信息,根据他的访问量,优先选择经常被访问的地图信息存储在Working Memory里面,这个map-3为新地图,进来之后会和节点进行匹配,在匹配的过程中,一些旧的地图也会被返回到Working Memory里面,对于那些没有用的节点或者已经匹配完毕的节点,就会被送到long time memory之中,working memory不是一直可以延展的,可以用一个时间来限制他的memory size;
一个节点进行闭环检测的话,它是通过检测的时间,它这里设定的是0.7s,时间到达则闭环检测结束,同时有一些节点会送到LTM里,这个是memory的管理办法
实验:
使用一台机器人携带两个sensor,一个是Kinect sensor,一个是URG-04XL laser range finder
Kinect可以采样一个彩色图一个深度图,深度图是用于得到各个visual words的3D position
Laser sensor,只有4m的range,作用主要是在成环的时候,可以观察做可以匹配的五个点的位置,使用2D ICP的方法
激光的作用是:并非用于做slam,而是在成环的时候,使用五个或者五个点以上来成环,将扫描的数据用来和其进行ICP,Parameters这里一共有五个点才可以成环,short-Term memory size只有十个,成环的probability的限制要大于0.1控制成环,时间是0.7s,其中有较多的parameters需要控制;
该实验5个map,先是分别进行研究,然后5个map连续的进行采样,放到一起
实验一:其中纵坐标是每新增一个点需要的时间即进行成环检测需要的时间,有5个map,其中Map1/2/3的map是只有nodes,nodes的数量比较少,它的时间被限制在0.7s的限制,只有map4和map5达到了这个限制
图4是map 1.2.3的实验结果,其中蓝色的是运行的轨迹,红色是呈环检测到成环的地方,图4左边是没有经过全局优化的,右边是经过全局优化的结果;全局优化是使用TORO方法
图5是map4和map5的部分,其中蓝线的部分是已经传递到long-term Memory里面的部分,也即在WM的部分是有白色阴影的一块,(A)图是没有经过图像优化的,(B)图是经过图形优化,是在Working Memory里面进行了图像优化,C图是经过了全局的by Long-term memory和 working Memory里面点都结合在一起进行图像优化的结果。
这里提出在Long-Term里面,如果要得到C图,它必须是offline的,C图并不是即时的结果
将五个图放在一起进行实验
连续从map12345进行的检测结果,结果较好,说明作图呈现效果较好
一共做了两个实验:设定时间限制为0.7s,一个是没有时间限制,所以红线是没有时间限制的,而蓝线是设定0.7s的时间限制
将5个图合在一起的话,它就能同时进行,不但是每个图自己内部的成环,还有一个图与图之间的成环,这是和真是结果的对比:在中间这个部分,成环检测之后的准确率是比较高的,但是map5这一块成环检测的量不够,eg:左上和右下都没有一幅图能和它成环的所以它的效果较差,对比蓝线和红线,两个颜色的轨迹都没有能够很好的体现这个真实的运动轨迹,所以如果在左上或者右下能够多增加一些实验,增加一些轨迹的测试话,可能整个图像的效果会更好。
图和图之间的成环,连续的地图,map1->map2->map3,但是这个过程中working memory里面的数据还是存在的,即map1得一些点还是留存在Working Memory里面,map2得时候可以再去访问map1得点,对于map5来讲由于在右下角所以对于前4个点来讲能够成环的点较少
Slam的不足之处:
1.首先要确定什么样的点可以保存在Working Memory之中,在全局地图之下,哪些点是非常重要的,Hard,确保什么样的方法保证旧的地图不会被以往,如果被到long-term memory之中可能会被遗忘。
2.作者建议考虑一些新的方法,用一些比较robust(鲁棒性)一点的成环办法,来避免一些错误的成环被检测,可能会导致较大的误差
会议摘要:其中对比了三种slam方法
重点研究Rtab-Map和ROB-Slam2 的比较
ROB-Slam2可以很快的进行绘图,并且它的re-localize(重定位)是非常有效的
Rtab-Map优点:可以和ROS平台兼容,它生成的图易懂,同时Rtab-map有很多的parameters可以根据我们自己的硬件条件来改变它的参数控制得到的结果,改进绘图结果
使用Kinect2 在BCD这几个图中分别是早中晚,
可以看到白天的图的效果较差,阳光的影响,对Kinect的影响较大,是同时两个图不能用Rtab-map进行slam
问题:short-term memory中存储新来的图片,达到10个以后转移到working memory,进行计算,匹配这个点有没有和之前的点有相似性
ORB-SLAM和词袋,也是用到SURF词袋,也是抽象成词库之后来寻找闭环
激光雷达没有提供features,深度比较小,只有4m的深度,只能用于做很小的闭环匹配,也是用到激光雷达的数据(辅助性质的)
运算速度可以限制时间,只是在macbook上运行的实验,如果硬件条件好,那么呈像的效果会更好
判定这两个点是否形成闭环,用计算simulator的计算公式,如果两个图的相似的点featire的相似性的words达到0.45就可以认为是一样的,surf用于描述feature