1.5、Linux系统、ROS-1 系统、功能包的个人理解
简述ROS功能包的套娃结构,用实际简单案例展示ROS基础架构。
目录
1、Linux简介
Linux系统是开发者使用频率比较高的系统,我们常听到或者常用的有Ubuntu、CentOS、ArcX Linux等,具体的Linux简介可以查看Linux 系统 。
我们着重注意的是Linux的基本思想是:对于任何文件,都有其特定的作用,你在Linux系统中做的所有工作,都是基于本身进行文件的修改,文件创建,文件运行。
2、ROS-1简介
ROS是机器人操作系统(Robot Operating System)的英文缩写。ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。那么这里说提供了一个架构,我们就可以基于这个架构来进行功能包的开发和复现。
ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。
3、RSO-1功能包结构
我们说对于ROS功能包而言,是用来实现特定的功能,那么这个功能包的基础结构有点像套娃结构。
Ros-Workspace //ROS工作空间
|--src //ROS元功能包
|--package //ROS功能包文件
|--CMakeLists.txt //包编译规则(依赖库、目标文件等)
|--package.xml //功能包信息(名称、作者、版本等)
|--src //存储C++源文件
|--scripts //存储Python源文件
|--include //头文件
|--msg //通讯格式文件
|--launch //运行节点文件
|--config //配置信息
|--CMakeLists.txt //编译基本配置
|--build //编译空间
|--devel //开发空间
4、个人理解(仅供参考)
实际在我们初始学习中只关心ROS-workspace中package、build、devel是比较重要的。这里以雷达畸变矫正的一个ROS功能包为例。
这里我们说LASERUNDISTORTION_ws这个ROS的工作空间中包括了build、devel、src和CMakeLists.txt。
那么其中的第一级src就是我们的元功能包,这个元功能包里包括champion_nav_mags和LaserUbdistortion这两个功能包(当然像Cartographer的功能包是比较复杂的,没有这么明确)。
在每个子功能包里面包括了此功能包的build、devel、src、CMakeLists.txt、package.xml等信息,在子功能包中src就是包含了我们的C++源文件。
那么这里的C++文件就是我们功能包的主体程序了。
4、Catkin_make
在我们使用ROS功能包的时候,常常要利用catkin_make、make这两条命令对WorkSpace进行编译。catkin_make实际上是对catkin与make进行了精简操作。
catkin_make
make
catkin_make就在于将我们工作空间中所使用的功能包进行编译,生成空间build、devel、CMakeLists.txt文件。在工作空间下的CMakeLists.txt文件会递归的查找WorkSpace下的功能包中的CMakeLists.txt,然后依次来编译我们每一个功能包(套娃)。
不积跬步无以至千里,不积小流无以成江河 -------------------1:45
更多推荐
所有评论(0)