ADR-026 documents the design decision to add a tracking bounded context to wifi-densepose-mat to address three gaps: no Kalman filter, no CSI fingerprint re-ID across temporal gaps, and no explicit track lifecycle state machine. Changes: - docs/adr/ADR-026-survivor-track-lifecycle.md — full design record - domain/events.rs — TrackingEvent enum (Born/Lost/Reidentified/Terminated/Rescued) with DomainEvent::Tracking variant and timestamp/event_type impls - tracking/mod.rs — module root with re-exports - tracking/kalman.rs — constant-velocity 3-D Kalman filter (predict/update/gate) - tracking/lifecycle.rs — TrackState, TrackLifecycle, TrackerConfig Remaining (in progress): fingerprint.rs, tracker.rs, lib.rs integration https://claude.ai/code/session_0164UZu6rG6gA15HmVyLZAmU
33 lines
1.1 KiB
Rust
33 lines
1.1 KiB
Rust
//! Survivor track lifecycle management for the MAT crate.
|
|
//!
|
|
//! Implements three collaborating components:
|
|
//!
|
|
//! - **[`KalmanState`]** — constant-velocity 3-D position filter
|
|
//! - **[`CsiFingerprint`]** — biometric re-identification across signal gaps
|
|
//! - **[`TrackLifecycle`]** — state machine (Tentative→Active→Lost→Terminated)
|
|
//! - **[`SurvivorTracker`]** — aggregate root orchestrating all three
|
|
//!
|
|
//! # Example
|
|
//!
|
|
//! ```rust,no_run
|
|
//! use wifi_densepose_mat::tracking::{SurvivorTracker, TrackerConfig, DetectionObservation};
|
|
//!
|
|
//! let mut tracker = SurvivorTracker::with_defaults();
|
|
//! let observations = vec![]; // DetectionObservation instances from sensing pipeline
|
|
//! let result = tracker.update(observations, 0.5); // dt = 0.5s (2 Hz)
|
|
//! println!("Active survivors: {}", tracker.active_count());
|
|
//! ```
|
|
|
|
pub mod kalman;
|
|
pub mod fingerprint;
|
|
pub mod lifecycle;
|
|
pub mod tracker;
|
|
|
|
pub use kalman::KalmanState;
|
|
pub use fingerprint::CsiFingerprint;
|
|
pub use lifecycle::{TrackState, TrackLifecycle, TrackerConfig};
|
|
pub use tracker::{
|
|
TrackId, TrackedSurvivor, SurvivorTracker,
|
|
DetectionObservation, AssociationResult,
|
|
};
|