您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.
介绍 tf2
目标 运行 turtlesim 演示,在使用 turtlesim 的多机器人示例中了解 tf2 的部分功能。
辅导水平: 中级
时间 10 分钟
安装演示版
让我们先安装演示软件包及其依赖项。
sudo apt-get install ros-rolling-rviz2 ros-rolling-turtle-tf2-py ros-rolling-tf2-ros ros-rolling-tf2-tools ros-rolling-turtlesim
sudo dnf install ros-rolling-rviz2 ros-rolling-turtle-tf2-py ros-rolling-tf2-ros ros-rolling-tf2-tools ros-rolling-turtlesim
git clone https://github.com/ros/geometry_tutorials.git -b ros2
运行演示
现在我们已经安装了 乌龟_tf2_py
教程包,让我们运行演示。首先,打开一个新终端,然后 为您的 ROS 2 安装提供源代码 以便 玫瑰2
命令即可。然后运行以下命令:
ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py
您会看到乌龟模拟游戏从两只乌龟开始。

在第二个终端窗口中键入以下命令:
ros2 run turtlesim turtle_teleop_key
启动海龟模拟器后,您可以使用键盘上的方向键在海龟模拟器中驱动中央海龟,选择第二个终端窗口,这样就可以捕捉到您驱动海龟的按键。

你可以看到,一只乌龟不断移动,跟着你驾驶的乌龟转圈。
发生了什么事?
该演示使用 tf2 库创建了三个坐标框架:a 世界
帧,一个 乌龟1
框架,以及一个 乌龟2
帧。本教程使用 tf2 广播公司 来发布海龟坐标系,并用 tf2 监听器 来计算海龟帧的差异,并移动一只海龟跟随另一只。
tf2 工具
现在让我们来看看如何使用 tf2 制作这个演示。我们可以使用 tf2 工具
来看看 TF2 在幕后做了些什么。
1 使用视图框架
视图框架
可创建 tf2 通过 ROS 广播的帧图。请注意,该工具仅适用于 Linux 系统;如果您使用的是 Windows 系统,请跳至下面的 "使用 tf2_echo"。
ros2 run tf2_tools view_frames
你会看到
在 5 秒钟内监听 tf 数据...
在 frames.pdf 文件中生成图形...
在这里,tf2 监听器正在监听通过 ROS 广播的帧,并绘制帧之间的连接树。要查看树状图,请打开生成的 框架.pdf
使用您最喜欢的 PDF 阅读器。

在这里,我们可以看到 tf2 广播的三个帧: 世界
, 乌龟1
和 乌龟2
.......。 世界
帧是 乌龟1
和 乌龟2
镜框
视图框架
也会报告一些诊断信息,如何时接收到最早和最近的帧变换,以及 tf2 帧发布到 tf2 的速度,以便调试。
2 使用 tf2_echo
tf2_echo
报告通过 ROS 广播的任意两个帧之间的转换。
使用方法
ros2 运行 tf2_ros tf2_echo [source_frame] [target_frame] [target_frame
让我们来看看 乌龟2
帧相对于 乌龟1
帧,相当于
ros2 run tf2_ros tf2_echo turtle2 turtle1
您将看到变换显示为 tf2_echo
监听器接收通过 ROS 2 广播的帧。
时间 1683385337.850619099
- 翻译: [2.157, 0.901, 0.000][2.157, 0.901, 0.000]
- 旋转:以四元数 [0.000, 0.000, 0.172, 0.985] 表示
- 旋转:单位 RPY(弧度) [0.000, -0.000, 0.345]
- 旋转:单位 RPY(度) [0.000,-0.000,19.760]
- 矩阵
0.941 -0.338 0.000 2.157
0.338 0.941 0.000 0.901
0.000 0.000 1.000 0.000
0.000 0.000 0.000 1.000
时间 1683385338.841997774
- 翻译:[1.256, 0.216, 0.000]
- 旋转:以四元数 [0.000, 0.000, -0.016, 1.000] 表示
- 旋转:单位 RPY(弧度)[0.000, 0.000, -0.032]
- 旋转:单位 RPY(度)[0.000, 0.000, -1.839]
- 矩阵
0.999 0.032 0.000 1.256
-0.032 0.999 -0.000 0.216
-0.000 0.000 1.000 0.000
0.000 0.000 0.000 1.000
当您驾驶您的乌龟四处游动时,您会看到变换随着两只乌龟的相对移动而变化。
rviz2 和 tf2
rviz2
是一个可视化工具,对检查 tf2 帧非常有用。让我们用 rviz2
通过使用 -d
选择:
ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share turtle_tf2_py)/rviz/turtle_rviz.rviz
for /f "usebackq tokens=*" %a in (`ros2 pkg prefix --share turtle_tf2_py`) do rviz2 -d %a/rviz/turtle_rviz.rviz

在侧边栏中,您将看到 tf2 播放的帧。当你驾驶乌龟移动时,你会看到帧在 rviz 中移动。