剖析ROS编译教程

电子说

1.3w人已加入

描述

ROS的编译和安装还是稍微有点门槛的,这篇文章简单的记录一下。

CMake

ROS功能包的安装

https://github.com/TonyRobotics/RoboWare

CMake

一个合适的IDE,我看了一下是VSCode的魔改

CMake

编译的框图

ROS对CMake进行了扩展,于是便有了Catkin编译系统。

Catkin是基于CMake的编译构建系统,具有以下特点:

  • Catkin沿用了包管理的传统像 find_package()基础结构,pkg-config
  • 扩展了CMake,例如
    • 软件包编译后无需安装就可使用
    • 自动生成find_package()代码,pkg-config文件
    • 解决了多个软件包构建顺序问题

一个Catkin的软件包(package)必须要包括两个文件:

  • package.xml: 包括了package的描述信息
    • name, description, version, maintainer(s), license
    • opt. authors, url's, dependencies, plugins, etc...
  • CMakeLists.txt: 构建package所需的CMake文件
    • 调用Catkin的函数/宏
    • 解析package.xml
    • 找到其他依赖的catkin软件包
    • 将本软件包添加到环境变量

CMake

这个是我手边的一个典型的目录

CMake

其中一个功能包的结构

catkin编译的工作流程如下:

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

也就是说,Catkin就是将cmakemake指令做了一个封装从而完成整个编译过程的工具。catkin有比较突出的优点,主要是:

  • 操作更加简单
  • 一次配置,多次使用
  • 跨依赖项目编译

CMake

xml文件是一些项目的基本信息,就是版本号,描述什么的

CMake

就是这样

CMake

比对的看

CMake

一些常见的编译命令

CMake

编译流程

CMake

编译系统会递归查找

CMake

CMake

CMake

这是常见的ROS命令

CMake

因为Cmake是常客,这里也有Cmake的一个常见函数的说明

CMake

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分