ROS学习之路(一)——ROS文件系统

时间:2020-8-29 作者:admin


ROS文件系统

1. 前言

2. catkin工作空间

3. package组成

4. 常用包管理指令

5.实例

1. 前言

一个ROS工程的结构图如下所示:
ROS学习之路(一)——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以后文件目录如下所示:
ROS学习之路(一)——ROS文件系统其中devel包含有头文件、动态链接库、静态链接库、可执行文件等。
通常开发都与src文件夹有关,有各种各样的功能包
ROS学习之路(一)——ROS文件系统package是catkin编译的基本单元。

package组成

package是ROS软件的基本组织形式,catkin编译的基本单元,一个package可以包含多个可执行文件(节点)。
ROS学习之路(一)——ROS文件系统
一个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配置文件。
ROS学习之路(一)——ROS文件系统

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
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。