An AR headset or phone must know its own position and orientation (6DoF pose) to lock a hologram to a real-world point. Every tracking method estimates that pose from noisy sensors, so the estimate slowly diverges from the true pose — that divergence is what makes a poorly-tracked hologram appear to swim or drift.
IMU (inertial only) — double integration of noisy acceleration:
drift(t) ≈ ½ · a_noise · t² (grows unbounded, quadratic in time)
Visual odometry — feature matching between frames:
drift(t) ≈ k_vo · s(t) (grows linearly with distance travelled s)
SLAM (VO + mapping + loop closure):
drift(t) ≈ k_vo · s(t), reset → 0 when a mapped keyframe is re-observed
- Tracking method — IMU integrates accelerometer/gyroscope data only, so error compounds as t²; Visual Odometry matches camera features frame-to-frame, so error instead grows with distance travelled; SLAM adds a persistent map and recognises revisited places (loop closure), correcting the drift back toward zero.
- Path speed — how fast the simulated device moves along its route; faster motion covers more distance per second, so distance-driven VO/SLAM drift accumulates faster too.
- Sensor noise — scales the underlying IMU/camera noise that feeds every drift model.
- Force loop closure — mimics SLAM recognising the starting room again, instantly resetting accumulated error (only visible in SLAM mode).
The pale ring is the ground-truth path; the bright frustum is the device as the tracker believes it to be. The hologram anchor is rendered at its true world position offset by the tracker's current error — exactly how a real headset would render it, since it only ever knows its own estimated pose.