Files
Robin Anderson 5f694c5d9b Read poses at 100 Hz while both controllers are still
A knock needs the controller to move first. While every tracked
controller stays under 0.1 m/s, the pose thread reads every 10 ms. The
first read that sees a controller faster than that switches back to
1 kHz, which holds for 0.5 s after the last movement.

KNOCKTHRU_TEST_RATE now takes moving_speed, hold_s, still_ms, and
idle_ms for sweeps. Every recording gives the same actions as the 1 kHz
replay, calibration included. Margins from the sweep:

- still_ms 20 and 30 give the same result.
- moving_speed 0.2 with hold_s 0.5 gives the same result.
- moving_speed 0.3 with hold_s 0.5 loses one headset double.
- moving_speed 0.3 with hold_s 0.3 gives a wrong action in mixed.

Reads in the recordings, which are knock sessions with little rest,
drop from 414,710 to 378,881 (9%). straps and leg-doubles drop 20%.
play and noise do not change.

scripts/measure.sh 60 on the Frame in standby, twice: 0.23-0.28% CPU
and 70 wakeups/s for the whole app, the same as before this change. The
still rate only applies with a controller on, which needs the headset
worn, so the Frame has no measurement of it yet.
2026-10-24 22:42:10 -04:00
..
2026-10-17 10:21:38 -04:00
2026-10-17 10:21:38 -04:00

KnockThru docs

These pages explain how KnockThru works on the inside. To install and use it, read the main README instead.

Every number in these pages comes from the code or from the test recordings. If you change a threshold, update the page that explains it.