ROS学习(1)-ROS架构及概念之理解ROS文件系统级

前言
入门学习基于《ROS机器人高效编程》原书第三版,感谢。环境为Ubuntu18.04+melodic,安装略过。
ROS系统架构分为三部分:
第一级,文件系统级。使用一组概念来解释ROS
的内部构成、文件夹结构,以及工作所需的核心文件。
第二级,计算图级。体现的是进程和系统之间的通信。在相关小节
中,我们将学习ROS的各个概念和功能,包括建立系统、处理各类进
程、与多台计算机通信等。
第三级,开源社区级。包含一系列工具和概念。
下面针对这三部分依次讲解。
一、理解ROS文件系统级
与其他操作系统类似,一个ROS程序的不同组件要放在不同的文件
夹下。这些文件夹是根据功能的不同来对文件进行组织的。

(1)工作空间:工作空间就是一个文件夹,其中包含功能包, 功能包又包含源文件和环境或工作空间, 从而提供编译这些功能包的一种方式。

1、源文件空间:在src文件夹中,放置功能包、项目、复制的包等。最重要的一个文件是CMakeLists.txt,这个文件是通过catkin_init_workspace命令创建的。

2、编译空间:在build文件夹中,cmake和caykin为功能包和项目保存缓存信息、配置和其他中间文件。简单介绍下编译ROS程序的两种方法,详见后续:

  • 一次编译一个包,
    $ cmake packageToBuild/
    $ make
  • 编译所有的包
    $ cd workspace
    $ catkin_make

3、开发空间:在devel文件夹中,保存编译后的程序,无需安装即可用来测试。
(2)功能包:具有用于创建ROS程序的最小结构和最少内容,包含ROS程序运行时的节点、配置文件等。具体文件目录如下:
1、include/package_name/:包含需要的库的头文件
2、msg/:存放非标准消息
3、scripts/:包含python或任何脚本语言的可执行脚本
4、src/:存放源文件
5、srv/:表示服务类型
6、CMakeLists.txt:CMake的生成文件
7、package.xml:功能包清单文件

(3)功能包清单:提供关于功能包许可证、依赖关系、编译标志等的信息,写入功能包下的package.xml文件中,也就是说该xml文件必须在每个功能包中。使用的两个典型标记是标记会显示当前功能包安装之前必须先安装哪些功能包。这是因为新的功能包会使用其他包的一些功能。标记显示运行功能包中代码所需要的包。

(4)元功能包:多个功能包组织到一起,称为元功能包或综合功能包。元功能包(或简称元包) 是一些只有一个文件的特殊包, 这个文件就是package.xml。 它不包含其他文件, 如代码等。在该XML文件中,可以看到标记和标记。
(5)元功能包清单:类似于功能包清单,但有一个XML格式的导出标记,同样写入一个package.xml文件中。
(6)消息类型:消息指的是一个进程发送到其他进程的信息。存放在功能包名/msg/mymessage.msg文件中。
消息类型必须具有两个主要部分:字段和常量,比如int32 id;ROS消息中的一种特殊数据类型是标头类型, 它主要用于添加时间、 坐标系和序列号等。 标头类型还允许对消息进行编号。 通过在标头类型内部附加信息, 我们可以知道是哪个节点发出的消息, 或者可以添加对于用户透明的功能以及一些能够被ROS处理的功能。
标头类型包含以下字段:
uint32 seq
time stamp
string frame_id
(7)服务类型:为ROS中每个进程提供的服务定义请求和响应数据结构。存放在功能包名/srv/myservice.srv文件中。要调用服务,需要使用功能包名称和服务名称。

你可能感兴趣的:(ROS,ROS)