The micro-ROS team has been hearing requests for a micro-ROS middleware implementation that does not rely on a client-agent architecture for a long time.
Although the DDS-XRCE standard was originally chosen for major reasons and it has fulfilled its function exceptionally (for example being port to a wide variety of Arduino boards or being used on top of even low bandwidth radio transports), the current trends in the MCUs capabilities also allows the usage of more complex middleware solutions, that is why new solutions are emerging like mRos.
Middleware implementations such as embeddedRTPS, bring the possibility of using RTPS communication layers on mid to high range MCU with networking capabilities.
Thanks to the layer to layer compatibility of micro-ROS with the ROS 2 architecture, testing those new middlewares is just a matter of writing a new RMW implementation. As well as making some porting adjustments due to the embedded nature of micro-ROS.
From the eProsima’s micro-ROS team we want to provide the same features to the official ROS 2 embedded solution. So, we have created a basic rmw_embeddedrtps for micro-ROS, that, although it is not complete, allows the basic functionality of publishing, subscribing and using ROS 2 services. All of this using the well-known micro-ROS C99 API: rclc.
We have prepared a PoC based on FreeRTOS and LwIP. Therefore, users will be able to test their existing micro-ROS applications on top of a RTPS-compatible middleware:
- The first repo integrates this experimental RMW in the Expressif ESP-IDF. micro-ROS nodes can interface wirelessly with ROS 2 thanks to the wireless capabilities of the ESP32 family
- The second repo integrates the new solution in STMCubeIDE. So, although we have used a ST Nucleo F746ZG, virtually all STMicroelectronics STM32 MCUs with networking capabilities and enough resources could run it.
In both approaches, apps can use the full-featured micro-ROS stack (rclc executors, typesupport optimized for embedded, tooling for C type introspection and static memory configuration…) on top of a middleware like embeddedRTPS, that natively speaks ROS 2. No agents.
Even though it is only a PoC and much remains to be developed and improved, we strongly believe that it will be very well received by the community and will drive involvement to maintain it.
As a result, micro-ROS can be compiled either with Micro XRCE-DDS for low-mid MCUs or with embeddedRTPS for larger devices that are used in critical applications. So, the developer can easily choose the preferred middleware for any application.