《机器人操作系统入门》——柴长坤:第二课 工程结构
2.1 Catkin工作空间与编译系统
ROS工程结构(文件系统级):
层次1:
catkin工作空间=catkin+工作空间
catkin:ROS定制的编以构建系统,对CMake的扩展,用来编译ROS程序
catkin工作空间:一个文件夹,用来组织和管理功能包的文件夹,以catkin工具编译
指令:catkin_make
建立工作空间:
$mkdir -p -/catkin_ws/src
$cd ~/catkin_ws/
$catkin_make
编译:
$cd ~/catkin_ws/ #回到工作空间
$catkin_make
$source ~/catkin_ws/devel/setup.bash #编译完成后的workspace刷新到环境中去
层次2:
src文件夹:里面有各种功能包(package)
2.2 Package的组成
层次3:
package:ROS软件的基本组织形式,是catkin编译的基本单元,一个package可以包含多个可执行文件(节点)
package最精简结构:CMakeLists.txt, package.xml
层次4:
CMakeLists.txt:规定catkin编译的规则,例如:源文件、依赖项、目标文件
(如果编译出现问题多半和CMakeLists.txt文件或者依赖包有关)
package.xml:定义package的属性,例如:包名、版本号、作者、依赖等
scripts文件夹:*.py、*.sh
include文件夹:*.h
src文件夹:*.cpp、*.py(可被其他包import的python文件)
srv文件夹:*.srv
msg文件夹:*.msg
action文件夹:*.action
launch文件夹:launch文件(launch)
config文件夹:配置文件(yaml)
launch文件:一次性运行多个可执行文件
常用指令:
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_create_pkg
创建一个pkg
$catkin_create_pkg <pkg_name> [deps]
6.rosdep
安装某个pkg所需的依赖
$rosdep install [pkg_name]
2.3 演示操作(跳过)
2.4 Metapackage
Metapackage:虚包无内容,依赖许多其他软件包