fix(harness): switch VO backend to ORBVisualOdometry

SequentialVisualOdometry uses MockInferenceEngine (random keypoints) in
dev/CI, so RANSAC on random point pairs finds ≈0 geometric inliers and
vo_success is always False. ORBVisualOdometry uses real OpenCV ORB
features and achieves 99/100 tracking on EuRoC MH_01.

ESKF still never initialises (no start_gps call in harness) — that is
the next layer to address.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Yuzviak
2026-04-18 14:38:26 +03:00
committed by Maksym Yuzviak
parent c9bd45a098
commit 1ed7729fc2
2 changed files with 7 additions and 6 deletions
+2 -2
View File
@@ -29,7 +29,7 @@ from gps_denied.core.metric import MetricRefinement
from gps_denied.core.models import ModelManager
from gps_denied.core.processor import FlightProcessor
from gps_denied.core.recovery import FailureRecoveryCoordinator
from gps_denied.core.vo import SequentialVisualOdometry
from gps_denied.core.vo import ORBVisualOdometry
from gps_denied.schemas.graph import FactorGraphConfig
from gps_denied.testing.datasets.base import (
DatasetAdapter,
@@ -175,7 +175,7 @@ class E2EHarness:
streamer.push_event = AsyncMock()
proc = FlightProcessor(repo, streamer)
mm = ModelManager()
vo = SequentialVisualOdometry(mm)
vo = ORBVisualOdometry()
gpr = GlobalPlaceRecognition(mm)
gpr.load_index(self._flight_id, "dummy")
metric = MetricRefinement(mm)