Skip to content

AUTOSAR rds

Theia edited this page Jun 19, 2026 · 1 revision

rds — Raw Data Stream

← back to AUTOSAR

What ARA defines

ara::rds is the platform's zero-copy bulk data plane — a binary stream API for large, high-rate payloads (camera frames, lidar/radar point clouds) that would be wasteful to push through the normal serialized service communication. It's the "don't copy the 8 MB frame" path.

Our adaptation

Theia runs two planes, and rds is the second one:

Theia TIPC (control) RDS / iceoryx (data)
carries casts/calls, the firehose, "frame N ready" the bulk payload itself
size small messages 8 MB camera frames, etc.
copies? yes (encode→kernel→decode) — fine for small none — written once to shared memory, every reader gets a pointer
  • services/rds is the ara::rds library; RouDi (the iceoryx daemon) runs as a supervised child (via the .art node prebuilt primitive for 3rd-party binaries). requires_rds is a gen-app codegen flag.
  • The control plane only ever casts a small RdsFrameReady ("frame N is in shared memory") notification over TIPC; the consumer pulls the frame from iceoryx by pointer — never over TIPC.
  • The GPU DMA-BUF path is defined but Orin-deferred (iceoryx is a heavy dep, gated to the boards that need it).

We keep ARA's "separate bulk plane, zero-copy" intent and realize it with iceoryx + a TIPC ready-notification, which cleanly separates "the frame is ready" (our control plane) from "here is the frame" (shared memory) — practical and Orin-gated.

Clone this wiki locally