Discover in this presentation the basic aspects of what eProsima is doing nowadays in terms of developing open-source solutions for robotics, both in terms of giving access to resource-constrained devices to the robotics field and making several communication protocols available to talk between them, thus expanding their capabilities and interoperability.
2. Table of contents
● The micro-ROS middleware
○ What is ROS 2?
○ Why micro-ROS?
○ Micro-ROS main features
○ Middleware architecture: Micro XRCE-DDS
● How to integrate micro-ROS with FIWARE?
○ Introducing: eProsima Integration Service
○ A deeper understanding of Integration Service
○ Successful use case: WAN communication
○ Bringing ROS 2 information to the FIWARE ecosystem
4. What is ROS 2?
Set of software libraries
and tools for building
robot applications
5. Why micro-ROS?
Open-source project, now benefiting from a huge
participation from a growing community!
https://micro.ros.org
https://www.eprosima.com
● Embedded systems specific constraints
and necessities
● Lack of common standard development
framework
● Achieving cost-effective development
strongly relies on a common platform
● micro-ROS: common framework that brings
ROS 2 nodes into the embedded world
7. ● 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 in
run-time)
● 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, Galactic and Rolling
○ A growing community
Micro-ROS main features
8. Middleware architecture: Micro XRCE-DDS
Stands for 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
10. Introducing: eProsima Integration Service
Enables intercommunication of an
arbitrary number of protocols that
speak different languages
GitHub repository
ReadTheDocs page
11. A deeper understanding of Integration Service
Integration Service: core + System Handles.
Available middlewares up to date: Fast DDS, FIWARE, ROS 1, ROS 2, WebSocket… but more will
come!
Hello, I am Jose and in this presentation I will try to cover the basic aspects of what eProsima is doing nowadays in terms of developing open-source solutions for robotics, both in terms of giving access to resource-constrained devices to the robotics field and making several communication protocols available to talk between them, thus expanding their capabilities and interoperability.
Specifically, this presentation is structured in two main sections:
First, we will talk about our proposal to integrate resource-constrained devices within the ROS 2 ecosystem, by means of the microROS project and its middleware, micro XRCE-DDS.
Then, the presentation will continue by showing at a glance how ROS 2 and micro-ROS could be communicated with the FIWARE’s context broker, to enable it with information coming from a robotic environment.
micro-ROS was born as the result of a joint effort between several European companies, namely eProsima, the FIWARE Foundation, Bosch and PIAP. It has been funded so far by the European Union within the framework of the Horizon 2020 R&D projects. However, as it’s an open-source project, it’s now benefiting more and more of contributions from a growing community of users.
micro-ROS was born as the result of a joint effort between several European companies, namely eProsima, the FIWARE Foundation, Bosch and PIAP. It has been funded so far by the European Union within the framework of the Horizon 2020 R&D projects. However, as it’s an open-source project, it’s now benefitting more and more of contributions from a growing community of users.
* Embedded World
Robotics trend evolves towards interconnected systems of CPUs and multisensor-actuator (that typically run on low resource boards μC)
New inherent challenges → extreme resource constrained devices, real-time systems, wide range of μC in the industry (HW/Transport/RTOS)
* Lack of common standard development framework
Frameworks like ROS 2, do not entirely fit these devices efficiently (memory limitations, lack of energy efficiency requirements or advanced real time programming capabilities)
Existing multiple personalized development solutions not based on a common solid platform
* Achieving cost-effective development strongly relies on a common platform
Common platform round which HW and SW providers emerge
Based on ROS concepts to facilitate adoption and interoperability with the established ROS ecosystem
Bridges the gap between microcontrollers and ROS 2
* micro-ROS: common framework that brings ROS 2 nodes into the embedded world
It accelerates solutions development based on μC via allowing the combination of high computation devices and low level microcontrollers within any robotic system.
It reduces the existing entry barrier for new applications enabling affordable deployments (IoT, robotics, autonomous driving ,...)
So, what micro-ROS does, is basically bringing a ROS 2 node into microcontrollers and embedded devices.
And why so? Nowadays, robots and IoT technologies are each day less of a central unit taking care of all functions and more of an interconnected network of robotic parts, with a topology most often characterized by a central part which takes care of the most computationally demanding tasks, plus a collection of minor components, mainly sensors and actuators operated by distributed MCUs, which are in charge of highly specialized physical or mechanical operations.
That’s where micro-ROS enters the scene, by allowing to create a ROS 2 node into the MCU. This node is very close to the hardware level and interacts directly with the drivers that control the HW peripherals, allowing a fine-grain integration within the ROS network and avoiding raw data to be sent directly to the central processing unit, what helps freeing its resources for other tasks.
All this is made possible by the very special characteristics with which micro-ROS comes.
Its architecture is layer-by-layer compatible with that of ROS 2 to ensure modularity and interoperability with the ROS 2 ecosystem.
It allows to create an embedded node provided with most of the key functionalities of a standard ROS 2 node.
It follows a client/server logics
It can use several different transport protocols, allowing it to fit a diverse range of use-cases.
It runs on different platforms, both on the hardware and on the software side,
And for that to be possible, it offers a very versatile build system that encompasses the growing pool of supported platforms.
It can benefit of the full range of quality of services offered by ROS 2, via DDS.
Also, we’re constantly working to be up-to-date with the latest version of ROS 2. At the moment we support Foxy, rolling and Galactic!
Finally, we can count with a growing community of users actively participating to the development, the port of new platforms and to our monthly embedded working group meetings.
Let’s take a deeper look at micro-ROS’ default middleware, Micro XRCE-DDS.
This library implements a wire protocol designed to bring DDS to extremely resource-constrained devices.
It relies on a client-server architecture, which is then inherited by micro-ROS, in which the clients are lightweight libraries that run into the low-resource devices, while the agents are heavier libraries that run on more powerful microprocessors, and bridge the clients with the DDS world. To date, the Agent can run either on standard computers running Windows or Linux or on Raspberry Pis, on Linux.
In this world, the role of the Agent is that of creating a proxy that acts on behalf of the client and interacts with DDS by means of all the standard DDS entities, as participants, publishers, subscribers, an so on. These entities are created on the Agent under specific requirement of the Clients, and the agent keeps them in its memory at all times, in such a way that even if the client disconnects or enters a deep-sleep mode, its state within the agent stays alive.
The middleware Client library is fully dynamic memory free, allowing it to comply with Real-Timeness and determinism.
The transport protocols supported by default by the XRCE-DDS library are UDP TCP and serial, and there’s also the possibility for the user to define its own custom transport.
The middleware comes with built-in support for serial transports, TCP, UDP over Ethernet, Wi-Fi, and 6LoWPAN, and Bluetooth, and there’s also the possibility for the user to define its own custom transport.
Over these transports, the communication is performed by streams, which can be either best-effort or reliable.
(Notes to be written yet. Basically, say that the integration would be possible thanks to Integration Service and briefly explain how it works)
(Notes to be written yet. Basically, explain what a System Handle is and how we could use it for this use case)