mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-22 18:21:16 +00:00
[AZ-776] Open-loop ESKF composition profile via c4_pose.enabled
ADR-012: add c4_pose.enabled (default True) and enforce the (c4_pose.enabled, c5_state.strategy) 2x2 pairing matrix at compose time. When enabled=false, compose_root removes c4_pose from the selection map and build_pre_constructed omits c5_isam2_graph_handle. Replay protocol Invariant 13 owns the gate. Tier-2 conftest YAML writes the open-loop profile; un-xfails AC-1/2/5 and both AC-6 variants in Derkachi (AC-3 stays xfailed for AZ-777). 319/319 runtime_root + c4_pose + c5_state tests green. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -136,24 +136,28 @@ def derkachi_replay_inputs(tmp_path_factory: pytest.TempPathFactory) -> Derkachi
|
||||
# treats each top-level mapping as a block whose key is a
|
||||
# registry slug; nesting the slugs under a `components:`
|
||||
# wrapper makes the loader silently drop them (the wrapper
|
||||
# is not a registered slug). See `_docs/_repo` notes on the
|
||||
# ESKF compose-time blocker (AZ-776) for why this matters.
|
||||
# is not a registered slug).
|
||||
#
|
||||
# KLT/RANSAC + ESKF is the minimal pair that runs without
|
||||
# native deps (cv2 + numpy only). The CLI currently exits
|
||||
# non-zero at compose time for this configuration: c4_pose
|
||||
# hard-requires an iSAM2 graph handle that ESKF does not
|
||||
# provide (handle=None by design). AZ-776 tracks the fix.
|
||||
# Until AZ-776 lands, every heavy AC test in
|
||||
# `test_derkachi_1min.py` is xfailed with that ticket in
|
||||
# the reason. C2/C3/C4 satellite anchoring additionally
|
||||
# require AZ-777 (Derkachi C6 reference tile cache).
|
||||
# Open-loop ESKF composition profile (AZ-776 / ADR-012):
|
||||
# `c4_pose.enabled = false` strips C4 from the composition
|
||||
# graph so the airborne binary can run the mandatory simple
|
||||
# baseline (KLT/RANSAC VIO + ESKF state estimator) end-to-end
|
||||
# without a C4 anchor. ESKF has no iSAM2 graph for C4 to
|
||||
# anchor against; the `compose_root` validation gate rejects
|
||||
# the off-diagonal pairings (`enabled=False` + `gtsam_isam2`
|
||||
# or `enabled=True` + `eskf`) with a `CompositionError`.
|
||||
# Position drifts open-loop without C2/C3/C4 satellite
|
||||
# re-anchoring — AZ-777 (Derkachi C6 reference tile cache)
|
||||
# is the follow-up that closes the satellite-anchoring half
|
||||
# of the per-frame loop.
|
||||
"mode: replay\n"
|
||||
"replay:\n"
|
||||
" pace: asap\n"
|
||||
" target_fc_dialect: ardupilot_plane\n"
|
||||
"c1_vio:\n"
|
||||
" strategy: klt_ransac\n"
|
||||
"c4_pose:\n"
|
||||
" enabled: false\n"
|
||||
"c5_state:\n"
|
||||
" strategy: eskf\n"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user