环境说明

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
2
cd cakin_ws
catkin_make

来到之前创建好的工作空间目录下,使用catkin_make命令,将编译工作空间。

此时,我们的工作空间就创建完毕

3. 初始化工作空间遇到的坑

conda 环境问题

如果之前安装好,并且初始化了 conda 环境,可能会出现该问题,在错误信息中心会出现一些与 python 有关,带有 conda 的路径的一些信息。

原因分析
  1. conda默认激活,python 路径为 conda 中的 python
  2. ros 的库都默认安装在了系统的 python2 中,导致catkin_make的时候,找不到 ros 需要的库

解决办法

  1. 完全退出 conda 环境
  2. 测试是否退出,使用命令 which python,打印的是不带 conda的路径,一般为/usr/bin/python
  3. 删除工作空间目录下的出 src 之外的所有文件,因为之前生成的会带有 Python 路径缓存。
1
rm -rf `ls | grep -v src`
  1. 再一次 catkin_make即可

包(Package)

以下内容默认你已经创建了一个名为catkin_ws的工作空间,且编译成功。

创建一个包

1
2
3
4
# 1. 进入 src 目录
cd catkin_ws/src
# 2. 创建名为 hello_ros 的包
catkin_create_pkg hello_ros rospy roscpp std_msgs

catkin_create_pkg就是创建包的命令了,其语法为

1
catkin_create_pkg <package_name> [depend1] [depend2] ... [dependn] 

创建完成后,在 src目录下会生成hello_ros文件夹,该文件夹中包含两个文件package.xmlCMakeLists.txt,两个文件夹srcinclude/hello_ros

  1. package.xml包的一些描述信息
  2. CMakeLists.txt cmake 配置文件
  3. src 存放 C++源代码的文件夹
  4. include/hello_ros存放 C++头文件的文件夹

编译一个包

1
2
# 在catkin工作空间下
catkin_make

catkin_make 以后会做更详细的介绍,此处我们使用catkin_make编译整个工作空间即可。

包的依赖关系

一级依赖

一级依赖就是直接依赖,在创建的时候,跟在包名之后的依赖都是该包的一级依赖,可以通过 rospack depends1 <package_name> 来查看一级依赖

间接依赖

间接依赖就是,包的依赖包,还依赖着别的包,该包就是间接依赖。

查看所有依赖的命令rospack depends <package_name>

评论