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:
- Install packages: Developer Packages
- Build code sample: First Application
- Learn runtime tuning: QoS Introduction
Quick Start
1. Install Packages for Your Platform
Start with the package installation guide for your OS:
- Required for code onboarding: Developer Package
- Recommended for discovery/visibility checks: Astute Inspect
-
Recommended for visual DDS exploration: Shapes Demo
- Astute Inspect Installation
- Shapes Demo Guide
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_EFFORTandRELIABLEand watch delivery behavior under load. - Change durability from
VOLATILEtoTRANSIENT_LOCALand 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

For a full walkthrough, see the Shapes Demo Guide.
What's Next?
- Read the DDS Overview
- Try the Shapes Demo
- Learn about QoS Policies
- Secure your DDS system with DDS Security
- Bridge multiple domains with Domain Router
- Monitor your system with AstuteDDS Inspector
- Generate code with the IDL Compiler