tf简介
TF(TransForm),就是坐标转换,包括了位置和姿态两个方面的变换。注意区分坐标转换和坐标系转换。
坐标转换是一个坐标在不同坐标系下的表示,而坐标系转换不同坐标系的相对位姿关系。
tf功能包
tf是一个让用户随时间跟踪多个参考系的功能包,它使用一种树型数据结构,根据时间缓冲并维护多个参考系之间的坐标变换关系,可以帮助用户在任意时间,将点、向量等数据的坐标,在两个参考系中完成坐标变换。
tf工具
坐标系统虽然是一个基础理论,但是由于涉及多个空间的变换,所以TF功能包提供了丰富的命令行工具来帮助用户调试和创建tf变换。
- tf_monitor
tf_monitor工具的功能是打印tf树中的所有坐标系的状态,或者通过参数来查看指定参考系之间的信息。
- tf_monitor
- tf_monitor <source_frame> <target_target>
运行后效果:
xx@xx:~$rosrun tf tf_monitor #显示当前坐标变换树的信息,主要是名称和实时的时间延时
RESULTS: for all Frames
Frames:
Frame: base_footprint published by unknown_publisher Average Delay: 0.00555556 Max Delay: 0.01
Frame: base_link published by unknown_publisher(static) Average Delay: 0 Max Delay: 0
Frame: camera_depth_frame published by unknown_publisher(static) Average Delay: 0 Max Delay: 0
... ...
All Broadcasters:
Node: unknown_publisher 162.5 Hz, Average Delay: -0.0115385 Max Delay: 0.01
Node: unknown_publisher(static) 1e+08 Hz, Average Delay: 0 Max Delay: 0
- tf_echo
查看两个frame之间的变换关系。
$ rosrun tf tf_echo <source_frame> <target_frame>
运行后效果:
xx@xx:~$ rosrun tf tf_echo /base_footprint /base_link
At time 0.000
- Translation: [0.000, 0.000, 0.010]
- Rotation: in Quaternion [0.000, 0.000, 0.000, 1.000]
in RPY (radian) [0.000, -0.000, 0.000]
in RPY (degree) [0.000, -0.000, 0.000]
- static_transform_publisher
static_transform_publisher工具的功能是发布两个参考系之间的静态坐标变换,两个参考系一般不发生相对位置变化。
命令的格式如下:
-
static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
-
static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
旋转参数第一种命令格式使用以弧度为单位的 yaw/pitch/roll三个角度(yaw是围绕x轴旋转的偏航角,pitch是围绕y轴旋转的俯仰角,roll是围绕z轴旋转的翻滚角),而第二种命令格式使用四元数表达旋转角度。发布频率以ms为单位,一般100ms比较合适。
该命令不仅可以在终端中使用,还可以在launch文件中使用,标签如下:
<launch>
<node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 1 link1_parent link1 100" />
</launch>
- view_frames
view_frames 是可视化的调试工具,可以生成pdf文件,来显示整棵tf树的信息。
命令行的执行方式如下:
$ rosrun tf view_frames
$ evince frames.pdf
调试tf
参考链接:https://blog.csdn.net/hcx25909/article/details/50154225
来源:CSDN
作者:汉文修士
链接:https://blog.csdn.net/c417469898/article/details/103983159