环境说明
ROS版本:ROS Kinetic Kame
Ubuntu版本:Ubuntu 16.04.6 LTS,(
lsb_release -a
)Python版本:Python 2.7.12
CMake 版本:3.5.1
工作空间(workspace)
1. 创建工作空间
1 |
mkdir -p cakin_ws/src |
cakin_ws
为工作空间名。src
为固定目录,不可更改。
2. 编译工作空间
1 |
cd cakin_ws |
来到之前创建好的工作空间目录下,使用catkin_make
命令,将编译工作空间。
此时,我们的工作空间就创建完毕
3. 初始化工作空间遇到的坑
conda 环境问题
如果之前安装好,并且初始化了 conda 环境,可能会出现该问题,在错误信息中心会出现一些与 python 有关,带有 conda 的路径的一些信息。
原因分析
- conda默认激活,python 路径为 conda 中的 python
- ros 的库都默认安装在了系统的 python2 中,导致
catkin_make
的时候,找不到 ros 需要的库
解决办法
- 完全退出 conda 环境
- 测试是否退出,使用命令
which python
,打印的是不带conda
的路径,一般为/usr/bin/python
- 删除工作空间目录下的出
src
之外的所有文件,因为之前生成的会带有 Python 路径缓存。
1 |
rm -rf `ls | grep -v src` |
- 再一次
catkin_make
即可
包(Package)
以下内容默认你已经创建了一个名为
catkin_ws
的工作空间,且编译成功。
创建一个包
1 |
# 1. 进入 src 目录 |
catkin_create_pkg
就是创建包的命令了,其语法为
1 |
catkin_create_pkg <package_name> [depend1] [depend2] ... [dependn] |
创建完成后,在
src
目录下会生成hello_ros
文件夹,该文件夹中包含两个文件package.xml
和CMakeLists.txt
,两个文件夹src
和include/hello_ros
package.xml
包的一些描述信息CMakeLists.txt
cmake 配置文件src
存放 C++源代码的文件夹include/hello_ros
存放 C++头文件的文件夹
编译一个包
1 |
在catkin工作空间下 |
catkin_make 以后会做更详细的介绍,此处我们使用
catkin_make
编译整个工作空间即可。
包的依赖关系
一级依赖
一级依赖就是直接依赖,在创建的时候,跟在包名之后的依赖都是该包的一级依赖,可以通过 rospack depends1 <package_name>
来查看一级依赖
间接依赖
间接依赖就是,包的依赖包,还依赖着别的包,该包就是间接依赖。
查看所有依赖的命令rospack depends <package_name>