导航的时候自动更新地图的思路,附使用cartographer的解决方案

首先说下原来错误的思路:就是新地图匹配上旧地图,然后就把旧地图替换,或者更新旧地图,这种思路错误的原因是,任何的匹配都是有匹配误差的,从1月份一直匹配到12月份,就算一个月的累积误差是1mm,12个月后也有1cm的误差了,这显然不是自动更新想看到的。

那后来怎样的思路呢?

这里我们总想着要扔掉旧地图,这就是错误的根源(死胡同),扔掉了旧地图就会出现上面的问题,1天不会有太大的误差,一个星期后就不好说喽,特别是环境变化大的场地。那这就遇到了似乎永远解决不了的难题,其实是我们进入了一个死胡同,那就是我们惯性思维的认为地图100%会发生改变。

如果有99%的地图经常发生改变,但是有1%的地图永远不改变,我们是否可以实现自动更新地图呢?这个是可以的,我们可以利用这个1%的区域实现初始化重定位,然后绕着变化的99%的区域走一圈,然后再回到1%不变的区域实现闭环检测实现累计误差的消除,同时更新了变化的99%的区域。而且每次更新的误差维持在同一水平。

如何有1%不变的区域呢?

1-真的有1%的区域是不变的(自动更新精度是初始化匹配的精度)
2-使用landmark(激光特征、反光柱、二维码)保持一个全局唯一位置,可以让机器人开机自定位(自动更新精度是landmark检测的精度)

有了这1%不变的轮廓或者landmark,我们可以一辈子自动更新,并且不担心误差累积,

就好像30年过去了,家乡已经变化的面目全非,但是看到家门口的那棵大杨树,我还能依稀想起家乡30年前的样子!

初步测试结果:基本满足,后续再更新来看

cartographer的思路就是map是固定的地图,然后不断检测和map匹配度较好的地图然后固定住,两个固定住的新地图之间的地图也固定住,但是这里有个很重要的地方,那就是新更新的部分可以用于导航,但是要固定的地图一定是和map进行匹配的地图,不能用新更新的地图(不然又陷入了死胡同)。

2021-10-18补充:
由于导航时新增的地图的是匹配旧地图新增的,所以在后端优化时的权重要比老地图的权重小,不然又要累计误差,仿真和真机测试暂时还ok,目前测试使用20天前的地图,面积变化90%,一直更新运行,保守估计精度+/-2cm

2021-10-21补充:
如果走的太远,而且单个子图有比较大的误差,即使有回环更新的地图也可能会不准确。

你可能感兴趣的:(2d_slam,自动驾驶)