Micro XRCE-DDS and micro-ROS enable ROS 2 functionality on embedded devices. Micro XRCE-DDS is a middleware that provides embedded devices access to the ROS 2 data space using a client-server architecture. It has low memory usage and supports various transports and real-time capabilities. Micro-ROS builds on Micro XRCE-DDS to mirror the ROS 2 API and ecosystem, allowing developers to create ROS 2 nodes that run on embedded devices. Together they help close the gap between embedded devices and ROS 2 by bringing ROS 2 capabilities to microcontrollers and supporting a wide range of hardware and operating systems.
2. New inherent
challenges
Lack of common
standard dev
framework
micro-ROS
Mission
XRCE (μC)
Embedded
world
Robotics trend evolves
towards interconnected
systems of CPUs and
multisensor-actuator
(that run on low
resource boards μC )
ROS 2 is unfit for XRCE
Achieving cost-effective
development strongly
relies on a common
platform around which HW
& SW providers emerge
Memory limitations,
real-time systems, energy
consumption, determinism,
wide range of vendors
(HW/Transport/RTOS)
Standard ROS 2-based
framework which
Mission is to bring ROS 2
nodes into the embedded
world (μC)
Accelerator & Enabler
XRCE challenge statement
3. Micro-ROS enables ROS 2 nodes into
the embedded world
Micro XRCE-DDS is the middleware of
micro-ROS
micro-ROS
Micro XRCE-DDS
4. ● Mirroring ROS2 for Embedded world
○ Layer-compatible with ROS 2
○ Integrated into ROS 2 ecosystem
○ Allows to create a ROS 2 node with ~ all
functionalities
○ Client-server logics (client fully dynamic memory
free)
● Widest range of use cases
○ Middleware transports fully customizable
○ Runs on bare-metal, all RTOSs and all MCUs
○ Platform-versatile cross-compilation tools
● Mature technology
○ Benefits of full QoS support ROS 2
○ Now supporting Foxy and Galactic and Rolling
○ A growing community
Highlights
5. micro-ROS layered architecture
Real-Time OS
Additional
drivers, …
POSIX
Micro XRCE-DDS Client
ROS Middleware Interface (rmw)
+ Additional abstractions
micro-ROS
Agent
microcontroller
C API
rcl
C++ API
(rclcpp)
Convenience functions,
deterministic execution, …
Application
component
Application
component …
rclc:
Linux, Mac OS, Windows
DDS Implementation [Fast DDS, ..]
ROS Middleware Interface (rmw)
microprocessor
C API
rcl
C++ API
(rclcpp)
Application
component
Application
component …
Python API
(rclpy)
Apps
ROS
Client Library
ROS MW
Interface
Operating
Systems
Hardware
XRCE-DDS
DDS
micro-ROS
ROS 2
6. eProsima Micro XRCE-DDS
Library that provides eXtreme Resource Constrained Environments (μC) access to the DDS Global-Data-Space
1. Wire-protocol over Client-Server architecture
XRCE Client on low-resource consumption devices
XRCE Agent entity connected with DDS global data space that
acts on behalf of Clients
2. Client fully static and dynamic memory free
75 KB of Flash memory and 3 KB of RAM
3. Real-Time and Deterministic - critical applications
4. Transport-agnostic, customized by the user
Built-in support for serial transports, TCP, UDP over Ethernet,
Wi-Fi, and 6LoWPAN, and Bluetooth
DDS world
7. FULL PORTABILITY
Any RTOS and Bare metal Library Generator!
Any low-mid range MCU!
Typical features:
~ 150 KB of flash memory
> 25 KB of RAM memory
General purpose input/output pins
Peripherals: GPIO, USB, Ethernet, SPI, UART,
I2C, CAN, etc
Mbed RTOS 6.8 / 6.9 / 6.10
FreeRtos
NuttX 10.0 / 10.1
Zephyr RTOS 2.4 / 2.5
ThreadX
REFERENCE PLATFORMS UP TO DATE
Check full list of supported HW & RTOS
Arduino Portenta
Raspberry Pi Pico
Arduino Nano RP2040 Connect
(1st with Raspberry Pi silicon)
ESP-IDF v4.3 & ESP32-S2/C3
Teensy 3.2 / 3.5 / 4.1 / 4.2
OpenCR support
STM32CubeMX & STM32CubeIDE
…
8. micro-ROS & MoveIt 2
STM32L4 Discovery kit IoT & Zephyr
micro-ROS & IS WAN tunneling
Espressif ESP32 & FreeRTOS
micro-ROS & six-wheels Thumper
Olimex LTD STM32-E407 & NuttX
ROBOTIS
XEL Network and ROS 2 communication
RENESAS
RX65N microcontrollers and ROS 2
AUTERION
Communication between MCUs and ROS 2
micro-ROS and Micro XRCE-DDS demos
9. Important links
micro-ROS
micro-ROS Webpage
micro-ROS github
Features
SW and HW support
Advanced Tutorials with examples
Articles
Demo videos
Micro XRCE-DDS
eProsima webpage
Micro XRCE-DDS github
Documentation (Getting started)
Micro XRCE-DDS Client
Micro XRCE-DDS Agent
Examples
Demo videos
10. Outlining the benefits
Micro XRCE-DDS
Middleware (Client-Server)
● First and only MW in the Industry
(μC to ROS 2)
● Leading compatibility (transport
agnostic)
● Standard-based endorsed by
OMG, (RTI, eProsima)
● Existing deployments, tested and
supported by the Community
micro-ROS
Common Platform
● Mission: closing gap in the
industry by bringing ROS 2 nodes
into the embedded world (μC)
● Compatible with a vast range of
μC and ROS 2-based framework
● Accelerator of new applications
● Enabler of affordable
deployments (IoT, robotics,
autonomous driving ,...)
ROS 2 (DDS)
Enhanced ROS 2
● Robotic evolution adaptation
(multisensor actuator combined
with CPUs)
● Overcoming the challenges for
adopting XRCE based networks
● First-class support for real-time
and embedded platforms
● Huge scope of low-mid range
MCU vendors, RTOS and
different transports into the DDS
world