Skip to main content
A LidarDriver yields point-cloud frames from a spinning, solid-state, or single-line ranging device.

The interface

Writing the agent half in Rust? The trait equivalent is ados_sdk::drivers::LidarDriver (re-exported from the drivers module of the ados-sdk crate). It carries the same six methods (discover, open, close, capabilities, frame_iterator, set_param) over an async-trait, with LidarCandidate, LidarCapabilities, LidarFrame, and LidarPoint as the matching types. LidarFrame holds timestamp_ns, sequence, a points vector, and free-form metadata. Set runtime: rust in the manifest and the host treats the driver the same way it treats the Python one.

Capabilities

Frames

Each LidarFrame carries a list of LidarPoint in the sensor body frame: +x forward, +y left, +z up. Coordinates are metres.
Drivers that report misses for some angles should skip those points rather than emit zeros.

Manifest permissions

Single-line vs spinning

The agent does not distinguish single-beam rangefinders from full 3D LiDARs at the driver layer. A 1D rangefinder ships frames with points_per_frame=1. The host’s avoidance and SLAM consumers already handle the degenerate case.

See also