cartographer实现自动更新地图(打补丁),香不香?
Posted COCO_PEAK_NOODLE
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cartographer实现自动更新地图(打补丁),香不香?相关的知识,希望对你有一定的参考价值。
实现原理:
- 在纯定位时,检测当前Trajectory和之前的Trajectory的匹配状态(约束的匹配情况),对于变化大的子图,在原图上进行打补丁。
- 在前端可以写个定时保存功能;
- 对于原地图和补丁,我选择了2者进行合并,合并的方式就是先找到原先地图最后submap的index,然后在后面把补丁submap加上去。保存的时候其实可以不用考虑保存约束(constraint),因为我们不是建图模式,不需要使用以前的约束。
定义几个重要变量
struct ConstraintData
int total_num;/*whole data try to match*/
int valid_num/*valid match*/;
;
//用于显示当前导航时,地图与原有地图的匹配情况
MapById<SubmapId, ConstraintData> constraints_in_nav_submaps;
//MapById<SubmapId, int> all_constraints_in_submap;
//MapById<SubmapId, ConstraintData> constraints_in_map_submaps;
//patch submap for environment change;
//用于保存与原有地图变化大的子图
MapById<SubmapId, ConstraintData> constraints_in_patch_submaps;
//around patch submap for environment change;
//这个变量很重要,保存的是constraints_in_patch_submaps左右两边的子图,为什么?它的作用是把constraints_in_patch_submaps纠正回来。
MapById<SubmapId, ConstraintData> constraints_around_patch_submaps;
打补丁之前
打补丁后,状态截图
对于单台车,这样一边运行,一边更新,对于变化不剧烈的场景完全hold住,香不香?
以上是关于cartographer实现自动更新地图(打补丁),香不香?的主要内容,如果未能解决你的问题,请参考以下文章
导航的时候自动更新地图的思路,附使用cartographer的解决方案