eProsima Micro XRCE-DDS¶
eProsima Micro XRCE-DDS is a software solution which allows communicating eXtremely Resource Constrained Environments (XRCEs) with an existing DDS network. This implementation complies with the specification proposal, “DDS for eXtremely Resource Constrained Environments” submitted to the Object Management Group (OMG) consortium.
eProsima Micro XRCE-DDS implements a client-server protocol to enable resource-constrained devices (clients) to take part in DDS communications. eProsima Micro XRCE-DDS Agent (server) makes possible this communication acting on behalf of the eProsima Micro XRCE-DDS Clients and enables them to take part as DDS publishers and/or subscribers in the DDS Global Data Space.
eProsima Micro XRCE-DDS provides both, a plug and play eProsima Micro XRCE-DDS Agent and an API layer which allows you to implement your eProsima Micro XRCE-DDS Clients.
- High performance.
- Uses a static low-level serialization library (eProsima Micro CDR) that serialize in XCDR.
- Low resouces.
- The client library is dynamic memory free and static memory free. This means that the only memory charge is due to the stack growth. It can manage a simple publisher/subscriber with less of 2KB of RAM. Besides, the client is built with a profiles concept, that allows adding or removing functionality to the library changing the binary size.
- The OS dependencies are treated as pluggable modules. The user can easily implement his platform modules to eProsima Micro XRCE-DDS Client library in his specific platform. By default, the project can run over Linux, Windows and Nuttx.
- Compiler dependencies free.
- The client library uses pure c99 standard. No C compiler extensions are used.
- Free and Open Source.
- The client library, the agent executable, the generator tool and internal dependencies as eProsima Micro CDR or eProsima Fast RTPS are all of them free and open source.
- Easy to use.
- The project comes with examples of a publisher and a subscriber, an example of how eProsima Micro XRCE-DDS is deployed into a stage and an interactive demo that can be used with the ShapesDemo with the purpose of understanding the DDS-XRCE protocol and making tests. The client API is thoroughly explained, and a guided example of how to create your client application is distributed as part of the documentation.
- Implementation of the DDS-XRCE standard.
- DDS-XRCE is a standard communication protocol of OMG consortium focused on communicating eXtremely Resource Constrained Environments with the DDS world.
- Best effort and reliable communication.
- eProsima Micro XRCE-DDS supports both, best effort for fast and light communication and reliable when the communication reliability is needed.
- Pluggable tansport layer.
- eProsima Micro XRCE-DDS is not built over a specific transport protocol as Serial or UDP. It is agnostic about the transport used, and give the user the possibility of implementing easily his tailored transport. By default, UPD, TCP, and Serial transports are provided.
- Commercial support
- Available at firstname.lastname@example.org
To test eProsima Micro XRCE-DDS in your computer, you can follow the Quick start instructions. This page shows how to create a simple publisher as a XRCE client that send topics into the DDS World.
Additionally, there is an interactive example called Shapes Demo that allow you to create entities and to send/receive topics by instructions given by command line. This example is useful to understand how XRCE protocol works along to the DDS World.
To create your own client, you can follow the instructions of Getting started page. This is a tutorial that describe briefly how eProsima Micro XRCE-DDS API is and how it works.
To know more about eProsima Micro XRCE-DDS, you can read the corresponding parts to the eProsima Micro XRCE-DDS Client or the eProsima Micro XRCE-DDS Agent. If you are interested in how XRCE works, read Entities and Operations pages.
- Quick start
- Getting started
- Shapes Demo
- eProsima Micro XRCE-DDS Client
- eProsima Micro XRCE-DDS Gen
- eProsima Micro XRCE-DDS Agent
- Deployment example
- Memory optimization