AstuteDDS Documentation

Welcome to the AstuteDDS documentation. AstuteDDS is a comprehensive C++20 implementation of the Data Distribution Service (DDS) DCPS API with full DDSI-RTPS 2.5 and X-Types 1.3 support, designed for military and embedded applications.

Astute Inspect: See Your DDS System Live

Astute Inspect is AstuteDDS's visual diagnostics and topology workspace for DDS domains. It helps teams detect QoS mismatches, validate endpoint connectivity, and monitor live traffic quickly during integration and interoperability testing.

Astute Inspect hero view showing live topology, QoS diagnostics, and traffic analysis

Learn more in the Astute Inspect documentation.

What is AstuteDDS?

AstuteDDS provides a static library (libastutedds.a) implementing:

  • DDSI-RTPS 2.5: Wire protocol interoperability with OpenDDS, Fast DDS, and Cyclone DDS
  • DDS-XTypes 1.3: Complete type system with TypeObject/TypeIdentifier, assignability, and dynamic types
  • XCDR1/XCDR2: Full serialization support with delimited headers and mutable types
  • IDL 4.2 Compiler: Code generation from IDL to C++ with type support
  • GVA Profile: Support for UK Def Stan 23-009 (Generic Vehicle Architecture)
  • Persistence Service: TRANSIENT and PERSISTENT durability for late-joining readers
  • Recording & Replay: Capture DDS payload streams to disk and replay with original timing
  • DDS Security: Authentication, access control, and encryption (optional)


Key Features

  • Compliance Against OMG Standards: Implements DDS 1.4, DDSI-RTPS 2.5, DDS-XTypes 1.3, and DDS Security 1.1/1.2
  • Interoperable: Works with other DDS implementations (OpenDDS, Fast DDS, Cyclone DDS)
  • Modern C++: Uses C++20 features for type safety and performance
  • Static Library: Single library for easy deployment
  • IDL Code Generation: Generate C++ headers and sources from OMG IDL 4.2
  • Domain Routing: Bridge topics and traffic between DDS domains
  • Security Built-in: Optional DDS Security plugin support
  • XML QoS Profiles: Load and apply QoS from OMG DDS XML files at runtime
  • Persistence Service: TRANSIENT and PERSISTENT durability for late-joining readers
  • Recording & Replay: Capture DDS payload streams to disk and replay with original timing

Supported Operating Systems

  • Windows
  • RHEL Family: RHEL, Rocky Linux, AlmaLinux
  • Debian Family: Debian, Ubuntu, and compatible clones

Project Status

Category Feature Status
Wire Protocol DDSI-RTPS 2.5 · SPDP · SEDP ✅ Complete
UDP unicast & multicast / TCP / Shared memory ✅ Complete
DATA_FRAG / NACK_FRAG fragmentation ✅ Complete
Reliability HEARTBEAT / ACKNACK · History cache · Resource limits ✅ Complete
QoS All 22 OMG DDS QoS policies ✅ Complete
DDS-XML QoS profile loader ✅ Complete
Serialisation XCDR1 · XCDR2 (DHEADER, EMHEADER) ✅ Complete
IDL Compiler IDL 4.2 → C++ · @key · @optional · @data_representation ✅ Complete
X-Types TypeObject · TypeIdentifier · Assignability · DynamicData · TypeLookup ✅ Complete
DCPS API All core entities · Content-Filtered Topics · Writer-side filtering ✅ Complete
Persistence Service (TRANSIENT / PERSISTENT) ✅ Complete
Recording & Replay (DataLogTool) ✅ Complete
ROS 2 bridge helpers ✅ Complete
Security Authentication · Access Control · AES-GCM Crypto SPIs ✅ Complete
Tools IDL compiler · DDS Inspector GUI · Qt6 Shapes Demo ✅ Complete

Example: Hello World

#include "HelloWorld.hpp"

#include <astutedds/dcps/CorePolicy.hpp>
#include <astutedds/dcps/dcps.hpp>
#include <astutedds/dcps/qos.hpp>

int main()
{
    dds::domain::DomainParticipant participant(0, 0);
    dds::topic::Topic<Demo::HelloWorld> topic(participant, "HelloWorldTopic");
    dds::pub::Publisher publisher(participant);

    astutedds::dcps::DataWriterQos wqos{};
    wqos.reliability.kind = astutedds::dcps::ReliabilityQosPolicyKind::RELIABLE_RELIABILITY_QOS;

    dds::pub::DataWriter<Demo::HelloWorld> writer(publisher, topic, wqos);

    Demo::HelloWorld msg;
    msg.id(1);
    msg.message("Hello, DDS World!");
    writer.write(msg);

    return 0;
}

Documentation Structure

This documentation is organized into several sections:

  • Getting Started: Installation, building, and basic concepts
  • DDS Concepts: Core DDS principles and terminology
  • Guides: Step-by-step tutorials for common tasks
  • API Reference: Detailed API documentation
  • Examples: Code examples and use cases
  • About: Architecture, specifications, and project information

Need Help?

License

AstuteDDS is open source software. See the License page for details.