Turning by Numbers
A person turns a game camera by feel. Pippa turns it by a stick push of some strength for some milliseconds, and without numbers she could only say "a bit left". Dad's request on 2026-11-08 was units: 15 degrees, 90, 180. So the camera's curve is measured per game and kept as data: a full push of one game turns 260 degrees a second, a half push 28. A full push's full turns (the view coming back to its first frame) give exact degrees a second and the game's scale; slower pushes are read from the sideways shift of the moving pixels and labelled approximate.
A Measurement Is Knowledge, Never a Gate
The first version of this got one thing badly wrong. In Solo run 2 a measurement failed, and the code took that failure as a reason to refuse play_camera for the whole session. Pippa, unable to turn the camera, steered with sideways headings instead, and swung the view around one big tree for ten minutes. Dad's correction (Coop 1109-19): he had meant that Pippa should be able to calibrate the sensitivity herself, and instead the code had blocked something.
The rule since then: a measurement is knowledge, never a gate. Calibration runs in code with no brain at an unattended session's first run, when the solo_calibrate setting is on and the game's curve is missing or old: the stick is held at the plan's pushes, every push is read from the frames, kept per game, written into the notebook as seen, and the camera is turned back after each. A push that cannot be read is kept as a failure with its reason. The run starts either way.
The Push That Speeds Up
Measuring well also means finding what the first measurement assumed. A turn was planned as degrees divided by the push's kept rate, as if the camera reached that rate the instant the stick moved. Followed frame by frame on the far field, a full push actually starts at about 125 degrees a second and reaches 260 only 0.57 s in:
| Push | Planned | Turned |
|---|---|---|
| 288 ms | 75° | 48° |
| 346 ms (five pushes) | 90° | 54° to 58° |
| 577 ms (two pushes) | 150° | 111° |
Worse, the hands' own count of her turns used the same plan, so it said 90 where the view had turned 57. Her heading was 33 degrees off after one turn, and no count of her own could have told her, because the count and the plan shared the error. A measured push now carries its ramp (start_deg_per_s, full_after_s), and one curve is read both ways: how far a push turns, and how long to push for a turn. A 90-degree turn is now held for 491 ms, not 346.
Counting Turns Drifts. Looking at the Sky Does Not.
Even with the ramp right, a heading built by adding up how far the view turned is good for seconds, not for a walk. On a 14-minute recording, a bearing carried by turns alone was 1 degree off after 7 seconds, and 60 to 84 degrees off after 45 seconds of walking and 170 degrees of turning. The reason is geometry: a third-person camera circles the player, so near ground moves less on the picture than far ground does, and walking moves the near scene sideways in a way that reads as turning.
Dad's design (2026-11-11): a person finds their bearing by the far mountains. Whatever is far enough (sky, clouds that stand still, distant peaks) looks the same from anywhere in a place. So the far field is kept once as a panorama by heading and elevation, and each frame is found in it: where it is found is the heading. Nothing is added up, so a walk, a hit or a camera reset costs nothing. A view is cut into blocks that vote on their own; blocks seeing the far field agree, blocks seeing something near agree with nobody, and if not enough agree, the view is unread, never guessed. The sky held still to 0.1 degrees between two days' recordings, and a live read took 23 ms.
One Wrong Number Spreads
The camera's focal length (how wide the view is) decides how many degrees a pixel is. Its first value, 0.65 of the frame's width, was read off the fastest steps of a 577 ms push against the game's 260 degrees a second. That push had not reached its rate, the same ramp that broke the turn plan. Every angle read before the correction was 7 percent too large. The fix measured it a way that needs no rate at all: a slow turn on the spot until the same heading came back, which happens at exactly 360 degrees. The answer is 0.70, which means 71 degrees across. When one measurement depends on another, an error in the first one quietly spreads into the second. The best fix is a measurement that does not rely on the first one at all.