Crate: uify-core. I/O-free. Safe on any thread including the audio thread.
Top-level
Sample<G, C>— time-indexed tracker output (value, covariance, confidence, timestamp).Timestamp— host-monotonic nanoseconds.Confidence—[0, 1]clamped.Tracker— trait withGeometry,Covariance,Measurement<'a>,step,reset.stepreturnsTrackerOutput<G, C>=Result<Option<Sample<G, C>>, TrackerError>.TrackerError—Lost/Numerical/Backend.Sink<G, C>— trait withwrite(&mut self, &Sample<G, C>). Decouples trackers from concrete transports. Implemented byOscPoint2DSink,RingbufSink, and any user-defined consumer.TrackerCommon<F: Clone>— shared bookkeeping for trackers wrapping a recursive filter. Holds the filter, an initial-state snapshot forreset, andlast_t. Exposesdt_since(now)andreset().
manifolds::
LieGrouptrait —identity,compose,inverse,exp,log,plus,minus.so2,so3,se2,se3— implemented with right-trivialized exp/log, Taylor cutovers near identity, canonical-hemisphere log. Property tests intests/manifold_identities.rsenforce the four contract identities for every group.sl3— stub, will land when the planar detector pipeline needs it.
See architecture-manifolds for conventions and property-test requirements.
filters::
kalman::KalmanFilter<const N: usize>— classical linear KF, generic over state dim. Measurement dim is method-level:update::<const M: usize>(h, z, r). Joseph form throughout soΣstays SPD.ekf_manifold::Ekf3D— manifold EKF hardcoded to SE(3) for now, with a random-walk process model and a direct-pose measurement model. Joseph form. Generalization toEkfManifold<G, P, M>(process + measurement model traits) is deferred until a second consumer surfaces the right trait shape.rts_smoother— stub. Offline backward pass for batch-mode replays.
pipeline::
Stagetrait — generic stage in a tracker pipeline.Sink<G, C>— see top-level.TrackerCommon<F>— see top-level.