SlideShare a Scribd company logo
Workshop:
“Deeply embedded software”
Program
Francesca Finocchiaro (eProsima) - “micro-ROS: bringing ROS 2 to microcontrollers”
Jan Staschulat (Bosch Research) - “micro-ROS: API and executor”
Anaëlle Sarazin (WYCA Robotics) - “Elodie and micro-ROS”
Tomasz Rokosz (Hydra System) - “micro-ROS enabled GNSS receiver”
---
Panel discussion - Invited panelists: Pablo Garrido Sanchez (eProsima), Alexandre Malki (PIAP)
micro-ROS: bringing
ROS 2 to MCUs
Francesca Finocchiaro - eProsima
April 13th, 2021
Overview
funded by
Open-source project,
now benefiting from a huge
participation from a growing
community!
https://micro-ros.github.io/
https://www.eprosima.com/
francescafinocchiaro@eprosima.com
Who are we?
ROS 2
What is ROS 2?
● 2nd generation of Robotic Operating System, provides infrastructure for
robotics developers
● Open-source software with large community underneath
● [Long story short] Communication based on pub/sub paradigm:
○ Sensors publish to topics & actuators subscribe to topics
○ Based on DDS (Data Distribution System middleware)
○ Each node runs its own independent process
● Modular
● Benefits of QoS
● Has its own build/launch system
● CLI tools for deployment, monitoring and debugging
● Runs on Linux, Windows
micro-ROS: puts ROS 2 onto microcontrollers!
A solution for creating ROS 2 nodes into embedded devices
micro-ROS
Highlights
● Layer-compatible with ROS 2
● Integrated into ROS 2 ecosystem
● Allows to create a ROS 2 node with ~ all functionalities
● Client/server logics
● Fully customizable transports
● Runs on a variety of different platforms thanks to
platform-versatile cross-compilation tools
● Supporting ROS 2 Foxy, Rolling and soon Galactic!
● A growing community!
Why micro-ROS
ROS 2 micro- ROS
micro-ROS architecture
ROS 2 micro- ROS
micro-ROS architecture
Micro XRCE-DDS: DDS for eXtremely Resource-Constrained Environments.
Clients - XRCE entities on low-resource consumption devices.
Agent - XRCE entity connected with DDS global data space. Acts on behalf of Clients in the DDS world.
Main features:
● Client-server architecture
● Request-response pattern
● Connection oriented
Middleware architecture
ROS 2 micro- ROS
micro-ROS architecture
C99 library:
provides utility functions for creating
nodes, publishers, subscribers &
redesigned executor [deterministic and
LET semantics, dynamic memory
allocation only at startup,
domain-specific scheduling ]
RCL, RCUtils,
rosidl_typesupport
RCLCPP, RCLPY
App
RCL, RCUtils,
rosidl_typesupport
RCLC
App
Same as in ROS 2
(many functionalities not used)
ROS Client Support Libraries
Supported platforms
NuttX
Zephyr
FreeRTOS
Linux Windows
micro-ROS
Client
micro-ROS
Agent
Supported RTOSes
Mbed
Target: mid-range microcontrollers.
Currently supported:
● ARM-M3/M4/M7 MCUs
● Xtensa MCUs
● RISC-V
Typical features:
● ~ 1 MB of flash memory
● ~ 100 kB of RAM memory
● < 500 mA consumption
● General purpose input/output pins (GPIO)
● Communication peripherals: USB, Ethernet, SPI, UART, I2C, CAN, etc.
Supported HW
Arduino Due/Zero
OpenCR 1.0
Olimex LTD
STM32-E407
Crazyflie 2.1 drone
ST Nucleo family
STM32L4
Discovery kit IoT ESP32 family Teensy 3.2/4.1
Arduino Portenta
Supported HW
Raspberry Pi Pico
micro-ROS
Zephyr module
micro-ROS Arduino
micro-ROS ESP-IDF
component
Integration into external tools
micro-ROS STMCube
Recent developments
and features
my_custom_transport_open(...)
my_custom_transport_close(...)
my_custom_transport_write(...)
my_custom_transport_read(...)
Versatile API for custom transports
micro-ROS provides user API for interfacing with
lowest level transport layer at runtime
This enables to implement custom transports and allows to transmit DDS-XRCE
wire protocol over virtually any protocol, network or communication
mechanism.
4 functions must be implemented:
Continuous fragment mode
micro-ROS Client
Transport
buffer
Allows to send up to 64 kB according to DDS-XRCE specification
Publisher
writes on the run
(continuously)
MTU
To the
micro-ROS
Agent
message
fragmentation
serialization
Client-to-Agent Ping
micro-ROS
Client
micro-ROS
Agent
establish session
request operation
operation reply
Ping to see if Agent is alive
Pong reply
Pings Pongs
(if alive)
Shared Memory
micro-ROS Client micro-ROS Agent
Pub creation
Sub creation
Publisher
Subscriber
Matching info
Internal mechanism
for matching entities
within Client
Entities match within
the Agent by default
Static Memory Pools in the RMW
Client-Agent time sync
micro-ROS Client
micro-ROS Agent
epoch
relative
time
Client inherits epoch
from sync w/ Agent
Client requests time
offset between clocks
Demos
Demo I
micro-ROS enabling smart warehouses duties
Demo II
ROS 2 to micro-ROS TCP tunneling via Integration Service!
Thanks for your attention!
Back-up slides
● Implemented using Micro XRCE-DDS middleware in lower layer
● Allows static configuration of memory resources
Micro XRCE-DDS
configurable parameters
Transport
[UDP, serial, custom] Agent IP Agent Port
Creation mode
[XML, Ref]
IP version
[IPv4 - IPv6]
Max History
Max Nodes
Max Publishers Max Subscriptions Max Clients Max Services Max Topics
Node name max length Topic name max length
Type name max length
micro-ROS
configurable
parameters
Configurability of these parameters allows preconfiguring the size of the library
and tuning the size of the buffer to the memory available
RMW
Continuous fragment mode
XRCE Client
XRCE Agent
Max: 64 kB according to DDS-XRCE specification
Publisher
Publisher
...
writes
on the run
Static Memory Pooling in RMW
micro-ROS Client’s RMW
Subscriber ...
Subscriber ...
Subscriber ...
...
Subscriber
Subscriber
...
Subscriber
...
Continuous fragment mode
micro-ROS Client
micro-ROS
Agent
Up to 64 kB according to DDS-XRCE specification
Publisher
Publisher
...
writes
on the run
Graph manager
● DDS participant scanning the network: provides
introspection capabilities to user. ROS 2 topology
consumable by micro-ROS
● micro-ROS topology info available to ROS 2
Graph support
Continuous fragment mode
micro-ROS Client
Transport
buffer
Allows to send up to 64 kB according to DDS-XRCE specification
Publisher
writes on the run
(continuously)
MTU
To the
micro-ROS
Agent
message
Continuous fragment mode
micro-ROS Client
Transport
buffer
Allows to send up to 64 kB according to DDS-XRCE specification
Publisher
writes on the run
(continuously)
MTU
To the
micro-ROS
Agent
message

More Related Content

PDF
micro-ROS - New client library and middleware features
PDF
micro-ROS: Developing ROS 2 professional applications based on MCUs
PPTX
FIWARE Robotics: ROS2 & micro-ROS
PDF
【1110ROS社群開講】ROS 2與DDS應用於工業領域_王健豪
PDF
Micro XRCE-DDS and micro-ROS
PPTX
FIWARE Robotics: ROS2 & micro-ROS
PPSX
FD.io Vector Packet Processing (VPP)
PDF
Actividad No. 1.8: Análisis del protocolo MySQL
micro-ROS - New client library and middleware features
micro-ROS: Developing ROS 2 professional applications based on MCUs
FIWARE Robotics: ROS2 & micro-ROS
【1110ROS社群開講】ROS 2與DDS應用於工業領域_王健豪
Micro XRCE-DDS and micro-ROS
FIWARE Robotics: ROS2 & micro-ROS
FD.io Vector Packet Processing (VPP)
Actividad No. 1.8: Análisis del protocolo MySQL

What's hot (20)

KEY
PDF
Corosync and Pacemaker
PPTX
A Brief Introduction to React.js
PPTX
Introduction to react and redux
PDF
Android Things : Building Embedded Devices
PDF
Surfing on an Interactive Kiosk
PPTX
Node-RED
PDF
Meteor presentation
PPTX
Introduction to ROS (Robot Operating System)
PDF
L18 Object Relational Mapping
PDF
Time Synchronisation
PPTX
Enable DPDK and SR-IOV for containerized virtual network functions with zun
PDF
Android Multimedia Framework
PDF
Robotics and ROS
PDF
ACC: First Time Guide
PPTX
Devoxx 2012 hibernate envers
PDF
Dell PowerEdge Zero Touch Provisioning
PDF
micro-ROS - ROS 2 into microcontrollers
PPTX
New Addressable Asset System for Speed and Performance
Corosync and Pacemaker
A Brief Introduction to React.js
Introduction to react and redux
Android Things : Building Embedded Devices
Surfing on an Interactive Kiosk
Node-RED
Meteor presentation
Introduction to ROS (Robot Operating System)
L18 Object Relational Mapping
Time Synchronisation
Enable DPDK and SR-IOV for containerized virtual network functions with zun
Android Multimedia Framework
Robotics and ROS
ACC: First Time Guide
Devoxx 2012 hibernate envers
Dell PowerEdge Zero Touch Provisioning
micro-ROS - ROS 2 into microcontrollers
New Addressable Asset System for Speed and Performance
Ad

Similar to micro-ROS: bringing ROS 2 to MCUs (20)

PDF
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 2)
PDF
Micro XRCE-DDS: Bringing DDS into microcontrollers
PPTX
Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...
PDF
micro-ROS goes easy: Developing professional applications using Eclipse based...
PDF
micro-ROS Galactic
PDF
Hypha ROS X 星火計畫 ROS 2.0 Introduction [haochih, English ver]
PDF
Cyclone DDS Unleashed: ROS & Cyclone DDS.pdf
PDF
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)
PDF
FIWARE Robotics
PDF
microROS-presentation-PX4DevSummit-2020.pdf
PPTX
Fiware - communicating with ROS robots using Fast RTPS
PPTX
Rafail Brouzos thesis
PPTX
Automatic ROS2 systems generation via model-driven engineering (MDE) software...
PPTX
Αυτόματη παραγωγή συστημάτων ROS 2 με χρήση μοντελο-κεντρικών τεχνικών μηχανι...
PDF
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
PDF
Fast RTPS
PDF
DDS-XRCE (Extremely Resource Constrained Environments)
PPTX
rosnotes_1djsjsmsmmsmsndndndndndndnndndnjdjd
PPTX
Fiware: Connecting to robots
PPTX
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 2)
Micro XRCE-DDS: Bringing DDS into microcontrollers
Open Middleware Technologies for Smart Robotics - a FIWARE Smart Fest present...
micro-ROS goes easy: Developing professional applications using Eclipse based...
micro-ROS Galactic
Hypha ROS X 星火計畫 ROS 2.0 Introduction [haochih, English ver]
Cyclone DDS Unleashed: ROS & Cyclone DDS.pdf
FIWARE Wednesday Webinars - The Use of DDS Middleware in Robotics (Part 1)
FIWARE Robotics
microROS-presentation-PX4DevSummit-2020.pdf
Fiware - communicating with ROS robots using Fast RTPS
Rafail Brouzos thesis
Automatic ROS2 systems generation via model-driven engineering (MDE) software...
Αυτόματη παραγωγή συστημάτων ROS 2 με χρήση μοντελο-κεντρικών τεχνικών μηχανι...
FIWARE Global Summit - Fast RTPS: Programming with the Default middleware for...
Fast RTPS
DDS-XRCE (Extremely Resource Constrained Environments)
rosnotes_1djsjsmsmmsmsndndndndndndnndndnjdjd
Fiware: Connecting to robots
Fast RTPS: Programming with the Default Middleware for Robotics Adopted in ROS2
Ad

More from eProsima (14)

PDF
AML & ALMA: Project Overview
PDF
Fast DDS Hello World in Windows
PDF
ROS 2 deployment in K8s: DDS Router as WAN comms enabler
PDF
Algebraic Machine Learning - On changing the rules of the game
PDF
Vulcanexus: the all-in-one ROS 2 toolset
PDF
micro-ROS Humble Hawskbill
PDF
eProsima DDS Router: a micro-ROS Cloud scenario
PDF
ROS 2 AI Integration Working Group 1: ALMA, SustainML & ROS 2 use case
PDF
ALMA - Integration of AI in ROS 2 ecosystem
PDF
Towards Easy 5GS Integration in ROS2 - eProsima & Ericsson
PDF
eProsima - Company brief
PDF
Fast DDS Features & Tools
PDF
Integration Service: Integrating Communication Protocols
PDF
EU Project: ALMA
AML & ALMA: Project Overview
Fast DDS Hello World in Windows
ROS 2 deployment in K8s: DDS Router as WAN comms enabler
Algebraic Machine Learning - On changing the rules of the game
Vulcanexus: the all-in-one ROS 2 toolset
micro-ROS Humble Hawskbill
eProsima DDS Router: a micro-ROS Cloud scenario
ROS 2 AI Integration Working Group 1: ALMA, SustainML & ROS 2 use case
ALMA - Integration of AI in ROS 2 ecosystem
Towards Easy 5GS Integration in ROS2 - eProsima & Ericsson
eProsima - Company brief
Fast DDS Features & Tools
Integration Service: Integrating Communication Protocols
EU Project: ALMA

Recently uploaded (20)

PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
KodekX | Application Modernization Development
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Advanced methodologies resolving dimensionality complications for autism neur...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
NewMind AI Weekly Chronicles - August'25 Week I
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
“AI and Expert System Decision Support & Business Intelligence Systems”
Dropbox Q2 2025 Financial Results & Investor Presentation
20250228 LYD VKU AI Blended-Learning.pptx
Network Security Unit 5.pdf for BCA BBA.
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Reach Out and Touch Someone: Haptics and Empathic Computing
Chapter 3 Spatial Domain Image Processing.pdf
Empathic Computing: Creating Shared Understanding
Programs and apps: productivity, graphics, security and other tools
Unlocking AI with Model Context Protocol (MCP)
Agricultural_Statistics_at_a_Glance_2022_0.pdf
KodekX | Application Modernization Development
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

micro-ROS: bringing ROS 2 to MCUs

  • 1. Workshop: “Deeply embedded software” Program Francesca Finocchiaro (eProsima) - “micro-ROS: bringing ROS 2 to microcontrollers” Jan Staschulat (Bosch Research) - “micro-ROS: API and executor” Anaëlle Sarazin (WYCA Robotics) - “Elodie and micro-ROS” Tomasz Rokosz (Hydra System) - “micro-ROS enabled GNSS receiver” --- Panel discussion - Invited panelists: Pablo Garrido Sanchez (eProsima), Alexandre Malki (PIAP)
  • 2. micro-ROS: bringing ROS 2 to MCUs Francesca Finocchiaro - eProsima April 13th, 2021
  • 4. funded by Open-source project, now benefiting from a huge participation from a growing community! https://micro-ros.github.io/ https://www.eprosima.com/ francescafinocchiaro@eprosima.com Who are we?
  • 5. ROS 2 What is ROS 2? ● 2nd generation of Robotic Operating System, provides infrastructure for robotics developers ● Open-source software with large community underneath ● [Long story short] Communication based on pub/sub paradigm: ○ Sensors publish to topics & actuators subscribe to topics ○ Based on DDS (Data Distribution System middleware) ○ Each node runs its own independent process ● Modular ● Benefits of QoS ● Has its own build/launch system ● CLI tools for deployment, monitoring and debugging ● Runs on Linux, Windows
  • 6. micro-ROS: puts ROS 2 onto microcontrollers! A solution for creating ROS 2 nodes into embedded devices micro-ROS
  • 7. Highlights ● Layer-compatible with ROS 2 ● Integrated into ROS 2 ecosystem ● Allows to create a ROS 2 node with ~ all functionalities ● Client/server logics ● Fully customizable transports ● Runs on a variety of different platforms thanks to platform-versatile cross-compilation tools ● Supporting ROS 2 Foxy, Rolling and soon Galactic! ● A growing community! Why micro-ROS
  • 8. ROS 2 micro- ROS micro-ROS architecture
  • 9. ROS 2 micro- ROS micro-ROS architecture
  • 10. Micro XRCE-DDS: DDS for eXtremely Resource-Constrained Environments. Clients - XRCE entities on low-resource consumption devices. Agent - XRCE entity connected with DDS global data space. Acts on behalf of Clients in the DDS world. Main features: ● Client-server architecture ● Request-response pattern ● Connection oriented Middleware architecture
  • 11. ROS 2 micro- ROS micro-ROS architecture
  • 12. C99 library: provides utility functions for creating nodes, publishers, subscribers & redesigned executor [deterministic and LET semantics, dynamic memory allocation only at startup, domain-specific scheduling ] RCL, RCUtils, rosidl_typesupport RCLCPP, RCLPY App RCL, RCUtils, rosidl_typesupport RCLC App Same as in ROS 2 (many functionalities not used) ROS Client Support Libraries
  • 15. Target: mid-range microcontrollers. Currently supported: ● ARM-M3/M4/M7 MCUs ● Xtensa MCUs ● RISC-V Typical features: ● ~ 1 MB of flash memory ● ~ 100 kB of RAM memory ● < 500 mA consumption ● General purpose input/output pins (GPIO) ● Communication peripherals: USB, Ethernet, SPI, UART, I2C, CAN, etc. Supported HW
  • 16. Arduino Due/Zero OpenCR 1.0 Olimex LTD STM32-E407 Crazyflie 2.1 drone ST Nucleo family STM32L4 Discovery kit IoT ESP32 family Teensy 3.2/4.1 Arduino Portenta Supported HW Raspberry Pi Pico
  • 17. micro-ROS Zephyr module micro-ROS Arduino micro-ROS ESP-IDF component Integration into external tools micro-ROS STMCube
  • 19. my_custom_transport_open(...) my_custom_transport_close(...) my_custom_transport_write(...) my_custom_transport_read(...) Versatile API for custom transports micro-ROS provides user API for interfacing with lowest level transport layer at runtime This enables to implement custom transports and allows to transmit DDS-XRCE wire protocol over virtually any protocol, network or communication mechanism. 4 functions must be implemented:
  • 20. Continuous fragment mode micro-ROS Client Transport buffer Allows to send up to 64 kB according to DDS-XRCE specification Publisher writes on the run (continuously) MTU To the micro-ROS Agent message fragmentation serialization
  • 21. Client-to-Agent Ping micro-ROS Client micro-ROS Agent establish session request operation operation reply Ping to see if Agent is alive Pong reply Pings Pongs (if alive)
  • 22. Shared Memory micro-ROS Client micro-ROS Agent Pub creation Sub creation Publisher Subscriber Matching info Internal mechanism for matching entities within Client Entities match within the Agent by default
  • 23. Static Memory Pools in the RMW
  • 24. Client-Agent time sync micro-ROS Client micro-ROS Agent epoch relative time Client inherits epoch from sync w/ Agent Client requests time offset between clocks
  • 25. Demos
  • 26. Demo I micro-ROS enabling smart warehouses duties
  • 27. Demo II ROS 2 to micro-ROS TCP tunneling via Integration Service!
  • 28. Thanks for your attention!
  • 30. ● Implemented using Micro XRCE-DDS middleware in lower layer ● Allows static configuration of memory resources Micro XRCE-DDS configurable parameters Transport [UDP, serial, custom] Agent IP Agent Port Creation mode [XML, Ref] IP version [IPv4 - IPv6] Max History Max Nodes Max Publishers Max Subscriptions Max Clients Max Services Max Topics Node name max length Topic name max length Type name max length micro-ROS configurable parameters Configurability of these parameters allows preconfiguring the size of the library and tuning the size of the buffer to the memory available RMW
  • 31. Continuous fragment mode XRCE Client XRCE Agent Max: 64 kB according to DDS-XRCE specification Publisher Publisher ... writes on the run
  • 32. Static Memory Pooling in RMW micro-ROS Client’s RMW Subscriber ... Subscriber ... Subscriber ... ... Subscriber Subscriber ... Subscriber ...
  • 33. Continuous fragment mode micro-ROS Client micro-ROS Agent Up to 64 kB according to DDS-XRCE specification Publisher Publisher ... writes on the run
  • 34. Graph manager ● DDS participant scanning the network: provides introspection capabilities to user. ROS 2 topology consumable by micro-ROS ● micro-ROS topology info available to ROS 2 Graph support
  • 35. Continuous fragment mode micro-ROS Client Transport buffer Allows to send up to 64 kB according to DDS-XRCE specification Publisher writes on the run (continuously) MTU To the micro-ROS Agent message
  • 36. Continuous fragment mode micro-ROS Client Transport buffer Allows to send up to 64 kB according to DDS-XRCE specification Publisher writes on the run (continuously) MTU To the micro-ROS Agent message