1.tf介绍
说明:本教程将帮助您了解tf可以为您做些什么。
It shows off some of the tf power in a multi-robot example using turtlesim。
同时也介绍了使用tf_echo,view_frames,rqt_tf_tree和rviz。
关键词:变换,坐标系
教程级别: BEGINNER
2.设置Demo
本教程的节点是为Ubuntu发布的,所以继续安装它们:
$ sudo apt-get install ros- melodic -ros-tutorials ros- melodic -geometry-tutorials ros- melodic -rviz ros- melodic -rosbash ros- melodic -rqt-tf-tree
3.运行Demo
现在我们已经完成了turtle_tf安装,让我们运行这个Demo。
$ roslaunch turtle_tf turtle_tf_demo.launch
你会看到turtlesim从两只乌龟开始。
启动turtlesim之后,您可以使用键盘箭头键在turtlesim中驾驶中心龟,
选择roslaunch终端窗口,以便捕获您的按键以驱动乌龟。
正如你所看到的那样,一只乌龟会继续跟随你驾驶的乌龟。
4.发生了什么
这个演示使用tf库创建三个坐标系:世界框架,turtle1坐标系和turtle2坐标系。
本教程使用tf broadcaster发布乌龟坐标系和tf listener来计算乌龟坐标系的差异,并移动一只乌龟来跟随另一只乌龟。
5.工具
现在让我们看看如何使用tf来创建这个Demo。我们可以使用tf工具来查看幕后的工作。
5.1使用view_frames
view_frames创建一个tf通过ROS广播的关于坐标系的图表。
$ rosrun tf view_frames
你会看见:
Transform Listener initing
Listening to /tf for 5.000000 seconds
Done Listening
dot - Graphviz version 2.16 (Fri Feb 8 12:52:03 UTC 2008)
Detected dot version 2.16
frames.pdf generated
这里一个tf监听器正在监听通过ROS广播的坐标系,并绘制一个如何连接坐标系的树。要查看树:
$ evince frames.pdf
在这里我们可以看到由tf广播的三个坐标系:world,turtle1和turtle2。
我们还可以看到world是turtle1和turtle2帧的父级。
出于调试目的,view_frames还会报告一些诊断信息,关于何时收到最旧和最近的坐标变换以及坐标发布到tf的速度。
5.2 使用rqt_tf_tree
rqt_tf_tree是一个运行时工具,用于可视化通过ROS广播的坐标系。您只需通过图表左上角的刷新底部刷新树。
用法:
rosrun rqt_tf_tree rqt_tf_tree
或者干脆:
rqt&
然后从插件选项卡中选择rqt_tf_tree。
5.3 使用tf_echo
tf_echo报告通过ROS广播的任何两坐标系之间的转换。
用法:
rosrun tf tf_echo [reference_frame] [target_frame]
让我们看一下turtle2帧相对于turtle1帧的变换,它相当于:
$ rosrun tf tf_echo turtle1 turtle2
当tf_echo监听器接收通过ROS广播的帧时,您将看到转换显示。
At time 1416409795.450 - Translation: [0.000, 0.000, 0.000] - Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405] in RPY [0.000, -0.000, 2.308] At time 1416409796.441 - Translation: [0.000, 0.000, 0.000] - Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405] in RPY [0.000, -0.000, 2.308] At time 1416409797.450 - Translation: [0.000, 0.000, 0.000] - Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405] in RPY [0.000, -0.000, 2.308] At time 1416409798.441 - Translation: [0.000, 0.000, 0.000] - Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405] in RPY [0.000, -0.000, 2.308] At time 1416409799.433 - Translation: [0.000, 0.000, 0.000] - Rotation: in Quaternion [0.000, 0.000, 0.691, 0.723] in RPY [0.000, -0.000, 1.526]
当你驾驶你的乌龟时,你会看到变换随着两只乌龟相对移动而变化。
6. rviz和tf
rviz是一个可视化工具,可用于检查tf坐标系。让我们用rviz来看看我们的龟坐标系。
让我们开始rviz与使用的turtle_tf配置文件-d的选项rviz:
$ rosrun rviz rviz -d`rospack find turtle_tf` / rviz / turtle_rviz.rviz
在侧栏中,您将看到由tf广播的坐标系。当你驾驶乌龟时,你会看到坐标在rviz中移动。