One dot.
Held in the room.

Turning left and right moved the dot up and down, which is a ninety degree error — the rotation correction was landing on the wrong axis because the browser's three gyroscope channels were labelled wrongly.

Fitting the pivot geometry could not save it: with two channels swapped, 98 % of the signal survived uncorrected. So the labels are gone. The app now learns the whole rotation‑to‑acceleration map from your own motion, which needs no labels at all and measured 0.00 % residual under every channel permutation.

Turn and tilt the phone for a few seconds after starting — the ring around the centre fills as it learns, and turns green when it has enough.

Rotation rejection
0 %
100 %

Learns online from the raw gyroscope channels — no axis labels, so a mislabelled channel cannot put the correction on the wrong axis. It only learns while you are actually turning the phone; sitting still leaves what it knows untouched. Set Strength to 0 % to see what it is doing.

Drift control
3.0 s
0.80 s
0.40 s

Settled offset from a 0.03 m/s² residual: 10 mm.

60 mm
130 %
0.020 m/s²
Stationary lock
0.12 m/s²
Rotation of the point

World is correct: a point in the room does not roll with you. Screen ignores roll and is easier to read while tuning.

Roll axis: detecting.