首页 > 技术文章 > ROS2学习之旅(3)——运行turtlesim和rqt

love-robot 2021-07-13 21:26 原文

Turtlesim是一个轻量型的模拟器,可以帮助理解ROS。rqt是ROS2中的GUI工具,所有在rqt中的操作都可以通过命令行来实现,但是使用rqt会更加容易和友好。本文基于ros-foxy编写。

1.安装turtlesim

首先确保ROS2安装并且环境变量设置正确,可以我的上一篇文章:

然后,将turtlesim包安装到ROS2中,在终端运行:

sudo apt update

sudo apt install ros-foxy-turtlesim

检查是否安装成功:

ros2 pkg executables turtlesim

如果安装成功,则在终端输出:

turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

2.启动turtlesim

开始启动turtlesim,在终端运行:

ros2 run turtlesim turtlesim_node

与ROS1相比,无需启动roscore,这里的ros2 run相当于ROS1中的rosrun

这时候会出现模拟器界面,并且在中心有一只随机的小海龟。

在终端中会看到从节点(可以当做为一个应用程序)来的输出:

[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

打开新终端,运行一个新节点以控制生成的小海龟:

ros2 run turtlesim turtle_teleop_key

到了这一步,应该有三个运行的窗口:一个运行turtlesim_node,一个运行turtle_teleop_key以及turtlesim窗口。保持turtle_teleop_key窗口处在激活状态,这样就可以控制小海龟。

此时,使用键盘上的方向键就可以控制小海龟进行移动。当小海龟进行移动时,会使用自带的“pen"工具绘制他的路线。

4.安装rqt

打开一个新终端,安装rqt及其附件:

ubuntu18.04以及更老的版本:

sudo apt update

sudo apt install ros-foxy-rqt*

ubuntu20.04:

sudo apt update

sudo apt install ~nros-foxy-rqt*

安装完毕之后,在终端输入:

rqt

运行rqt。

5.使用rqt

在第一次使用rqt时,rqt窗口是空白的。此时在菜单中选择Plugins > Services > Service Caller,会出现如下界面:

注意:rqt查找所有插件本身可能需要一些时间。如果单击Plugins,但没有看到Services或任何其他选项,应该关闭rqt,在终端中输入命令 rqt --force-discover

点击Service下拉列表左侧的刷新按钮,以确保turturlesim节点的所有服务都可用:

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

5.1 使用spawn服务

通过/spawn服务可以在turtlesim窗口中,创建另一只小海龟。通过双击Expression列中的空单引号,为新生成的小海龟指定一个唯一的名字,就像turtle2一样。 可以看到,这个表达式对应于name value,其类型为string。输入小海龟生成的坐标,如x = 1.0和y = 1.0。

注意:如果试图生成一个与现有海龟同名的新海龟,就像turtle1,会在运行turtlesim_node的终端中得到一个错误消息:

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

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

点击之后,可以看到一个新的海龟在x和y输入的坐标处生成。

如果刷新rqt中的服务列表,还会看到现在除了/turtle1/....之外,还有与新的turtle相关的服务:/turtle2/…

5.2 使用set_pen服务

使用/set_pen服务设置turtle1的钢笔属性:

其中,rgb的值(介于0和255之间)将设置turtle1的钢笔的颜色,宽度设置线的粗细。要让turtle1绘制一条明显的红线,将r的值改为255,宽度的值改为5。不要忘记在更新值之后调用服务。此时返回到运行turtle_teleop_node的终端并按下方向键,将看到turtle1的钢笔发生了变化。

此时,没有办法移动turtle2,可以将turtle1的cmd_vel重映射到turtle2中。

6.重映射

打开一个新终端,并运行:

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

在此终端处于活动状态时移动turtle2,在运行turtle_teleop_key的另一个终端处于活动状态时移动turtle1

7.关闭turtlesim

turtlesim_node终端下,通过ctrl+c终止模拟。在teleop终端下,输入q来停止。

8.总结

通过turlesim来体会ROS2的工作过程,理解ROS2中的基本元素。

如果给您带来帮助,希望能给点个关注,以后还会陆续更新有关机器人的内容,点个关注不迷路~欢迎大家一起交流学习。

都看到这了,点个推荐再走吧~

未经允许,禁止转载。

推荐阅读