开始学习使用 turtlesim, ros2, and rqt

1,136 阅读3分钟

目标:使用turtlesim软件包和rqt工具

Background

Turtlesim是一个用于学习ROS 2的轻量级模拟器。它说明了ROS 2在最基本的层面上所做的事情,让我们学习知道以后你将如何处理真实的机器人或机器人模拟。

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

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

Prerequisites

需要安装配置好ROS2的开发环境,具体见 (Ubuntu22.04 Jammy)安装ROS 2 Iron Irwini

Start turtlesim

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

ros2 run turtlesim turtlesim_node

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

image.png

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

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

可以看到默认乌龟的名字和它出生的坐标。

Use turtlesim

打开一个新的终端,输入与以下命令 现在,将运行一个新节点来控制第一个节点中的乌龟:

ros2 run turtlesim turtle_teleop_key

此时,打开三个窗口:运行turtlesim_node的终端、运行turtle_teleop_key的终端和turtlesim窗口。排列这些窗口,这样就可以看到turtlesim窗口,也可以激活运行turtle_teleop_key的终端,这样就能控制turtlesim中的乌龟。 使用键盘上的箭头键来控制乌龟。它将在屏幕上移动,使用其附带的“笔”绘制迄今为止所遵循的路径。

image.png

可以使用相应命令的列表子命令来查看节点及其关联的topics、services和操actions:

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

image.png

image.png

Use rqt

另外打开一个新的终端:

rqt

image.png

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

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

image.png

单击“Service”下拉列表以查看turtlesim的服务,然后选择/spown服务。 image.png

要生成turtle2,需要通过单击rqt窗口右上角的call按钮来调用该服务。 如果服务调用成功,应该会看到一只新的海龟(同样是随机设计的)在为x和y输入的坐标处开始。 如果你刷新rqt中的服务列表,你还会看到现在有与新海龟相关的服务,/turtle2/...,除了/turtle1/...

Try the set_pen service

现在,让我们使用/set_pen Service 为turtle1提供一支独特的钢笔:

image.png

r、g和b的值介于0和255之间,用于设置turtle1绘制的颜色,width用于设置线条的厚度。 要让turtle11画一条明显的红线,请将r值更改为255,将width值更改为5。不要忘记在更新值后调用服务。 如果您返回运行turtle_teleop_key的终端并按下箭头键,您将看到turtle1的笔已更改。

image.png

image.png

注意到,没有办法移动turtle2。这是因为对于turtle2来说没有目的节点。

重新映射

需要第二个遥控器节点来控制turtle2。但是,如果尝试运行与以前相同的命令,会注意到这个命令也控制turtle1。更改此行为的方法是重新映射cmd_vel主题。 在新的终端中运行:

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

本次因call了两次,所以有三只小乌龟:

image.png

image.png