文档章节

3.创建ROS程序包

HuangJC
 HuangJC
发布于 2017/05/04 17:38
字数 832
阅读 127
收藏 0

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

简洁多了

 

 

 

 

 

 

 

© 著作权归作者所有

上一篇: 4.编译ROS程序包
HuangJC
粉丝 0
博文 32
码字总数 39927
作品 0
佛山
私信 提问
SLAM+语音机器人DIY系列:(二)ROS入门——4.如何编写ROS的第一个程序hello_world

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重...

小虎哥哥爱学习
02/16
0
0
SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重...

小虎哥哥爱学习
02/16
0
0
SLAM+语音机器人DIY系列:(二)ROS入门——5.编写简单的消息发布器和订阅器

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重...

小虎哥哥爱学习
02/17
0
0
SLAM+语音机器人DIY系列:(二)ROS入门——6.编写简单的service和client

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重...

小虎哥哥爱学习
02/17
0
0
多相机标定&相机-IMU标定&卷帘快门相机标定工具——Kalibr

前言 在Visual-Inertial Odometry(VIO)领域,会使用IMU提高位姿估计的精度和系统鲁棒性,如:弥补图像的不足(运动模糊,弱纹理等),解决单目的尺度不确定性问题。 现在主流的方案是紧耦合...

W_Tortoise
2018/09/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

c语言实现Sqlite3的创建db和增删改查db操作

SQLite,是一款轻型的数据库,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中使用广泛,现在准备学习一下sqlite3的使用方法并写一个测试demo,后面在项目智能...

jorin_zou
10分钟前
2
0
【2019年8月版本】OCP 071认证考试最新版本的考试原题-第2题

choose three Which three are true about the CREATE TABLE command? A) It can include the CREATE...INDEX statement for creating an index to enforce the primary key constraint. B) ......

oschina_5359
13分钟前
3
0
如何在二维码中循环批量插入图片

现在二维码种类比较多,为了突出二维码的个性及吸引客户,很多朋友都喜欢在二维码上插入图片。想要每个二维码都与众不同,但是有的时候需要批量插入图片数量有限,如果制作的二维码比较多的话...

中琅软件
14分钟前
2
0
LTR那点事—AUC及其与线上点击率的关联详解

LTR(Learning To Rank)学习排序是一种监督学习(SupervisedLearning)的排序方法,现已经广泛应用于信息索引,内容推荐,自然语言处理等多个领域。以推荐系统为例,推荐一般使用多个子策略...

达观数据
14分钟前
3
0
IntelliJ 如何显示代码的代码 docs

希望能够在 IntelliJ 代码上面显示方法的 docs。 如何进行显示? 你可以使用 Ctrl + Q 这个快捷键来查看方法的 Docs。 https://blog.ossez.com/archives/3061...

honeymoose
18分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部