ai-anomaly-detection-vibration
:::warning [UNTESTED] — v0.5 paper-correct
Compiles on native_sim/native/64 + cross-compiles to ensemble_e8_dk/ae402fa0e5597le0/rtss_hp. HiL bring-up with a real motor / pump and a customer-trained model is v0.6 work.
:::
Predictive-maintenance edge-AI on the E1M-AEN module: read a sliding window of vibration data from the EVK-populated ICM-42670 accelerometer, feed it through a 1D-CNN anomaly model via TFLite Micro, publish a per-window anomaly score.
Source: examples/ai/ai-anomaly-detection-vibration/.
Why this matters
Factory-floor vibration monitoring without a cloud round-trip — bearing-signature drift gets flagged before a motor / pump / spindle fails. The model learns the baseline at commissioning; departures from that baseline score above a threshold.
Window statistics
The per-window RMS and absolute peak come from one <alp/dsp.h> call rather than hand-written loops:
alp_dsp_stats_t st;
if (alp_dsp_stats_f32(win, n, &st) != ALP_OK || st.rms <= 0.0f) {
/* ... */
}
alp_dsp_stats_f32() runs CMSIS-DSP arm_rms_f32 / arm_absmax_f32 on the M55 and portable C elsewhere. This example uses the stats surface only — it opens no FFT chain.
board.yaml
libraries:
- name: tflite-micro
cores: [m55_hp]
- name: cmsis-dsp
cores: [m55_hp]
som:
sku: E1M-AEN801
preset: e1m-evk
supported_boards:
- e1m-evk
- e1m-x-evk
pins:
- { e1m: E1M_I2C0, macro: EVK_I2C_BUS_SENSORS, doc: "Shared sensor + IO-expander + INA236 bus" }
cores:
a32_cluster:
os: "off"
m55_hp:
app: ./src
inference:
default_arena_kib: 128
peripherals:
- i2c
chips:
- icm42670
diagnostics:
log_level: info
See also
<alp/inference.h>·<alp/dsp.h><alp/chips/icm42670.h>multimodal-fusion-pdm— fuses this vibration signal with current + temperature- Examples overview