Skip to content

Commit e2bce67

Browse files
julionceralph-lange
authored andcommitted
Micro XRCE-DDS concept (#67)
* Add ROS2 compliant table in Overview section. * Add Micro XRCE-DDS concept. * Update _docs/concepts/middleware/Micro_XRCE-DDS/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/concepts/middleware/Micro_XRCE-DDS/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/concepts/middleware/Micro_XRCE-DDS/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/concepts/middleware/Micro_XRCE-DDS/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/concepts/middleware/Micro_XRCE-DDS/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/concepts/middleware/Micro_XRCE-DDS/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Attend pull request comments. * Update _docs/concepts/middleware/Micro_XRCE-DDS/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/overview/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com> * Update _docs/overview/index.md Co-Authored-By: Ralph Lange <ralph-lange@users.noreply.github.com>
1 parent d201c6b commit e2bce67

3 files changed

Lines changed: 61 additions & 1 deletion

File tree

_docs/concepts/middleware/Micro_XRCE-DDS/index.md

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,52 @@ permalink: /docs/concepts/middleware/Micro_XRCE-DDS/
44
redirect_from: /docs/concepts/middleware/
55
---
66

7-
...
7+
**eProsima Micro XRCE-DDS** is an open-source wire protocol that implements the OMG DDS for e**X**tremely **R**esource **C**onstrained **E**nvironment standard ([DDS-XRCE](https://www.omg.org/spec/DDS-XRCE/About-DDS-XRCE/)).
8+
The aim of the DDS-XRCE protocol is to provide access to the DDS Global-Data-Space from resource-constrained devices.
9+
This is achieved thanks to a **client-server** architecture, where low resource devices, called *XRCE Clients*, are connected to a server, called *XRCE Agent*, which acts on behalf of its clients in the DDS Global-Data-Space.
10+
11+
![](uxrce_scope.png)
12+
13+
Micro XRCE-DDS is composed by two main elements:
14+
15+
* [Micro XRCE-DDS Agent](https://github.com/eProsima/Micro-XRCE-DDS-Agent): a **C++11 out-of-the-box application** which implements the XRCE Agent functionality.
16+
* [Micro XRCE-DDS Client](https://github.com/eProsima/Micro-XRCE-DDS-Client): a **C99 library** which implements the XRCE Client side functionality.
17+
18+
Apart of these, Micro XRCE-DDS uses other two components:
19+
20+
* [Micro CDR](https://github.com/eProsima/Micro-CDR): a **de/serialization engine** used in the Client library.
21+
* [Micro XRCE-DDS Gen](https://github.com/eProsima/Micro-XRCE-DDS-Gen): a **code generator tool** used for generating *Micro CDR* de/serialization function and Client apps examples from IDL sources.
22+
23+
## Application
24+
25+
Micro XRCE-DDS is focused on microcontroller applications which require a publisher/subscriber architecture.
26+
Some examples of this kind of applications are those found in sensor networks, IoT or robotics.
27+
On this last regard, some companies such as [Renesas](https://www.sensorsmag.com/iot-wireless/mcus-support-dds-xrce-protocol-for-ros-2) and [ROBOTIS](https://xelnetwork.readthedocs.io/en/latest/) are using Micro XRCE-DDS as the middleware solution.
28+
Furthermore, the [micro-ROS](https://microros.github.io) project, whose target is to put ROS 2 onto microcontroller, has adopted Micro XRCE-DDS as the middleware layer.
29+
30+
## Main Features
31+
32+
### Low Resource Consumption
33+
34+
As it was aforementioned, Micro XRCE-DDS is focused on microcontroller applications. Therefore, the design and implementation of this middleware have been carried out taking into account the memory restriction of this kind of devices.
35+
Proof of this is the fact that Micro XRCE-DDS Client is completely dynamic memory free.
36+
From the point of view of memory footprint, the [latest](https://github.com/eProsima/Micro-XRCE-DDS-Client/releases/tag/v1.0.1) version of this library has a memory consumption of less than **75 KB of Flash memory** and **2.5 KB of RAM** for a complete publisher and subscriber application.
37+
38+
### Multi-Transport Support
39+
40+
In contrast to other IoT middleware such as MQTT and CoaP, which work over only a particular transport layer, XRCE support multiple transport protocol natively.
41+
In particular, the latest version of Micro XRCE-DDS support: **UDP**, **TCP** and a custom **Serial** transport protocol.
42+
43+
Apart from this, Micro XRCE-DDS has a transport interface for both Agent and Client which allows to implement custom transport in an straight-forward manner.
44+
This makes the port of Micro XRCE-DDS to different platforms and the addition of new transports a task that any user can undertake.
45+
46+
### Multi-Platform Support
47+
48+
Micro XRCE-DDS Client support **Windows**, **Linux** and **NuttX** as embedded RTOS.
49+
On the other hand, Micro XRCE-DDS Agent support Windows and Linux platform.
50+
51+
## Other links
52+
53+
* [Manual at Read the Docs](https://micro-xrce-dds.readthedocs.io/en/latest/)
54+
* [GitHub](https://github.com/eProsima/Micro-XRCE-DDS)
55+
20.8 KB
Loading

_docs/overview/index.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,15 @@ Major repositories in order of the layers are:
3434
* Example applications for NuttX directly are in [apps](https://github.com/micro-ROS/apps)
3535

3636
Most repositories can be found in GitHub's micro-ROS organization at [github.com/micro-ROS/](https://github.com/micro-ROS/).
37+
38+
### Compatibility with ROS 2 Releases
39+
40+
The following table summarizes the compatibility between micro-ROS and ROS 2 releases.
41+
This table contains links to installation documentation as well as `.repos` file for both *Client* and *Agent* side.
42+
On the one hand, the *Client* size `.repos` includes all the necessary to build a micro-ROS application, along with some demo examples.
43+
On the other hand, the *Agent* size `.repos` includes the micro-ROS-Agent bridge.
44+
45+
| ROS2 Release | Documentation | Client | Agent |
46+
|:-------------|:--------------|:-------|:-------|
47+
| **Crystal** | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS-doc/blob/crystal/Installation) | [![](https://img.shields.io/badge/uROS-repos-brightgreen)](https://github.com/micro-ROS/micro-ROS-doc/blob/crystal/Installation/repos/client_minimum.repos) | [![](https://img.shields.io/badge/uROS-repos-brightgreen)](https://github.com/micro-ROS/micro-ROS-doc/blob/crystal/Installation/repos/agent_minimum.repos) |
48+
| **Dashing** | [![](https://img.shields.io/badge/read-the%20docs-blue)](https://github.com/micro-ROS/micro-ROS-doc/blob/dashing/Installation) | [![](https://img.shields.io/badge/uROS-repos-brightgreen)](https://github.com/micro-ROS/micro-ROS-doc/blob/dashing/Installation/repos/client_minimum.repos) | [![](https://img.shields.io/badge/uROS-repos-brightgreen)](https://github.com/micro-ROS/micro-ROS-doc/blob/dashing/Installation/repos/agent_minimum.repos) |

0 commit comments

Comments
 (0)