您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 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

运行演示

现在我们已经安装了 乌龟_tf2_py 教程包,让我们运行演示。首先,打开一个新终端,然后 为您的 ROS 2 安装提供源代码 以便 玫瑰2 命令即可。然后运行以下命令:

ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py

您会看到乌龟模拟游戏从两只乌龟开始。

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

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

ros2 run turtlesim turtle_teleop_key

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

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

你可以看到,一只乌龟不断移动,跟着你驾驶的乌龟转圈。

发生了什么事?

该演示使用 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 阅读器。

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

在这里,我们可以看到 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
././././_images/turtlesim_rviz1.png

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