【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具

目录

说明:

1. 回顾小海龟案例

终端1:启动ROS master

终端2:启动小海龟仿真器

终端3:启动海龟控制节点:

2. 系统计算图:rqt_graph

3. rosnode

rosnode list:显示节点列表

rosnode info:查看节点信息

示例

/turtlesim节点信息说明

4. rostopic

rostopic list:显示话题列表

手动向话题发布消息数据

示例

补充

linear:线速度

angular:角速度

5. rosmsg

查看消息数据结构

示例

6. rosservice

rosservice list :显示服务列表

手动请求一个服务

示例

7. rosbag

话题数据记录

示例

话题数据复现


说明:

1. 本系列学习笔记基于B站:古月居《ROS入门21讲》课程,且使用的Ubuntu与ROS系统版本与      课程完全一致;

虚拟机版本 Linux系统版本 ROS系统版本
VMware WorkStation Pro 16 Ubuntu18.04 Melodic

2. 本节是整个笔记的第6节,对应视频课程的第8节,请自行对应学习;

3. 整个系列笔记基本已经完结,但部分章节仍需润色修改 ,后面会陆续发布,请大家持续关注,      创作不易,感谢支持!

1. 回顾小海龟案例

终端1:启动ROS master

roscore

终端2:启动小海龟仿真器

$ rosrun turtlesim turtlesim_node

终端3:启动海龟控制节点:

rosrun turtlesim turtle_teleop_key

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第1张图片

2. 系统计算图:rqt_graph

新建终端:

rqt_graph

我们之前介绍过ROS里面的核心通讯机制就是一个计算图,

通过这张图可以很快的了解当前正在运行的整个系统的全貌,

尤其是针对一些未知的系统,很快可以知道这个系统是干嘛的。

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第2张图片

  • /teleop_turtle: 键盘控制节点

  • /turtle1/cmd_vel: 通讯话题,这个话题里面的具体通讯内容就是我们通过键盘输入指令的内容

  • /turtlesim: 小海龟仿真器节点

3. rosnode

rosnode 可以显示一些关于节点的帮助信息:

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第3张图片

rosnode list:显示节点列表

image-20230217113522514

/rosout:在rqt_graph中没有体现,它是在ROS环境里,只要你启动roscore,都会默认启动的一个话题,这个话题主要采集ROS里面所有节点的日信息,用来提交给上面的界面做显示的,一般不用去关心它。)

rosnode info:查看节点信息

格式:rosnode info 某一个节点名

示例
rosnode info /turtlesim

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第4张图片

/turtlesim节点信息说明

  • 节点turtlesim正在发布的话题:

(/turtle1/pose [turtlesim/Pose]:海龟的位置)

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第5张图片

  • 节点turtlesim 正在订阅的话题:

image-20230228124951786

  • 节点turtlesim 提供的一些服务:

    可以通过这些服务来完成一些配置。

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第6张图片

  • 主机号和pid号:

image-20230228125708579

  • 底层通讯的一些信息:

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第7张图片

4. rostopic

rostopic可以显示一些关于话题的帮助信息:

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第8张图片

rostopic list:显示话题列表

我们前面的键盘控制节点和海龟仿真器节点之间就是通过 /turtle1/cmd_vel 话题实现通讯的。

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第9张图片

手动向话题发布消息数据

我们也可以手动通过指令向 /turtle1/cmd_vel 话题发布消息数据,让海龟运动,

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

示例
rostopic pub /turtle1/cmd_vel

然后空格,再连按两次tab键自动填充数据,

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第10张图片

使用方向键←→移动到要修的数据的位置修改数据,如将x的0.0改成了1.0,回车,海龟应该按照1.0m/s向前运动一小段

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第11张图片

我们发现海龟只动了一小段又停下来了,并不会一直来动,这是因为pub指令只会发布一次,

如果想要海龟一直动,我们需要给其一个循环:

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" 

(-r:频率rate,10:10赫兹,代表一秒钟发布十次这样指令)

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第12张图片

可以看到海龟撞到墙也不会回头,并且显示:Oh no! I hit the wall!,此时按ctrl+c 中断程序。

如果给angular角速度的z一个数值,海龟的运动将是曲线的,如下图:

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第13张图片

补充

linear:线速度

单位:m/s

angular:角速度

单位:弧度/s

每一个速度都会给出x,y,z三个方向上的分量,比如上面给linear线速度x方向的分量数据1.0

ROS里面的默认的单位,一般跟平移相关的都是:m/s,跟角度角度相关的都是:弧度/s

5. rosmsg

查看消息数据结构

格式:rosmsg show (参数)消息数据结构 "具体数据"

示例
rosmsg show geometry_msgs/Twist

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第14张图片

6. rosservice

rosservice list :显示服务列表

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第15张图片

这些的服务的服务端都是仿真器,我们的终端都是作为客户端去请求某个服务的。

手动请求一个服务

在上面的服务列表中,有个/spawn服务,此服务是用来产生一只新海龟的,

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

示例
rosservice call /spawn

最后加空格,然后连按2次tab键,会自动根据请求的服务类型(spawn)补全的服务数据

image-20230228133905247

x,y分别代表产生新海龟位置的横纵轴坐标(仿真器窗口左下角为x,y轴的0点坐标);

theta:产生新海龟的角度;

name:产生新海龟的名字,

然后我们对新海龟的服务数据给予一些值:

image-20230228140649092

服务反馈结果

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第16张图片

7. rosbag

rosbag的作用是记录当前系统中所有的话题数据,并且保存下来,当下次需要的时候再复用出来。

例如:一个需要调试的无人机,每次做数据调试都要让无人机飞一次,非常麻烦,

所以一般的方式都是做一次飞行,然后把所有的飞行数据都保存下来,回到实验室,再把这些数据复现出来做实验调试,

所以后面的实验和真机飞行就没有关系了,都是用数据实验的,rosbag就是做这样的事情的。

话题数据记录

格式:rosbag record (参数)保存数据的文件名

示例
rosbag record -a -O cmd_record

参数:

-a:-all,所有的

-O:把记录的数据保存成一个压缩包

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第17张图片

现在随便让小海龟动几下,留下一个轨迹,然后在Ctrl+C保存数据,如下:

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第18张图片

保存的文件位置在主目录Home下

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第19张图片

话题数据复现

现在可以尝试复现保存文件里面的数据内容了,先把所有终端都关掉,然后

终端1 :

roscore

终端2:

rosrun turtlesim turtlesim_node

终端3:

rosbag play cmd_record.bag

复现效果

【古月居《ros入门21讲》学习笔记】06_ROS常用命令行工具_第20张图片


你可能感兴趣的:(Linux,ROS学习笔记,ubuntu,linux,机器人,人工智能)