Skip to main content

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
noneHEALTHY
vibration + temperatureBEARING_WEAR
current (vibration normal)ELECTRICAL_FAULT
all threeMECHANICAL_OVERLOAD
a single modalityUNCORROBORATED (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

Questions about this page? Discuss in Community Forum