跳到主要内容
研究

Micro-ROS -将最流行的机器人中间件带到微型微控制器上

raybet雷竞技ios下载博世研究博客|作者:拉尔夫·兰格,2021-01-14

Ralph Lange讲述了如何将机器人操作系统(ROS)引入微控制器

机器人操作系统(ROS)是最重要的机器人中间件,它使开发人员能够在更短的时间内构建复杂的机器人应用程序。到目前为止,对于在板载微控制器上运行的控制、传感器和执行器访问等低级功能,无缝中间件集成是不可能的。由欧洲研究计划推出的Micro-ROS解决了这一问题,并将ROS引入微控制器。我们将介绍在过去的几个月里,博世研究院及其合作伙伴如何为执行管理和运行时配置开发相raybet雷竞技ios下载关API功能,增加对流行的ESP32微控制器系列的支持,并将micro-ROS与另外两个开源实时操作系统(FreeRTOS和Zephyr)集成。

ROS是什么?

机器人操作系统(ROS)拥有成千上万的用户,是在全球开源努力下在许可模式下开发的最重要的机器人中间件。ROS提供通信机制和组件模型,以在模块化架构中构建复杂的机器人系统。它提供了用于部署、监视、内省、数据可视化和模拟的工具。它为机器人技术的几乎所有方面提供了基础算法,例如定位、路径规划、导航和运动控制。所有这些特性都有助于机器人软件开发人员专注于应用程序级功能,从而专注于软件堆栈的不同部分。然而,ROS最重要的特征是全球共同体。成千上万的机器人软件开发人员——从博士生到专业开发人员——正在推进ROS的中间件功能或提供应用程序级软件组件。ROS由一家总部位于加州的非营利公益公司和一个技术指导委员会支持,该委员会由包括博世(Bosch)在内的几家知名工业公司组成。raybet雷竞技ios下载

什么是微活性氧?

ROS被开发用于微处理器,假设至少有几百兆字节的RAM。这既适用于经典的ROS,也适用于当前版本的ROS 2。然而,机器人系统通常是由一个或多个微处理器和几个微控制器组成的网络。微控制器用于访问传感器和执行器,实现具有硬实时要求的控制功能或嵌入安全机制。显然,ROS不能直接用于只有几千字节RAM的微控制器上。此外,微控制器的开发工具和操作系统也非常不同。这就是为什么博世研究与三raybet雷竞技ios下载个合作伙伴合作欧盟资助OFERA项目用micro-ROS来弥补这一差距。

micro-ROS标志
micro-ROS标志

主要项目目标

微控制器与ROS 2无缝集成

促进ROS 2代码到微控制器的可移植性

确保micro-ROS堆栈的长期维护

Micro-ROS是开源的micro-ros.github.io在与ROS相同的许可模式下。在micro-ros.github.io,我们提供文档、教程和链接,以与不断增长的社区进行交互。

micro-ROS体系结构概述

图1描述了micro-ROS堆栈的体系结构。micro-ROS尽可能重用标准ROS 2堆栈的现有层,以确保兼容性并简化维护。然而,有三个重要的区别:

图1:micro-ROS堆栈的架构。
图1:micro-ROS堆栈的架构。欧盟资助的OFERA项目已经为micro-ROS开发了深蓝色层和组件。浅蓝色的rmw和rcl层是来自ROS 2的重复使用。

1.由于其动态内存需求,ROS 2 c++ API (rclcpp)不能在许多微控制器上使用。相反,micro-ROS通过一个小型库rclc丰富了现有的ROS 2客户端支持库(rcl),它们共同提供了一个完整的针对微控制器优化的C API。rclc提供了执行管理和运行时生命周期管理的机制,以及rcl的便利函数。

2.Micro-XRCE-DDS是用于极端资源受限环境(XRCE)的新DDS标准的开源实现,用作通信中间件。它与microros代理在ROS 2中使用的标准DDS中间件耦合。代理接管了发现和QoS机制,这些机制对微控制器来说计算成本太高。

3.最底层使用针对微控制器优化的实时操作系统(RTOS),而不是Linux、macOS或Windows等桌面操作系统。为了与上层的互操作性,micro-ROS要求RTOS提供POSIX接口。

rclc Executor的高级执行管理

Bosch Research对micro-raybet雷竞技ios下载ROS的贡献主要集中在用户代码的api上。在过去的几个月里,我们为执行管理添加了新的概念——作为rclc Executor的一部分——以满足机器人系统中的典型用例:

  • 感知-计划-行动管道:这种管道可以被认为是分布到多个软件组件(即ROS节点)的控制循环。rclc Executor确保不同组件的算法按照管道的顺序执行,以最小化延迟。
  • 多速率同步:融合来自多个来源的传感器数据是机器人技术中的一项常见任务。这需要将计算与传感器的采样率对齐。rclc Executor允许以确定的方式同步这些速率的计算。
  • 高优先级处理路径:通常,相同的数据由多个组件并发处理。rclc Executor允许指定一个固定的优先级顺序,以确保时间关键型组件先于其他组件执行。

最后,rclc Executor实现了逻辑执行时间(LET)语义的相关部分,LET是一种在深度嵌入式系统中广泛使用的机制,用于确保并发任务或进程之间的确定性通信。

图2:系统模式概念和管理机制的说明。
图2:系统模式概念和管理机制的说明。灰色树描述了虚拟系统的层次结构。

运行时生命周期和系统模式

生命周期是ROS 2引入的一个新概念。它指定了一组固定的组件运行时状态(未配置、未激活、激活、错误处理等)以及它们之间的转换。这样就可以更好地控制组件的启动和关闭。新的rclc_lifecycle包将相同的概念引入micro-ROS,从而引入微控制器。

此外,我们开发了一个名为system_modes的包,它(1.)允许通过自定义模式扩展生命周期状态,并以类似的方式(2.)将生命周期概念引入到机器人软件系统的整个层次结构中。为此,使用基于模型的方法:整个系统层次结构、组件和子系统的生命周期状态和模式在YAML文件中以轻量级格式指定。在这个文件中,还定义了子系统到各个组件的状态和模式之间的映射。在运行时,系统模式管理器读取这个YAML文件,并从组件状态推断整体系统状态。反之亦然,它可以通过请求的子系统状态和模式重新配置各个组件,如图2所示。

支持FreeRTOS和Zephyr

在过去的几个月里,我们的合作伙伴eProsima(负责协调欧盟资助的OFERA项目)将开源系统RTOS FreeRTOS和Zephyr集成到micro-ROS构建系统中。通过它们,micro-ROS提供了对三种开源RTOS的内置支持。

FreeRTOS和Zephyr都为micro-ROS解锁了重要的社区,我们相信micro-ROS将为这些RTOS解锁ROS社区。

要使用其中一个RTOS,只需克隆micro_ros_setup进入ROS工作区并调用Ros2执行micro_ros_setup create_firmware_ws.sh与所需的RTOS和板。

支持ESP32微控制器

ESP32是一个重要的微控制器家族,尤其以其在制造商文化中的使用而闻名。在博世raybet雷竞技ios下载研究院,我们一直在各种原型和演示中使用ESP32。由于其重要性,我们已经将ESP32工具链集成到micro_ros_setup工具中。此外,我们的OFERA合作伙伴eProsima为micro-ROS构建了一个ESP-IDF组件。因此,无论你喜欢什么-基于ros的工具链或Espressif物联网开发框架-你可以直接为ESP32构建微ros应用程序。

ESP32单片机
ESP32单片机

结论

我们很高兴看到ROS社区采用micro-ROS。开源贡献者在过去几个月里开发的各种演示证明micro-ROS已经实现了与ROS 2的无缝集成和可移植性。围绕微型ros的不断增长的社区使我们相信,在欧盟资助的OFERA项目结束后,它的长期维护将得到保证。在博世raybet雷竞技ios下载研究院,我们很自豪能够诞生这个开源项目。签出micro-ros.github。IO获取更多信息和第一个用户教程。此外,我们想邀请您参加ROS嵌入式工作组的下一次会议,该会议每月举行一次。

链接和参考资料


Micro-ROS是在OFERA项目中开发的,该项目由欧盟地平线2020研究和创新计划资助,资助协议编号为780785。

你对这个话题有什么看法?

请随时通过LinkedIn或ResearchGate分享,或直接与我联系。

作者:拉尔夫·兰格

Ralph在德国斯图加特大学(University of Stuttgart)学习计算机科学和电气工程,并于2010年获得上下文感知计算领域的博士学位。2010年至2012年,他担任TRUMPF机床的软件工程师,致力于CAD/CAM系统TruTops,用于冲压和冲压激光机的图形NC编程,专注于钣金无骨架加工的算法。Ralph于2013年1月raybet雷竞技ios下载加入博世研究院,担任嵌入式系统(尤其是机器人)形式化分析和建模方法的研究工程师。自2016年以来,他一直领导博世内部关于机器人系统和软件工程的研究项raybet雷竞技ios下载目,该项目不仅支持博世业务部门使用ROS,还为ROS的发展做出了贡献。他也是欧盟资助的OFERA项目的首席研究员,该项目构成了微活性氧开发的核心。

拉尔夫·兰格

分享到: