2、ROS使用工作空间

Posted by pzque on 2016-04-14     

一、引言

本篇中,我们首先会展示catkin_make如何构建package,然后演示在不使用catkin_make的情况下手动构建,从而加深对catkin_make工作流程的理解。

二、使用catkin_make

1、使用catkin_make的典型工作流是这样的:

1
2
3
4
5
6
$ cd ~/catkin_ws/src/beginner_tutorials/src
# 添加/编辑 源码
$ cd ~/catkin_ws/src/beginner_tutorials
# 更新 CMakeFiles.txt 使其与源码的更改同步
$ cd ~/catkin_ws
$ catkin_make -DCMAKE_BUILD_TYPE=Release

可以看到的devel的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
devel/
├── env.sh
├── lib
│ └── pkgconfig
│ ├── beginner_tutorials.pc
│ ├── newpack.pc
│ └── turorials.pc
├── setup.bash
├── setup.sh
├── _setup_util.py
├── setup.zsh
└── share
└── beginner_tutorials
└── cmake
├── beginner_tutorialsConfig.cmake
└── beginner_tutorialsConfig-version.cmak

这将在构建空间(~/catkin_ws/build)中构建源码空间 (~/catkin_ws/src)中的任何package。源代码将保留在源码空间(~/catkin_ws/src)中,而库文件、可执行文件等由源代码生成的文件将被放置在构建空间(~/catkin_ws/build)中。

如果想要像使用make命令一样使用参数,你需要这样使用catkin_make:

1
2
$ cd ~/catkin_ws
$ catkin_make install

这等价于:

1
cd ~/catkin_ws/build && make install

这将会创建一个’install’文件夹,且包含自己的setup.*sh文件,执行其中之一,当前的环境会由devel空间替换为install空间。

注意,只能使用install空间和devel空间之一。

二者优劣比较:

  • 使用devel空间,不必每次都执行install,这在使用python和运行测试时很有意义。
  • 使用install空间,则可以方便的发布package和及将package安装到系统。

使用参数将写好的package安装到系统:

1
2
3
#  This is an example
$ cd ~/catkin_ws
$ catkin_make install -DCMAKE_INSTALL_PREFIX=/opt/ros/groovy # might need sudo

2、添加包到工作空间

使用如下命令在已编译过的工作空间中添加新的package:

1
$ catkin_make --force-cmake

如果想查看catkin_make的具体调用的命令,使用如下参数:

1
$ catkin_make -DCMAKE_VERBOSE_MAKEFILE=ON

三、不使用catkin_make构建

留待后续课程深入。