ROS编译教程.1

2022-03-17 14:19:07 浏览数 (1)

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

ROS功能包的安装

代码语言:javascript复制
https://github.com/TonyRobotics/RoboWare

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

编译的框图

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软件包
    • 将本软件包添加到环境变量

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

其中一个功能包的结构

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有比较突出的优点,主要是:

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

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

就是这样

比对的看

一些常见的编译命令

编译流程

编译系统会递归查找

这是常见的ROS命令

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

就像这样

0 人点赞