安装turtlesim
1 | sudo apt update |
检查软件包是否已安装:
1 | ros2 pkg executables turtlesim |
上面的命令应该返回turtlesim可执行文件的列表:
1 | turtlesim draw_square |
开始运行
要启动turtlesim,请在终端中输入以下命令:
1 | ros2 run turtlesim turtlesim_node |
终端会显示节点消息:
在这里,您可以看到默认乌龟的名称是turtle1
,以及它产生的默认坐标。
控制turtlesim
打开一个新终端,然后再次获取ROS 2。
现在,您将运行一个新节点来控制第一个节点中的乌龟:
1 | ros2 run turtlesim turtle_teleop_key |
此时,您应该打开三个窗口:一个正在运行turtlesim_node
的终端,一个正在运行的终端turtle_teleop_key
和turtlesim窗口。排列这些窗口,以便您可以看到turtlesim窗口,还可以使终端turtle_teleop_key
处于活动状态,以便您可以在turtlesim中控制turtle。
使用键盘上的箭头键控制乌龟。它将使用其附带的“笔”在屏幕上四处移动,以绘制到目前为止所遵循的路径。
可以使用以下list
命令查看节点及其关联的服务,主题和操作:
1 | ros2 node list |
安装Rqt
打开一个新的终端以安装rqt
其插件:
1 | sudo apt update |
运行rqt:
1 | rqt |
第一次运行rqt后,该窗口将为空白。别担心; 只需从顶部菜单栏中选择插件 > 服务 > 服务调用方即可。
使用服务下拉列表左侧的刷新按钮,确保您的turtlesim节点的所有服务均可用。
单击服务下拉列表以查看turtlesim的服务,然后选择/spawn
服务。
尝试spawn服务
让我们使用rqt调用/spawn
服务。您可以从其名称中猜测,这/spawn
将在turtlesim窗口中创建另一只乌龟。
给新乌龟一个唯一的名称,例如turtle2
在“ 表达式”列中的空单引号之间双击。您可以看到该表达式对应于名称值,并且类型为string。
输入要生成的海龟的新坐标,例如和。x = 1.0``y = 1.0
注意
如果尝试生成与现有乌龟同名的新乌龟(如默认乌龟),
turtle1
则会在运行turtlesim_node
以下终端中收到错误消息:
1 | [ERROR] [turtlesim]: A turtle named [turtle1] already exists |
要生成turtle2,必须通过单击rqt窗口右上角的“ 呼叫”按钮来调用该服务。
您将在为x和y输入的坐标处看到一只新的乌龟(同样具有随机设计)。
尝试set_pen服务
现在,让我们使用该/set_pen
服务为turtle1提供一支独特的笔:
r,g和b的值介于0到255之间,将设置笔turtle1绘制的颜色,而width则设置线条的粗细。
要使turtle1用明显的红线绘制,请将r的值更改为255,将width的值更改为5。不要忘记在更新值后调用该服务。
如果返回到turtle_teleop_node
正在运行的终端,然后按箭头键,您将看到turtle1的笔已更改。
现在有个问题:
无法移动turtle2。您可以通过将turtle1的cmd_vel
主题重新映射到turtle2 来完成此操作。
重映射remap
在新的终端中,输入ROS 2,然后运行:
1 | ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel |
现在,您可以在此终端处于活动状态时移动turtle2,而在运行该终端的另一个终端处于活动状态时移动turtle1 turtle_teleop_key
。