Getting Started with AstuteDDS

This guide will help you get started with AstuteDDS.

What is DDS?

The Data Distribution Service (DDS) is a middleware protocol and API standard for data-centric publish-subscribe communication. It is maintained by the Object Management Group (OMG), the international standards consortium responsible for UML, CORBA, and other widely-adopted specifications.

DDS enables real-time, scalable, and reliable data exchange between distributed systems without requiring a central broker. Its publish-subscribe model decouples data producers from consumers, making systems more modular, resilient, and easier to evolve.

Why DDS?

  • Real-time performance: Designed for low-latency, high-throughput applications
  • Quality of Service (QoS): Fine-grained control over reliability, durability, deadlines, and more
  • Scalability: Supports systems from embedded devices to large-scale distributed networks
  • Interoperability: Standard wire protocol (RTPS) ensures cross-vendor compatibility

Where is DDS Used?

DDS is deployed in mission-critical and safety-critical systems worldwide:

  • Defence: The UK Generic Vehicle Architecture (GVA) standard (Def Stan 23-009) mandates DDS for real-time data distribution in military land vehicles
  • Robotics: ROS 2 uses DDS as its default middleware layer, enabling communication between robotic components
  • Aerospace & Avionics: Air traffic control, flight management, and unmanned systems
  • Industrial IoT: Factory automation, SCADA systems, and smart grid applications
  • Healthcare: Medical device integration and patient monitoring systems

Overview

AstuteDDS is a C++20 implementation of the Data Distribution Service (DDS) standard, providing:

  • Standards-compliant DDS DCPS API
  • RTPS 2.5 wire protocol
  • X-Types 1.3 type system
  • IDL 4.2 compiler
  • Security plugins

Start Here in 5 Minutes

For first-time setup, follow this sequence:

  1. Install packages: Developer Packages
  2. Build code sample: First Application
  3. Learn runtime tuning: QoS Introduction

Quick Start

1. Install Packages for Your Platform

Start with the package installation guide for your OS:

2. Verify Tooling and Environment

Required for the code onboarding path:

astutedds-idl --help

Optional checks (if installed):

astutedds-inspect -h

3. Build Your First Application

Follow First Application to generate code from IDL and build publisher/subscriber executables with CMake.

4. Explore Shapes Demo and Inspect

astutedds-shapes-demo
astutedds-inspect

Use two astutedds-shapes-demo instances to verify local pub/sub quickly, then use astutedds-inspect to confirm participants and topics are discovered.

Shapes Demo

The Shapes Demo is the fastest way to build an intuition for DDS behavior before writing application code. It gives you a live GUI for publishers, subscribers, topics, and QoS settings so you can immediately see the effect of each change.

Note

You can run two Astute Shapes Demo instances back-to-back to test publish and receive behavior immediately. Both instances can run on the same machine, or on different machines on the same DDS domain/network.

What to Try First

  • Switch reliability between BEST_EFFORT and RELIABLE and watch delivery behavior under load.
  • Change durability from VOLATILE to TRANSIENT_LOCAL and then start a late subscriber.
  • Adjust history depth and compare how much data is retained and delivered.
  • Try different publish rates to observe traffic and responsiveness.

Shapes Demo GUI

Astute Shapes Demo publishers interface for learning DDS QoS behavior

For a full walkthrough, see the Shapes Demo Guide.

What's Next?