ros 机器人坐标

map: 一般与odom(或者odom_combined)相连,语义为一个经过先验(或者SLAM)地图数据矫正过的,在地图中的位姿信息。与odom同为全局坐标系。原点为地图原点(地图原点在地图相应的yaml文件中有规定)。

odom:一般直接与base_link 相链接,语义为一个对于机器人全局位姿的粗略估计。取名来源于odometry(里程计),一般这个坐标系的数据也是来源于里程计。对于全局位姿的估计方法很多,比如在hector SLAM与导航体系中,就采用了imu数据估计全局位姿,还有很多视觉里程计的算法(visual odometry)也能提供位姿估计。原点为开始计算位姿那个时刻的机器人的位置。

odom_combined 这个tf一般为好几种位姿估计方法的信息融合后的数据。在navigation metapackage中有 robot_pose_ekf 这个包是用扩展卡尔曼滤波算法(EKF)融合不同传感器的数据。

base_link: 一般位于tf tree的最根部,物理语义原点一般为表示机器人中心,为相对机器人的本体的坐标系。

base_footprint:坐标系原点为base_link原点在地面的投影,有些许区别(z值不同)。

一般起始时认为map 与odom的坐标系重合一致。 随着里程计的累计误差。 /odom的messsage数据是相对dom frame的值。如果odom数据都正确,那map 与odom始终重合。 但实际中有里程累计误差。 就需要做补偿。 利用运动预测与scanmatcher 得到的/odom与原订阅的odom不同。 两者的差异就通过调整坐标系间的变换反应出来,使scan数据尽量与地图想匹配,odom的消息可以认为只与底盘驱动有关,相对map就认为作了融合调整。

reference 坐标转换参考

你可能感兴趣的:(ros)