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和更强大的处理器之间的差距。

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

    关注

    213

    文章

    30580

    浏览量

    219578
  • ROS
    ROS
    +关注

    关注

    1

    文章

    290

    浏览量

    18474
  • 机器人应用
    +关注

    关注

    0

    文章

    12

    浏览量

    2251
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—ROS2系统使用说明

    本文围绕创龙科技研发的评估板,详解 ROS2 系统使用方法。涵盖 ROS2 环境搭建、核心概念讲解、节点通信测试、功能包创建与编译,以及可视化工具 RViz 的使用,还包括基于评估板的 ROS2 应用案例演示,帮助开发者快速掌握
    的头像 发表于 10-30 13:46 221次阅读
    创龙 瑞芯微 RK3588 国产2.4GHz八核 工业开发板—<b class='flag-5'>ROS2</b>系统使用说明

    如何使用menuconfig添加配置micro-ros软件包?

    请问有没有最新的rtthread移植micro-ros移植使用教程,使用menuconfig添加配置micro-ros软件包?
    发表于 09-25 06:37

    请问mirco ros2的lib库怎么生成?

    想使用MDK开发mirco_ros2,但是网上怎么找都没有相应的lib库及生成教程,想问下有没有人能解决这个问题,因为项目开始就用MDK开发,也习惯了,改用其他功能可能会很费时。
    发表于 09-22 07:28

    如何基于翼辉信息SylixOS开发ROS 2应用

    ROS 2(Robot Operating System 2)是机器人操作系统(ROS)的升级版,是一套开源的专为机器人开发而设计的软件库与工具集。作为构建机器人应用的强大框架,提供从
    的头像 发表于 08-14 15:44 1665次阅读
    如何基于翼辉信息SylixOS开发<b class='flag-5'>ROS</b> <b class='flag-5'>2</b>应用

    硬核上车!RK3576基于Ubuntu部署ROS机器人系统详细攻略(

    本文适用于瑞芯微RK3562、RK3566、RK3568、RK3576、RK3588等Arm64位SoC,适配开发ROS2系统。各型号触觉智能均有配套核心板及开发板,实现了百分百全国产。ROS2
    的头像 发表于 07-03 18:45 2090次阅读
    硬核上车!RK3576基于Ubuntu部署<b class='flag-5'>ROS</b>机器人系统详细攻略(<b class='flag-5'>上</b>)

    基于 ROS + ADI 芯片方案 的 人形机器人子系统级BOM清单(以腿部子系统为例)

    基于 ROS + ADI 芯片方案 的 人形机器人子系统级BOM清单 (以 腿部子系统 为例),包括核心感知、执行与通信模块,配合主控系统通过 ROS2 实现分布式控制与状态反馈。 一、腿部子系统
    的头像 发表于 06-17 17:06 1526次阅读

    ros2教程

    电子发烧友网站提供《ros2教程.pdf》资料免费下载
    发表于 05-23 09:12 1次下载

    【「# ROS 2智能机器人开发实践」阅读体验】视觉实现的基础算法的应用

    阅读心得体会:ROS2机器人视觉与地图构建技术 通过对本书第7章(ROS2视觉应用)和第8章(ROS2地图构建)的学习,我对机器人视觉感知和自主导航的核心技术有了更深入的理解。以下是我的心得体会
    发表于 05-03 19:41

    【「# ROS 2智能机器人开发实践」阅读体验】机器人入门的引路书

    的非常好的,特别是一些流程图,很清晰的阐释了概念 很适合作为初学者入门的引路书 还能了解很多技术和框架,破除初学者的自负困境,让初学者知道功能是由很多开发者维护的,前人已经为各种产品搭建了完善的框架。避免陷入得一个人单打独斗的错觉 一直蠢蠢欲动ros2和机器人的同学,有了这本书就行动起来吧!
    发表于 04-30 01:05

    【「# ROS 2智能机器人开发实践」阅读体验】+ROS2应用案例

    地图构建,包括算法原理介绍、安装与配置方法、仿真环境中的SLAM以及真实机器人的SLAM。 这一过程不仅涉及到计算机视觉和机器人学的知识,还需要对ROS 2的节点管理和数据处理有一定的了解。通过实践
    发表于 04-27 11:42

    【「# ROS 2智能机器人开发实践」阅读体验】+内容初识

    ROS 2智能机器人开发实践》内容阅读初体验 《ROS 2 智能机器人开发实践》是一本针对 ROS 2
    发表于 04-27 11:24

    名单公布!【书籍评测活动NO.58】ROS 2智能机器人开发实践

    手机为平台的移动互联网时代,下一个以机器人为核心的智能机器人时代,是否也会遵循这样的逻辑? 随着ROS 2的诞生,智能机器人开发迎来新篇章 ,它不仅为开发者提供了更为强大、灵活的工具,也为智能机器人
    发表于 03-03 14:18

    如何将python文件导入到ROS系统中

    本文通过使用myCobot机械臂进行QR码视觉追踪的实践案例分析,介绍如何将 python 文件导入到 ROS 系统中。
    的头像 发表于 02-11 11:08 1195次阅读
    如何将python文件导入到<b class='flag-5'>ROS</b>系统中

    使用myCobot 280机械臂结合ROS2系统搭建机械分拣站

    这篇文章是来自Automatic Addison的开源项目,已获作者授权转载自github。本项目的主要内容是使用myCobot 280机械臂结合ROS2系统搭建机械分拣站。
    的头像 发表于 01-15 09:22 1909次阅读
    使用myCobot 280机械臂结合<b class='flag-5'>ROS2</b>系统搭建机械分拣站

    在Mac使用Docker构建noVNC环境并运行MyCobot

    这篇文章主要内容是关于如何在 Ros2 环境中构建在 Mac 模拟 Mycobot 280 M5 的环境。
    的头像 发表于 01-15 09:17 1815次阅读
    在Mac<b class='flag-5'>上</b>使用Docker构建noVNC环境并运行MyCobot