The physical asset (left rotor + right bearing housing) runs continuous physics every frame: angular speed ω(t), vibration amplitude that grows with ω and with bearing wear, and bearing temperature that integrates frictional heating. The digital twin (translucent ghost, offset behind) never sees this directly — it only receives sensor packets on a timer:
every 1/rate seconds:
packet = trueState + Noise(0, σ) // sensor noise
twin receives packet after `latency` ms // network/processing delay
on receipt:
twinEstimate = (1-α)·twinEstimate + α·packet // exponential smoothing (low-pass filter)
Between packets the twin's displayed rotation keeps spinning at its last known speed (dead-reckoning), so a low sample rate or long latency makes it visibly lag or overshoot the physical rotor. State divergence is the RMS relative error between the twin's estimate and the true physical state (speed + vibration); when it crosses a threshold, or a fault pushes real vibration above the trained-normal band, the twin flags an anomaly — the same principle predictive-maintenance systems use to catch a failing bearing before it seizes.
- Sync sample rate / Latency — how often and how promptly the physical asset's sensors reach the twin. Low rate + high latency ⇒ a twin that is confidently wrong.
- Sensor noise σ — measurement jitter added to every packet before the twin filters it.
- Twin smoothing α — the filter's trust in each new packet (1 = snap to latest reading and stay noisy, near 0 = ignore new data and stay stale).
- Inject Bearing Fault — raises real-world friction and vibration over ~6s, the way a spalled bearing race actually degrades, so you can watch detection lag behind reality.