需求: 将里程计/odom改成以小车初始位置为原点,车体坐标轴为方向建立坐标系,用该坐标系下的位姿作为里程计数据的位姿
分析:
/odom是ros发布的相对固定的里程计信息,不能使用命令行工具直接修改里程计信息参考的初始位置。
因此,从/odom坐标系出发,使用static_transform_publisher增加一个/odom_start坐标系,使用机器人初始位置x、y、yaw为参数,使/odom_start与机器人的初始位置一致,即与初始时的base_link重合。
再在cpp程序中使用tf::TransformListener监测base_link与odom_start的transformation,当做位置信息,沿用原odom的速度信息。
参考资料:
navigation/Tutorials/RobotSetup/Odom - ROS Wiki
注意:在循环while中,以下语句不可少,否则odom_new的时间戳和沿用的速度不能更新。
ros::spinOnce();