map,odom,base_link,base_footprint,传感器坐标系
map:地图坐标系,顾名思义,一般设该坐标系为固定坐标系(fixed frame),一般与机器人所在的世界坐标系一致。
odom:里程计坐标系
base_link:机器人本体坐标系,与机器人中心重合
base_footprint:坐标系原点为base_link原点在地面的投影,有些许区别(z值不同)
传感器坐标系:还有一些传感器坐标系,根据传感器模型和安装位置来定义
简单的描述:(https://blog.csdn.net/gadwgdsk/article/details/95206155)
1)在系统计算中,map的原点是fixed的,不会改变,而AMCL计算得到的机器人坐标(map坐标系下)我们认为是绝对准确的。
2)odometry节点根据编码器积分的结果不停地发布odom到baselink的变换(换算到xy坐标系了)
问题:
odom到baselink的变换长时间后不是准确的,为什么要一直发布呢?这不会导致系统使用了错误的信息吗?
解答:在AMCL的代码中我们可以看到,计算得到map坐标系下机器人的坐标后并没有直接发布map到baselink的变换,而是根据odom和baselink的关系、map和baselink的关系,反推出map和odom的关系,然后发布map到odom的变换。而map和baselink的地图中的实际位置是不可能改变的(意思是真实的),因此我们在rviz中能够看到odom会随着机器人的运动而改变。总结一下就是:通过改变odom坐标系原点的位置使得机器人里程计的信息能够正确表达机器人的位置(改变的odom原点的量,就是机器人打滑等原因产生的里程计误差的量)。
参考:
1.https://www.ros.org/reps/rep-0105.html#id18
2.https://blog.csdn.net/flyinsilence/article/details/51854123
3.https://blog.csdn.net/gadwgdsk/article/details/95206155