警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
介绍 tf2
目标 运行 turtlesim 演示,在使用 turtlesim 的多机器人示例中了解 tf2 的部分功能。
辅导水平: 中级
时间 10 分钟
安装演示版
让我们先安装演示软件包及其依赖项。
sudo apt-get install ros-galactic-turtle-tf2-py ros-galactic-tf2-tools ros-galactic-tf-transformations
# 克隆 和 构建 的 几何教程 repo 使用 的 分支机构 那 赛事 您的 安装
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 广播帧的示意图。
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 [reference_frame] [target_frame] [target_frame
让我们来看看 乌龟2
帧相对于 乌龟1
帧,相当于
ros2 run tf2_ros tf2_echo turtle2 turtle1
您将看到变换显示为 tf2_echo
监听器接收通过 ROS2 广播的帧。
时间 1622031731.625364060
- 翻译: [2.796, 1.039, 0.000][2.796, 1.039, 0.000]
- 旋转:以四元数 [0.000, 0.000, 0.202, 0.979] 表示
时间 1622031732.614745114
- 翻译:[1.608, 0.250, 0.000]
- 旋转:以四元数 [0.000, 0.000, 0.032, 0.999] 表示
当您驾驶您的乌龟四处游动时,您会看到变换随着两只乌龟的相对移动而变化。
rviz 和 tf2
rviz
是一款可视化工具,对检查 tf2 帧非常有用。让我们使用 rviz 来查看我们的乌龟帧。 turtle_rviz.rviz
配置文件,使用-d
选择:
ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share turtle_tf2_py)/rviz/turtle_rviz.rviz

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