写在前面
本文的内容主要来自 ros wiki 上的教程:http://wiki.ros.org/tf
简短总结:
tf_monitor
: 将当前的坐标系转换关系打印到终端控制台。
tf_echo <source_frame> <target_frame>
:把特定的坐标系之间的平移旋转关系,打印到终端控制台。
static_transform_publisher
: 发布一个父坐标系到子坐标系的静态tf转换,偏移x/y/z (单位是m),旋转是欧拉角(或者四元数) ,这里的周期period_in_ms,是这个tf的发布周期,设置为100ms(也就是10hz)是一个很好的值。
view_frames
: 可以输出当前的tf关系到pdf中。
roswtf
: 帮助你找到tf中的错误。
一、tf_monitor
tf_monitor
:将当前的坐标系转换关系打印到终端控制台。
rosrun tf tf_monitor
打印结果:
tf_monitor <source_frame> <target_target>
:打印特定的坐标系关系
比如:
rosrun tf tf_monitor /map /base_link
打印结果:
二、tf_echo
tf_echo <source_frame> <target_frame>
:把特定的坐标系之间的平移旋转关系,打印到终端控制台。
rosrun tf tf_echo /map /base_link
打印结果:
三、static_transform_publisher
这个是最重要的命令,既可以在命令行使用,也可以在launch文件使用,并且经常在launch文件中使用。主要有下面两种形式:
- 发布一个父坐标系到子坐标系的静态tf转换,偏移x/y/z (单位是m),旋转是欧拉角 yaw/pitch/roll (单位是弧度 rad),这里 yaw是关于Z轴的旋转,pitch是关于关于Y轴的旋转,roll是关于X轴的旋转。这里的周期period_in_ms,是这个tf的发布周期,设置为100ms(也就是10hz)是一个很好的值。
static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_ms
在launch文件中使用格式:
<launch>
<node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 link1_parent_frame link1_child_frame 100" />
</launch>
- 发布一个父坐标系到子坐标系的静态tf转换,偏移x/y/z (单位是m),旋转是四元数 qx qy qz qw ,这里的周期period_in_ms,是这个tf的发布周期,设置为100ms(也就是10hz)是一个很好的值。
static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
在launch文件中使用格式:
<launch>
<node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 1 link1_parent_frame link1_child_frame 100" />
</launch>
四、view_frames
view_frames
是一个图形化的调试工具,并且可以输出当前的tf关系到pdf中。
运行以下指令,可以让你在当前目录下得到一个 frames.pdf 和 frames.gv (可以理解为是一种图片)
rosrun tf view_frames
五、roswtf
roswtf
: 帮助你找到tf中的错误。
运行效果:
参考链接:
[1] tf : http://wiki.ros.org/tf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)