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 |
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.