catkin workspace 详解
1. cakin
cakin是 ROS1 的官方构建系统
| 语言 | 构建系统 |
|---|---|
| C++ | CMake |
| Python | setuptools |
| ROS1 | catkin |
它负责:
- 编译 package
- 处理依赖
- 生成环境变量
- 组织多个 ROS 包
因此:catkin workspace就是:用 catkin 管理的 ROS 工作空间。
2. catkin_ws 的典型结构
catkin_ws/ ├── src/ ├── build/ ├── devel/ └── logs/(1)src
里边存放 ROS package 源码,例如: 每一个文件夹都是一个package
catkin_ws/src/ ├── camera_driver ├── imu_driver ├── orb_slam3 └── calibration_pkg创建包
cd ~/catkin_ws/src catkin_create_pkg my_pkg rospy roscpp std_msgs就会生成:
my_pkg/ ├── CMakeLists.txt ├── package.xml ├── src/ └── include/(2) build/
编译中间文件,通常不手动修改。
(3) devel/
编译后的开发环境,里面包括:
- setup.bash
- 编译好的节点
- Python模块
- 库文件
source ~/catkin_ws/devel/setup.bash 就是激活这个workspace
3. catkin_ws 是怎么工作的?
Step1
创建 workspace:
mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_make会生成:
build/ devel/Step2
放 package:
src/ └── camera_pkgStep3
编译: (catkin_make必须在 workspace 根目录下执行)
catkin_makecatkin 会:
- 找到
src下所有 package - 分析依赖
- 调用 CMake 编译
- 生成:
devel/Step4
source:
source devel/setup.bashROS 就能找到这些包
运行:
roslaunch camera_pkg xxx.launch就成功。
