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?¶
- Read the DDS Overview
- Try the Shapes Demo
- Learn about QoS Policies
- Use the IDL Compiler