警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

使用 海龟, 玫瑰2rqt

目标 安装并使用 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

检查软件包是否已安装:

ros2 pkg 可执行文件 turtlesim

上述命令将返回 turtlesim 的可执行文件列表:

turtlesim draw_square
海龟模拟器
turtlesim turtle_teleop_key
turtlesim turtlesim_node

2 开始海龟模拟

要启动 turtlesim,请在终端中输入以下命令:

ros2 运行 turtlesim turtlesim_node

模拟器窗口应该会出现,中间会随机出现一只乌龟。

././././_images/turtlesim.png

在终端中的命令下,您将看到来自节点的信息:

[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*

运行 rqt:

rqt

5 使用 rqt

首次运行 rqt 时,窗口将是空白的。不用担心,只需选择 插件 >; 服务 >; 服务呼叫器 从顶部的菜单栏中选择

备注

rqt 找到所有插件可能需要一些时间。如果点击 插件 却不见 服务 或其他选项,应关闭 rqt 并输入命令 rqt --强制发现 在终端中。

.././././_images/rqt.png

使用 服务 下拉列表,以确保您的 turtlesim 节点的所有服务都可用。

点击 服务 下拉列表查看 turtlesim 的服务,并选择 /spawn 服务。

5.1 尝试产卵服务

让我们使用 rqt 调用 /spawn 服务。从它的名字就可以猜到 /spawn 将在乌龟模拟窗口中创建另一只乌龟。

给新乌龟取一个独特的名字,比如 乌龟2的空单引号之间双击。 表达 列。可以看到,该表达式对应于 名字 类型为 字符串.

然后输入一些有效坐标,以便在这些坐标上生成新乌龟,例如 x = 1.0y = 1.0.

.././././_images/spawn.png

备注

如果尝试生成与现有乌龟同名的新乌龟,如默认的 乌龟1,你会在终端运行时收到一条错误信息 海龟模拟节点:

[ERROR] [turtlesim]:已存在名为 [turtle1] 的乌龟

催生 乌龟2然后,您需要通过点击 致电 按钮。

如果服务调用成功,你应该会看到一只新的乌龟(同样是随机设计)在你输入的坐标处生成。 xy.

如果刷新 rqt 中的服务列表,还可以看到现在有与新乌龟相关的服务、 /turtle2/...除了 /turtle1/....

5.2 尝试 set_pen 服务

现在让我们 乌龟1 使用 /set_pen 服务:

.././././_images/set_pen.png

的值为 r, gb之间,设置笔的颜色 乌龟1 绘制,以及 宽度 设置线条的粗细。

拥有 乌龟1 绘制明显的红线,更改 r 的值为 255,而 宽度 到 5。更新数值后,不要忘记调用服务。

如果返回到 乌龟遥控钥匙 并按下箭头键,您将看到 乌龟1笔锋一转。

././././_images/new_pen.pp

您可能还注意到,没有办法移动 乌龟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 当另一个终端运行 乌龟遥控钥匙 处于活动状态。

././././_images/remap.png

7 关闭海龟模拟

要停止模拟,可以输入 Ctrl + C海龟模拟节点 终端,以及 q乌龟遥控钥匙 码头

摘要

使用 turtlesim 和 rqt 是学习 ROS 2 核心概念的好方法。

下一步工作

现在,您已经安装并运行了 turtlesim 和 rqt,并了解了它们的工作原理,让我们通过下一个教程深入了解 ROS 2 的第一个核心概念、 了解节点.