加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ROS学习 <四> Package创建和编译

(2016-09-13 14:35:08)
标签:

ros

package

分类: 机器人-ROS
作者: Sam (甄峰)  sam_code@hotmail.com

0. Package(功能包)简介:
功能包(Package)是ROS中组织软件的主要形式,可以编写代码并编译,执行。一个功能包一般包含程序文件,库文件,编译描述文件,配置文件,脚本等。 它是一组用于实现特定功能的相关文件集合。每个功能包由一个清单文件(package.xml)定义


1.Package的建立
可以使用roscreate-pkg或者catkin创建Package. 我们先看如何使用catkin建立Package。

1.1: catkin Package特征:
一个Package被认为是catkin Package,必须满足以下条件:
A:必须包含一个package.xml文件(提供关于package的元信息)
B:必须包含一个使用catkin的CMakeLists.txt文件。
C:同一个文件夹内只能有一个Package。

所以,catkin内,通常包含: CMakeLists.txt  config  launch  package.xml,  src msg  srv


1.2:catkin工作空间中的Package和目录管理:
Package建议放在ROS工作空间内.  目录结果通常如此:
catkin_ws,
catkin_ws/build,   catkin_ws/devel,   catkin_ws/src
catkin_ws/src/CMakeLists.txt  //顶级CMake文件
catkin_ws/src/xxx/Package1 ,  catkin_ws/src/xxx/Package2   catkin_ws/src/xxx/Package3  //包都放在这里

1.3:catkin package创建:
使用catkin_create_pkg脚本创建一个新的package,  要指出包名,以及它依赖的包。
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
catkin_create_pkg  Pakage_Name  新包依赖的Package1  新包依赖的Package2  新包依赖的Package3 



2. 编译Package:
在catkin_ws 目录内,运行catkin_make

catkin_make


3. package.xml:
package.xml与ROS Package一一对应,它描述Package的各类信息。
例如:包名,包版本,描述信息。依赖信息等。
依赖信息有以下几类:
buildtool_depend, build_depend, run_depend.

export标记:可以把CFLAGS的信息放在这里。如添加什么头文件,以及编译标记等。


4. 察看Package信息
4.1: 察看package 依赖信息:
rospack depends handsfree_hw
可以看到它依赖一大堆Package和catkin工具。

5. 安装依赖Package:
rosdep install handsfree_hw
会把package handsfree_hw所依赖的内容全部安装。



6. 功能包集和metapackages:
功能包集(Stack)通常提供一个完整的功能,它把几个Package集中到一起,为的是简化功能包之间代码共享的过程。
可以使用roscreate-stack 来创建功能包集。 stack.xml与功能包集一一对应。它描述了Stack的依赖等。

Stack的概念慢慢被metapackages取代。可以把所有同类型或同一项目的Package放到同一个metapackages内。方法稍后研究。





附1:
catkin介绍:
catkin是ROS官方编译系统。
catkin(柳絮)的由来, 是从其创建者: Willow Garage而来的。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有