警告

您正在阅读的 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

检查软件包是否已安装:

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].

在这里,您可以看到您的默认乌龟名称是 乌龟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*

运行 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/spawn1.png

备注

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

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

要催生海龟 2,必须通过点击 致电 按钮。

你会看到一只新的乌龟(同样是随机设计的)在你输入的坐标处诞生。 xy.

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

5.2 尝试 set_pen 服务

现在,让我们使用 /set_pen 服务:

./././_images/set_pen.png

的值为 r, gb在 0 到 255 之间,将设置乌龟 1 用笔绘制的颜色,而 宽度 设置线条的粗细。

要让乌龟 1 画出明显的红线,可以更改 r 的值为 255,而 宽度 到 5。更新数值后,不要忘记调用服务。

如果返回到 节点 运行,然后按箭头键,就会看到乌龟 1 的笔发生了变化。

./././_images/new_pen.png

你可能已经注意到,乌龟 2 无法移动。您可以通过重新映射乌龟 1 的 cmd_vel 话题转到乌龟 2 上。

6 重新映射

在新的终端中,输入 ROS 2 的源代码并运行:

ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel

现在,当这个终端处于活动状态时,你可以移动 turtle2,而当运行 乌龟遥控钥匙 处于活动状态。

./././_images/remap.png

7 关闭海龟模拟

要停止模拟,只需关闭运行以下程序的终端窗口 海龟模拟节点乌龟遥控钥匙.如果想继续打开这些终端,但想结束模拟,可以输入 Ctrl + C海龟模拟节点 终端,以及 q 在远程操作终端中。

摘要

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

下一步工作

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