关于navigation的基本介绍,已经足够入门者学习使用。

其中最难理解的部分我认为是/odom这个frame。因为他有点反人类直觉。

odometry是通过航迹推算算出来的机器人位姿。但是,想要表明机器人位姿,必须有两个坐标系的相对关系才能表示出来对吧?那这个推算的位姿就是/odom_frame/bae_frame之间的tf变换。如下图中1部分所示。

同样机器人与真实环境之间也有一个相对位姿的变化。真实环境我们用/map_frame表示,那么这个真实的pose变换是/map_frame/base_frame之间的tf变换来表征。
下图中第2部分的AMCL定位估计出来的pose就是机器人相对于真实环境之间的位姿变换,我用绿色椭圆框框起来的。

但是由于tf变换中设定每个frame都只有一个father,/base_frame不可以有两个父亲frame,所以就在/map_frame/base_frame之间插入了/odom_frame
当然了,/map_frame/odom_frame之间的tf关系由AMCL来维护。只需要AMCL算法用求出来的真实的pose变换(绿圈)减去第1部分中航迹推测的变换,就能得到下图第2部分中用红圈圈起来的tf变换。也就是所谓的odometry Drift
这也解释了为什么在navigation过程中,/odom坐标系一直在围着/map转。
在这里插入图片描述