目标:使用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
模拟器窗口应该出现,中间有一只随机的乌龟。
在终端中,在命令下,将看到来自节点的消息:
[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中的乌龟。
使用键盘上的箭头键来控制乌龟。它将在屏幕上移动,使用其附带的“笔”绘制迄今为止所遵循的路径。
可以使用相应命令的列表子命令来查看节点及其关联的topics、services和操actions:
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
Use rqt
另外打开一个新的终端:
rqt
第一次运行rqt时,窗口将为空白。不用担心;只需从顶部的菜单栏中选择Plugins > Services > Service Caller。
使用“Service”下拉列表左侧的刷新按钮,确保您的turtlesim节点的所有服务都可用。
单击“Service”下拉列表以查看turtlesim的服务,然后选择/spown服务。
要生成turtle2,需要通过单击rqt窗口右上角的call按钮来调用该服务。
如果服务调用成功,应该会看到一只新的海龟(同样是随机设计的)在为x和y输入的坐标处开始。
如果你刷新rqt中的服务列表,你还会看到现在有与新海龟相关的服务,/turtle2/…,除了/turtle1/…
Try the set_pen service
现在,让我们使用set_pen Service 为turtle1提供一支独特的钢笔:
r、g和b的值介于0和255之间,用于设置turtle1绘制的颜色,width用于设置线条的厚度。
要让turtle11画一条明显的红线,请将r值更改为255,将width值更改为5。不要忘记在更新值后调用服务。
如果您返回运行turtle_teleop_key的终端并按下箭头键,您将看到turtle1的笔已更改。
注意到,没有办法移动turtle2。这是因为对于turtle2来说没有目的节点。
重新映射
需要第二个遥控器节点来控制turtle2。但是,如果尝试运行与以前相同的命令,会注意到这个命令也控制turtle1。更改此行为的方法是重新映射cmd_vel主题。
在新的终端中运行:
ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel
本次因call了两次,所以有三只小乌龟: