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

Quick Start

1. Clone the Repository

git clone https://github.com/Astute-Systems/astutedds-cxx.git
cd astutedds-cxx

2. Build the Library

mkdir build && cd build
cmake .. -DASTUTEDDS_BUILD_EXAMPLES=ON -DASTUTEDDS_BUILD_TOOLS=ON
cmake --build .

3. Run the Shapes Demo

./examples/shapes_demo/shapes_demo

What's Next?