一、ROS中的通信机制
松耦合分布式通信
二、节点与节点管理器
- 节点 (Node) – 执行单元
- 执行具体任务的进程、独立运行的可执行文件;
- 不同节点可使用不同的编程语言,可分布式运行在不同的主机;
- 节点在系统中的名称必须是唯一的。
- 节点管理器 (ROS Master) – 控制中心
- 为节点提供命名和注册服务;
- 跟踪和记录话题/服务通信,辅助节点相互查找、建立连接;
- 提供参数服务器,节点使用此服务器存储和检索运行时的参数。
三、话题通信
- 话题(Topic) – 异步通信机制
- 节点间用来传输数据的重要总线;
- 使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一。
- 消息(Message) – 话题数据
-
具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型;
-
使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件。
四、服务通信 (Service) – 同步通信机制 -
使用客户端/服务器(C/S)模型,客户端发送请求数据,服务器完成处理后返回应答数据;
-
使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码文件。
五、话题通信 VS 服务通信
六、参数 (Parameter) – 全局共享字典 -
可通过网络访问的共享、多变量字典;
-
节点使用此服务器来存储和检索运行时的参数;
-
适合存储静态、非二进制的配置参数,不适合存储动态配置的数据。
上述内容参考古月居博客,并对其进行总结。