ROS探索总结-tf坐标变换

空扰寡人 提交于 2020-01-18 03:01:08

tf简介

TF(TransForm),就是坐标转换,包括了位置和姿态两个方面的变换。注意区分坐标转换和坐标系转换。
坐标转换是一个坐标在不同坐标系下的表示,而坐标系转换不同坐标系的相对位姿关系。

tf功能包

tf是一个让用户随时间跟踪多个参考系的功能包,它使用一种树型数据结构,根据时间缓冲并维护多个参考系之间的坐标变换关系,可以帮助用户在任意时间,将点、向量等数据的坐标,在两个参考系中完成坐标变换。

tf工具

坐标系统虽然是一个基础理论,但是由于涉及多个空间的变换,所以TF功能包提供了丰富的命令行工具来帮助用户调试和创建tf变换。
  1. 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

  1. 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]
  1. 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>
  1. view_frames
    view_frames 是可视化的调试工具,可以生成pdf文件,来显示整棵tf树的信息。
    命令行的执行方式如下:
$ rosrun tf view_frames
$ evince frames.pdf

调试tf

调试文档

参考链接:https://blog.csdn.net/hcx25909/article/details/50154225

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!