本吉为一名机械工程研究生,研究方向并不是机器人方向,纯属个人感兴趣,入门也是小菜菜瞎撞门,但是三分热度就有三分收货的呀!
Robot Operating System机器人操作系统。ROS不是传统意义上的操作系统,不是用于进程管理和调度,而是构建在其它操作系统之上的一种结构化的通讯层。
ROS的主要目标是为机器人研究和开发提供代码复用的支持。
ROS的通信是在OS层之上,基于TCP/IP协议实现
OS层 | Linux | ||
中间层 | ClientLibrary TCPROS/UDPROS Nodelet API |
ROS | |
应用层 | Application:Node、Node.... | Master |
主节点master:相当于管理中心,node首先在master处进行注册,node之间的通信也是先由master进行“牵线”,才能两两的进行点对点通信,一个ROS计算图中有且只有一个master。
节点node:一个可执行程序进程,通常一个node负责的节点可以使用不同的编程语言,也可以运行在同一局域网下的不同机器人。
ROS通信结构 -- 四种通信方式:话题、服务、动作、参数
名称 | 话题 Topic | 服务Service |
同步/实时性 | 异步通信/弱 | 同步通信/强 |
实现原理 | ROSTCP/ROSUDP | ROSTCP/ROSUDP |
通信模型 | 发布/订阅 | 请求/应答 |
节点数量关系 | 多对多 | 多(客户端)对一(服务端) |
应用场景 | 数据发布 | 逻辑任务处理 |
传递内容 | rosmsg | rossrv |
动作(action)和服务(service)的区别应该就是action有多组回复。
可以举一个生活中的例子,假如说你要机器人帮你烧水,service就是在水烧开之前你都不会收到回复,而action就会实时给你回复,可能水烧到50度就反馈给你,60度再反馈,70.....