ROS的核心概念
节点
- 节点是一个具体的执行单元,它是一个可完成具体任务进程,可独立运行的文件。
- 不同节点可以使用不同的编程语言,可分布式运行在不同的主机。
- 节点在系统中的名称必须是唯一的,否则重名后系统就找不到节点资源。
节点管理器
- 节点管理器是一个控制中心,为节点提供命名和注册服务。
- 它会跟踪和记录话题和服务同学,辅助节点互相查找,建立连接,例如上图的摄像节点和图像处理节点没有连接,通过节点管理器来进行连接,进行图像传输等。
- 提供参数服务器,节点可以通过次服务器存储和检索运行时的参数,如全局变量的变量名,变量值等。
话题通信
- 如上图,数据从发布者传输到订阅者,这个数据传输通道就叫做话题,即节点间用来传输数据的总线
- 使用发布/订阅模型,数据由发布者传输到订阅者,发布者和订阅者不是唯一的,但是发布者多可能会引起数据混乱。
消息
- 消息即话题数据,它具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型。
- 它使用编程语言无关的.msg文件来定义,编译过程中生成相应的代码文件
服务通信
- 使用客户端/服务器模型,客户端发送请求数据,服务器返回应答数据。
- 使用编程语言无关的.srv文件定义数据结构,编程过程中生成相应代码文件。
话题和服务的区别
- 话题时单向的,服务时双向的,所以话题没有反馈且是异步的,服务采用请求和应答,实时性更强。
- 话题有缓冲区来匹配收发端的速度,服务是实时访问所以没有缓冲区。
参数
- 参数是一个可以通过网络访问的共享的,多变量字典。
- 节点用此服务器来储存和检索运行时的参数。
- 它适合储存静态,非二进制的配置参数,不适合储存动态,如上图。Talker不断修改参数数据,而Listener不请求的话就无法实时更新数据。
文件系统
- 功能包:ROS软件中的基本单元,包括节点源码,配置文件,数据定义等。
- 功能包清单:记录功能包基本信息,如作者,许可信息,依赖选项等。
- 元功能包:组织多个用于同一目的的功能包。