目录
1、Linux简介
Linux系统是开发者使用频率比较高的系统,我们常听到或者常用的有Ubuntu、CentOS、ArcX Linux等,具体的Linux简介可以查看Linux 系统 。
我们着重注意的是Linux的基本思想是:对于任何文件,都有其特定的作用,你在Linux系统中做的所有工作,都是基于本身进行文件的修改,文件创建,文件运行。
2、ROS简介
ROS是机器人操作系统(Robot Operating System)的英文缩写。ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。那么这里说提供了一个架构,我们就可以基于这个架构来进行功能包的开发和复现。
ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体。
3、RSO功能包结构
我们说对于ROS功能包而言,是用来实现特定的功能,那么这个功能包的基础结构有点像套娃结构。
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,然后依次来编译我们每一个功能包(套娃)。
下一章: