RTI Connext Nano is a standard-compliant implementation of the OMG DDS-XRCE (or "DDS for eXtremely Resource Constrained Environments").
The DDS-XRCE protocol allows small devices subject to extreme resource constraints (in terms of memory, power, network bandwidth and/or connectivity) to join a DDS publish-subscribe domain and transparently exchange information with existing DDS systems.
DDS-XRCE is the protocol used by micro ROS to extend ROS2 to micro controllers.
RTI Connext Nano is composed of components:
- nano-client. Extremely light-weight library that enables communication over various transport technologies (e.g. serial links, bluetooth, cellular networks, TCP/IP) using the standard XRCE protocol. The library currently supports any 32-bit/64-bit CPU/MCU with at least 6-12KB of ROM for code (depending on enabled features), and at least 1KB of RAM for runtime overhead on top of user data.
- nano-agent. Bridge component that relays information between the resource-constrained clients and the DDS Databus, typically deployed as a daemon process on a more powerful host. The agent can be deployed on any platform supported by RTI Connext DDS.
RTI Connext Nano extends DDS systems to edge devices that would not be able to participate as first-class DDS nodes otherwise, due to the baseline resource requirements needed to join directly a peer-to-peer network.
DDS participants must communicate peer-to-peer. To support this, each DDS participant must discover, (and authenticate), every other participant in the same domain, as well, as maintain its active presence. This requires keeping local state on other remote participants as well as sending periodic “liveliness” messages to assert presence in the domain.
In a peer-to-peer network, Subscriber nodes must be ready to receive data updates from Publishers at any time, while Publisher nodes must be ready to respond to the acknowledgements sent by the Subscribers at any time.
The peer-to-peer protocol requirements limit or preclude the ability of DDS nodes to enter power-saving “deep sleep" cycles” as it would prevent the DDS participant from fulfilling its “availability” and “presence” requirements.
From the network transport point of view, the amount of information that must be exchanged between DDS nodes makes it impractical to deploy DDS participants on top of transports with very small MTUs, such as bluetooth low energy.
The resulting baseline requirements for a DDS node to be deployed on a peer-to-peer network, measured in terms of memory, CPU, and network bandwidth, may be too large for some resource-constrained devices.
RTI Connext Nano addresses the needs of these resource-constrained nodes and network transports by designating an external Agent as a “delegated point of presence” on the DDS network. The Agent can keep the state on the DDS network and even cache data subscribed by the Clients until the devices are ready to consume it.
Using RTI Connext Nano, DDS systems can extend further into the edge and run in microcontrollers, field-deployed sensors, and many other devices.
Features and Benefits
Participate in DDS communications from resource constrained devices, including field-deployed sensors that undergo power-saving sleep cycles and communicate over low-bandwidth networks.
Full access to all DDS capabilities: create and configure any DDS Entity, read and write data on any Topic using any DDS data-type and any size of data.
Configure and leverage all DDS QoS Policies and advanced features such as content filtered Topics and query/selection based data-access (QueryConditions).
Read data that was published before the application joined the system (supported by DDS DURABILITY QoS policy). Read data that was published while the application was undergoing a sleep cycle (cached by agent, controlled by DDS HISTORY QoS policy) Communicate over any transport with a Maximum Transmission Unit (MTU) of at least 24 bytes. Use the bundled TCP/UDP sockets and Serial Transports, or build a custom one.
Use the included abstraction layer to port the library to other platforms. Minimal "portability API" to wrap system- and network-level functionality. No dynamic memory allocation required.
RTI Labs Project Type: Product Prototype
Maturity level: Experimental Feature
Support: RTI-Community forum, backed by CTO Office Engineers
- Expand the types of systems that can use Connext DDS to microcontrollers and field-deployed devices.
- Address use cases in important markets including Robotics, Medical Devices, Automotive, Smart City.
- Opening a ticket in the issues section of the GitHub repositories nano-client and nano-agent.
- Creating RTI Community Forum threads.
Product Version Information: N/A (source release). Compatible with Connext 6.0.1 and later.
Platform Support: Source release with CMake-based build system. The client library has been built on various embedded platforms, including Linux, macOS, Windows, and the Arduino framework. The agent should be buildable and deployable on any platform supported by RTI Connext DDS.
System requirements: Connext 6.0.1 or later, CMake 3.9 or later, and a C/C++ compiler toolchain appropriate for the target platform. See nano-client building and nano-agent building.
There are additional requirements to build the documentation (Python, Sphinx).
Product compatibility: Connext 6.0.1 or later
Access RTI Connext Nano on these two Github repositories nano-client and nano-agent.
RTI Connext Nano documentation is located in the RTI Community Portal:
- OMG DDS-XRCE standard: https://www.omg.org/spec/DDS-XRCE/
- Micro ROS: https://micro.ros.org/
Clone and build the RTI nano-client from the github repository.
Clone and build the RTI nano-agent from the github repository.
Post your questions, search through our Knowledge Base, and get the most from your DDS experience by joining the RTI Community!