美文网首页
ROS笔记(中科大视频)

ROS笔记(中科大视频)

作者: SEU小翔哥 | 来源:发表于2020-07-18 14:11 被阅读0次

    Catkin编译系统

    对于源代码包,我们只有编译才能在系统上运行。而Linux下的编译器有gcc、g++,随着源文件的增加,直接用gcc/g++命令的方式显得效率低下,人们开始用Makefile来进行编译。然而随着工程体量的增大,Makefile也不能满足需求,于是便出现了Cmake工具。CMake是对make工具的生成器,是更高层的工具,它简化了编译构建过程,能够管理大型项目,具有良好的扩展性。对于ROS这样大体量的平台来说,就采用的是CMake,并且ROS对CMake进行了扩展,于是便有了Catkin编译系统。


    流程

    早期的ROS编译系统是rosbuild,但随着ROS的不断发展,rosbuild逐渐暴露出许多缺点,不能很好满足系统需要。在Groovy版本面世后,Catkin作为rosbuild的替代品被正式投入使用。Catkin操作更加简化且工作效率更高,可移植性更好,而且支持交叉编译和更加合理的功能包分配。目前的ROS同时支持着rosbuild和Catkin两种编译系统,但ROS的核心软件包也已经全部转换为Catkin。rosbuild已经被逐步淘汰,所以建议初学者直接上手Catkin。

    Catkin的特点

    Catkin是基于CMake的编译构建系统,具有以下特点:
    1、Catkin沿用了包管理的传统像 find_package()基础结构,pkg-config
    扩展了CMake,例如
    (1)软件包编译后无需安装就可使用
    (2)自动生成find_package()代码,pkg-config文件
    (3)解决了多个软件包构建顺序问题
    2、一个Catkin的软件包(package)必须要包括两个文件:
    package.xml: 包括了package的描述信息
    (1)name, description, version, maintainer(s), license
    (2)opt. authors, url's, dependencies, plugins, etc...
    3、CMakeLists.txt: 构建package所需的CMake文件
    (1)调用Catkin的函数/宏
    (2)解析package.xml
    (3)找到其他依赖的catkin软件包
    (4)将本软件包添加到环境变量

    Catkin工作流程

    1、首先在工作空间catkin_ws/src/下递归的查找其中每一个ROS的package。
    2、package中会有package.xml和CMakeLists.txt文件,Catkin(CMake)编译系统依据CMakeLists.txt文件,从而生成makefiles(放在catkin_ws/build/)。
    3、然后make刚刚生成的makefiles等文件,编译链接生成可执行文件(放在catkin_ws/devel)。

    使用catkin_make进行编译

    要用catkin编译一个工程或软件包,只需要用catkin_make指令。一般当我们写完代码,执行一次catkin_make进行编译,调用系统自动完成编译和链接过程,构建生成目标文件。编译的一般性流程如下,在1.5节我们编译ROS-Academy-for-Beginners教学包就是这样的流程。
    $ cd ~/catkin_ws #回到工作空间,catkin_make必须在工作空间下执行
    $ catkin_make #开始编译
    $ source ~/catkin_ws/devel/setup.bash #刷新坏境

    相关文章

      网友评论

          本文标题:ROS笔记(中科大视频)

          本文链接:https://www.haomeiwen.com/subject/wcaxkktx.html