Sign test v3: a crooked ship is the measurement, not a failure

The tilt abort was circular logic -- it demanded a balanced ship before it
would learn how to balance one. Removed entirely, and the test restructured
so imbalance is handled structurally rather than guarded against:

- Rocking probe: alternate front/aft pushes; sign = rate(+) - rate(-).
  A constant lean appears in both terms and cancels exactly, so no balanced
  baseline is needed. Alternating also keeps the ship rocking around its
  start attitude instead of accumulating tilt. Two agreeing cycles verify.
- New BALANCE phase: with the sign known, an integral loop learns the
  differential trim that actually levels this ship and saves it as the
  pitchTrim warm-start. Not converging is a warning, not a failure.
- maxTiltAbort is now "measurement is good enough, stop pushing" -- it ends
  a measurement early once the window is full, never the test.
- Only three failures remain: no lift, liftoff timeout, no response on any
  gimbal axis.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-23 23:56:20 +02:00
parent d012246d0c
commit 81e558d04e
3 changed files with 101 additions and 57 deletions

View File

@@ -29,10 +29,13 @@ side drives which balloon, pitch sign, hover level) is measured on the ship by
the **setup wizard**, which the install flow takes you straight into:
1. **Wiring** — the wizard pulses each free side; you say which burner fired.
2. **Sign test** — the ship lifts off by itself, finds its own lift power,
pushes the front balloon, verifies the response in both directions
(auto-escalating the push if the response is weak), then descends and holds
hover. No config editing, no freefall. Takes 13 minutes.
2. **Sign test** — the ship lifts off by itself, finds its own lift power, then
*rocks* between front and aft pushes. The sign comes from
`rate(+push) rate(push)`, which cancels any constant lean exactly, so a
ship hanging crooked measures fine — that lean **is** the thing being
measured. It then learns the differential trim that levels the ship, saves
it as a warm-start, and descends to hover. No config editing, no freefall.
Takes 24 minutes.
After that the ship is ready: `FLY` from the menu or `ENGAGE` from the cockpit
console. Pitch and altitude keep self-learning in flight. The wizard can be