ROS中的基本对象和概念学习笔记(ROS入门学习笔记一)

1.roscore命令和roslaunch命令区别

roscore命令用来显式启动ROS节点管理器,roslaunch目的是一次性启动多个节点,如果启动多个节点时没有节点管理器在运行,则会自动启动节点管理器,如果已经有一个节点管理器在运行,则会使用已有的节点管理器。

2.一旦节点管理器被启动了,就可以运行ROS程序了,ROS程序的运行实例被称为节点(node).

注意:如果我们同时执行相同程序的多个副本,注意确保每个副本使用不同的节点名,则每个副本都被当作一个单独的节点。

3.启动节点

rosrun package-name executable-name #第一个参数是功能包名称;第二个参数是该软件包中可执行文件的名称。

例如,下面启动Turtlesim节点:

$ rosrun turtlesim turtlesim_node

ROS中的基本对象和概念学习笔记(ROS入门学习笔记一)_第1张图片

4.查看运行节点

rosnode list

可以通过rosrun命令显示设置节点的名称,语法如下:

rosrun package-name executable-name __name:=node-name #这种方法将使用node-name参数给出的名称覆盖节点的默认名。

5.查看特定节点信息:

rosnode info node-name #这个命令输出包括话题列表、服务列表、节点的Linux进程标识符以及和其他节点的所有连接。

6.终止节点命令:

rosnode kill node-name

注意:ctrl+c也可以用来终止节点,但使用这种方法时可能不会在节点管理器中注销该节点,因此会导致已终止的节点仍然在rosnode列表中。此时,可以使用rosnode cleanup命令将节点从列表中删除。

7.话题(topic)和消息(message)

ROS节点之间进行通信的最主要的机制就是消息传递。在ROS中,消息有组织的存放在话题里。

消息传递的理念:当一个节点想要分享信息时,它就会发布(publish)消息到对应的一个或者多个话题;

当一个节点想要接收信息时,它就会订阅(subscribe)它所需要的一个或者多个话题;

ROS节点管理器负责确保发布节点和订阅节点能找到对方;而且消息是直接从发布节点传递到订阅节点,中间并不经过节点管理器转交。

8.查看节点构成的计算图

ROS中查看节点之间的发布-订阅关系的最简单方式就是在终端输入如下命令:rqt_graph

9.消息和消息类型

节点之间能相互传递消息,但是消息中包含了哪些内容?

打印消息内容:为了查看某个话题上发布的消息,可以利用rostopic命令的如下形式查看rostopic echo topic-name

测量消息发布频率:

rostopic hz topic-name #输出每秒发布的消息数量

rostopic bw topic-name #输出每秒发布消息所占字节量

rostopic还有一些子命令如下:

$ rostopic -h
rostopic bw     display bandwidth used by topic
rostopic echo   print messages to screen
rostopic hz     display publishing rate of topic    
rostopic list   print information about active topics
rostopic pub    publish data to topic
rostopic type   print topic type

10.查看话题

rostopic info topic-name

11.查看消息类型

rosmsg show message-type-name #该命令输出格式为域的列表,每行一个元素。每一个域由基本数据类型和域名称定义。

一个常见的例子是std_msgs/Header消息类型,其包含一些基本的序列号,时间戳以及坐标系等信息。这种类型将作为一个复合域(一般称作header)出现在上百个其他的消息类型中。

12.用命令发布消息

rostopic pub –r rate-in-hz topic-name message-type message-content #这条命令重复地按照指定的频率给指定的话题发布指定的消息。

该命令最后的参数message-content应该按顺序提供消息类型中所有域的参数值。例如:

rostopic pub –r 1 /turtle1/cmd_vel geometry_msgs/Twist ’[2,0,0]’ ’[0,0,0]’

这些数值按照rosmsg show命令显示的变量顺序赋给了消息中的域变量。在此例中,前面三个数字表示期望的位移线速度,后面三个数字表示期望的角速度。用单引号(’…’)和中括号([…])组织这些数值赋给它们对应的两个顶层复合域变量。

参数解释:

-r 指定话题以频率模式发布消息,即以一定的时间周期发布消息。这条命令同样支持一次性发布的模式(-1“虚线后为数字1”)和特别的锁存模式(-l“虚线后为字母L的小写”),锁存模式虽然也只是发布一次消息,但是会确保该话题的新订阅者也会收到消息。实际上,锁存模式是默认的模式。

-f 同样也可以从文件中读取消息(利用-f参数)或者从标准的输入(把-f参数和消息的内容从命令中都删掉)中读取。两种情况下,输入应该符合rostopic echo的输出格式。

13.消息类型的命名

消息类型命名格式:package-name/type-name

例如,turtlesim/Color消息类型按如下方式分解:

turtlesim     +      Color        ==> turtlesim/Color

功能包名            类型名称           消息类型

14.问题检查

当ROS没有按预期运行时,一种可能有帮助的工具是:roswtf

这条命令会进行全面而深入的检测,包括检测你的环境变量、安装的文件以及运行的节点。

例如,roswtf将会检测在安装过程中rosdep初始化是否完成,任何节点是否出现了意外的挂起或者终止,以及活跃的节点是否正确地和其他节点相连接等。

可惜的是,由roswtf检测的完整列表只能在Python源码中才能找到。

注:该笔记来自于学习《机器人操作系统(ROS)浅析-Version1.41》第二章

 

你可能感兴趣的:(ROS)