2. ROS工程结构
2019-08-25 本文已影响0人
Janeshurmin
2.1 ROS工程结构
ROS工程结果图-
catkin工作空间,组织和管理功能包的文件夹,以catkin工具编译构建
- src,package源代码
- build,cmake&catkin缓存和中间文件
- devel,目标文件(头文件,动态链接库,静态链接库,可执行文件)
2.1.1 catkin工作空间
catkin,ros定制的编译构建系统,是对CMake的扩展,用于编译ros程序
catkin工作空间,组织和管理功能包的文件夹,以catkin工具编译构建
catkin_make,建立工作空间,编译,写完代码后catkin_make一下,系统帮忙自动构建,生成目标文件
- 建立工作空间 catkin workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
- 编译
cd ~/catkin_ws #必须回到工作空间
catkin_make
source ~/catkin_ws/devel/setup.bash #编译完成后要source刷新环境,否则生成的可执行文件打不开
2.2 package
package,功能包
src下的package是catkin编译的基本单元,ros软件的基本组织形式,一个package可以包含多个可执行文件(节点)
package的最精简格式包括CMakeLists.txt和package.xml
-
CMakeLists.txt,规定了catkin编译的规则(e.g.,依赖性,源文件...)
-
package.xml,定义package属性(e.g.,包名,版本号,作者,依赖项)
package可以放置的东东
- 代码文件,脚本(shell、python)or C++(头文件、源文件)
- 自定义通信格式,消息msg,服务srv,动作action
- launch以及配置文件yaml
典型的package结构
常用指令
- rospack
rospack find package_name #查找某个pkg地址
rospack list #列出所有pkg
e.g., rospack list | grep catkin_ws
- roscd
roscd package_name #跳转到某个pkg路径下
- rosls
rosls package_name #列出某个pkg下的文件信息
- rosed
roscd package_name file_name #编辑pkg中的文件
- catkin_create_pkg
catkin_create_pkg <pkg_name>[deps]
- rosdep
rosdep install [pkg_name]
2.3 Metapackage
虚包,将具有相似功能的软件包组织起来,安装更方便
常见的metapackage