Skip to main content

PerceptionArtifacts

Struct PerceptionArtifacts 

Source
pub struct PerceptionArtifacts {
    pub detections: DetectionSet,
    pub tracks: Vec<Track>,
    pub tracks_authoritative: bool,
    pub signals: Vec<DerivedSignal>,
    pub scene_features: Vec<SceneFeature>,
    pub stage_artifacts: TypedMetadata,
}
Expand description

Accumulated outputs of all stages that have run so far for this frame.

Built up incrementally by the pipeline executor. Stage N+1 sees the accumulated result of stages 0..N through StageContext::artifacts.

§Merge semantics

FieldBehavior
detectionsReplace — latest Some(DetectionSet) wins
tracksReplace — latest Some(Vec<Track>) wins
signalsAppend — all signals accumulate
scene_featuresAppend — all scene features accumulate
stage_artifactsMerge — last-writer-wins per TypeId

§Extension seam: stage_artifacts

The stage_artifacts field is the primary inter-stage communication channel for data that does not fit the built-in fields. Any Clone + Send + Sync + 'static value can be stored by type.

A pre-processing stage can assemble a sliding window of frames (e.g., Arc<[FrameEnvelope]>) and store it as a typed artifact for a downstream temporal or clip-based model to consume, without any changes to the core pipeline execution model.

Fields§

§detections: DetectionSet

Current detection set (replaced by each stage that returns detections).

§tracks: Vec<Track>

Current track set (replaced by each stage that returns tracks).

When tracks_authoritative is true, this is the complete set of active tracks for the frame. Tracks previously known to the temporal store but absent here are considered normally ended (TrackEnded).

§tracks_authoritative: bool

Whether any stage produced authoritative track output this frame.

Set to true when at least one stage returns Some(tracks) in its StageOutput. When false, no stage claimed ownership of the track set, and the executor must not infer track endings from the (default-empty) tracks field.

§signals: Vec<DerivedSignal>

Accumulated signals from all stages.

§scene_features: Vec<SceneFeature>

Scene-level features accumulated from all stages.

§stage_artifacts: TypedMetadata

Typed artifacts from stages — keyed by TypeId, last-writer-wins.

This is the extension seam for arbitrary inter-stage data: feature maps, prepared input tensors, multi-frame windows, calibration metadata, or any domain-specific payload. Downstream stages access stored values via StageContext::artifacts.stage_artifacts.get::<T>().

Implementations§

Source§

impl PerceptionArtifacts

Source

pub fn empty() -> Self

Create empty perception artifacts.

Source

pub fn merge(&mut self, output: StageOutput)

Merge a StageOutput into the accumulator.

Applies the merge semantics documented above.

Trait Implementations§

Source§

impl Clone for PerceptionArtifacts

Source§

fn clone(&self) -> PerceptionArtifacts

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PerceptionArtifacts

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PerceptionArtifacts

Source§

fn default() -> PerceptionArtifacts

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.