目录
1.架构设计
- os层:操作系统。ros是元操作系统,需要依托真正意义的操作系统。目前兼容较好的是Linux的Ubuntu,Mac。
- 中间层:ros封装的关于机器人开发的中间件
a.基于tcp/udp封装的tcpros/udpros通信系统
b.用于进程间通讯Nodelet,为数据的实时行传输提供支持
c.机器人开发实现库,如数据类型,坐标变化,运动控制... - 应用层:功能包,以及功能包内的节点
从系统的实现角度来看,ROS可分为三个层次:计算图、文件系统、开源社区。
2.计算图
从计算图的角度来看,ROS系统软件的功能模块以节点为单位独立运行,可以分布于多个相同或不同的主机中,在系统运行时通过端对端的拓扑结构进行连接。
(1)节点
节点(Node)就是一些执行运算任务的进程,一个系统一般由多个节点组成,也可以称为“软件模块”。节点概念的引入使得基于ROS的系统在运行时更加形象:当许多节点同时运行时,可以很方便地将端对端的通信绘制成节点关系图,在这个图中进程就是图中的节点,而端对端的连接关系就是节点之间的连线。
ROS中关于节点的工具是rosnode:
指令 | 功能 |
rosnode info node | 输出当前节点的信息 |
rosnode kill node | 结束当前运行的节点进程 |
rosnode list | 列出当前活动的节点 |
rosnode machine hostname | 列出某一特定计算机上运行的节点或列出主机名 |
rosnode ping node | 测试节点之间的连通性 |
rosnode cleanup | 将无法访问的节点的注册信息清除 |
(2)消息
节点之间是通过传送消息进行通讯的。每一个消息都是一个严格的数据结构。
原来标准的数据类型(整型,浮点型,布尔型等等)都是支持的,同时也支持原始数组类型。消息可以包含任意的嵌套结构和数组(很类似于C语言的结构structs)。
ROS中关于消息的工具是rosmsg:
指令 | 功能 |
rosmsg show | 显示一条消息的字段 |
rosmsg list | 列出所有消息 |
rosmsg package | 列出功能包中的所有消息 |
rosmsg packages | 列出所有具有该消息的功能包 |
rosmsg users | 收索使用该消类型的代码文件 |
rosmsg md5 | 显示一条消息得MD5检验值 |
(3)话题
消息以一种发布/订阅(Publish/Subscribe)的方式传递。
一个节点可以针对一个给定的话题(Topic)发布消息(称为发布者/Talker&#