ros学习之ros文件系统级
一个ROS程序的不同组件要放在不同欧冠你的文件夹下,这些文件夹根据功能的不同来对文件组织
(1)、功能包(package)
功能包构成ROS中的原子级,一个功能包具有创建ROS程序的最小结构和最少内容。他可以包含ROS运行时进程(节点)、配置文件等,
由一种特定结构的文件和文件夹组合,结构有
·include/package_name/:此目录包含了需要的库的头文件。 ·msg/:如果开发需要非标准的消息,请把文件放在这里。 ·scripts/:其中包括Bash、Python或任何其他脚本语言的可执行脚 本。 ·src/:这是存储程序源文件的地方。你可能会为节点创建一个文件 夹或按照希望的方式组织它。 ·srv/:这表示服务(srv)类型。 ·CMakeLists.txt:这是CMake的生成文件。 ·package.xml:这是功能包清单文件
打开一个package.xml文件,可以看到包的名称、依赖关系等信息。 功能包清单的作用就是为了方便安装和分发这些功能包。
在package.xml文件中使用的两个典型标记是<build_depend>和 <run_depend>。
<build_depend>标记会显示当前功能包安装之前必须先安装哪些功 能包。这是因为新的功能包会使用其他包的一些功能。
<run_depend>标记显示运行功能包中代码所需要的包
(2)、功能包清单(package manifest)
功能包清单提供关于功能包、许可证、依赖关系、编译标志等信息。包清单中有一个名为package.xml的文件管理
(3)、元功能包(metapackage)
元功能包是一些只有一个文件的特殊 包,这个文件就是package.xml,用于组织多个用于同一目的功能包。
(4)、消息类型(msg)
消息是ROS节点之间发布/订阅的通信消息,可以使用ROS提供的消息类型,也可以使用.msg文件在功能包的msg文件夹下自定义需要的消息类型
消息类型必须具有两个主要部分:字段(field)和常量 (constant)。字段定义了要在消息中传输的数据类型,例如int32、 float32、string或之前创建的新类型,如叫作type1和type2的新类型。常 量用于定义字段的名称。
(5)、服务类型(service)
服务类型定义了ROS服务器/客户端通信模型下的请求和应答数据类型,可以使用ROS系统提供的服务类型,也可以使用.srv文件在功能包的srv文件夹中定义
ROS中有一些在服务上执行某些操作的工具。rossrv工具能输出服 务说明、.srv文件所在的包,并可以找到使用某一服务类型的源文件。 如果你想要在ROS中创建一个服务,可以使用服务生成器。这些工 具能够从基本的服务说明中生成代码。只需要在CMakeLists.txt文件中加 一行gensrv()命令。
(6)、代码
放置功能包节点源代码的文件夹