ros入门教程(二)-- 工程结构


工程结构即文件系统结构。

一个典型的ros工程结构如下图所示

catkin

catkin工作空间

caktin工作空间示意图
这是ros工程框架里层次最高的概念。
catkin:是ros定制的编译构建系统,是对CMake的扩展。我们用它来编译ros程序。
而catkin 工作空间其实就是一个文件夹,用它来组织和管理ros功能包的文件夹,比如对它的克隆,创建,修改等操作。那这个工作空间是从哪里来的呢,这就需要我们用指令来创建:
catkin_make: 这个指令帮我们初始化工作空间,空间的名字可以随便取,但是里面一定要有src目录

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make

其实该指令的最主要功能不是初始化空间,而是编译,一般我们写完了代码都需要catkin_make 一下,系统就会帮我们自动构建。

注意:

  • catkin_make 之前一定要回到 catkin_workspace,不然会失败
  • catkin_make 之后要记得source bash文件:目的是要把刚刚编译完的ws刷新到环境变量里,这样才可以让系统知道ros系统文件放在哪里。
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash

在catkin_make之后即可看到如下的目录结构:
在这里插入图片描述同时src里放的就是各种功能包package,package就是catkin编译的基本单元。catkin在编译时会自动在src目录下递归的查找每一个package。因为是递归查找,所以如果你把package这样放也是可以的。
在这里插入图片描述

package

package: 即功能包,它是ROS软件的基本组织形式,也是catkin编译的基本单元,一个package可以包含多个可执行文件(节点)

ROS本质上就是一个个package组成的。但是一个package不一定只对应一个exe文件,也可以对应多个。

一个软件包如果想被ros系统认定为package,至少需要有如下的结构:
在这里插入图片描述

CMakeLists.txt

规定了catkin编译的规则, 例如:源文件、依赖项、目标文件。具体写法如下:
想更多了解可以查看《CMake实践》
在这里插入图片描述

package.xml

该文件定义package定义了该包的属性信息,相当于包的自我描述。
在这里插入图片描述
一般只需要修改画红线的两个地方就可以了。

代码文件

ros里面的可执行程序一般有两种来源:

  • 脚本(shell,python)
  • C ++ (头文件、源文件)
    通常大家都会在package下建立script路径来存放这些可执行脚本,include和src来存放头文件和源文件。有些情况也会把一些python的组件包放在package/src下。
    在这里插入图片描述
自定义通信格式

消息(msg)、服务(srv)、动作(acton)
在这里插入图片描述

launch 以及配置文件

launch文件(launch)、配置文件(yaml)

用launch文件组织多个可执行文件。
配置文件一般就比较高,通常都用yaml来写
在这里插入图片描述

常用指令

在这里插入图片描述

Metapacakge

sudo apt-get intall ros-kinectic-desktop-full

我们在搭建ros系统时安装的这个包其实就是一个meta包,是linux软件包管理的概念,里面没有实质性的内容,但是有很多依赖包。通过这种方法,我们可以把其他包组装起来。
在过去,也曾用过stack的概念来完成类似的功能,现在已经废弃,但是名字可能还会在一些地方见到,不用奇怪。

转载请注明出处。
本文总结于中国大学MOOC《机器人操作系统入门》
链接: link.
图片来自于课程视频截图

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值