ROS文件系统

ROS的文件系统

基本概念

package是ROS系统中的最基本的组织单位。每个package都可以包含库,可执行文件,脚本或其他文件。
Manifest: package描述的描述文件,用于描述package之间的依赖关系和package的有关信息,例如版本,维护者,许可证等。
stacks: package的集合。
stack Manifest: 作用类似package manifest文件,用来描述Stacks的。

系统工具

由于package和stacks的文件结构可能很复杂,使用ls和cd来定位文件十分麻烦,所以ROS提供了一些工具。

rospack:

用于获取package的有关信息,如使用:rospack find [package_name],可获得package的路径

roscd:

类似于cd的作用,不同的是可利用package名字直接切换到相应文件目录下,roscd package-or-stack[/subdir]

roslog:

进入ROS存储日志文件的文件夹

rosls:

类型于ls的作用,可利用package名字直接使用ls而不是按照目录,rosls package-or-stack [/subdir],支持TAB补全

package

package.xml

必须包含package.xml文件,该文件定义有关软件包的属性,例如软件包名称,版本号,作者,维护者以及对其他catkin软件包的依赖关系。

package.xml文件格式:
	(1):	以<package>作为根标记
		<package format =“ 2”>

		</ package>
	(2):	至少包含以下一组标记
		<name> -包的名称

		<version> -软件包的版本号(必须为3个点分隔的整数)

		<description> -包装内容的描述

		<maintainer> -正在维护包的人员的姓名

		<license> -用于发布代码的软件许可证(例如GPL,BSD,ASL)。
	(3):	依赖关系,<depend>指定依赖关系是构建,导出和执行依赖关系。这是最常用的依赖项标签。
CMakeLists.txt
每个package都具有自己的文件夹

创建package

建立工作区

建立如下文件结构的工作区

catkin Workspace:	
workspace_folder/        -- WORKSPACE
	src/                   -- SOURCE SPACE
		CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
		package_1/
  			CMakeLists.txt     -- CMakeLists.txt file for package_1
  			package.xml        -- Package manifest for package_1
		...
		package_n/
  			CMakeLists.txt     -- CMakeLists.txt file for package_n
  			package.xml        -- Package manifest for package_n
创建包

打开catkin Workspace,即workspace_folder/src/,使用catkin_create_pkg脚本创建package
如:创建一个名为“ beginner_tutorials”的新程序包,该程序包取决于std_msgs,roscpp和rospy

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
构建包
cd〜/ catkin_ws
catkin_make
. ~/catkin_ws/devel/setup.bash

包依赖

一阶依赖:查看一阶依赖项,rospack depends1 package_name
间接依赖:查看所有依赖项,rospack depends package_name

<build_depend>,Build Dependencies(构建依赖关系),指定构建此软件包所需的软件包。在构建时需要这些软件包中的任何文件时,就是这种情况。这可以包括在编译时来自这些程序包的标头,与这些程序包中的库链接或在构建时需要任何其他资源(尤其是在CMake中这些程序包是find_package()-ed时)。在交叉编译方案中,构建依赖项是针对目标体系结构的。
<build_export_depend>,Build Export Dependencies(构建导出依赖关系),指定了针对该程序包构建库所需的程序包。在您将其标头可传递地包含在此程序包的公共标头中时,就是这种情况(尤其是当这些程序包在CMake中的catkin_package()中声明为(CATKIN_)DEPENDS时)。
<exec_depend>,执行依赖关系,指定运行该程序包中的代码所需的程序包。当您依赖此程序包中的共享库时,就是这种情况(尤其是当这些程序包在CMake中的catkin_package()中声明为(CATKIN_)DEPENDS时)。
<test_depend>,测试依赖项,仅为单元测试指定其他依赖项。他们绝不应该复制已经提到的任何依赖,即构建或运行依赖。
<buildtool_depend>,Build Tool Dependencies,指定此软件包自行构建所需的构建系统工具。通常,唯一需要的构建工具是catkin。在交叉编译方案中,构建工具依赖项是针对要在其上进行编译的体系结构的。
<doc_depend>文档工具依赖项,指定此包生成文档所需的文档工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值