原文地址:http://wiki.ros.org/tf/Tutorials/Introduction to tf
##Introduction to tf
描述:本教程将给您一个关于tf可以为您做什么的好主意。它展示了使用turtlesim的多机器人示例中的一些tf能力。本文还介绍了如何使用tf_echo、view_frame、rqt_tf_tree和rviz。
1 Set Up the Demo
The nodes for this tutorial are released for Ubuntu, so go ahead and install them:
$ sudo apt-get install ros-kinetic-ros-tutorials ros-kinetic-geometry-tutorials ros-kinetic-rviz ros-kinetic-rosbash ros-kinetic-rqt-tf-tree
2 Running the Demo
Now that we’re done getting the turtle_tf tutorial package, let’s run the demo.
$ roslaunch turtle_tf turtle_tf_demo.launch
你会看到turtlesim是从两只海龟开始的。
一旦启动了turtlesim,您可以使用键盘箭头键驱动center turtle四处移动,选择roslaunch终端窗口,以便捕获您的击键来驱动turtle。
正如你所看到的,一只乌龟会一直跟着你驾驶的乌龟移动。
3 What is Happening
这个演示使用tf库创建三个坐标系:一个世界坐标系、一个turtle1坐标系和一个turtle2坐标系。本教程使用tf广播器发布乌龟坐标帧,使用tf监听器计算乌龟帧中的差异,并移动一只乌龟跟随另一只乌龟。
4 tf Tools
现在让我们看看如何使用tf创建这个演示。我们可以使用tf工具来查看tf在幕后做什么。
4.1 Using view_frames
view_frames creates a diagram of the frames being broadcast by tf over 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。我们还可以看到,世界坐标系是turtle1和turtle2的母体。为了调试,view_frames还报告一些诊断信息,这些信息是关于何时接收到最老和最近的帧转换,以及tf帧发布到tf的速度。
4.2 Using rqt_tf_tree
rqt_tf_tree是一个runtime tool,用于可视化正在ROS上广播的坐标系树。您可以简单地通过图表左上角的刷新底部来刷新树。
用法:
rosrun rqt_tf_tree rqt_tf_tree
Or simply:
rqt &
然后从Plugins选项卡中选择rqt_tf_tree。
4.3 Using 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]
当你驱动turtle四处走动时,你会看到当两只乌龟相对移动时transform的变化。
5 rviz and tf
rviz是一个可视化工具,可用于检查tf坐标系。让我们使用rviz查看我们的turtle 坐标系。Let’s start rviz with the turtle_tf configuration file using the -d option for rviz:
$ rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz
在侧边栏你会看到tf广播的坐标系。当你驱动turtle四处走动时,你会看到坐标系在旋转。
现在我们已经检查了turtle_tf_demo,让我们看看如何为这个演示程序编写广播程序(Python)(C++)。