警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
使用 海龟
, 玫瑰2
和 rqt
目标 安装并使用 turtlesim 软件包和 rqt 工具,为即将开始的教程做准备。
辅导水平: 初学者
时间 15 分钟
背景介绍
Turtlesim 是一个用于学习 ROS 2 的轻量级模拟器。它展示了 ROS 2 最基本的功能,让您对以后使用真实机器人或机器人模拟有一个概念。
ros2 工具是用户管理、反省和与 ROS 系统交互的工具。它支持针对系统及其运行的不同方面的多种命令。用户可以用它来启动节点、设置参数、监听主题等。ros2 工具是 ROS 2 核心安装程序的一部分。
rqt 是 ROS 2 的图形用户界面(GUI)工具。在 rqt 中进行的所有操作都可以通过命令行完成,但 rqt 提供了一种更方便用户操作 ROS 2 元素的方式。
本教程涉及 ROS 2 的核心概念,如节点、主题和服务。所有这些概念都将在以后的教程中详细阐述;目前,您只需设置工具并对其有所了解即可。
先决条件
上一个教程、 配置环境我们将向您展示如何设置您的环境。
任务
1 安装海龟模拟器
像往常一样,首先在新终端中查找设置文件,如 上一个教程.
为你的 ROS 2 发行版安装 turtlesim 软件包:
sudo apt update
sudo apt install ros-foxy-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].
在这里,您可以看到默认乌龟的名称和它的出生坐标。
3 使用海龟模拟
打开一个新的终端,再次输入 ROS 2 的源代码。
现在,您将运行一个新节点来控制第一个节点中的乌龟:
ros2 run turtlesim turtle_teleop_key
此时,你应该打开三个窗口:运行以下程序的终端 海龟模拟节点
,终端运行 乌龟遥控钥匙
和 turtlesim 窗口。安排好这些窗口,以便既能看到 turtlesim 窗口,又能运行终端 乌龟遥控钥匙
激活后,您就可以在乌龟模拟器中控制乌龟了。
使用键盘上的方向键控制乌龟。它将在屏幕上移动,并用附带的 "笔 "画出迄今为止所走过的路径。
备注
按下方向键只会让乌龟移动一小段距离,然后停止。这是因为,从现实情况来看,如果操作员与机器人失去联系等情况发生时,您不会希望机器人继续执行指令。
您可以使用 清单
的子命令:
ros2 节点列表
ros2 主题列表
ros2 服务列表
ROS2 行动清单
在接下来的教程中,你将学到更多有关这些概念的知识。由于本教程的目的只是了解 turtlesim 的总体概况,因此您将使用 rqt 调用一些 turtlesim 服务,并与 海龟模拟节点
.
4 安装 rqt
打开新终端安装 rqt
及其插件:
sudo apt update
sudo apt install ~nros-foxy-rqt*
sudo apt update
sudo apt install ros-foxy-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 服务
现在让我们 乌龟1
使用 /set_pen
服务:

的值为 r, g 和 b之间,设置笔的颜色 乌龟1
绘制,以及 宽度 设置线条的粗细。
拥有 乌龟1
绘制明显的红线,更改 r 的值为 255,而 宽度 到 5。更新数值后,不要忘记调用服务。
如果返回到 乌龟遥控钥匙
并按下箭头键,您将看到 乌龟1
笔锋一转。

您可能还注意到,没有办法移动 乌龟2
.这是因为没有远程操作节点用于 乌龟2
.
6 重新映射
您需要第二个远程操作节点,以便控制 乌龟2
.但是,如果您尝试运行与之前相同的命令,您会发现这条命令还控制着 乌龟1
.改变这种行为的方法是重新映射 cmd_vel
主题。
在新的终端中,输入 ROS 2 的源代码并运行:
ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel
现在,您可以移动 乌龟2
当该终端处于活动状态时 乌龟1
当另一个终端运行 乌龟遥控钥匙
处于活动状态。

7 关闭海龟模拟
要停止模拟,可以输入 Ctrl + C
在 海龟模拟节点
终端,以及 q
在 乌龟遥控钥匙
码头
摘要
使用 turtlesim 和 rqt 是学习 ROS 2 核心概念的好方法。
下一步工作
现在,您已经安装并运行了 turtlesim 和 rqt,并了解了它们的工作原理,让我们通过下一个教程深入了解 ROS 2 的第一个核心概念、 了解节点.