1.创建一个ROS Package
这个教程包括使用roscreate-pkg或者catkin去创建一个新的package,以及使用rospack去列出package的依赖。
2.catkin Package由什么组成
一个package被认为是catkin packageross必须满足这些要求:
a.必须包含一个catkin compliant(编译) package.xml文件(提供关于package的元信息);
b.必须包含一个使用catkin的CMakeLists.txt文件。Catkin metapackages(元package)必须有一个CMakeLists.txt样本文件;
c.在一个文件夹中不允许有超过两个的package(这就着意味着没有其他packages共享这个目录)。
这个简单的package可能像这个样子:
my_package/
CMakeLists.txt
package.xmlls
3.catkin工作空间中的Packages
推荐使用catkin packages 的方式是使用catkin工作空间,但是你也可以单独使用catkin建立packages。一般的工作空间看起来像这样:
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
4、创建一个catkin package
这里将会用catkin_create_pkg脚本去创建一个新的catkin package。
首先去到你之前创建的工作空间目录:
$ cd ~/catkin_ws/src
用catkin_create_pkg 脚本创建一个做'beginner_tutorials'新package,它依赖于std_msgs,roscpp,和roscpy。
命令:
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
现在创建了一个 beginner_tutorials文件夹,包含有package.xml , CMakeLists.txt文件,其中部分填写了由你提供给catkin_create_pkg的信息。
catkin_create_pkg要求你提供一个package的名字和它所需要的依赖。
catkin_create_pkg在catkin/commands/catkin_create_pkg.中有对更加高级功能的描叙。
5.建立一个catkin工作空间并且启用setup 文件
现在需要在catkin工作空间编译package。
$ cd ~/catkin_ws
$ catkin_make
执行该命令后会在devel文件夹下生成一个和在/opt/ros/$ROSDISTRO_NAME(ROS版本名这里是/opt/ros/indigo)下相似的结构。
为把工作空间添加到ROS环境变量你需要执行:
$ source ~/catkin_ws/devel/setup.bash
(使setup文件生效)
ro
6.package 的依赖
6.1第一层依赖
用catkin_create_pkg时,一些package提供了依赖。这些第一层依赖可以通过rospack工具重现。
$ rospack depends1 beginner_tutorials
输出:
std_msgs
rospy
roscpp
列出了运行catkin_create_pkg命令时的一些依赖,这些依赖储存在package.xml文件中。
$ roscd beginner_tutorials
$ cat package.xml
输出:
...
...
6.2间接依赖
许多情况下,依赖也有它的依赖。
比如:
$ rospack depends1 rospy
输出
genpy
rosgraph
rosgraph_msgs
roslib
std_msgs
rospack可以显示所有递归的嵌套依赖。
$ rospack depends beginner_tutorials
cpp_common
rostime
roscpp_traits
roscpp_serialization
genmsg
genpy
message_runtime
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
catkin
rospack
roslib
rospy
7.定制你的package
这部分将教你怎样定制自己的package。
7.1定制package.xml
package.xml包含在package中。
7.1.1描叙标签
首先更新描叙标签
可以根据你的爱好改变description,但是最好短一些并且能够概括package
7
8
9
10
7.1.2维护者标签
这个非常重要因为他可以让其他人知道和谁去交流这个package,这个维护者的名字会作为标签,邮箱也应该填写:
7
7.1.协议标签
12
13
14
15
选择一个协议填写。
8
通常用的一些协议是BSD,MIT,Boost Software License, GPLv2, GPLv3, LGPLv2.1, and LGPLv3。可以在这里读到一些其他的开源协议。(http://opensource.org/licenses/alphabetical)。这里作为新手教程,我们选择BSD协议,因为ROS的其他核心部分已经遵从BSD协议了。
7.1.4依赖标签
一系列标签描叙依赖。这些依赖被分为build_depend, buildtool_depend, run_depend, test_depend。
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
所有列出来的都是build_depend,除了之外,我们需要指定的所有依赖在build和run time时都是可用的,我们需要增加run_depend标签在每个依赖后面。
12
13
14
15
16
17
18
19
20
7.1.5最终的package.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
7.2定制CMakeLists.txt
含有元信息的package.xml文件已经为你的package裁剪好了,接下来的教程将会讨论CMakeLists.txt文件。由catkin_create_pkg创建的CMakeLists.txt文件将会在下面的关于编译代码的教程中涉及.
1.创建一个ROS Package
这个教程包括使用roscreate-pkg或者catkin去创建一个新的package,以及使用rospack去列出package的依赖。
2.catkin Package由什么组成
一个package被认为是catkin packageross必须满足这些要求:
a.必须包含一个catkin compliant(编译) package.xml文件(提供关于package的元信息);
b.必须包含一个使用catkin的CMakeLists.txt文件。Catkin metapackages(元package)必须有一个CMakeLists.txt样本文件;
c.在一个文件夹中不允许有超过两个的package(这就着意味着没有其他packages共享这个目录)。
这个简单的package可能像这个样子:
my_package/
CMakeLists.txt
package.xmlls
3.catkin工作空间中的Packages
推荐使用catkin packages 的方式是使用catkin工作空间,但是你也可以单独使用catkin建立packages。一般的工作空间看起来像这样:
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
4、创建一个catkin package
这里将会用catkin_create_pkg脚本去创建一个新的catkin package。
首先去到你之前创建的工作空间目录:
$ cd ~/catkin_ws/src
用catkin_create_pkg 脚本创建一个做'beginner_tutorials'新package,它依赖于std_msgs,roscpp,和roscpy。
命令:
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
现在创建了一个 beginner_tutorials文件夹,包含有package.xml , CMakeLists.txt文件,其中部分填写了由你提供给catkin_create_pkg的信息。
catkin_create_pkg要求你提供一个package的名字和它所需要的依赖。
catkin_create_pkg在catkin/commands/catkin_create_pkg.中有对更加高级功能的描叙。
5.建立一个catkin工作空间并且启用setup 文件
现在需要在catkin工作空间编译package。
$ cd ~/catkin_ws
$ catkin_make
执行该命令后会在devel文件夹下生成一个和在/opt/ros/$ROSDISTRO_NAME(ROS版本名这里是/opt/ros/indigo)下相似的结构。
为把工作空间添加到ROS环境变量你需要执行:
$ source ~/catkin_ws/devel/setup.bash
(使setup文件生效)
ro
6.package 的依赖
6.1第一层依赖
用catkin_create_pkg时,一些package提供了依赖。这些第一层依赖可以通过rospack工具重现。
$ rospack depends1 beginner_tutorials
输出:
std_msgs
rospy
roscpp
列出了运行catkin_create_pkg命令时的一些依赖,这些依赖储存在package.xml文件中。
$ roscd beginner_tutorials
$ cat package.xml
输出:
...
...
6.2间接依赖
许多情况下,依赖也有它的依赖。
比如:
$ rospack depends1 rospy
输出
genpy
rosgraph
rosgraph_msgs
roslib
std_msgs
rospack可以显示所有递归的嵌套依赖。
$ rospack depends beginner_tutorials
cpp_common
rostime
roscpp_traits
roscpp_serialization
genmsg
genpy
message_runtime
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
catkin
rospack
roslib
rospy
7.定制你的package
这部分将教你怎样定制自己的package。
7.1定制package.xml
package.xml包含在package中。
7.1.1描叙标签
首先更新描叙标签
可以根据你的爱好改变description,但是最好短一些并且能够概括package
7
8
9
10
7.1.2维护者标签
这个非常重要因为他可以让其他人知道和谁去交流这个package,这个维护者的名字会作为标签,邮箱也应该填写:
7
7.1.协议标签
12
13
14
15
选择一个协议填写。
8
通常用的一些协议是BSD,MIT,Boost Software License, GPLv2, GPLv3, LGPLv2.1, and LGPLv3。可以在这里读到一些其他的开源协议。(http://opensource.org/licenses/alphabetical)。这里作为新手教程,我们选择BSD协议,因为ROS的其他核心部分已经遵从BSD协议了。
7.1.4依赖标签
一系列标签描叙依赖。这些依赖被分为build_depend, buildtool_depend, run_depend, test_depend。
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
所有列出来的都是build_depend,除了之外,我们需要指定的所有依赖在build和run time时都是可用的,我们需要增加run_depend标签在每个依赖后面。
12
13
14
15
16
17
18
19
20
7.1.5最终的package.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
7.2定制CMakeLists.txt
含有元信息的package.xml文件已经为你的package裁剪好了,接下来的教程将会讨论CMakeLists.txt文件。由catkin_create_pkg创建的CMakeLists.txt文件将会在下面的关于编译代码的教程中涉及.