关于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
转。