0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

剖析ROS编译教程

jf_78858299 来源:云深之无迹 作者:云深之无迹 2023-05-19 17:01 次阅读

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

图片

ROS功能包的安装

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

    文章

    10

    浏览量

    8862
  • ROS
    ROS
    +关注

    关注

    1

    文章

    276

    浏览量

    16967
  • CMake
    +关注

    关注

    0

    文章

    28

    浏览量

    1262
收藏 人收藏

    评论

    相关推荐

    ROS系统是什么?ROS系统主要特点有哪些?创龙RK3568J+Debian的ROS2系统案例

    了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。 随着工业智能化的快速发展,智能机器人设备已成为工业自动化体系的佼佼者,而智能机器人设备核心—ROS系统,是
    的头像 发表于 11-30 14:41 4464次阅读
    <b class='flag-5'>ROS</b>系统是什么?<b class='flag-5'>ROS</b>系统主要特点有哪些?创龙RK3568J+Debian的<b class='flag-5'>ROS</b>2系统案例

    【UT4418申请】移植ubuntu的ROS版本,重新编译基于a8的智能网关到此平台

    功的tiny210,但是还是不怎么样,系统本身很多问题,别说运行ROS了&项目描述:&lt;1&gt;学习并且编译安装ubuntu系统,其中包括
    发表于 11-02 11:02

    如何移植ROS程序到Android

    在Android上运行ROS程序一般使用rosjava-android。但是也可以直接利用NDK编译成so文件移植到Android上。当然移植过程也并不简单。 下面是一个简单的例子。安装cmake
    发表于 05-16 19:20

    ROS与STM32是如何进行通信的

    角速度、实际线速度STM32端ROS端之前运行的ROS项目都是在终端编译,用vim或者gedit修改代码,很不方便,函数跳转查看都没办法实现。所以今天先安装一个IDE试试ROS官网上有
    发表于 08-11 07:25

    什么是ROS?如何学习ROS

    什么是ROS?如何学习ROS
    发表于 11-11 07:21

    如何利用RK1808去搭建一种ROS交叉编译环境呢

    如何利用RK1808去搭建一种ROS交叉编译环境呢?其方法是什么?
    发表于 02-15 06:32

    ROS放到RK3326板上编译时出现的问题有哪些呢

    ROS放到RK3326板上编译时出现的问题有哪些呢?怎样去解决?
    发表于 02-17 06:08

    RK3308-CC-PLUS板子启用ROS模块后交叉编译,menuconfig中没有ROS选项怎么解决?

    RK3308-CC-PLUS板子启用ROS模块后交叉编译,menuconfig中没有ROS选项怎么解决?
    发表于 03-09 06:23

    怎样通过Arduino IDE直接使用ROS提供的一些特性呢

    :可以把jade替换为你安装的版本:如indigo。尝试了上面的指令,没有成功,可能和ROS编译安装的有关吧,也不是很确定。只能通过源码编译安装。在下面的指令中,代表你的catkin工作空间。注意
    发表于 07-06 11:49

    在FirePrime开发板上编译安装ROS jade

    学习系列 -- 树莓派编译安装完整版本ROS  解决过程如下:  创建新目录,下载并编译这个包。  当checkinstall询问是否改变安装选项时,选择[2],将名字从“collada-dom
    发表于 07-07 11:21

    ROS在Zedboard上的移植

    : Zedboard ARM处理器 : Cortex-A9 ARM操作系统: Linaro 12.11 ROS版本: indigo 移植前提 1. 开发板可以连接网络 2. 使用SSH等对开发板进行远程控制 编译方法
    发表于 10-26 11:52 1082次阅读

    ROS与STM32通信

    角速度、实际线速度STM32端ROS端之前运行的ROS项目都是在终端编译,用vim或者gedit修改代码,很不方便,函数跳转查看都没办法实现。所以今天先安装一个IDE试试ROS官网上有
    发表于 12-24 19:00 11次下载
    <b class='flag-5'>ROS</b>与STM32通信

    如何配置ROS驱动功能包

    配置ROS驱动功能包 将WHEELTEC 100N的 ROS_SDK 保存在工作空间的src文件夹下。 通过 catkin_make 进行编译。 刚装的ros环境会报错,如下: Mak
    的头像 发表于 11-22 18:13 1181次阅读
    如何配置<b class='flag-5'>ROS</b>驱动功能包

    ros的基本概念是什么

    基本概念: ROS是一个用于在不同进程间匿名的发布、订阅、传递信息的中间件。 ROS2系统的核心部分是ROS网络(ROS Graph)。 ROS
    的头像 发表于 11-27 11:21 1747次阅读

    AI编译器技术剖析

    随着人工智能技术的飞速发展,AI编译器作为一种新兴的编译技术逐渐进入人们的视野。AI编译器不仅具备传统编译器的功能,如将高级语言编写的源代码转换为机器可执行的代码,还融入了人工智能技术
    的头像 发表于 07-17 18:28 1475次阅读