1 ROS系统架构
1.1 文件系统(重点)
文件系统:主要指在硬盘里能看到的ROS目录和文件:
1)元功能包(Meta Packages):组织多个用于同一目的功能包。
2)元功能包清单(Meta Packages):类似于功能包清单,不同之处在于元功能包清单中可能会包含运行时需要依赖的功能包或者声明一些引用的标签。
3)功能包(Package):功能包是ROS中软件组织的基本形式。一个功能包具有用于创建ROS程序的最小结构和最少内容。它可以包含ROS运行的进程(节点)、配置文件等;
4)功能包清单(Package manifest):记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等。
5)消息类型(Message):消息是ROS节点之间发布/订阅的通信信息,可以使用ROS系统提供的消息类型,也可以使用.msg文件在功能包的msg文件夹下自定义需要的消息类型。
注:消息类型的说明存储在对应功能包的msg文件夹下。
6)服务类型(Service):服务类型定义了ROS服务器/客户端通信模型下的请求与应答数据类型,可以使用ROS系统提供的服务类型,也可以使用.srv文件在功能包的srv文件夹中进行定义。
注:服务描述说明存储在对应功能包的src文件夹下
7)代码(Code):放置功能包节点源代码的文件夹。
1.2 计算图
计算图是ROS在点对点网络里整合并处理数据的过程。基本计算图概念是 节点, 主机, 参数服务器, 消息, 服务, 话题, 和 数据包,它们通过不同的方式提供数据给图层。
这些概念是在ros_comm库里实现的。
1)节点(Node)—节点是执行任务的进程,也称为软件模块。
注:在ROS中,最小的进程单元就是节点( node)。一个软件包里可以有多个可执行文件, 可执行文件在运行之后就成了一个进程(process), 这个进程在ROS中就叫做节点 。
2)节点管理器(ROS Master)—管理者角色,统筹管理节点,保证节点的正常运行。
注:当ROS程序启动时, 第一步首先启动master, 由节点管理器处理依次启动node 。
作用:
通过RPC提供登记列表及对其他计算图表的查找功能,帮助节点间互相查找,建立连接,进行点对点的通信
控制中心,提供参数服务器,管理全局参数
3)参数服务器(Parameter Server)—参数服务器是节点存储参数的地方、 用于配置参数, 全局共享参数。 参
数服务器使用互联网传输, 在节点管理器中运行, 实现整个通信过程。 参数服务器维护着一个数据字典, 字典里存储着各种参数和配置。
4)消息(Message)—消息在ROS中,是一种数据类型,节点之间通过消息来互相通信。消息类型有ROS标准类型和基于标准消息开发的自定义类型两种。
6)主题(Topic)—异步通信机制,传输消息(Message)
主题:指节点发布的消息的去处。节点可以发布消息到话题,也可以订阅话题以接收消息。当一个节点发送数据时,我们就说该节点正在向主题发布消息。节点可以通过订阅某个主题,接受来自其他节点的消息。
发布/订阅:多对多的传输方式
6)服务(Service)—同步通信机制,传输请求/应答数据,基于C/S模型
当你需要直接与节点通信并获得应答时,将无法通过主题实现,从而需要服务。此外,服务必须有唯一的名称。当一个节点提供某个服务时,所有的节点都可以通过使用ROS客户端编写的代码与它通信。
请求/应答:一对多的传输模式
7)消息记录包(bag)—是一种用于保存和回放ROS消息数据的文件格式。消息记录包是一种用于存储数据的重要机制,它可以帮助记录一些难以收集的传感器数据,然后通过反复回放数据进行算法的性能开发和测试。ROS创建的消息记录包文件以*.bag为扩展名,通过播放、停止、后退操作该文件,可以像实时会话一样在ROS中再现情景,便于算法的反复调试。
1.3 开源社区
ROS开源社区的概念主要是ROS资源,其能够通过独立的网络社区分享软件和知识。
1)发行版(Distribution):ROS发行版包括一系列带有版本号、可以直接安装的功能包。
2)软件源(Repository):ROS依赖于共享网络上的开源代码,不同的组织机构可以开发或者共享自己的机器人软件。
3)ROS wiki:记录ROS信息文档的主要论坛。
4)邮件列表(Mailing list):交流ROS更新的主要渠道,同时也可以交流ROS开发的各种疑问。
5)ROS Answers:咨询ROS相关问题的网站。
6)博客(Blog):发布ROS社区中的新闻、图片、视频(http://www.ros.org/news)