目录

1、Linux简介

2、ROS-1简介

3、RSO-1功能包结构

4、个人理解(仅供参考)

4、Catkin_make


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

Logo

更多推荐