ROS2学习之旅(3)——运行turtlesim和rqt
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的钢笔属性:
其中,r、g和b的值(介于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中的基本元素。
如果给您带来帮助,希望能给点个关注,以后还会陆续更新有关机器人的内容,点个关注不迷路~欢迎大家一起交流学习。
都看到这了,点个推荐再走吧~
未经允许,禁止转载。