tf2简介 [待校准@8434]

Goal目标: Run运行turtlesim例程,并在使用turtlesim的多机器人示例中查看tf2的某些功能。 [待校准@8435]

Tutorial教程级别: Intermediate中级 [待校准@6713]

时间: 10分钟 [Alyssa@7452]

安装例程 [待校准@8436]

让我们从安装例程包及其依赖项开始。 [待校准@8437]

sudo apt-get install ros-foxy-turtle-tf2-py ros-foxy-tf2-tools ros-foxy-tf-transformations

此外,安装一个 transforms3d Python包,为 tf_transformations 包提供四元数和欧拉角转换功能。 [待校准@8438]

pip3 install transforms3d

运行例程 [待校准@8439]

现在我们已经安装了 turtle_tf2_py 教程包,让我们运行例程。首先,打开一个新的终端和 source your ROS 2 installation ,这样 ros2 命令就可以工作了。然后运行以下命令: [待校准@8440]

ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py

你会看到海龟从两只海龟开始。 [待校准@8441]

../../_images/turtlesim_follow1.png

在第二个终端窗口中,键入以下命令: [待校准@8442]

ros2 run turtlesim turtle_teleop_key

一旦turtlesim启动,你可以使用键盘箭头键在turtlesim中驾驶中央海龟,选择第二个终端窗口,这样你的击键将被捕获来驾驶海龟。 [待校准@8443]

../../_images/turtlesim_follow2.png

你可以看到一只乌龟不断地移动,跟随你正在驾驶的乌龟。 [待校准@8444]

发生了什么? [待校准@8445]

该例程使用tf2库创建三个坐标帧: 一个 world 帧、一个 turtle1 帧和一个 turtle2 帧。本教程使用tf2广播器发布海龟坐标帧,使用tf2监听程序计算海龟帧的差异,并将一只海龟移动到另一只海龟后面。 [待校准@8446]

tf2工具 [待校准@8447]

现在让我们看看如何使用tf2来创建此例程。我们可以用 tf2_tools 来看看tf2在幕后做了什么。 [待校准@8448]

1使用视图 _ 帧s [待校准@8449]

[需手动修复的语法]``view_frames`` creates图帧被广播tf2在ROS。 [待校准@8450]

ros2 run tf2_tools view_frames.py

您将看到: [待校准@8451]

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

在这里,一个tf2听众正在收听通过ROS广播的帧,并绘制出帧如何连接的树。要查看树,请使用您最喜欢的PDF查看器打开生成的 frames.pdf[待校准@8452]

../../_images/turtlesim_frames.png

在这里,我们可以看到tf2播放的三帧: worldturtle1turtle2 。这里的 worldturtle1turtle2 帧的母体。 view_frames 还报告了一些诊断信息,关于最旧和最近的帧转换何时被接收,以及tf2帧发布到tf2以进行调试的速度。 [待校准@8453]

2使用tf2_echo [待校准@8454]

[需手动修复的语法]``tf2_echo`` reports转换任何两个帧s播出超过ROS。 [待校准@8455]

用途: [待校准@8456]

ros2 run tf2_ros tf2_echo [reference_frame] [target_frame]

让我们看一下 turtle2 帧相对于 turtle1 帧的变换,其等效于: [待校准@8457]

ros2 run tf2_ros tf2_echo turtle2 turtle1

tf2_echo 听众接收到通过ros2广播的帧时,您将看到显示的转换。 [待校准@8458]

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]

当你驾驶你的海龟时,你会看到当两只海龟相对移动时转变的变化。 [待校准@8459]

rviz和tf2 [待校准@8460]

rviz is a visualization tool that is useful for examining tf2 frames. Let's look at our turtle frames using rviz. Let's start rviz with the turtle_rviz.rviz configuration file using the -d option: [待校准@8461]

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

在侧栏中,您将看到tf2播放的帧s。当你驾驶海龟时,你会看到帧在rviz移动。 [待校准@8462]