1.程序包
一个程序包要想称为catkin程序包必须符合以下要求:
该程序包必须包含catkin compliant package.xml文件
- 这个package.xml文件提供有关程序包的元信息。
程序包必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用。
- 每个目录下只能有一个程序包。
- 这意味着在同一个目录下不能有嵌套的或者多个程序包存在
2.创建程序包
$ source /opt/ros/indigo/setup.bash #sourced your environment.
$ mkdir -p ~/catkin_ws/src #创建和编译工作空间
$ cd ~/catkin_ws/
$ catkin_make
$ source devel/setup.bash #sourced your environment.
$ echo $ROS_PACKAGE_PATH
/home/youruser/catkin_ws/src:/opt/ros/kinetic/share #加入环境变量
$ cd ~/catkin_ws/src #切换目录
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp #创建程序包
$ rospack depends1 beginner_tutorials #查看一级依赖关系
$ rospack depends beginner_tutorials #查看各级依赖关系
3.编译程序包
$ cd ~/catkin_ws/
$ catkin_make
4.编译完成
ls进入catkin_ws目录查看,有三个文件夹:
build 目录是build space的默认所在位置,同时cmake 和 make也是在这里被调用来配置并编译你的程序包。devel 目录是devel space的默认所在位置, 同时也是在你安装程序包之前存放可执行文件和库文件的地方。
5.出现错误:roscd: No such package/stack 'beginner_tutorials'
解决办法:
export ROS_PACKAGE_PATH=~/catkin_ws/src:$ROS_PACKAGE_PATH
$ cd ~/catkin_ws
$ source devel/setup.bash
$ roscd beginner_tutorials