0


ROS1学习笔记:ROS命令行工具的使用(ubuntu20.04)

参考B站古月居ROS入门21讲:ROS命令行工具的使用
基于VMware Ubuntu 20.04 Noetic版本的环境

文章目录

一、启动小海龟

打开终端,输入以下命令启动ROS的节点管理器-ROS master,这是ROS必须运行的管理器节点:

roscore

再打开一个终端,启动小海龟可视化仿真器(可以输入

rosrun turtlesim 

,敲两下空格查看这个命令有哪些功能):
在这里插入图片描述
如看到有

turtlesim_node

,完整命令为:

rosrun turtlesim turtlesim_node

再打开一个终端,启动键盘控制小海龟运动节点,命令为:

rosrun turtlesim turtle_teleop_key

这样启动小海龟的完整命令结束了,然后可以通过←→↑↓来控制小海龟的移动:
在这里插入图片描述

二、计算图可视化工具:rqt_graph

rqt_graph工具可以图形化显示当前ROS系统得中的计算图。在系统运行时,可以使用如下命令启动该工具:

rqt_graph

可以展示当前小海龟系统启动成功后的计算图:
在这里插入图片描述
从这个计算图可以清晰地了解到节点间通信的部分信息。
teleop_turtle节点(键盘控制节点)通过cmd_vel(topic)向turtlesim节点(海龟仿真器节点)发出消息,使得小海龟移动。

三、常用命令:

1、节点rosnode

显示节点列表:rosnode list

我们可以输入

rosnode list

来查看节点列表的信息,如下可以看到有三个节点信息:
在这里插入图片描述

查看节点信息:rosnode info

查看节点的具体信息:

rosnode info /节点名

比如我们查看turtlesim(小海龟)的节点信息:
在这里插入图片描述
可以很详细地看到海龟仿真器节点(turtlesim)的相关话题的发布和订阅,还有服务和底层通讯的信息。

2、话题rostopic

显示话题列表:rostopic list

通过

rostopic list

来查看话题列表:
在这里插入图片描述

手动发送数据给话题(topic)控制小海龟移动:rostopic pub

上面我们是通过键盘的↑↓←→来控制小海龟的移动的,从这里开始我们可以手动发布数据给topic来控制海龟移动。
上图我们看到小海龟是通过

/cmd_vel

这个

topic

进行发布信息而移动的,这次我们通过手动

publish

数据给这个

topic

来控制小海龟移动。

格式:rostopic pub (参数) 话题名 消息数据结构 “具体数据”

我们可以输入

rostopic pub /turtle1/cmd_vel 

然后多按几次

tab

键来补全:
在这里插入图片描述
其中:

linear

是小海龟的线速度,

angular

是小海龟的角速度;这两个速度分别有x,y,z三个方向。

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x:0.0
  y:0.0
  z:0.0
angular:
  x:0.0
  y:0.0
  z:0.0"

我们可以通过←→来更改速度的信息,比如我更改了线速度x方向的信息:
x:0.0改成x:1.0
然后回车
在这里插入图片描述

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
  x:1.0
  y:0.0
  z:0.0
angular:
  x:0.0
  y:0.0
  z:0.0" 

可以发现小海龟在x方向移动了一个单位的距离。
我们可以补充参数使得小海龟移动很多次,比如我补充参数

-r 10

使得小海龟移动十次。这个

r

指的是

rate

频率。

Ctrl+C

终止
在这里插入图片描述

rostopic pub -r 10/turtle1/cmd_vel geometry_msgs/Twist "linear:  
  x:1.0
  y:0.0
  z:0.0
angular:
  x:0.0
  y:0.0
  z:0.0" 

3、消息rosmsg

查看消息数据结构:rosmsg show

上面我们使用了消息数据结构定义了一个消息传给

topic

,我们可以通过

ros show xx数据结构

来查看某数据结构,比如查看有关速度的数据结构:
命令为:

rosmsg show geometry_msgs/Twist

在这里插入图片描述
Twist是有关速度的数据结构,包含线速度和角速度的x,y,z的三个分量

4、使用服务通信方式:rosservice

上面我们通过使用

topic

msg

来控制节点,这次我们来使用第二种通信方式service

查看服务列表:rosservice list

通过

rosservice list

来查看服务列表:
在这里插入图片描述

手动通过服务来进行操作

我们手动来生成一个新海龟,在服务列表中,有一个/spawn服务可以生成一个新海龟。
使用

rosservice call /spawn 

接tab键补充

格式:rosservice call (参数) 服务名 “具体数据”

在这里插入图片描述
(x,y)是小海龟生成的坐标,theta是小海龟生成的角度,name是新生成小海龟的名字。
这里我更改了(x,y)坐标为(2.0,2.0),名字为turtle2
在这里插入图片描述
然后回车我们就可以看到生成一个新海龟了。
在这里插入图片描述
然后我们输入

rostopic list

,可以看到turtle2已经在topic里面了。

在这里插入图片描述

5、话题记录与复现:rosbag

我们试想一个场景,如果我们在实验室A做了一番的实验,但是因为设备或者其他原因使得我们无法继续在实验室A继续做实验,这使得我们不得不搬到实验室B,这样我们就会面临一个问题:数据的保存和复现的问题
我们不可能在实验室B把所有过程都重新执行一遍,这样太费时间了。因此我们可以在实验室A把过程数据保存下来,然后再实验室B复现一遍就可以继续实验了,这就出现了话题记录与复现的功能。
常用命令:

rosbag record -a -O 文件名

比如我们使用之前打开的键盘操作器让海龟移动一圈并记录下来:
在这里插入图片描述
执行命令后,就会开始记录开发者的执行过程,我们通过键盘方向键来移动小海龟,然后结束可以按

Ctrl+C

来停止。
保存的文件记录在主目录下:
在这里插入图片描述
接下来我们要复现一遍刚才移动小海龟的记录,我们先关闭所有小海龟的ROS节点,重新开启

roscore

,开启小海龟节点

rosrun turtlesim turtlesim_node

复现之前的移动过程的格式为:

rosbag play 文件名

这时我们输入以下命令来复现之前的移动过程:

rosbag play cmd_record

在这里插入图片描述


本文转载自: https://blog.csdn.net/weixin_56197703/article/details/126912601
版权归原作者 Aaron-ywl 所有, 如有侵权,请联系我们删除。

“ROS1学习笔记:ROS命令行工具的使用(ubuntu20.04)”的评论:

还没有评论