Author: XFFer_
参考:
- http://wiki.ros.org/
- https://www.guyuehome.com/
- 《ROS机器人开发实践》胡春旭
文章目录
ROS架构
节点(Node) ——执行单元
- 执行具体任务的进程、独立运行的可执行文件
- 不同节点是松耦合的,可以用不同的编程语言,可以在不同的PC端运行
- 节点的名称是唯一的
节点管理器(ROS Master) ——控制中心
- 为节点提供 命名和注册(Registration) 服务
- 通过远程控制调用(RPC) 跟踪记录话题/服务通信,辅助节点相互查找和连接
- 提供参数服务器,节点使用该服务器存储和检索运行时的参数
话题(Topic) ——异步通信机制(asynchronous communication)
- 异步通信: (简单讲)发送端想啥时间发就发,但是要在消息前后做个标记,方便接收端接受
- 节点间用来传输数据的总线
- 使用发布/订阅模型,数据由发布者(publisher)传给订阅者(subscriber)
消息(Message) ——话题数据
- 具有一定的类型和数据结构(ROS提供的标准类型和自定义类型)
- 使用编程语言无关的 .msg 文件定义,编译过程中生成代码文件
服务(Service) ——同步通信机制
- 使用 客户端/服务器(C/S) 模型,也就是Client/Server,客户端发送 请求 ,服务器完成处理后返回 应答 数据。这里返回数据还是由话题的方式
- 使用编程语言无关的 .srv文件定义请求和应答数据结构,编译过程中生成代码文件
话题 | 服务 | |
---|---|---|
同步性 | 异步(很像发邮件,不知道对方收到了没有) | 同步(像打电话,实时得知对方的状态) |
通信模型 | 发布/订阅 | 服务器/客户端 |
底层协议 | ROSTCP/ROSUDP | ROSTCP/ROSUDP |
反馈机制 | 无 | 有 |
缓冲区 | 有 | 无 |
实时性 | 弱 | 强 |
节点关系 | 多对多 | 一对多 |
适用场景 | 数据传输 | 逻辑处理 |
参数(Parameter) ——全局共享字典
- 可通过网络访问的共享、多变量字典
- 节点使用此服务器存储和检索运行时的参数
- 适合存储静态、非二进制的配置参数,不适合动态配置参数