【ROS学习】架构和概念--文件系统

文件系统

ROS文件系统的架构
ROS文件系统的架构如上图所示,ROS不同的组件要放在不同的文件夹下,且文件夹根据功能对文件进行组织。

  1. 功能包 :功能包构成ROS中的原子级。一个功能包具有用于创建ROS程序的最小结构和最少内容。它可以包含ROS运行时进程(节点)、配置文件等;
  2. 功能包清单:功能包清单提供关于功能包、许可证、依赖关系、编译标志等的信息。包清单由一个名为package.xml的文件管理。;
  3. 元功能包:如果你希望将几个具有某些功能的包组织在一起,那么你将会使用一个元功能包。该功能包是一个虚包,没有实质性的功能,但是它依赖了其他的软件包,可以通过这种方法将功能包组合起来。
  4. 元功能包清单:元功能包清单类似普通功能包但有一个XML格式的导出标记。它在结构上也有一定的限制。
  5. 消息类型:消息是一个进程发送到其他进程的信息。ROS有很多标准类型的消息。消息类型的说明存储在my_package/msg/MyMessageType.msg中。
  6. 服务类型:服务描述说明存储在my_package/srv/MyServiceType.srv中,为ROS中由每个进程提供的服务定义请求和响应数据结构。

工作空间

工作空间是包含众多功能包的文件夹,如下图所示。
在这里插入图片描述
该图为catkin_book的一级文件目录,其包含build, devel, src三个基本的文件夹。
build:编译空间,为功能包和项目保存缓存信息、配置和其他中间文件

在这里插入图片描述

devel: 开发空间,保存编译后的程序。

在这里插入图片描述

include文件夹中包含C++程序使用的自定义的库文件,如自定义消息或服务
lib文件夹中包含python脚本使用的模块文件,如自定义消息或服务
src: 源文件空间,放置了功能包、项目、复制的包等。

在这里插入图片描述
chapter2_tutorials:功能包
CMakeLists.txt:当在工作空间中配置包时,src文件夹中有CMakeLists.txt因为cmake调用它。这个文件是通过catkin_init_workspace命令创建的。
用catkin编译包有两个选项。第一个是使用标准CMake工作流程。
通过此方式,可以一次编译一个包,见以下命令:

cmake packageToBuild/
make

如果想编译所有的包,可以使用catkin_make命令行,见以下命令:

cd workspace
catkin_make

在ROS配置的编译空间目录中,这两个命令编译出可执行文件。

功能包

在这里插入图片描述

上图为某功能包的文件夹树图
CMakeLists.txt:Cmake的生成文件,编译使用文件,catkin_make编译工作空间时使用。
include/package_name:包含需要的库的头文件;
msg:用于存放自定义非标准的消息文件
package.xml:功能包清单。必须在每个功能包中,它用来说明此包相关的各类信息,如包的名称、依赖关系等信息。作用是为了方便安装和分发这些功能包。在package.xml文件中使用的两个典型标记是<build_depend>和<run_depend>。<build_depend>标记会显示当前功能包安装之前必须先安装哪些功能包。<run_depend>标记显示运行功能包中代码所需要的包。
scripts:用于存放python文件或其他脚本语言的可执行脚本;
src:用于存放程序源文件;
srv:用于存放服务。

部分功能命令

rospack:使用此命令来获取信息或在系统中查找包。
catkin_create_pkg:使用此命令创建一个新的功能包。
catkin_make:使用此命令来编译工作空间。
rosdep:使用此命令安装功能包的系统依赖项。
rqt_dep:此命令用来查看包的依赖关系图。
roscd:此命令用于更改目录,类似于Linux中的cd命令。
rosed:此命令用来编辑文件。
roscp:此命令用于从功能包复制文件。
rosd:此命令列出功能包的目录。
rosls:此命令列出功能包下的文件,类似于Linux中的ls命令。类似于Linux命令的命令。下面是一些示例。

元功能包

元功能包(或简称元包)是一些只有一个文件的特殊包,这个文件就是package.xml。它不包含其他文件,如代码等。且在package.xml中会注明metapackage。

消息msg

消息类型必须具有两个主要部分:字段(field)和常量(constant)。
字段定义数据类型,常量定义字段名称。如下图中int32为字段,id为常量。
消息数据放在功能包的msg文件夹下,文件的后缀为.msg。
发布者和订阅者之间传递消息。
在这里插入图片描述
下图为标准数据类型。
在这里插入图片描述
针对消息,可以使用rosmsg命令来对消息进行查看或操作。

服务srv

ROS使用一种简化的服务描述语言来描述ROS的服务类型,用于实现节点之间的请求/响应通信。服务的描述存储在功能包的srv子目录下的.srv文件中。
使用rossrv命令对服务进行查看或操作。
服务的书写类似消息,由字段和常量组成。“—”用于分割请求和响应,“—”上方为请求,下方为响应。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值