3.1catkin程序包由什么组成
该程序包必须包含 catkin compliant package.xml文件
还包含catkin版本的CMakeLists.txt,而Catkin metapackages中必须包含一个对CmakeList.txt文件的引用.
每个目录下智能有一个程序包
3.2 在catkin工作空间中的程序包
进入catkin工作空间下的src
cd ~/catkin_ws/src
用catkin_create_pkg创建一个名为"beginner_tutorials"的新程序包
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
上条指令会创建一个名为beginner_tutorials的文件夹,文件夹下包含package.xml文件和CMakeLists.txt文件,这两文件都包含了部分执行catkin_create_pkg命令时提供的信息. 用法就是(catkin_create_pkg+空格+程序包名+空格+依赖1+空格+依赖2+等等)
3.3 程序包依赖关系
3.3.1一级依赖
可以通过下面指令查看
rospack depends1 beginner_tutorials
返回如下所示
如果出现错误:no such package beginner_tutorials,说明你当时在创建catkin工作空间时没有source setup.bash路径,又或者你又重新打开了新的终端。解决这个的办法就再次输入如下指令
source ~/catkin_ws/devel/setup.bash
(建议将该source写入.bashrc中,这样不用每次开终端都输入一次)
正常输出的话,就是利用rospack列出了在运行catkin_create_pkg命令时作为参数的依赖包,这些依赖包随后保存在package.xml中。可以通过下面指令查看
roscd beginner_tutorials
cat package.xml
(cat是linux下列出全文的指令。)
从cat package.xml可以看出
3.3.2间接依赖
一个依赖还会有它自己的依赖,rospack可以递归出所有的依赖包,比如罗列所有的依赖包
rospack depends beginner_tutorials
输入如图
3.4自定义你的程序包
(就是填一下作者等资料,可以忽略下面部分直接跳到3.4.1.5节 删除剩下最后的package.xml)
3.4.1自定义package.xml
catkin_create_pkg之后,会在生产一个package.xml,这里稍微了解一下需要注意的标签
通过指令打开package.xml
roscd beginner_tutorials
vim package.xml
得到
3.4.1.1 描述标签
上图第5行,删除白色部分然后写上简要概括程序包的内容与范围
3.4.1.2维护者标签
第7行,翻译是:一个维护标签需求,多个允许,一个标签对应一个人。
第8行,翻译:举例子
第9行,翻译:<维护者邮箱=“ xxx@qq.com ”>人名<>
第10行,第9行一样。
自己看着填,最好有名称和email。
3.4.1.3许可标签
第13行,一个许可标签,多个允许,一个许可一个标签。
第14行,常用许可字符串。
第15行,列举许可名称
第16行,TODO改成BSD,表示使用BSD协议。
把许可填到这里。一般的许可请看14行,通常是BSD,这个许可约束少。
3.4.1.4依赖项标签
依赖项分为build_depend, buildtool_depend, test_depend。因为我们将std_msgs , roscpp , rospy作为catkin_create_pkg命令的参数,所以生成如42~48行。
由于catkin默认提供build_depend,所以我们列出的依赖包都被添加到bulid_depned标签中,因为我们需要编译和运行,所以依赖包还会被添加到run_depend中。
3.4.1.5 删除剩下最后的package.xml
简洁多了