02-ROS的工程结构

一、ROS的工程结构(文件系统级)

1.1 catkin工作空间

Catkin是ROS定制的编译构建系统,对CMake的扩展,编写原则和CMake很像。

--》Catkin是用来编译ROS程序的

--》Catkin就是一个文件夹,用来组织和管理ROS功能包。对它的创建,修改,克隆都在这里面。

Catkin_make命令

---帮助初始化catkin工作空间(catkin workspace

#创建工作空间
mkdir -p ~/catkin_ws/src
cd ./catkin_ws
catkin_make

---编译--》一般编写好代码需要进行catkin_make,系统帮我们自动构建,生成我们的目标文件。 

cd ./catkin_ws
catkin_make   #编译
source ~/catkin_ws/devel/setup.bash #编译完成后要source刷新环境

 

初学者一定要注意的地方

1.catkin_make之前一定要回到catkin_workspace,在其他目录下进行catkin_make会失败的。

2.在catkin_make后应source一下工作空间里面的setup.bash(将刚刚编译完的workspace刷新到环境变量里面去,这样系统才会知道我们生成的ROS可执行文件放在哪里,然后才能运行)

初始化catkin工作空间后,会多出两个文件夹(build和devel),其中build里面放的是cmake&catkin缓存信息和中间文件、devel放的是生成的目标文件(头文件,动态链接库,静态链接库,可执行文件)。

src文件夹里是真正写代码的地方

Rosbuild是ROS早期采用的编译系统,目前主流的ROS项目已不采用;catkin是为了取代rosbuild。

package是catkin编译的基本单元,catkin编译的对象就是一个又一个的package。catkin编译系统在编译的时候会在src目录下递归地查找每一个package,可以将几个package放到一个文件夹下。

package

package是ROS软件的基本组织形式(ROS就是由一个个package组成的,package就是ROS的细胞)

package是catkin编译的基本单元,catkin编译的对象就是一个又一个的package。编译系统会一个个寻找package,然后生成目标文件。

多个可执行文件

一个package可以包含多个可执行文件(节点)

一个软件包如果想被catkin编译系统认定为是一个package,至少包含CMakeLists.txt,package.xml文件。

CMakeLists.txt:规定了catkin编译规则(告诉编译系统怎样编译package里面的代码,要编译哪些文件,需要哪些依赖,生成哪些可执行目标,怎样链接等);编译出现了什么问题,就与CMakeList.txt有关

 package.xml:定义了package的属性(包名,版本号,作者,依赖项等)

manifest.xml:比较老的package.xml写法,是rosbuild编译系统采用的包信息清单。

有了CMakeList.txt和manifest.xml文件就构成了一个精简的package:

note:

* 实现节点的语言可以不同

代码文件

ROS里面可执行程序有两种来源,一种是可执行脚本(Linux的shell脚本,python脚本),二种是C++文件(头文件,源文件)。

在package下:

 (1)建一个scripts路径用来放可执行脚本*.py和*.sh脚本

 (2)建一个include和src路径分别放C++头文和源文件

 (3)src里面也可以放置Python源文件

 package下还可以放一些我们自定义的通信格式,如:消息(message),服务(service),动作(action)

 package里面还可以放置launch以及配置文件config:launch文件(*.launch)和配置文件(*.yaml)

如果有多个可执行文件要同时 运行,直接把他们组织到一个launch文件里就可以的。

Launch文件就是启动文件

launch作用就是可以一次性运行多个可执行文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值