问题:
纯视觉,使用特征点描述符,尽可能多的利用各种信息的前提下,什么样的定位算法最好?
需求:
- 要有高效的全局匹配能力。
- 需要用里程计来弥补地图匹配不好的区域。
- 要有全局地图可以提高里程计的精度。
- 里程计和全局的结果要能平滑的融合。
结论:
- 尝试了很多方案后,觉得使用给予ORB-SLAM修改的版本笔记哦好。
- 修改内容:
- 把ORB-SLAM的LoopDetect用Maplab里面基于KD-TREE的全局匹配替换。因为DBOW的方式比较适合场景变换较小的情况,毕竟Loop是指在一次采集中路过相同的地方。但是定位的时间跨度要大得多。
- BA中仍然需要优化地图的点的位置,但是这个位置不用更新回去。也就是地图中的点的位置永远不变。这样做是因为如果地图的点不被优化的话,他们的重投影误差会比里程计建的点大。就容易被排除掉。
- 检测LocalMap中地图的点和里程计建出来的点的比例,如果地图的点小于某个值的时候,触发重定位。重定位目只是找到更多的地图的匹配,重定位得到位置不会用于更新定位结果。重定位的印象会通过后面的BA平滑的影响结果。
- 地图的3d点通过ORB-SLAM的LoopClosure方式加入到LocalMap中。
- 地图加载功能,用其他方法得到的地图来填充ORB-SLAM的地图结构。