Madrid, November 2019

What have a TurtleBot and a Crazyflie in common? Not much, you think?!
Well, eProsima connected them in a very special way, using micro-ROS!
Micro-ROS was presented at the ROSCon in Macau 2019 by Bosch Corporate Research and eProsima and is, simply put, ROS 2 for microcontrollers.


Showcase 1

As a demonstration eProsima bridged the TurtleBot and the Crazyflie, the result was the possibility to move the TurtleBot 2 platform with information coming out of Crazyflie 2.1 stack, more accurate, IMU information. This information was received by a control application written in ROS 2 which transformed the IMU data into velocity commands. The demo showcases how two microcontrollers can collaborate in a bigger robotic system.

Crazyflie 2.1 with STM32F405 MCU, Cortex-M4, 168MHz, 192kb SRAM and 1Mb flash. The Micro XRCE-DDS Client library was ported to FreeRTOS (the real-time operating system used by Crazyflie 2.1). A developed application publishes drone data using the Micro XRCE-DDS Client API reaching ROS 2. This demo was showcased along with RVIZ, so this data publication was showed at real-time on the RVIZ visualisation.



Showcase 2

A different example on how micro-ROS works, was the demonstration of Bosch. The demo showcased how a ROS 2 application can issue commands to a TurtleBot 2 platform in order to move it without the requirement of any "Big" computer attached to it, resulting in reducing costs. Apart from cost reduction micro-ROS aims to bridge the gap between microcontrollers and general-purpose computers, so ROS 2 ecosystems can benefit from microcontrollers capabilities.

  • Hardware access
    • GPIOs, PWM generators…
    • Buses such as CAN, UART, SPI I²C
  • Hard, low-latency real-time
    • Context switching in less than 100 cycles
  • Power saving
    • Linux-capable single-board computer requires 10 to 100x more power
  • Safety
    • MCUs have safety-certified RTOSs


Communication of ROS 2 Crystal with an embedded board with an STM32F407ZGT6 Cortex-M4, 1MB Flash, 196KB RAM microcontroller.


What is micro-ROS?

micro-ROS comes to solve a frequent obstacle, which is the integration of microcontrollers with ROS 2. This issue has commonly be solved with tailored solutions. These solutions require some expertise and the right amount of engineering effort, providing in some cases non-standard and non-reusable solutions. 

During the ROSCon in Macau, Bosch and eProsima presented the micro-ROS approach in order to solve this issue and invited all the attendees of the ROSCon to have a look at the demos in the exhibition areas.

The approach of micro-ROS is to integrate as much as possible of ROS 2’s current architecture using all the core layers (RMW, RCL, …) in the development. This way, anyone familiar with ROS 2 APIs and tools will be comfortable in these kind of environments. In addition, eProsima developed an implementation of the OMG's standard wire protocol, DDS-XRCE, addressing the issue of DDS implementation in resource-constrained settings. Traditionally, DDS has difficulties in these situations due to memory and processing limitations. With eProsima Micro XRCE-DDS you can communicate in a DDS network from within a microcontroller.
The protocol implementation powering micro-ROS, Micro XRCE-DDS, uses ~2 KB of RAM. Micro XRCE-DDS does not use any dynamic memory, which is a perfect match for the requirements of the targeted platforms. On top of Micro XRCE-DDS, micro-ROS adds the minimum required to have ROS 2 concepts on microcontrollers.

As a part of micro-ROS, there is a new RMW implementation (rmw_microxrcedds) using this new protocol. It is already working on several versions of ROS 2 (Crystal and Dashing with limited support at the moment but more to come with new releases of micro-ROS). This new RMW allows communicating ROS 2 nodes running on microcontrollers to communicate with other ROS 2 nodes running in regular environments.


Next steps

Currently, micro-ROS supports only a part of the ROS 2 API (Publish, Subscribe, type support and waitsets are currently supported). Forthcoming work will be focusing on increasing the APIs functionality.

An alignment with other ROS 2 versions is in the micro-ROS roadmap. As a next step, right after the Eloquent Elusor ROS 2 release, there will be a micro XRCE-DDS version supporting the new Fast RTPS release and then followed by a micro-ROS release adapting to the latest version.


More Information:

For any questions please contact This email address is being protected from spambots. You need JavaScript enabled to view it.