Tinverse logo Tinverse LLC

Tin DDS

DDS for robots that need predictable behavior

Tin DDS is a C++ library that moves structured data between the programs in a robot. Applications publish data such as commands, joint state, or images. Other applications subscribe to the topics they need.

Same-machine programs automatically use shared memory when it is available. Programs on different machines use RTPS over UDP. ROS is not required; tin-dds provides a separate ROS 2 RMW adapter.

What works today

  • Writers and readers, keyed data, bounded history, and common QoS policies.
  • Automatic same-host shared memory and reliable UDP between processes.
  • Discovery, retransmission, fragmentation, and repair for large or lost samples.
  • Late-reader replay and file-backed recovery for durable data.
  • Content filters, coherent updates, listeners, and lifecycle events.
  • A two-path teleoperation profile with command admission and fail-safe supervision.

Security

Secure identities and data

Tin DDS validates identity certificates, signed governance files, PKI-DH handshake material, key agreement, and AES-GCM protected data.

Teleoperation

Secure teleoperation commands

Teleoperation accepts commands only from the authenticated controller that holds control authority. Old, duplicate, or unauthorized commands are rejected, and failures are reported across two independent communication paths.

Capabilities

Useful DDS behavior, without making the application manage it

Network and shared memory transport

Tin DDS uses shared memory for same-host peers and UDP for remote peers. Applications use the same C++ writer and reader calls for both; transport selection is automatic.

Reliable when the network is not

Writers keep a bounded history. Readers acknowledge progress, missing data is repaired, and large samples are split and reassembled with fixed limits.

Durability QoS and persistent history

Durability QoS controls whether late readers receive retained samples. Transient-local history remains available while the writer is running; persistent durability saves bounded history and restores it after restart. Corrupt or oversized history files are rejected.

Overload stays visible

Queues, histories, fragments, and discovery records have explicit bounds. When a limit is reached, the caller receives a named result instead of silent memory growth.

Measured as a standalone DDS implementation

The public suite records topology, payload, delivery counters, and latency so a fast number cannot hide a different test.

Open the DDS benchmark suite →

Contact engineering@tinverse.com.