前言
ROS空间结构
一、工作空间结构
在工作空间的目录下,可以使用`$tree`可以查看文件结构; 如果没有安装tree可以在空座空间目录下使用$sudo apt install tree
命令来安装tree
catkin_make编译的流程是首先在src文件夹中寻找package源代码包,我们可以将多个package包放入src文件夹中,然后在build文件夹中生成catkin或者cmake中间或缓冲文件,在devel文件夹中生成编译完的目标文件。
build和devel一般是自动生成,我们一般将ROS程序或者其他源文件放入src文件夹中。
1.package
在ROS中只有package才能被编译,catkin_make所编译的对象也是package,在ROS中主要的两种编程语言:C++和python,他们所编写的源码需要放置在package文件夹中。
一个package可以编译出多个目标文件。
2.package中结构
package包中主要有以下文件结构
1)config:这是放功能包中的配置文件,主要由用户创建
2)include:用来放置功能包中所需要用到的配置文件,c++
3)scripts:来放置可以直接运行的python文件
4)src:放置需要编译的C++文件
5)launch:用来放置功能包的启动文件
6)msg:放置自定义消息类型
7)srv:放置自定义服务类型
8)action:自定义动作指令
9)package.xml:功能包描述文件
10)CMakeLists:放置功能包编译规则
11)models:存放机器人或者仿真场景的3D模型
12)urdf:放置机器人描述模型
一般在package中必须有CMakeLists和package.xml这两个文件。其他看情况添加。
2.1package.xml
package.xml是存放描述package的描述信息的,里面包含package名称,版本号、内容描述、编译依赖、运行依赖等信息。
package.xml是遵循xml标签文本的写法,通常包含以下标签:
标签名称 | 作用 |
---|---|
<package> | 根标记文件 |
<name> | 包名 |
<version> | 版本号 |
<description> | 内容描述 |
<maintainer> | 维护者 |
<license> | 软件许可证 |
<buildtool_depend> | 编译构建工具,一般为catkin |
<depend> | 这是最常用的一个命令,指定依赖项为编译、导出、运行所用依赖项 |
<build_depend> | 编译依赖项 |
<build_export_depend> | 导出依赖项 |
<exec_depend> | 运行依赖项 |
<test_depend> | 测试依赖项 |
<doc_depend> | 文档依赖项 |
二、创建一个package
对于package的创建需要用到catkin_create_pkg的命令;$cd ~/catkin_ws/src
$catkin_create_pkg packagename pkg_depend1 pkg_depend2 .....
//包的名字 依赖项1 依赖项2 .。。。。
2.1 package相关命令
rospack是对package管理工具
rospack命令 | 作用 |
---|---|
rospack help | 获取rospack的用法 |
rospack list | 列举出本机所有的package |
rospack depend 【package】 | 显示package的依赖包 |
rospack find 【package】 | 找到某个package |
rospack profile | 刷新所有package的位置记录 |
roscd | 作用 |
---|---|
roscd 【package】 | cd到ROS package所在路线 |
rosls命令 | 作用 |
---|---|
rosls 【package】 | 列出ROS package下的文件 |
rosdep是用于管理package依赖项的命令工具
rosdep命令 | 作用 |
---|---|
rosdep check 【package】 | 检查package依赖是否满足 |
rosdep install 【package} | 安装package的依赖项 |
rosdep db | 生成和显示依赖数据库 |
rosdep init | 初始化/etc/ros/rosdep中的源 |
rosdep keys | 检查package依赖是否满足 |
rosdep update | 更新本地的rosdep数据库 |