ROS 2 Jazzy Jalisco 坐标变换工具 tf2 总结和习题_jazzy mrpt-zhangrelay

 

中文总结

tf2 教程:使用 turtlesim 展示多机器人场景中的 tf2 功能

目标:通过运行 turtlesim 演示,展示在多机器人场景中 tf2 的强大功能。

教程难度:中级

时间:10 分钟

内容概览
  1. 安装演示环境
  2. 运行演示
  3. 演示过程解析
  4. tf2 工具使用
    • 使用 view_frames
    • 使用 tf2_echo
  5. rviz2 与 tf2 的结合使用
安装演示环境

首先,我们需要安装演示包及其依赖项。

Ubuntu 用户


 

bash复制代码

  sudo apt-get install ros-jazzy-rviz2 ros-jazzy-turtle-tf2-py ros-jazzy-tf2-ros ros-jazzy-tf2-tools ros-jazzy-turtlesim

(注意:ros-jazzy- 前缀可能因 ROS 2 版本而异,请根据实际情况替换。)

运行演示

安装完成后,让我们运行演示。首先,打开一个新的终端并激活你的 ROS 2 安装,然后运行以下命令:


 

bash复制代码

  ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py

你将看到 turtlesim 启动并显示两只乌龟。

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


 

bash复制代码

  ros2 run turtlesim turtle_teleop_key

现在,你可以使用键盘方向键在 turtlesim 中驾驶中间的乌龟。选择第二个终端窗口以确保你的按键输入被捕获以驱动乌龟。

你将看到一只乌龟持续移动以跟随你驾驶的乌龟。

演示过程解析

此演示使用 tf2 库创建了三个坐标框架:世界框架、turtle1 框架和 turtle2 框架。本教程使用 tf2 广播器发布乌龟坐标框架,并使用 tf2 监听器计算乌龟框架之间的差异,并移动一只乌龟以跟随另一只。

tf2 工具使用

现在,让我们看看 tf2 是如何在这个演示中使用的。我们可以使用 tf2 工具来查看 tf2 在后台的操作。

1. 使用 view_frames

view_frames 创建一个由 tf2 通过 ROS 广播的框架的图表。请注意,此实用程序仅在 Linux 上有效;如果你使用的是 Windows,请跳至下面的“使用 tf2_echo”。


 

bash复制代码

  ros2 run tf2_tools view_frames

你将看到 tf2 监听器正在监听通过 ROS 广播的框架,并绘制一个表示框架如何连接的树。要查看树,请使用你喜欢的 PDF 查看器打开生成的 frames.pdf。

在这里,我们可以看到 tf2 广播的三个框架:world、turtle1 和 turtle2。world 框架是 turtle1 和 turtle2 框架的父框架。view_frames 还报告了一些诊断信息,包括最早和最近接收到的框架变换的时间,以及为了调试目的,tf2 框架发布到 tf2 的速度。

2. 使用 tf2_echo

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

用法:


 

bash复制代码

  ros2 run tf2_ros tf2_echo [source_frame] [target_frame]

让我们查看 turtle2 框架相对于 turtle1 框架的变换,这相当于:


 

bash复制代码

  ros2 run tf2_ros tf2_echo turtle2 turtle1

你将看到 tf2_echo 监听器接收通过 ROS 2 广播的框架时显示的变换。

当你驾驶乌龟移动时,你会看到两个乌龟相对移动时变换发生变化。

rviz2 与 tf2 的结合使用

rviz2 是一个可视化工具,对于检查 tf2 框架非常有用。让我们使用 rviz2 和配置文件(使用 -d 选项)查看我们的乌龟框架:


 

bash复制代码

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

在侧边栏中,你将看到 tf2 广播的框架。当你驾驶乌龟移动时,你将在 rviz 中看到框架移动。


详细中文总结

本教程通过运行 turtlesim 演示展示了 tf2 在多机器人场景中的功能。我们安装了必要的 ROS 2 包,并运行了一个包含两只乌龟的演示。通过键盘控制其中一只乌龟移动,另一只乌龟会自动跟随。这背后,tf2 库创建了三个坐标框架,并使用 tf2 广播器和监听器来处理框架之间的变换。我们还学习了如何使用 tf2 工具(如 view_frames 和 tf2_echo)来查看和分析这些变换。最后,我们展示了如何使用 rviz2 可视化工具来查看乌龟框架的实时移动。


练习题

单选题

  1. 在 tf2 的 turtlesim 演示中,通过哪个命令可以运行乌龟的遥控操作?
    A. ros2 run turtlesim turtle_teleop_key
    B. ros2 run turtlesim turtle_sim
    C. ros2 run tf2_ros tf2_echo
    D. ros2 run rviz2 rviz2

    答案:A

  2. 在 tf2 演示中,哪个工具可以用来创建框架之间的变换关系的图表?
    A. tf2_echo
    B. view_frames
    C. rviz2
    D. turtle_teleop_key

    答案:B

  3. 在 ROS 2 环境中,tf2 演示包通常安装在哪个前缀下?(注意:这里以一般形式提问,不特定于某个版本)
    A. ros-<distro>-
    B. ros2-<distro>-
    C. ros-turtle-
    D. tf2-

    答案:B(其中 <distro> 代表具体的 ROS 2 发行版,如 foxygalactic 等)哈哈哈

  4. 在 tf2 演示中,哪个文件用于在 rviz2 中配置乌龟框架的可视化?
    A. turtle_tf2_demo.launch.py
    B. turtle_rviz.rviz
    C. tf2_echo.py
    D. view_frames.py

    答案:B

  5. 当使用 tf2_echo 查看两个框架之间的变换时,变换数据是如何通过 ROS 系统传输的?
    A. 使用 TCP/IP 协议
    B. 使用 ROS 话题(Topics)
    C. 使用 ROS 服务(Services)
    D. 使用文件系统

    答案:B

多选题

  1. 在 tf2 的 turtlesim 演示中,以下哪些工具或命令被用于演示和分析?
    A. ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py
    B. view_frames
    C. turtle_teleop_key
    D. ros2 run rviz2 rviz2

    答案:A, B, C, D

  2. 在使用 tf2 时,以下哪些信息可以通过 view_frames 工具获得?
    A. 框架之间的变换关系
    B. 最早和最近接收到的框架变换的时间
    C. 框架发布到 tf2 的速度
    D. 乌龟的当前位置

    答案:A, B, C(D 选项关于乌龟的当前位置不是 view_frames 直接提供的信息)

判断题

  1. 在 tf2 的 turtlesim 演示中,只能看到一只乌龟在移动。( )

    答案:错(实际上,可以看到两只乌龟,其中一只由用户控制移动,另一只根据 tf2 的变换关系自动跟随)

  2. tf2_echo 工具可以用于查看任何两个框架之间的静态变换关系,但不能用于查看动态变化的变换。( )

    答案:错tf2_echo 可以实时查看两个框架之间的动态变换关系)



教程

COURSE