【ROS2】初级:CLI工具-使用 turtlesim 、 ros2 和 rqt

目标:安装并使用 turtlesim 包和 rqt 工具为即将到来的教程做准备。

 教程级别:初学者

 时间:15 分钟

安装包:sudo apt install ros-jazzy-turtlesim
运行节点:ros2 run turtlesim turtlesim_node
使用rqt:rqt
重映射:ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel

 目录

  •  背景

  •  先决条件

  •  任务

    •  安装 turtlesim

    •  启动 turtlesim

    •  使用 turtlesim

    •  安装 rqt

    •  使用 rqt 5

    •  重映射

    •  关闭海龟仿真程序

  •  摘要

  •  下一步

  •  相关内容

 背景

Turtlesim 是一个用于学习 ROS 2 的轻量级模拟器。它展示了 ROS 2 在最基本层面上的功能,以便让您了解稍后在真实机器人或机器人模拟中将会做些什么。

ros2 工具是用户管理、内省 introspects 和与 ROS 系统交互的方式。它支持多个命令,这些命令针对系统及其操作的不同方面。人们可能会使用它来启动一个节点,设置一个参数,监听一个主题,等等。ros2 工具是核心 ROS 2 安装的一部分。

rqt 是 ROS 2 的图形用户界面(GUI)工具。在 rqt 中完成的所有操作都可以通过命令行完成,但 rqt 提供了一种更友好的方式来操作 ROS 2 元素。

本教程涉及 ROS 2 的核心概念,如节点、主题和服务(nodes, topics, and services. )。所有这些概念将在后续教程中详细阐述;目前,您将简单地设置工具并对它们有所了解。

 先决条件

前一教程《配置环境》将指导您如何设置您的环境。

 任务

1 安装 turtlesim 

如往常一样,按照上一教程的描述,在新终端中开始导入您的设置文件。

为您的 ROS 2 发行版安装 turtlesim 包:

sudo apt update
sudo apt install ros-jazzy-turtlesim

检查包是否已安装:

ros2 pkg executables turtlesim

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

cxy@ubuntu2404-cxy:~$ ros2 pkg executables turtlesim
turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

2. 启动 turtlesim 

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

ros2 run turtlesim turtlesim_node

仿真器窗口应该出现,中间有一个随机的乌龟。

c67179498c0bc03bc2c5c936cb435cf7.png

在终端里,输入命令后,你会看到来自节点的消息:

cxy@ubuntu2404-cxy:~$ ros2 run turtlesim turtlesim_node
[INFO] [1719996458.035533054] [turtlesim]: Starting turtlesim with node name /turtlesim
[INFO] [1719996458.101836640] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

在那里,你可以看到默认乌龟的名字以及它出现的坐标。

3. 使用 turtlesim

打开一个新的终端并再次加载 ROS 2。

现在您将运行一个新节点来控制第一个节点中的乌龟:

ros2 run turtlesim turtle_teleop_key

在这一点上,您应该打开三个窗口:一个运行 turtlesim_node 的终端,一个运行 turtle_teleop_key 的终端,以及 turtlesim 窗口。排列这些窗口,以便您可以看到 turtlesim 窗口,但也要保持运行 turtle_teleop_key 的终端处于活动状态,以便您可以控制 turtlesim 中的乌龟。

使用键盘上的箭头键来控制乌龟。它会在屏幕上移动,并使用其连接的“笔”绘制出它迄今为止所走过的路径。

 便条

按下箭头键只会使乌龟移动一小段距离然后停下来。这是因为,实际上,如果操作员例如失去了与机器人的连接,你不会希望一个机器人继续执行指令。

0c1a6a0897d73e7a4012810e32227f19.png

您可以使用相应命令的 list 子命令查看节点及其关联的主题、服务和操作:

5baaeda2ff0211f986f37a0157fd0bb4.png

cxy@ubuntu2404-cxy:~$ ros2 node list
/teleop_turtle
/turtlesim
cxy@ubuntu2404-cxy:~$ ros2 topic list
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
cxy@ubuntu2404-cxy:~$ ros2 service list
/clear
/kill
/reset
/spawn
/teleop_turtle/describe_parameters
/teleop_turtle/get_parameter_types
/teleop_turtle/get_parameters
/teleop_turtle/get_type_description
/teleop_turtle/list_parameters
/teleop_turtle/set_parameters
/teleop_turtle/set_parameters_atomically
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/describe_parameters
/turtlesim/get_parameter_types
/turtlesim/get_parameters
/turtlesim/get_type_description
/turtlesim/list_parameters
/turtlesim/set_parameters
/turtlesim/set_parameters_atomically
cxy@ubuntu2404-cxy:~$ ros2 action list
/turtle1/rotate_absolute

在接下来的教程中,您将更多地了解这些概念。由于本教程的目标仅是对 turtlesim 有一个大致的概述,您将使用 rqt 来调用一些 turtlesim 服务并与 turtlesim_node 进行交互。

4 安装 rqt 

打开一个新的终端来安装 rqt 及其插件:

sudo apt update
# 源码编译不需要单独安装 rqt
sudo apt install '~nros-jazzy-rqt*'

 要运行 rqt:

rqt

cdb0559f53035c2af98ef0924eb06224.png

5 使用 rqt 

当您第一次运行 rqt 时,窗口将是空白的。不用担心;只需从顶部的菜单栏中选择 插件 > 服务 > 服务调用器 Plugins > Services > Service Caller 即可。

 便条

rqt 定位所有插件可能需要一些时间。如果您点击插件但没有看到服务或任何其他选项,您应该关闭 rqt 并在终端中输入命令 rqt --force-discover 。

ac1c9f517799c5ff2c6a82662fae7923.png

使用服务下拉列表左侧的刷新按钮,确保您的 turtlesim 节点的所有服务都可用。

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

5.1 尝试生成服务 

让我们使用 rqt 来调用 /spawn 服务。你可以从它的名字猜到 /spawn 会在 turtlesim 窗口中创建另一个乌龟。

给新乌龟一个独特的名字,比如 turtle2 ,通过在“表达式”栏中的空单引号之间双击。你可以看到这个表达式对应于名字的值,并且是字符串类型。

接下来输入一些有效的坐标来生成新的乌龟,比如 x = 1.0 和 y = 1.0 。

d4e4bd25d25d66d1c591ff8af739679d.png

 便条

如果您尝试生成一个与现有乌龟同名的新乌龟,例如默认的 turtle1 ,您将在运行 turtlesim_node 的终端中收到一条错误信息:

[ERROR] [turtlesim]: A turtle named [turtle1] already exists

要生成 turtle2404 ,您需要通过点击 rqt 窗口右上角的呼叫 Call 按钮来呼叫服务。

如果服务调用成功,您应该会看到一只新的乌龟(再次是随机设计)在您输入的 x 和 y 坐标处出现。

如果您在 rqt 中刷新服务列表,您还会看到现在除了 /turtle1/... 之外,还有与新乌龟 /turtle2404/... 相关的服务。

d55d50cfe0de8b1d73596f283fe466fc.png

5.2 尝试使用 set_pen 服务 

现在让我们使用 /set_pen 服务给 turtle1 一个独特的笔:

a5759acc438338896310e87cf6ec85c0.png

r、g 和 b 的值介于 0 到 255 之间,用于设置笔 turtle1 绘制时的颜色,而 width 则设置线条的粗细。

要让 turtle1 用鲜明的红线绘制,请将 r 的值改为 255,将宽度的值改为 5。更新值后,不要忘记调用服务。

如果您回到正在运行 turtle_teleop_key 的终端并按箭头键,您会看到 turtle1 的笔已经改变。

3ad99d5251693a99eb947bdab85f69b2.png

您可能也注意到了,没有办法移动 turtle2 。那是因为没有 turtle2 的遥控节点。

 6 重新映射 Remapping

您需要第二个遥控节点来控制 turtle2 。但是,如果您尝试像之前一样运行相同的命令,您会发现这个命令也控制了 turtle1 。改变这种行为的方法是通过重新映射 cmd_vel 主题。

在新的终端中,源 ROS 2,并运行:

ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel
cxy@ubuntu2404-cxy:~$ ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2404/cmd_vel
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
Use g|b|v|c|d|e|r|t keys to rotate to absolute orientations. 'f' to cancel a rotation.
'q' to quit.

da9c464c0c225ba33bdb4758111187ac.png

7 关闭 turtlesim

要停止模拟,您可以在 turtlesim_node 终端输入 Ctrl + C ,并在 turtle_teleop_key 终端输入 q 。

 摘要

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

 下一步

现在您已经启动并运行了 turtlesim 和 rqt,并且对它们的工作原理有了一定了解,让我们通过下一个教程深入了解 ROS 2 的第一个核心概念——理解节点https://docs.ros.org/en/jazzy/Tutorials/Beginner-CLI-Tools/Understanding-ROS2-Nodes/Understanding-ROS2-Nodes.html。

 相关内容 

乌龟仿真包可以在 ros_tutorials 仓库中找到https://github.com/ros/ros_tutorials/tree/jazzy/turtlesim 。

这个社区贡献的视频展示了本教程中涵盖的许多项目https://www.youtube.com/watch?v=xwT7XWflMdc&ab_channel=CanonicalUbuntu 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值