ROS1云课→01简介和配置
ROS1系统的架构主要被设计和划分成了三部分,每一部分都代表一个层级的概念:
- 文件系统级(The Filesystem level)
- 计算图级(The Computation Graph level )
- 开源社区级(The Community level)
第一级是文件系统级。在这一级,通过一组概念来解释ROS1的内部构成、文件夹结构,以及工作所需的核心文件。
第二级是计算图级,体现的是进程和系统之间的通信。在相关小节中,了解ROS的各个概念和功能,包括建立系统、处理各类进程、与多台计算机通信等。
第三级是开源社区级,解释一系列的工具和概念,其中包括在开发人员之间如何共享知识、算法和代码。这个层级非常重要,正是由于开源社区的大力支持,ROS1系统才得以快速成长。
这部分概念ROS1/2非常相似
一个ROS1程序的不同组件要被放在不同的文件夹下。这些文件夹是根据功能的不同来对文件进行组织的:
- 功能包(Packages):功能包是ROS1中软件组织的基本形式。一个功能包具有用于创建ROS1程序的最小结构和最少内容。它可以包含ROS1运行的进程(节点)、配置文件等。
- 功能包清单(Package Manifests):功能包清单提供关于功能包、许可信息、依赖关系、编译标志等的信息。一个包的清单由一个名为package.xml的文件管理。
- 综合功能包(Metapackages):如果你将几个具有某些功能的功能包组织在一起,那么你将会获得一个综合功能包。在ROS Fuerte中,这种包的组织形式被称为功能包集(Stack)。为了保持ROS1简洁,功能包集被移除,现在使用综合功能包实现这个功能。在ROS1系统中,存在大量不同用途的综合功能包,例如导航功能包集。
- 综合功能包清单(Metapackage manifests):综合功能包清单(package.xml)类似普通功能包但有一个XML格式的导出标记。它在结构上也有一定的限制。-又称为元功能包
- 消息类型(Message(msg)types):消息是一个进程发送到其他进程的信息。ROS系统有很多的标准类型消息。消息类型的说明存储在my_package/msg/MyMessageType.msg中,也就是对应功能包的msg文件夹下。
- 服务类型(Service(srv)types):服务描述说明存储在my_package/srv/MyServiceType.srv中,定义了在ROS中由每个进程提供的关于服务请求和响应的数据结构。
使用roscd到turtlesim功能包:
roscd turtlesim
使用tree,查看其文件组织形式:
如上是一个在ros中的功能包,如果是源码功能包,还包括src等程序代码如下: