ROS 中的三种坐标系(map、odam与base_link)

在网上看了一些大佬的解释,还是感觉有点迷糊,多看了几次之后感觉好像get到了,如果说错了还请指正。

map和base_link都很好理解,一个是绝对坐标系,另一个是以机器人自身为原点的坐标系,很容易懂。

唯一麻烦的就是odam,里程计坐标系。

下面就以我的拙见尝试小白化地解释一下这个玩意儿。

首先,我们制定机器人路径时,使用的必然是绝对坐标系——

比如我现在让机器人去点(10,10)。

要完成这件事,机器人需要先知道自己在哪。它没有GPS,所以只能倒推——通过里程计。这也是为什么“没有偏移的话odam应该与map重合”,因为odam本来就是用来倒推map的。

里程计告诉它,自从原点启动起,它在X向上移动2,Y向上移动了5。于是它就认为自己在(2,5)。反馈给base_link,则base_link里原点在(0,0),目标在(8,5)。

然而实际上,因为偏移,它其实在(3,4)(map)。

此时,在map,也就是实际上,它在(3,4),但在odam中它在(2,5)。
它理应运动(7,6)到达目标点,但它会运动(8,5),因为odam反馈给base_link后,在base_link中,目标在(8,5)。

而这时,校正传感器又告诉它了,“我觉得你的里程表刚才X漏算了0.999,Y多算了1.001”。

于是它把自己所在位置修正为了(2.999,3.999),接下来该移动(7.001,6.001)。

以上。

odam←base_link+里程表
+
校正

接近map的坐标系

参考:https://blog.csdn.net/flyinsilence/article/details/51854123

你可能感兴趣的:(ROS)