ROS 入门 —— 命令行工具的使用

ROS 入门 —— 命令行工具的使用

节点管理器

ros naster 是 ros 中所有节点的管理器,在运行 ros 时必须首先运行的命令,通过运行如下命令进行启动:

roscore

运行节点

这里我们要在运行 roscore 命令的前提下,在第二个终端中运行 rosrun

注意:每次都要使用一个新命令行窗口来运行一个新的节点

rosrun 是用来运行某个功能包中某个节点的指令,这里以 turtle 为例:

rosrun 命令有两个参数,第一个是功能包名称,第二个是节点

rosrun 包名 节点名
# 这里在输入了包名后,可以双击 tab 键,来查看包下所有节点名称
# 这里我们要运行 turtlesim 中的仿真器节点,命令如下:
rosrun turtlesim turtlesim_node

然后在第三个终端中运行如下命令:

rosrun turtlesim turtle_teleop_key
# 这个节点是用于使用键盘方向键控制小海龟

可视化工具

ros 中有很多基于 qt 开发的可视化工具,这里我们可以很方便的看到一些信息

首先我们要安装 rqt 相关内容,这里我们使用的是 Noetic 版本的 ros ,安装命令如下:

sudo apt-get install ros-noetic-rqt
sudo apt-get install ros-noetic-rqt-common-plugins

如果提示找不到要安装的包,这里需要修改安装的镜像源

rqt 有很多很实用的工具,这里只介绍一些简单常用的作为样例,剩下的会在使用的过程中进行介绍:

rqt_graph

rqt_graph 是一个用来显示系统计算图的工具,可以很快的了解系统的全貌,尤其是针对一些未知的系统,可以知道系统的功能

常用工具

rosnode

直接输入 rosnode 会得到使用提示

rosnode list

把所有系统中的节点都列出来,但是与 rqt_graph 有一定区别,多出一个 rosout ,一个 ros 默认的话题,用于采集所有节点的一些信息,然后放在界面上进行显示

rosnode info 节点

查看节点的信息是什么样的,举例如下:

rosnode info /turtlesim

这里我们可以看到他正在发布哪些话题,订阅哪些话题,提供哪些服务和一些底层通讯的信息

rostopic

用于查看话题相关内容

rostopic list

打印出当前系统所有的话题列表:

rostopic pub 话题名  数据结构(内容) 具体数据

用来发布数据给制定话题,这里建议在输入话题名称后,双击 tab 自动补全后修改要输入的内容

可以在 pub 后面加上 -r +数字 来表示循环执行,并在一秒钟内运行多少次,如下:

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" 
# 这里表示循环运行 1s 运行 10 次,我们这里运行的是小海龟示例,撞墙会有提示
#这里的 linear 表示线速度, angular 表示角速度

这里循环执行我们可以用 ctrl+c 停下来

rosmsg

与发布的话题消息相关的内容

rosmsg show 话题的内容

示例如下:

rosmsg show geometry_msgs/Twist

这里可以看到 Twist 的数据结构是已经定义好的,包含线速度和角速度,每个分别包含 x、y、z 三个方向的分量

rosservice

服务相关内容

rosservice list

显示提供的服务列表

比如这里我们使用 spawn 命令产生一个新的海龟:

rosservice call /spawn "x: 0.0
y: 0.0
theta: 0.0
name: 'ppqppl'"
# 这里后面的参数为产生新海龟的坐标、海龟诞生之后的角度和海龟的名字

这里成功创建之后会返回海龟的名称,然后再次使用命令查看话题列表,这里就会同时存在 turtle1 和 ppqppl 两只海龟相关的所有话题

然后我们就可以使用上面的命令来控制第二个海龟

rosbag

话题记录工具,可以记录我们当前系统里面的所有话题数据并保存,在我们下次使用的时候可以复现出来

这就好比我们在进行无人机飞行的时候,不可能每次都重新飞行获取数据,而是在一次飞行中将数据保存下来,然后在实验室中调用数据进行多次处理

示例:

rosbag reocord -a -O ppqppl_turtle
# record 表示保存数据
# -a 表示保存所有数据
# -O 表示将数据保存到一个压缩包中 后面跟上包名

按下 ctrl+c 可以保存执行命令后所执行的所有数据

这里数据会保存到我们命令行对应的目录下,打开对应文件夹就可以看到生成了一个 ppqppl_turtle.bag 的包

下面我们来尝试复现数据中的内容,我们先关掉所有内容,重新启动:

roscore
# 先启动 roscore 就不用多说了
rosrun turtlesim turtlesim_node
# 启动小海龟节点
# 由于我们要使用我们前面的数据进行复现,所以这里我们并不需要启动键盘控制节点
rosbag call 包名

这样我们通过 rosbag play 命令就能够复现我们刚刚保存的所有数据,也就是我们控制小海龟的指令

总结

这里我们入门了一些最常用的 ros 指令,我们可以通过指令发布话题获取、话题列表与获取服务列表等,执行这样的一些基础命令在我们后续的对 ros 的学习是比不可少的,并且在 ros 的小海龟示例中包含了许多的 ros 核心的使用方法,后续会继续使用小海龟对 ros 的核心使用方法进行总结

posted @ 2023-02-18 18:16  ppqppl  阅读(401)  评论(0编辑  收藏  举报