ROS命令的格式是
rosrun package node
其中rosrun是运行命令。package是软件包,我的理解是它对应的是ROS目录下的src或者build文件夹里面的子文件夹。这样一个软件包是一些功能相关性强的程序的集合。包中的每一个可执行程序(C++)或者脚本文件(python)就是一个node节点。每一个节点执行时就是一个进程。
ROS系统在运行时,需要一个主控节点,或者说核心进程,叫做master。master节点启动用命令 roscore 。如果要把多条ros命令一起运行,用roslaunch命令。roslaunch命令顺利执行需要写一个类似于批处理脚本的文件。
master节点启动后,还会自动启动rosout节点,用来产生各种运行的log记录。还会运行parameter server服务器,给整个ros系统提供需要的配置参数。
在ROS系统运行起来后,可以用一些node相关的命令来查看信息。
可以先用 rosnode list 来查看现在有多少节点在运行。
想了解某个节点的信息,包括发布的主题(topic),订阅的主题,服务内容等。可以用命令 rosnode info /节点名
从结果可以看出,base_control节点发布了4个topic(battery,odom,rosout,tf),订阅了一个topic(cmd_vel)。
从connections部分可以看出,发出的rosout主题的订阅者是rosout节点。订阅的cmd_vel主题来自于teleop_twist_keboard节点。
如果是想要看整个ros系统中有多少主题发布出来。用rostopic list命令。结果与rosnode list类似。
同样的,如果要查看某个topic的信息,用rostopic info /主题的名字。可以看到这个主题的信息,包括发布者,订阅者是谁,ip地址是多少,以及消息类型等。
topic是传递信息的载体,或者想象成信纸。具体的消息是写在信纸上的内容。消息本身是有具体的格式的。比如上面的例子,/rosout_agg这个topic的消息类型就是
rosgraph_msgs/Log ,也就是说,消息是rosgraph_msgs这个软件包中定义的名为Log的message类型。
消息(message)类型相当于一个C语言中结构体,一个消息有多个子项组成。可以用命令来查看某个具体消息的组成。
rosmsg info rosgraph_msgs/Log , 显示结果如下。