2- turtlesim和rqt的使用

-目录

-背景

-基础准备

-任务

    --1 安装turtlesim

    --2 启动turtlesim

    --3 使用turtlesim

    --4 安装 rqt

    --5 使用rqt

    --6 话题重映射

-总结

背景

    Turtlesim是一个用于学习ROS 2的轻量级模拟器。它说明了ROS 2在最基本的层面上是做什么的,让你知道你以后会用一个真正的机器人或机器人仿真做什么。
    ros2工具是用户管理、自省和与ROS系统交互的工具。它支持针对系统及其操作的不同方面的多个命令。可以使用它来启动节点、设置参数、收听主题等等。ros2工具是核心ROS 2安装的一部分。
    rqt是用于ROS 2的图形用户界面(GUI)工具。在rqt中完成的所有操作都可以在命令行上完成,但是rqt提供了一种更加用户友好的方式来操作ROS 2元素。

基础准备

    见前一节环境变量设置。

任务

1 安装turtlesim

    根据你的ROS2版本安装turtlesim包:

sudo apt update

sudo apt install ros-humble-turtlesim

    检查这个包已经被安装:

ros2 pkg executables turtlesim

    上条命令将返回turtlesim可执行文件:

turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

2 启动turtlesim

    在终端中输入如下命令启动turtlesim

ros2 run turtlesim turtlesim_node

    将弹出一个窗口,窗口中心随机出现一只海龟。

    在终端中将看到来自节点的消息,可以看到默认海龟的名称和它生成的坐标:   

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

3 使用turtlesim

    再新开一个终端并source一下setup.bash文件,运行一个新的节点去控制之前节点产生的乌龟运动:

ros2 run turtlesim turtle_teleop_key

    此时,应该打开了三个窗口:一个运行turtlesim_node的终端、一个运行turtle_teleop_key的终端和turtlesim窗口。布置这些窗口,以便可以看到turtlesim窗口,终端运行turtle_teleop_key,以便您可以在turtlesim中控制海龟。 

    使用键盘上的方向键来控制乌龟。它会在屏幕上移动,用它附带的“笔”画出它到目前为止所遵循的路径。

    可以使用相应命令的列表子命令查看节点及其关联的话题、服务和动作:

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

4 安装rqt

    打开一个新的终端安装rqt及其插件:

sudo apt update

sudo apt install ~nros-humble-rqt*

    运行rqt:

rqt

5 使用rqt

    当第一次运行rqt时,窗口将是空白的。只需从顶部的菜单栏中选择Plugins > Services > Service Caller。

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

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

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

5.1 使用spawn服务

    使用rqt来调用/spawn服务,/spawn将在turtlesim窗口中创建另一个海龟。

    通过双击Expression列中的空单引号之间,为新海龟指定一个惟一的名称,如turtle2。可以看到,这个表达式对应于name的值,并且是字符串类型。

    接下来输入生成新海龟的有效坐标,如x = 1.0和y = 1.0。

    如果你试图生成一个与现有海龟同名的新海龟,比如默认的turtle1,你会在运行turtlesim_node的终端中得到一条错误消息:

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

    要生成turtle2,需要通过单击rqt窗口右上方的call按钮来调用该服务。
    如果服务调用成功,应该看到在你输入的x和y坐标处生成一个新的海龟(同样是随机设计)。

    如果你在rqt中刷新服务列表,你还会看到现在有与新龟/turtle2/…相关的服务。,此外还有/turtle1/....

5.2 使用set_pen服务

    现在让我们使用/set_pen服务给turtle1一个唯一的笔:

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

    当然,由于turtle2没有通信节点,所以无法移动乌龟2。

6 重映射

    您需要第二个远程操作节点来控制turtle2。但是,如果您尝试像以前一样运行相同的命令,您会注意到这个命令也控制着turtle1。改变这种行为的方法是重新映射cmd_vel话题。

    新开终端source后,运行如下命令:

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,在turtle_teleop_key终端输入q。

总结

    使用turtlesim和rqt是学习ROS 2核心概念的重要方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值