一、caktin Package的组成
1、必须含有 package.xml文件,提供有关程序包的元信息
2、必须含有一个catkin版本的 CmakeLists.txt文件,如果是一个catkin元程序包一定要有对CmakeLists.txt的引用
3、一个文件下只能有一个包
最简单的包结构如下:
my_package/
CMakeLists.txt
package.xml
二、一个catkin工作空间下的程序包
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
三、创建一个catkin package
1、新建一个空白catkin工程,见ROS学习(三)
2、打开工程src目录
cd ~/catkin_ws/src
3、使用catkin_create_pkg创建一个包
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
四、编译catkin工程,且将这个工程加入到ROS环境中
cd ~/catkin_ws
catkin_make
. ~/catkin_ws/devel/setup.bash (不加 . 出出现权限不够)
五、程序包依赖
1、一级依赖:
之前在使用catkin_create_pkg命令时提供了几个程序包作为依赖包,现在我们可以使用rospack命令工具来查看一级依赖包。
之前在使用catkin_create_pkg命令时提供了几个程序包作为依赖包,现在我们可以使用rospack命令工具来查看一级依赖包。
-->
rospack depends1 beginner_tutorials
2、间接依赖:
很多情况,一个一来的包还会有自己的依赖,称为间接依赖。
六、定制自己的包
1、 描述标签:
Toggle line numbers <description>The beginner_tutorials package</description>
写一写这个包的相关介绍,一行肯定是不够的。
2、编写者标签:
<!-- One maintainer tag required, multiple allowed, one person per tag -->
<!-- Example: -->
<!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
<maintainer email="user@todo.todo">user</maintainer>
3、专利标签
Toggle line numbers <!-- One license tag required, multiple allowed, one license per tag -->
<!-- Commonly used license strings: -->
<!-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2., LGPLv3 -->
<license>TODO</license>
4、依赖标签
5、简化的package.xml
<?xml version="1.0"?>
<package>
<name>beginner_tutorials</name>
<version>0.1.</version>
<description>The beginner_tutorials package</description> <maintainer email="you@yourdomain.tld">Your Name</maintainer>
<license>BSD</license>
<url type="website">http://wiki.ros.org/beginner_tutorials</url>
<author email="you@yourdomain.tld">Jane Doe</author> <buildtool_depend>catkin</buildtool_depend> <build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend> <run_depend>roscpp</run_depend>
<run_depend>rospy</run_depend>
<run_depend>std_msgs</run_depend> </package>