ReviewOS

also looking at this

stacks/drone

feat: correlate VTOL hover mode observations

#77
Merged chris wants to merge codex/owned-vtol-transitions into main
10 files +507 -28
docs/vehicles-vtol.mdmodified+16-3
Changes to docs/vehicles-vtol.md
@@ -37,7 +37,9 @@ The hover demonstration commands the pusher and three surfaces to zero. Calibrat
3737IMU/GNSS samples feed the owned estimator. The controller receives estimated pose, a current qualified
3838raw gyro capture and delayed contact measurements. Plant truth is used for sensor synthesis and
3939independent evaluation, never as controller input. Initial north heading and a flat contact plane
40are declared simulation assumptions. Landing uses a 0.1 m below-plane target to obtain finite
40are declared simulation assumptions. A fictional skid friction coefficient of 0.5 supplies bounded
41horizontal braking from normal support at contact. It does not model impact impulses, gear deformation,
42tipping, damage or uneven terrain. Airborne motion receives no contact friction. Landing uses a 0.1 m below-plane target to obtain finite
4143contact; mission completion still requires estimated arrival, low speed, settling and fresh contact.
4244
4345Contact and paused-ground neutral decisions occur after estimator/rate validation. A stale gyro
@@ -51,10 +53,21 @@ fictional hover experiment. They are not identified electrical power, measured e
5153complete hybrid energy model. Neutral outputs during an airborne fault do not establish a safe
5254emergency landing. Physical flight commands remain disabled.
5355
56## Explicit hover observation in library plans
57
58Library plans can declare a VTOL-only `vtol-mode` task with `mode: 'hover'`, an explicit heading
59and a finite timeout. The held position must equal the request position. The mission emits a task, reference and epoch-bound request. The hover adapter
60requires fresh post-request contact, estimated pose and raw gyro sources, with a 200 ms stability
61dwell on both the monotonic decision clock and source coverage. It reports the oldest source capture epoch. The shared runtime delivers each controller
62response once on the next mission tick and retains it for replay. Initial contact holds all outputs
63neutral until observation is qualified. Unobserved headings expire, and this hover adapter reports
64cruise requests as aborted. This is a library prerequisite, not front/back transition control or a
65new CLI scenario. Existing hover-only recordings keep their prior shapes.
66
5467## Remaining implementation
5568
56[Issue #12](https://github.com/stacksjs/drone/issues/12) remains open for explicit correlated
57transition requests and observed outcomes, front/cruise/back control, airspeed and attitude
69[Issue #12](https://github.com/stacksjs/drone/issues/12) remains open for full correlated front/back
70transition control and observed outcomes, airspeed and attitude
5871qualification, bounded transition abort/recovery, complete hybrid power/reserve accounting and
5972the common mission workspace. Full TECS/soaring, tiltrotor/tailsitter mechanisms, helicopters and
6073other airframe families remain separate work. Native board control, measured airframe identification,