Skip to content

NOTES

Detection — Determine if Structural Damage Exists

Compare current modal parameters against baseline. Outputs damage index [0, 1] and flagged metrics.

Algorithm

Compare three metrics, taking the maximum change across modes:

Thresholds and the combined damage index:

Metric Threshold Physical meaning
Frequency shift > 5% Significant stiffness loss
MAC loss > 15% Significant shape change
Damping change > 100% Significantly increased damping
\[ \text{DI} = \frac{1}{3} \left(\frac{\Delta f_{max}}{15\%} + \frac{MACloss_{max}}{30\%} + \frac{\Delta \zeta_{max}}{300\%}\right) \]

Verdict: DI > 0.5 or >= 2 metrics exceed thresholds → damaged = true

Data Structure

typedef struct {
    bool  damaged;     // damage detected?
    float index;       // damage index [0, 1]
    int   flags;       // bitmask: bit0=freq, bit1=MAC, bit2=damping
} tiny_damage_detect_t;

Design Deep Dive

1. Threshold Selection

The thresholds come from statistical experience with civil structures:

Metric Threshold Rationale False positive
Frequency 5% Normal temperature variation < 3%; 5% excludes environmental drift ~5%
MAC 0.15 loss Typical measurement uncertainty for 5-ch systems ~2%
Damping 100% Damping measurement error ~±30%; doubling confirms change ~10%

2. Damage Index Design

Denominators 15%/30%/300% represent "certain damage" levels for each metric. When one metric reaches certainty: DI ≈ 0.33. Two metrics: DI ≈ 0.67. Three: DI ≈ 1.0.

3. Flags Bitmask

Compact representation: bit 0 = freq, bit 1 = MAC, bit 2 = damping. Enables batch checks like (out->flags >= 2).

4. Edge Computing

All stack-allocated, O(20) float ops, < 1μs. No dynamic allocation. Runs in real-time on ESP32.