ROS文件系统
1. 前言
2. catkin工作空间
3. package组成
4. 常用包管理指令
5.实例
1. 前言
一个ROS工程的结构图如下所示:
2.catkin工作空间
catkin工作空间是组织和管理功能包的文件夹,以catkin工具编译。catkin是ROS定制的编译构建系统,对CMake的扩展。
catkin_make用来初始化工作空间,可以按下面代码使用:
##创建工作空间必须包含src文件夹
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_make
catkin_make 其实起到编译的作用,编译完以后一定要用source刷新环境。**(一定要用) **
source ~/catkin_ws/devel/setup.bash
catkin_make必须在工作目录里面执行其他目录会失败。
用完catkin以后文件目录如下所示:
其中devel包含有头文件、动态链接库、静态链接库、可执行文件等。
通常开发都与src文件夹有关,有各种各样的功能包
package是catkin编译的基本单元。
package组成
package是ROS软件的基本组织形式,catkin编译的基本单元,一个package可以包含多个可执行文件(节点)。
一个package至少包含CMakeLists.txt、package.xml。
CMakeLists.txt规定catkin编译的规则,例如:源文件、依赖项、目标文件。总体结构如下:
cmake_minimum_required() #CMake的版本号
project() #项目名称
find_package() #找到编译需要的其他CMake/Catkin package
catkin_python_setup() #catkin新加宏,打开catkin的Python Module的支持
add_message_files() #catkin新加宏,添加自定义Message/Service/Action文件
add_service_files()
add_action_files()
generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口
catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其他软件包调用
add_library() #生成库
add_executable() #生成可执行二进制文件
add_dependencies() #定义目标文件依赖于其他目标文件,确保其他目标已被构建
target_link_libraries() #链接
catkin_add_gtest() #catkin新加宏,生成测试
install() #安装至本机
package.xml定义了package属性,例如:包名、版本作者、依赖等。结构如下:
<pacakge> 根标记文件
<name> 包名
<version> 版本号
<description> 内容描述
<maintainer> 维护者
<license> 软件许可证
<buildtool_depend> 编译构建工具,通常为catkin
<build_depend> 编译依赖项,与Catkin中的
<run_depend> 运行依赖项
通常只要改:
<buildtool_depend> 编译构建工具,通常为catkin
<build_depend> 编译依赖项,与Catkin中的
代码文件有:脚本(shell、python)、C++(头文件、源文件)。
通常在package下面创建scripts文件夹放入*.py、.sh,include文件夹下面放入.h,src下面放入*.cpp。
在package下面还可以放入自定义通信格式:消息(msg)、服务(srv)、动作(action)。
package下面还可以放入launch文件、yaml配置文件。
4. 常用包管理指令
1. rospack
查找某个pkg的地址
$ rospack find package_name
列出本地所有pkg
$ rospack list
2. roscd(常用)
跳转到某个pkg路径下
$ roscd package_name
3. rosls
列举某个pkg下的文件信息
$ rosls package_name
4. rosed
编辑pkg的文件
$ rosed package_name file_name
5. catkin_creat_pkg
创建一个pkg
$ catkin_creat_pkg <pkg_name>[deps]
##deps表示依赖
6. rosdep
安装某个pkg所需要的依赖
$ rosdep install [pkg_name]
5.实例
$ mkdir -p ~/catkin_ws/src
$ cd catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash
##创建pkg
$ cd src
$ catkin_create_pkg test1
#创建pkg并包含依赖项
$ catkin_create_pkg test2 roscpp rospy std_msgs nav_msgs
##从github上clone文件
$ git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners
##安装所需的依赖包
$ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
## 定位某个包的位置
$ rospack find test2
##列举某个pkg下的文件信息
$ rosls topic_demo
##定位包里面的文件、浏览
$ rosed topic_demo CMakeLists.txt
##跳转到某个pkg路径下
$ roscd robot_sim_demo