TF转换(参考)
1、URDF、TF和odom的关系
在机器人自主导航中,ROS会构建这几个很重要的坐标系,即frame。在urdf文件中定义base_link,它代表了机器人的主干,其它所有的frame都是相对于base_link定义并粘在一起的。它们一起相对于大地图map移动,让机器人移动就是向tf发布geometry_msgs::TransformStamped消息通知ros base_link相对于map的tf转换关系 。
2、概念理解
| 物理语义 | 理解 | 原点 | |
|---|---|---|---|
base_link |
为相对机器人的本体的坐标系 | 位于tf tree的最根部 |
原点一般为表示机器人中心 |
odom |
一个对于机器人全局位姿的粗略估计 | 直接与base_link 相链接,数据一般来源于里程计(odometry) |
原点为开始计算位姿那个时刻的机器人的位置 |
map |
一个经过先验(或者SLAM)地图数据矫正过的,在地图中的位姿信息 |
与odom(或者odom_combined)相连,与odom同为全局坐标系 |
原点为地图原点(地图原点在地图相应的yaml文件中有规定) |
3、关系
map --> odom --> base_link odom到base_link的坐标转换是从运动源计算出来广播的。map到base_link的坐标转换是被定位模块计算出来的. 但定位模块不发布map到base_link的转换. 相反它先接受从odom到base_link的转换, 再计算并广播map到odom的位置转换关系
fixed_frame:RViz中认定的大世界就是fixed_frame
target_frame:Rviz中视觉跟踪的frame是 target_frame
4、坐标转换
在lidar的launch启动文件中增加:
1 | <node pkg="tf" type="static_transform_publisher" name="base_link_to_laser4" |
1 | args="0.0 0.0 0.2 0.0 3.1415926 0.0 /base_link /laser_frame 40" |
修改urdf文件的坐标 找到urdf的描述文件,如turtlebot_description/urdf/turtlebot_library.urdf.xacro,在文件中修改坐标
1 | <joint name="laser" type="fixed"> |