本文讲如何用catkin创建一个ROS的package
1. catkin package的组成:一定要包含CMakeLists.txt及package.xml文件
my_package/
CMakeLists.txt
package.xml
此外,每个package必须要有他自己的文件夹。
2. 推荐使用catkin workspace来处理catkin package
workspace_folder/ -- WORKSPACE
src/ -- SOURCE SPACE
CMakeLists.txt -- ‘Toplevel‘ CMake file, provided by catkin
package_1/
CMakeLists.txt -- CMakeLists.txt file for package_1
package.xml -- Package manifest for package_1
...
package_n/
CMakeLists.txt -- CMakeLists.txt file for package_n
package.xml -- Package manifest for package_n
3. 创建catkin package
使用catkin_create_pkg脚本来创建新的catkin package:
(1)切换source space目录至之前创建的catkin workspace
$ cd ~/catkin_ws/src
(2)用catkin_create_pkg创建一个catkin package,名字是beginner_tutorials,且依赖于已有的功能包std_msgs,roscpp,rospy,后者称为dependency
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
4. build 这个catkin workspace, source 这个setup文件
build方法:
$ cd ~/catkin_ws
$ catkin_make
source方法:
$ . ~/catkin_ws/devel/setup.bash
5. package dependencies
(1)用rospack查看1阶dependencies:
$ rospack depends1 beginner_tutorials
package.xml中储存了package的dependencies信息
$ roscd beginner_tutorials
$ cat package.xml
(2)用rospack查看间接(高阶)的dependencies:
$ rospack depends beginner_tutorials
6. customize(自定义、定制) package
6.1 自定义package.xml
(1) 描述标签(description tag):尽可能短
5 The beginner_tutorials package
(2)Maintainer 标签:必须有,而且非常重要,至少要有一条。作用是让别人知道有关这个package该联系谁。
Toggle line numbers
7
8
9
10 user
(3)许可证标签(license tag):有很多开源许可证,我们这里使用BSD,因为许多ROS核心部件都是用的它。
12
13
14
15 TODO
(4)dependencies标签: dependencies标签可分为build_depend, buildtool_depend, exec_depend, test_depend。因为我们使用了std_msgs, roscpp, and rospy,所以该标签应为:
27
28
29
30
31
32
33
34
35
36
37
38 catkin
39 roscpp
40 rospy
41 std_msgs
我们希望在build和run的时候使用所有特定的dependencies,因此我们还要增加exec_depend标签,最后如下:
12 catkin
13
14 roscpp
15 rospy
16 std_msgs
17
18 roscpp
19 rospy
20 std_msgs
(5) 最终的package.xml:下面是不含有评论和未使用tag的package.xml文件,非常concise(简明)
beginner_tutorials
0.1.0
The beginner_tutorials package
Your Name
BSD
http://wiki.ros.org/beginner_tutorials
Jane Doe
catkin
roscpp
rospy
std_msgs
roscpp
rospy
std_msgs
6.2 自定义CMakeLists.txt