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"> |