介绍“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

运行演示

现在我们已经安装了 turtle_tf2_py 教程包,让我们运行演示。 首先,打开一个新终端并 source your ROS 2 installation,以便 ros2 命令可以正常工作。 然后运行以下命令:

ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py

您将看到 turtlesim 以两只海龟开始。

../../../_images/turtlesim_follow1.png

在第二个终端窗口中输入以下命令:

ros2 run turtlesim turtle_teleop_key

一旦启动了 turtlesim,您就可以使用键盘箭头键在 turtlesim 中驱动中央海龟, 选择第二个终端窗口,这样您的按键就会被捕获来驱动海龟。

../../../_images/turtlesim_follow2.png

您可以看到一只海龟不断移动以跟随您正在驾驶的海龟。

发生了什么?

此演示使用 tf2 库创建三个坐标系:一个“世界”框架、一个“海龟 1”框架和一个“海龟 2”框架。

本教程使用 tf2 广播器 发布海龟坐标系,使用 tf2 监听器 计算海龟框架中的差异并移动一只海龟以跟随另一只海龟。

tf2 工具

现在让我们看看如何使用 tf2 创建此演示。

我们可以使用“tf2_tools”查看 tf2 在幕后做什么。

1 使用 view_frames

“view_frames”创建 tf2 通过 ROS 广播的帧的图表。

请注意,此实用程序仅适用于 Linux;如果您使用的是 Windows,请跳至下面的“使用 tf2_echo”。

ros2 run tf2_tools view_frames

您将看到:

Listening to tf data during 5 seconds...
Generating graph in frames.pdf file...

这里,tf2 监听器正在监听通过 ROS 广播的帧,并绘制一棵树来表示帧的连接方式。 要查看这棵树,请使用您最喜欢的 PDF 查看器打开生成的“frames.pdf”。

../../../_images/turtlesim_frames.png

在这里我们可以看到 tf2 广播的三个帧:“world”、“turtle1”和“turtle2”。 “world”帧是“turtle1”和“turtle2”帧的父帧。 “view_frames”还报告了一些诊断信息,关于何时收到最旧和最新的帧变换,以及出于调试目的将 tf2 帧发布到 tf2 的速度。

2 使用 tf2_echo

tf2_echo 报告通过 ROS 广播的任何两个帧之间的变换。

用法:

ros2 run tf2_ros tf2_echo [source_frame] [target_frame]

让我们看一下“turtle2”框架相对于“turtle1”框架的变换,它等同于:

ros2 run tf2_ros tf2_echo turtle2 turtle1

当“tf2_echo”监听器接收通过 ROS 2 广播的帧时,您将看到显示的转换。

At time 1622031731.625364060
- Translation: [2.796, 1.039, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.202, 0.979]
At time 1622031732.614745114
- Translation: [1.608, 0.250, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.032, 0.999]

当你驾驶你的乌龟四处移动时,你会看到随着两个乌龟相对移动,变换也随之变化。

rviz2 和 tf2

rviz2 是一个可视化工具,可用于检查 tf2 帧。 让我们使用 rviz2 查看我们的乌龟帧,方法是使用 -d 选项启动配置文件:

ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share turtle_tf2_py)/rviz/turtle_rviz.rviz
../../../_images/turtlesim_rviz1.png

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