ROS Resources: Documentation | Support | Discussion Forum | Service Status | Q&A

Micro XRCE-DDS Memory Profiling

In response to the growing interest of the community in micro-ROS, a thorough benchmarking of the most relevant figures that are key to the product adoption is in demand.

As a first step towards this direction, we recently performed a memory footprint analysis of the Micro XRCE-DDS library, the middleware underlying the micro-ROS architecture.

Micro XRCE-DDS is an implementation by eProsima of DDS-XRCE, a wire protocol that allows extending DDS, the ROS 2 middleware, to the embedded world. It relies on a client-server architecture in which the Clients are lightweight entities that run on a Real Time Operating System (RTOS) into low-resource devices, while the Agent is a proxy that acts as a bridge between the Clients and the DDS world, by forwarding the Clients’ petitions to the DDS global data space and returning operations results.

The Micro XRCE-DDS Client library profiling has been performed for two simple applications, one publishing and the other subscribing to topics of known size, running on FreeRTOS, chosen by virtue of its memory management capabilities, and on an Olimex STM32-E407 board, which is the reference board of the micro-ROS project. The board is connected by serial transport (UART) at 115200 baud to a Micro XRCE-DDS agent running on a Linux machine. Notice that the XRCE-DDS Client is completely dynamic memory free, so all memory figures refer to the stack and static memory usage.

The results for this analysis are summarized in the graphs below for publisher and subscriber applications, respectively.

On the server side, we have investigated the memory consumption of an Agent communicating with a mock Client application on Linux that is publishing and subscribing to topics of known size, by measuring the binary size of the compiled agent (which resulted to be of 385 KB) and analysing heap and stack usages. The results for the latter are summarized in the plot below.

For more information regarding the methodology employed for performing these profilings, refer to the full report published on eProsima’s webpage.


This is great! I think it would be useful to have metrics about Micro-ROS with XRCE-DDS within it, to account for any additional latency or memory overhead introduced by the Micro-ROS project. This doesn’t tell me as a ROS2 user too much about what I should expect from using Micro-ROS based on this DDS implementation.

Hi @smac, extension of the memory profiling to micro-ROS is on our roadmap and preliminary results are available already. We’ll publish a thorough report next week.