ROS系统的主体结构是节点,ROS中的功能实现也可以理解为节点与节点之间的通信的结果。ROS中的节点具有多种形式,例如:传感器,电机等都可以作为一个独立的节点来共同组成某个具体的ROS系统。
作为ROS整体概念中的一部分,节点本身具有多种功能的分类,一个节点可以在系统中扮演多个角色,承担多种任务。具体来说分为主节点和节点两种,需要注意的是,这种分类是基于逻辑而不是物理基础的,事实上主节点和节点可能在物理形式上没有任何区别,甚至主节点和节点可能基于同一块物理硬件。而在功能上,主节点承担了链接不同节点和维持节点之间通信的职责,但是主节点需要做的工作只是等待和链接以及通讯,它不必保证所有节点与主节点的实时链接,换言之,主节点只要保证它在节点需要与其它节点链接时做出响应即可,这就保证了ROS系统的可扩展性,与此同时,这样的构造也限制在一个ROS系统中主节点必须唯一,否则不同节点之间可能会面临具有多条信道而无从选择的情况。节点作为功能的实现者,可以有很多个,而且为了让节点之间的通信更为高效,同时减少错误信息我们尽量追求节点功能的简洁与独立,避免一个节点承担多种不同的任务。
有了主节点和节点的概念后,为了让主节点了解节点的需求,理解节点的数据反馈,ROS引入了注册机制。
每个节点在运行时向主节点注册节点的名称,并且还注册发布者(publisher)、订阅者(subscriber)、服务服务器(service server)、