针对熟练设备人应用的读者,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信息传递的通信接口,能够经过单线 UART 和 RS-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和更强大的处理器之间的差距。
|