警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
介绍 turtlesim 和 rqt
目标 安装并使用 turtlesim 软件包和 rqt 工具,为即将开始的教程做准备。
辅导水平: 初学者
时间 15 分钟
背景介绍
Turtlesim 是一个用于学习 ROS 2 的轻量级模拟器。它展示了 ROS 2 最基本的功能,让您对以后使用真正的机器人或机器人模拟有一个概念。
rqt 是 ROS 2 的图形用户界面工具。在 rqt 中进行的所有操作都可以通过命令行完成,但它提供了一种更简单、更友好的方式来操作 ROS 2 元素。
本教程涉及 ROS 2 的核心概念,如节点、主题和服务的分离。所有这些概念都将在以后的教程中详细阐述;目前,您只需设置工具并对其进行了解即可。
先决条件
上一个教程、 配置 ROS 2 环境我们将向您展示如何设置您的环境。
任务
1 安装海龟模拟器
像往常一样,按照上一篇教程所述,首先在新终端中查找设置文件。
为你的 ROS 2 发行版安装 turtlesim 软件包:
sudo apt update
sudo apt install ros-eloquent-turtlesim
只要您安装 ROS 2 的归档文件包含 教程
版本库,你应该已经安装了 turtlesim。
只要您安装 ROS 2 的归档文件包含 教程
版本库,你应该已经安装了 turtlesim。
检查软件包是否已安装:
ros2 pkg 可执行文件 turtlesim
上述命令将返回 turtlesim 的可执行文件列表:
turtlesim draw_square
海龟模拟器
turtlesim turtle_teleop_key
turtlesim turtlesim_node
2 开始海龟模拟
要启动 turtlesim,请在终端中输入以下命令:
ros2 运行 turtlesim turtlesim_node
模拟器窗口应该会出现,中间会随机出现一只乌龟。

在命令下的终端中,您将看到来自节点的信息:
[INFO] [turtlesim]:以节点名 /turtlesim 启动 turtlesim
[INFO] [turtlesim]:在 x=[5.544445],y=[5.544445],theta=[0.000000] 处产卵乌龟 [turtle1].
在这里,您可以看到您的默认乌龟名称是 乌龟1
的默认坐标。
3 使用海龟模拟
打开一个新的终端,再次输入 ROS 2 的源代码。
现在,您将运行一个新节点来控制第一个节点中的乌龟:
ros2 run turtlesim turtle_teleop_key
此时,你应该打开三个窗口:运行以下程序的终端 海龟模拟节点
,终端运行 乌龟遥控钥匙
和 turtlesim 窗口。安排好这些窗口,以便既能看到 turtlesim 窗口,又能运行终端 乌龟遥控钥匙
激活后,您就可以在乌龟模拟器中控制乌龟了。
使用键盘上的方向键控制乌龟。它将在屏幕上移动,并用附带的 "笔 "画出迄今为止所走过的路径。
备注
按下方向键只会让乌龟移动一小段距离,然后停止。这是因为,从现实情况来看,如果操作员与机器人失去联系等情况发生时,您不会希望机器人继续执行指令。
您可以使用 清单
指挥:
ros2 节点列表
ros2 主题列表
ros2 服务列表
ROS2 行动清单
在接下来的教程中,你将学到更多有关这些概念的知识。由于本教程的目的只是对 turtlesim 蜻蜓点水,我们将使用 rqt(ROS 2 的图形用户界面)对服务进行更深入的了解。
4 安装 rqt
打开新终端安装 rqt
及其插件:
sudo apt update
sudo apt install ~nros-eloquent-rqt*
sudo apt update
sudo apt install ros-eloquent-rqt*
在 macOS 上安装 ROS 2 的标准压缩包包含 rqt
及其插件,因此您应该已经拥有 rqt
已安装。
在 Windows 上安装 ROS 2 的标准压缩包包括 rqt
及其插件,因此您应该已经拥有 rqt
已安装。
运行 rqt:
rqt
5 使用 rqt
第一次运行 rqt 后,窗口将是空白的。不用担心,只需选择 插件 >; 服务 >; 服务呼叫器 从顶部的菜单栏中选择
备注
rqt 查找所有插件可能需要一些时间。如果点击 插件但没有看到 服务 或其他选项,你应该关闭 rqt,输入命令 rqt --强制发现
在终端中。

使用 服务 下拉列表,以确保您的 turtlesim 节点的所有服务都可用。
点击 服务 下拉列表查看 turtlesim 的服务,并选择 /spawn
服务。
5.1 尝试产卵服务
让我们使用 rqt 调用 /spawn
服务。从它的名字就可以猜到 /spawn
将在乌龟模拟窗口中创建另一只乌龟。
给新乌龟取一个独特的名字,比如 乌龟2
的空单引号之间,双击 表达 列。您可以看到该表达式对应于 名字 值,且其类型为 字符串.
输入乌龟产卵的新坐标,如 x = 1.0
和 y = 1.0
.

备注
如果您尝试生成与现有乌龟同名的新乌龟,比如默认的 乌龟1
,你会在终端运行时收到一条错误信息 海龟模拟节点
:
[ERROR] [turtlesim]:已存在名为 [turtle1] 的乌龟
要催生海龟 2,必须通过点击 致电 按钮。
你会看到一只新的乌龟(同样是随机设计的)在你输入的坐标处诞生。 x 和 y.
如果刷新 rqt 中的服务列表,还可以看到现在有与新乌龟相关的服务、 /turtle2/...
除了 /turtle1/...
.
5.2 尝试 set_pen 服务
现在,让我们使用 /set_pen
服务:

的值为 r, g 和 b在 0 到 255 之间,将设置乌龟 1 用笔绘制的颜色,而 宽度 设置线条的粗细。
要让乌龟 1 画出明显的红线,可以更改 r 的值为 255,而 宽度 到 5。更新数值后,不要忘记调用服务。
如果返回到 节点
运行,然后按箭头键,就会看到乌龟 1 的笔发生了变化。

你可能已经注意到,乌龟 2 无法移动。您可以通过重新映射乌龟 1 的 cmd_vel
话题转到乌龟 2 上。
6 重新映射
在新的终端中,输入 ROS 2 的源代码并运行:
ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel
现在,当这个终端处于活动状态时,你可以移动 turtle2,而当运行 乌龟遥控钥匙
处于活动状态。

7 关闭海龟模拟
要停止模拟,只需关闭运行以下程序的终端窗口 海龟模拟节点
和 乌龟遥控钥匙
.如果想继续打开这些终端,但想结束模拟,可以输入 Ctrl + C
在 海龟模拟节点
终端,以及 q
在远程操作终端中。
摘要
使用 turtlesim 和 rqt 是学习 ROS 2 核心概念的好方法。
下一步工作
现在,您已经安装并运行了 turtlesim 和 rqt,并了解了它们的工作原理,让我们通过下一个教程深入了解 ROS 2 的第一个核心概念、 了解 ROS 2 节点.