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

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

3天内不再提示

Micro-ROS:把ROS2放在MCU上

Robot Vision 来源:电子发烧友网 作者:李宁远 2022-04-07 07:13 次阅读

对于熟悉机器人应用的读者,ROS想必定是不会陌生的。ROS可以说是目前机器人相关开源社区最流行的项目。每一种类型的机器人都需要以硬件的实际情况编写符合用户需要的功能,起初代码的复用率很低,大大阻碍了机器人的发展。

ROS便是为机器人在研发的过程中的代码复用提供支持的开源框架,大量的机器人开源项目,从感知到控制、从定位到构图、从导航到可视化,几乎都使用ROS作为基础。

Micro-ROS从何而来?

Micro-ROS实际上是从ROS2优化而来的轻量级ROS系统,用于在各种机器人应用中在MCU上实现第二代机器人操作系统ROS 2,通过使用通用框架,它可以实现与传统机器人、物联网传感器和设备的互操作性。ROS2基于ROS升级而来,如果说ROS为机器人研究和机器人原型开发提供了良好⽣态的话,那么ROS2就是⽤于机器人部署环境的开发架构和相应的工具链。

传统机器人ROS实质上是仍旧停留在MCU边界的,再通过串行协议或者旧版ROS中的工具与MCU集成在一起。Micro-ROS则允许在硬件级别附近运行ROS2节点,所有硬件外设都可用于该应用程序,从而使其能够直接与低级总线系统进行交互,亦与传感器和执行器接口互通。

(Micro-ROS,Micro-ROS开源社区)


ROS2解决了ROS在很多层面上无法满足的性能升级的短板,诸如:实时性、对MCU的支持、网络通信的依赖程度、多机器人的支持等等。原生的ROS其实只支持单个机器人,对于多机器人的支持是不足的,而且大型机器人项目的构建、开发和部署这些需求ROS逐渐不能满足。实时性、安全性、嵌⼊式移植等方面,在工业领域也让时常无法匹配某系性能的要求。

Micro-ROS在解决了多机器人支持、非理想网络环境支持、实时系统支持之外,最重要的就是对MCU直接的支持。Micro-ROS将不再停留在MCU的边界通过串行协议集成。ROS2采⽤RTSP(Real-Time Publish-Subscribe)协议的DDS作为中间层,DDS作为⼀种⽤于实时和嵌⼊式系统发布-订阅式通信的⼯业标准,在系统容错和灵活性上会更加完善。Micro-ROS同时可以利用其中间件可插拔性来使用针对MCU进行了优化的DDS-XRCE。

基于Micro-ROS的机器人控制MCU

Micro-ROS旨在将ROS2引入广泛的微控制器,主要目标就是中档32位微控制器系列。一般来说,Micro-ROS 需要具有几万字节RAM内存的MCU和能够实现Micro-ROS客户端到代理通信的通信外围设备。Micro-ROS支持的硬件目前分为官方支持的板和社区板。这里挑几个官方支持的Micro-ROS机器人本体控制MCU。

瑞萨RA6M5 Micro-ROS

瑞萨电子与Micro-ROS框架供应商eProsima合作,开发了基于RA6M5的ROS机器人本体控制器,将Micro-ROS完全集成到了EK RA6M5 MCU中。该系统能够基于ROS控制多个伺服系统。

(瑞萨)


32位的RA6M5 MCU是高性能Arm Cortex-M33内核,521KB内存,闪存高达2MB。集成了能够用于在ROS节点之间进行 Pub/Sub信息传递的通信接口,可以通过单线 UARTRS-485 控制多个伺服系统。该官方板支持的实时操作系统为FreeRTOS、ThreadX和裸机。

乐鑫ESP32 Micro-ROS

Xtensa双核32位LX6微处理器,最高240 MHz,520KB的内存以及高达4MB的闪存,在外设支持上是官方板中最多的,以太网 MAC、Wi-Fi 802.11 b/g/n、蓝牙 v4.2 BR/EDR、BLE、SPI、I2C、I2S、UART、SDIO、CAN、GPIO、ADC/DAC、PWM全部覆盖。对实时操作系统的支持目前仅支持应用最广泛的FreeRTOS。

(乐鑫)


STM32L4 Micro-ROS

ARM Cortex-M4的内核,128KB的内存,1MB的闪存,相当的朴实无华。但在机器人应用外设的集成上很亮眼,温湿度传感器、3轴IMU、ToF传感器等等。在社区自制的Micro-ROS
板上,ST的32位MCU仍然是最常见的,呈压倒性优势。

(ST)


Micro-ROS运用在MCU上的内存限制

在Micro-ROS与硬件结合上,还有一个问题,即在嵌入式平台中运行Micro-ROS的最大的制约来自于内存的限制。由于Micro-ROS 中的内存使用是一个很复杂的问题,所以如何调整Micro-ROS 中间件的内存消耗是比较棘手的。

因为Micro-ROS的目标是MCU这一类内存资源低的设备。优先使用静态内存而不是动态内存,并优化应用程序的内存占用是一个较为可行的办法。上面我们也提到了,Micro-ROS同时可以利用其中间件可插拔性来使用针对MCU进行了优化的DDS-XRCE。

Micro-ROS的中间件通常被形容成“资源极度受限但极度灵活”,为了与Micro-ROS堆栈中的ROS中间件接口集成,DDS-XRCE引入了静态内存池,以避免在运行时动态分配内存。这些都是为了消除Micro-ROS与硬件结合时的内存限制。解决这一限制后,Micro-ROS与MCU这类硬件的结合,可以说是相当可靠的机器人控制解决方案。

写在最后

“将ROS2放在MCU上”,这是Micro-ROS的社区宣言。纯硬件访问、低延迟的实时性、低功耗是Micro-ROS将ROS2放在MCU上的原因,Micro-ROS也的确开始在机器人应用中弥合资源受限的MCU和更强大的处理器之间的差距。

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

    关注

    210

    文章

    28191

    浏览量

    206505
  • ROS
    ROS
    +关注

    关注

    1

    文章

    276

    浏览量

    16965
  • 机器人应用
    +关注

    关注

    0

    文章

    12

    浏览量

    2154
收藏 人收藏

    评论

    相关推荐

    ROS让机器人开发更便捷,基于RK3568J+Debian系统发布!

    、路线控制偏离、系统通信异常等严重后果。而ROS系统凭借其优势,已成为AGV开发利器,广泛应用于各种机器人开发,并逐渐成为主流。 RK3568J + Debian的ROS2系统演示案例 创龙科技
    发表于 07-09 11:38

    ZMC900E控制器之ROS2环境安装指南

    ZMC900E是致远电子研发的最新一代高性能EtherCAT控制器,支持ROS2系统,兼备强大功能和实时性,为工业应用带来新的可能。本文将详述ROS2特点和安装,助力用户在机器人的二次开发
    的头像 发表于 04-29 08:24 537次阅读
    ZMC900E控制器之<b class='flag-5'>ROS2</b>环境安装指南

    系统镜像Ubuntu_ROS2ROS2是什么意思,带有ROS2开发环境吗?

    请问一下,百度文库资料里面,下图所示的系统镜像Ubuntu_ROS2ROS2是什么意思,带有ROS2开发环境吗?与前面4GB版本的镜像有什么区别?
    发表于 03-01 23:06

    ROS2 robot-localization配置方案

    robot_localization是一个ROS的包,基于卡尔曼滤波,对多种传感器进行数据融合,进而完成机器人的定位。近期确实遇到了需要实现更高精度定位的问题,在多方考虑下其中一部分优化方法就是引入了robot-localization库,这个库的引入还是比较简单的,但是实际
    的头像 发表于 01-22 11:34 1.3w次阅读

    移动机器人与ROS操作系统原理与应用

    ROS1不同的是,ROS2诞生的目的就是为了让更多机器人使用,所以在设计更加符合技术的发展方向,也运用了很多最近的技术框架。
    发表于 01-02 12:28 535次阅读
    移动机器人与<b class='flag-5'>ROS</b>操作系统原理与应用

    ros怎么设置环境变量

    设置ROS环境变量是使用ROS的重要步骤之一。本文将详细介绍如何设置ROS环境变量,包括什么是环境变量、为什么要设置ROS环境变量、如何设置ROS
    的头像 发表于 12-28 13:52 1954次阅读

    【米尔-TIAM62开发板-接替335x-试用评测】(一)基于TIAM62开发板的ROS2交叉编译

    【米尔-TIAM62开发板-接替335x-试用评测】(一)ROS2交叉编译 1. 前言 该测试报告详细介绍了TIAM62开发板的交叉编译环境、ROS2编译的步骤以及遇到的问题和解决方案、简单的测试
    发表于 12-05 20:58

    在TogetherROS中如何安装ROS2功能包

    安装ROS2功能包 接下来,还有一个很重要的配置,那就是安装ROS2功能包,我们说TogetherROS是基于ROS2深度优化的,很多模块还是会复用ROS2中的功能,所有
    的头像 发表于 12-01 16:02 929次阅读
    在TogetherROS中如何安装<b class='flag-5'>ROS2</b>功能包

    利用 NVIDIA Isaac Transport for ROS 提升自定义 ROS 图形性能

    NVIDIA Isaac Transport for ROS(NITROS) 是随 ROS 2 Humble 加入的两项硬件加速功能——类型适配和类型协商。 类型适配 使 ROS 节点
    的头像 发表于 11-30 19:35 596次阅读
    利用 NVIDIA Isaac Transport for <b class='flag-5'>ROS</b> 提升自定义 <b class='flag-5'>ROS</b> 图形性能

    ROS让机器人开发更便捷,基于RK3568J+Debian系统发布!

    逐渐成为主流。 RK3568J + Debian的ROS2系统演示案例 创龙科技SOM-TL3568是一款基于瑞芯微RK3568J/RK3568B2处理器设计的四核ARM Cortex-A55全国
    发表于 11-30 16:01

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

          Tronlong创龙科技ROS让机器人开发更便捷;我们来看看具体的。 ROS系统是什么 ROS(Robot Operating System)是一个适用于机器人的开源的元操作系统。它提供
    的头像 发表于 11-30 14:41 4457次阅读
    <b class='flag-5'>ROS</b>系统是什么?<b class='flag-5'>ROS</b>系统主要特点有哪些?创龙RK3568J+Debian的<b class='flag-5'>ROS2</b>系统案例

    ROS2中自带例程测试

    如果你是一个ROS2的开发者,可能对刚才我们使用的ROS2命令比较熟悉,这时你可能也会产生一个问题:我们之前也安装了ROS2系统,那ROS2的原生功能还可以正常运行么? 我们再来试一试
    的头像 发表于 11-28 16:29 905次阅读
    <b class='flag-5'>ROS2</b>中自带例程测试

    ros1和ros2的通信模型

    数据 ROS2: 参与者(DomainParticipant):一个参与者Participant就是一个容器,对应于一个使用DDS的用户,任何DDS的用户都必须通过Participant来访问全局
    的头像 发表于 11-27 11:26 753次阅读
    <b class='flag-5'>ros</b>1和<b class='flag-5'>ros2</b>的通信模型

    ros的基本概念是什么

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

    如何创建新的ROS工作空间

    新的工作空间来存储ROS Motion Planning运动规划库,不要与Navigation导航包放在同一工作空间下,在本文的例子中,我将创建一个名为motionplanning_ws的工作空间
    的头像 发表于 11-26 17:09 1362次阅读
    如何创建新的<b class='flag-5'>ROS</b>工作空间