multimodal-fusion-pdm
:::warning [UNTESTED] — v0.9 paper-correct
The fusion_health core is host-unit-tested on native_sim/native/64; the full app runs end-to-end on native_sim with synthetic per-modality data covering every scenario. No model ships (stub + deterministic fusion-rule fallback). HiL with the three real sensors + a trained model is bench-gated.
:::
A multi-sensor motor-health monitor that fuses vibration (ICM-42670), current (INA236), and temperature (BME280) into one fault hypothesis plus a confidence-weighted health score via cross-modal corroboration.
Source: examples/ai/multimodal-fusion-pdm/.
Why fusion
A real fault corroborates across modalities — bearing wear raises vibration AND temperature; an overload raises all three. An isolated single-modality blip (a sensor knock, a transient) does not corroborate, so it is flagged UNCORROBORATED at low confidence instead of crying wolf.
| Pattern (vibration / current / temperature anomalous) | Hypothesis |
|---|---|
| none | HEALTHY |
| vibration + temperature | BEARING_WEAR |
| current (vibration normal) | ELECTRICAL_FAULT |
| all three | MECHANICAL_OVERLOAD |
| a single modality | UNCORROBORATED (low confidence) |
Pipeline
ICM-42670 + INA236 + BME280 --summary--> fusion_health (sub-scores ->
corroboration -> hypothesis + health) -> <alp/inference.h> fused model
(deterministic fusion-rule fallback) -> FUSE record
board.yaml
som:
sku: E1M-AEN701
preset: e1m-evk
supported_boards:
- e1m-evk
- e1m-x-evk
pins:
- { e1m: E1M_I2C0, macro: EVK_I2C_BUS_SENSORS, doc: "ICM-42670 + INA236 + BME280 shared bus" }
cores:
a32_cluster:
os: "off"
m55_hp:
app: ./src
inference:
default_arena_kib: 64
libraries:
- tflite_micro
peripherals:
- i2c # all three sensors
chips:
- icm42670 # vibration (accel)
- ina236 # current/voltage/power
- bme280 # temperature/humidity/pressure
diagnostics:
log_level: info
Flip som.sku to E1M-V2M101 for the DEEPX DX-M1 path.
Expected output
# FUSE,t_s,hypothesis,health,vib,cur,temp,corroboration
FUSE,2.0,BEARING_WEAR,1.00,3.0,0.0,3.0,2
FUSE,5.0,UNCORROBORATED,0.50,3.0,0.0,0.0,1
See also
<alp/inference.h>·<alp/chips.h>motor-current-signature— the electrical modality standaloneai-anomaly-detection-vibration— the vibration modality standalone- Examples overview