ROS 2 Iron 教程 第一章 CLI Tools 第二节 使用turtlesim, ros2 与 rqt

本文介绍了如何在ROS2环境中安装并使用turtlesim包和rqt工具,包括安装步骤、启动turtlesim、使用turtle_teleop_key控制海龟、以及通过rqt调用服务如/spawn和/set_pen。教程强调了ROS2的核心概念和rqt的图形化用户界面优势。
摘要由CSDN通过智能技术生成

前言

  本系列文章是由笔者翻译自ROS 2 官方教程。笔者水平有限,如有错误,还请读者指正。

  本节教程中部分代码为 Liunx下使用,请使用其他操作系统的读者前往原文查看。

目标

  通过安装与使用 turtlesim 包以及 rqt 工具来为后续教程作准备。

背景

  Turtlesim  是学习ROS 2的一款轻量级模拟器。它演示了ROS 2在最基础的层面上运作方式,可以让你在后续制作真实机器人或是机器人模拟器前对ROS 2有一定了解。

  ros2 工具可以让使用者管理、检查、或是与ROS 系统交互。它支持多种用于系统不同方面的指令以及它的操作。例如启动一个节点,设置参数,订阅(收听)话题,以及其他许多。ros2 工具是ROS 2 核心安装的一部分。

  rqt 是一个用于 ROS 2 的图形化用户界面。在 rqt 中能够完成的操作同样也能在命令行之中完成,但 rqt 提供了一个对于用户来说更友好的方式来操作ROS 2。

  本教程涉及ROS 2核心概念,例如节点,话题,以及服务。所有的这些概念将会在后续教程中被详细解释;现在你可以简单地配置好工具然后对它们有一个基础的了解。

先觉条件

  在过去的教程,环境配置,中将会向你展示如何配置的的环境。

任务

1 Install turtlesim (安装海龟包)

  一如既往,在新的终端中添加启动文件,正如过去的教程中提到的那样。

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

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 Start turtlesim (启动海龟包)

  为了启动 turtlesim,在你的终端中输入如下命令:

ros2 run turtlesim turtlesim_node

  之后模拟器的界面应该出现,在它的中心应该有一只随机的海龟。

  在终端中的已经输入的命令之下,你将会看到来自节点的信息:

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

  在信息之中你可以看到默认海龟的名字和它生成的坐标。

3 Use turtlesim (使用海龟包)

  打开一个新的终端,然后再次添加ROS 2启动文件。

(译者注:如果在shell启动脚本中已经添加ROS 2启动文件,可不再添加,详见环境配置教程) 

  现在你将会运行一个新的节点来控制上方已经启动的节点中的海龟:

ros2 run turtlesim turtle_teleop_key

  目前你应该已经有了三个窗口:两个终端分别运行 turtlesim_node 以及 turtle_teleop_key ,还有一个窗口显示了海龟 。将这些窗口重新安排位置,以便你可以看到海龟窗口,但turtle_teleop_key终端还应该处于选中状态,然后你就可以控制海龟移动了。

  使用键盘上的方向键来控制海龟。它将会在屏幕的范围内移动,在它身后留下轨迹。

  注意:

  按下方向键只会让海龟运动一小段距离然后停下。讲真的,你不会想让机器人持续执行一个指令,例如,操纵者丢失了与机器人的连接。

   你可以通如下命令:

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

  查看节点的列表,相关的话题列表,服务列表,动作列表。

  你将会在后续的教程中学到相关概念的更多知识。既然本教程的目标仅仅是对于 turtlesim 有一个总体了解,你将会使用 rqt 来调用 turtlesim 的一些服务,并且与 turtlesim_node 进行交互。

4 Insatll rqt (安装 rqt)

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

sudo apt update

sudo apt install ~nros-iron-rqt*

  运行 rqt

rqt

5 Use rqt (使用 rqt)

  第一次运行 rqt 时,窗口将会是空白的。不要担心;点击 Plugins > Services > Service Caller 

  注意:

  rqt 定位所有插件可能需要一些时间。

  假如你点击 Plugins 却没有看见 Services 或其他选项,你应该关闭 rqt ,然后在终端中输入如下命令:

rqt --force-discover

  使用在 service 下拉菜单左边的刷新按钮来确保你的 turtlesim 节点中的服务都是可见的。

  点击 service 下拉菜单来查看 turtlesim 节点中的服务,然后选择 /spawn 服务。

5.1 Try the spawn service (使用 spawn 服务)

  让我们使用 rqt 来调用 /spawn 服务。你可以通过它的名字来猜出它的作用,它将在 turlesim 窗口中生成另一只海龟。

  给新海龟一个唯一的名字,例如 turtle2 ,通过双击 name 行的 Expression 列。你可以看到它的类型是字符串(string)。

  接下来你可以输入有效的坐标来控制海龟生成的位置,例如 x = 1.0  y = 1.0 。

  注意:

  如果你尝试生成一只与已经存在的海龟同名的新海龟,例如默认的 turtle1 ,你将会在运行 turtleism_node 的终端得到错误信息:

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

  为了生成新海龟,之后你需要点击 call 按钮来调用服务。

  如果成功调用服务,你将会看到一只新海龟(随机的外观)生成在你输入的坐标。

  如果你刷新 rqt 中的服务列表,你将会看到与新海龟有关的服务。

5.2 Try set_pen service (使用 set_pen 服务)

  现在让我们给 turtle1 一个独特的轨迹通过使用 /set_pen 服务:

  通过设置r,g,b在 0 - 255 之间的值可以改变 turule1 轨迹的颜色,width 设置轨迹的粗细。

  为了让 turtle1 轨迹变为红色,将 r 的值设置为 255,width的值设置为 5,然后调用服务来改变设置。

  如果你返回 turtle_teleop_key 运行的终端,按下方向键,你将会看到 turtle1 的轨迹改变了。 

  你可能会注意到没有办法来移动 turtle2 ,那时应为没有相应的遥控节点。

6  Remapping (重映射)

  你需要第二个遥控节点来控制 turtle2 。但时,假如你尝试运行相同的命令来启动遥控节点,你将发现这个节点同样会控制 turtle1改变这一行为的方法是重映射 cmd_vel 话题。

  在新的终端中,添加ROS 2,运行:

  

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

  现在,你可以移动 turtle2 当选中终端的时候,与此同时 turtle1 也可以被另一个终端控制。

   

7 Close turtlesim (关闭海龟包)

  为了停止模拟,你可以在 turtlesim_node 终端中按下 Ctrl + C ;

   在 turtle_teleop_kry 终端中输入 q 。

总结

  使用 turtlesimrqt 是学习ROS 2核心概念的好方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值