From 2ccd7be6fb78d3c331eb226e037d6d68793c5e44 Mon Sep 17 00:00:00 2001 From: Yuzviak Date: Sat, 18 Apr 2026 14:42:00 +0300 Subject: [PATCH] docs: record 2026-04-18 session findings across all doc surfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - next_steps.md: chronology entry for PRs #4-6 — trace harness, VO-only diagnostic (ORB 100% on EuRoC), harness ORB fix (vo_success 0→99/100); decision note on Mock vs ORB backend; next-step: ESKF init with synthetic GPS origin - README.md adapters table: update EuRoC status to reflect new vo_success baseline Co-Authored-By: Claude Opus 4.7 (1M context) --- next_steps.md | 6 ++++++ src/gps_denied/testing/README.md | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/next_steps.md b/next_steps.md index acd7ba8..6e5fb53 100644 --- a/next_steps.md +++ b/next_steps.md @@ -95,3 +95,9 @@ - **2026-04-16 день**: Реалізовано e2e-харнес з `DatasetAdapter` pattern. 12 комітів у stage1 (`a2620ae` → `0062323`), пушнуто. 233 passed, 13 skipped. - **2026-04-16 вечір**: Спробували скачати EuRoC MH_01 — старий URL лежить, знайшли новий DOI (12 GB bundle, завтра). Переключились на VPAIR (вже скачаний). Реальний формат відрізняється від припущеного: ECEF+Euler+no timestamps. Написали `coord.py` (ECEF→WGS84 Heikkinen + Euler→quat), переписали `VPAIRAdapter`. Гілка `feat/e2e-vpair`, 5 комітів. Перший реальний прогін: ATE ~1770 км (очікувано, задокументовано в xfail). - **2026-04-17**: Завантажили 12.6 GB `machine_hall.zip`, витягли `MH_01` (2.6 GB). Додали `max_frames` у `E2EHarness` (TDD, 3 нових тести). Перший реальний прогін EuRoC MH_01 на 100 кадрах: пайплайн завершується за ~30 с, **ATE RMSE ~10.87 км → xfail**. Registry entry перейменовано `euroc_mh01` → `euroc_machine_hall` з реальним SHA256 `5ed7d07…`; URL порожній (ETH Research Collection не дає direct link, ручне завантаження). Гілка `feat/e2e-euroc`. +- **2026-04-18**: Три PR підряд у stage1: + - **PR #4** `feat/e2e-trace` — додали per-frame JSONL трасування в `E2EHarness` (`trace_path` параметр). Запустили EuRoC MH_01 з трасуванням: виявлено `vo_success=0/100`, `eskf_initialized=0/100`, `alignment_success=77/100`. Всі оцінки — fallback satellite matching без ESKF/VO. + - **PR #5** `feat/e2e-vo-only` — ORB VO-only діагностика. Запустили `ORBVisualOdometry` напряму на EuRoC кадрах: **99/99 tracking rate (100%)**. Висновок: проблема була не в VO-алгоритмі, а в тому що `SequentialVisualOdometry` (Mock random keypoints → RANSAC failure) використовувалась у харнесі. + - **PR #6** `feat/e2e-harness-orb-vo` — замінили VO-бекенд у `_build_processor` з `SequentialVisualOdometry(ModelManager())` на `ORBVisualOdometry()`. Новий результат: `vo_success=99/100`. Залишилась проблема: `eskf_initialized=0/100` — ESKF потребує `init_flight()` зі start_gps, харнес цього не робить. + - [decision 2026-04-18: VO-бекенд у харнесі має бути `ORBVisualOdometry` (реальні OpenCV фічі), а не Mock SP+LG (random keypoints). Для Jetson-production cuVSLAM залишається метою — але харнес валідує pipeline логіку незалежно від бекенду.] + - **Наступний крок**: ініціалізувати ESKF у харнесі з синтетичним GPS-origin (середня координата GT або перша GT-поза). Це увімкне ESKF-шлях і дасть змогу виміряти реальний VO+ESKF дрейф без satellite fallback. diff --git a/src/gps_denied/testing/README.md b/src/gps_denied/testing/README.md index 32d8a55..065d26c 100644 --- a/src/gps_denied/testing/README.md +++ b/src/gps_denied/testing/README.md @@ -109,7 +109,7 @@ Markers (`e2e`, `e2e_slow`, `needs_dataset`) are registered in `pyproject.toml`. | Adapter | Platform | Raw IMU | GT | Real-run status | |---|---|---|---|---| | `SyntheticAdapter` | — | yes (zero motion) | exact | smoke test only, always runs | -| `EuRoCAdapter` | indoor MAV | 200 Hz ADIS16448 | Vicon | ran on first 100 frames — ATE ~10.9 km, xfail documented; VO+ESKF active but no satellite anchoring for indoor scene | +| `EuRoCAdapter` | indoor MAV | 200 Hz ADIS16448 | Vicon | ran on first 100 frames — vo_success 99/100 (ORB), ESKF not yet init'd in harness (no start_gps), ATE xfail documented | | `VPAIRAdapter` | fixed-wing light aircraft | no (pose-only) | GNSS/INS ~1 m | ran once — ATE ~1770 km, xfail documented; VO alone diverges without anchoring | | `MARSLVIGAdapter` | rotary (DJI M300 RTK) | yes | RTK | pending (requires pre-extracted ROS bag) |