ROS2 学习笔记2:使用turtlesim和rqt

ROS2 学习笔记2:使用turtlesim和rqt

  • Background 背景
  • Prerequisites 前提
  • Tasks 任务
    • 1 安装turtlesim
    • 2 启动turtlesim
    • 3 使用turtlesim
    • 4 安装rqt
    • 5 使用rqt
      • 5.1 使用 spawn service
      • 5.2 使用 pen service
    • 6 重映射
    • 7 关闭turtlesim
  • Summary 总结
  • Next steps 下一步

参考官方文档
https://docs.ros.org/en/iron/Tutorials/Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim.html

Background 背景

Turtlesim 是一款用于学习 ROS 2 的轻量级模拟器。它说明了 ROS 2 在最基本的层面上做了什么,让您了解以后将如何处理真实机器人或机器人模拟。

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

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

本教程涉及 ROS 2 的核心概念,如节点、主题和服务。所有这些概念都将在后面的教程中详细阐述;现在,您只需设置工具并感受一下它们。

Prerequisites 前提

完成环境配置。

Tasks 任务

1 安装turtlesim

如往常一样,从在新终端source安装文件开始,如 之前的教程 所述。
为您的ROS 2发行版安装turtlesim包:

思考及疑问: ROS2 各模块安装的关系,如果安装整个ros-vserion版本,单个模块是否需要单独安装,哪些模块,rqt, turtlesim, rviz …

Linux:

sudo apt update
sudo apt install ros-iron-turtlesim    

检查软件包是否已安装:

ros2 pkg executables turtlesim

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

turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

2 启动turtlesim

终端输入:

ros2 run turtlesim turtlesim_node

应该出现一个模拟器窗口,中间有一只随机的乌龟。
ROS2 学习笔记2:使用turtlesim和rqt_第1张图片
在终端中的命令下面,您将看到来自节点的消息:

[INFO] [turtlesim]: Starting turtlesim with node name /turtlesim
[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

在这里你可以看到你的默认海龟的名字是 turtle1 ,以及它产生处的默认坐标。

3 使用turtlesim

打开一个新终端并且再次source ROS 2。
运行一个新节点来控制第一个节点中的海龟:

ros2 run turtlesim turtle_teleop_key

此时,你应该打开三个窗口: 一个运行 turtlesim_node 的终端,一个运行 turtle_teleop_key 的终端和一个turtlesim的窗口。排列好这些窗口,这样你就可以看到海龟的窗口,也可以激活运行 turtle_teleop_key 的终端,这样你就可以控制海龟。

使用键盘上的箭头键来控制海龟。它将在屏幕上移动,并 使用其附带的 “pen” 绘制到目前为止的路径

您可以使用 list 命令查看节点及其关联的服务、话题和动作:

ros2 node list
ros2 topic list
ros2 service list
ros2 action list

在接下来的教程中,您将更多地了解这些概念。由于本教程的目标只是获得turtlesim的总体概述,因此您将使用rqt调用turtlesim的一些服务并与turtlesim节点进行交互。

思考及疑问: 使用 ros2 service list 监控到很多的service, 是否是即时的服务类型

4 安装rqt

打开一个新的终端来安装 rqt 及其插件:
备注: 已安装整个ros发行版,不必安装单个模块

sudo apt update
sudo apt install ~nros-iron-rqt*

运行rqt:

rqt

5 使用rqt

第一次运行rqt后,窗口将为空白。不用担心; 只需从顶部的菜单栏中选择 插件> 服务>调用服务(Plugins > Services > Service Caller )。

注解
rqt可能需要一些时间来查找它所有插件。如果你点击插件(Plugins),但没有看到服务(Services)或任何其他选项,你应该关闭rqt,在你的终端输入命令 rqt --force-discover

ROS2 学习笔记2:使用turtlesim和rqt_第2张图片

使用服务(Service)下拉列表左侧的刷新按钮,确保turtlesim节点的所有服务都可用。
单击服务(Service)下拉列表以查看turtlesim的服务,然后选择 /spawn 服务。

5.1 使用 spawn service

思考及疑问: rqt 中调用 service时 ,dds底层通信逻辑
使用rqt调用 /spawn 服务。你可以从它的名字中猜到/spawn会在turtlesim窗口中创造出另一只乌龟。

通过双击Expression列的空白单引号处给新乌龟取一个唯一的名称,比如 turtle2 。您可以看到此表达式对应于名称(name)值,并且类型为string
输入生成的海龟的新坐标值,如x = 1.0y = 1.0
ROS2 学习笔记2:使用turtlesim和rqt_第3张图片

要生成turtle2,您必须通过单击rqt窗口右上角的Call按钮来调用服务。

你会看到一只新的乌龟 (同样是随机设计的) 在你输入的x和y坐标处生成。

如果您在rqt中刷新服务列表,您还将看到除了“/turtle1/…”之外,现在还有与新乌龟 “/turtle2/…” 相关的服务。

5.2 使用 pen service

使用 /set_pen 服务为turtle1提供一支独特的pen:

ROS2 学习笔记2:使用turtlesim和rqt_第4张图片

r、g 和 b 的值在0到255之间,将设置turtle1绘制的笔的颜色,宽度( width )设置线的厚度。

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

如果你回到 turtle_teleop_node 正在运行的终端,按下箭头键,你会看到turtle1的笔变了。
ROS2 学习笔记2:使用turtlesim和rqt_第5张图片

你可能已经注意到没有办法移动turtle2。你可以通过将turtle1的 cmd_vel 话题重新映射到turtle2上来实现这一点。

6 重映射

需要第二个远程操作节点来控制turtle2。但是,如果您尝试像以前一样运行相同的命令,您会注意到这个命令也控制着turtle1。改变这种行为的方法是重新映射 cmd_vel 主题。

在新终端中,source ROS 2,然后运行:

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

现在,您可以在该终端处于活动状态时移动turtle2,在运行 turtle_teleop_key 的另一个终端处于活动状态时移动turtle1。

ROS2 学习笔记2:使用turtlesim和rqt_第6张图片

7 关闭turtlesim

要停止模拟器,您可以在 turtlesim_node 终端输入 “ctrl + c”,在teleop终端输入q

Summary 总结

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

Next steps 下一步

既然你已经启动并运行了turtlesim和rqt,并且了解了它们是如何工作的,让我们在下一个教程 了解ROS 2节点 中深入探讨第一个核心ROS 2概念。

你可能感兴趣的:(ROS2,学习,笔记,linux)