❓ Q&A 25.1 — SensorFusion #568
Unanswered
web3guru888
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
❓ Frequently Asked Questions — SensorFusion (Phase 25.1)
Reference spec: #562 | Architecture: #567
Q1: Why EKF over UKF or particle filter?
A: The Extended Kalman Filter provides an excellent balance of computational efficiency and accuracy for mildly nonlinear systems. For sensor fusion in embodied cognition:
The
SensorFusionConfig.filter_typefield allows switching between backends. For most embodied scenarios the EKF is the right default. The Protocol interface (SensorFusion.fuse()) is filter-agnostic so swapping is transparent.Q2: How does multi-rate fusion handle different sensor frequencies?
A: Three mechanisms:
The temporal alignment layer timestamps every reading with monotonic nanosecond precision and aligns them to a common timeline before feeding the EKF.
Q3: What happens when a sensor goes offline?
A: Graceful degradation:
config.timeout_mswith no readings, the sensor is markedSTALEFusedState.confidenceis scaled down proportionally to the fraction of active sensorsDEAD_RECKONINGmode (predict-only) and emits a Prometheus alertRecovery is automatic — when readings resume, the sensor is re-registered and the next update incorporates its observation.
Q4: How is the Mahalanobis distance threshold chosen?
A: The threshold comes from the χ² distribution with degrees of freedom equal to the observation dimension:
For example, with α = 0.01 (99% confidence) and dim = 3 (3D position):
Any reading with Mahalanobis distance above this is rejected as an outlier. The α parameter is configurable via
SensorFusionConfig.gate_alpha.This is a standard technique in target tracking (Bar-Shalom & Li 1995) — it rejects spurious readings while accepting the natural spread of sensor noise.
Q5: How does calibration work?
A: The
calibrate(sensor_id, n_samples)method:n_samplesraw readings from the specified sensorR_calibrated = empirical_covariancez_corrected = z_raw - biasCalibration should be run at startup or when sensor characteristics change (e.g., temperature drift). The
NullSensorFusionimplementation skips calibration entirely.Q6: Can new sensor modalities be added at runtime?
A: Yes. The
register_sensor(sensor_id, modality, config)method:The
SensorModalityenum can be extended without breaking existing registrations. The LiveModuleOrchestrator (Phase 15) can trigger sensor registration/deregistration as modules are hot-swapped.Q7: How does SensorFusion integrate with WorldModel?
A: The integration path:
The
FusedState.covariancematrix is particularly valuable for the WorldModel — it provides calibrated uncertainty that feeds into downstream decision-making (Phase 23 DecisionTreeSolver).Have more questions? Comment below!
Beta Was this translation helpful? Give feedback.
All reactions