mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-04-23 04:26:36 +00:00
test(e2e): parametrised ESKF drift tests across all 5 EuRoC MH sequences
conftest.py: add euroc_mh02..05_root fixtures (session-scoped, skip when absent) test_euroc_mh_all.py: 10 parametrised tests — pipeline_completes + eskf_drift for MH_01..05 with per-difficulty ESKF ATE ceilings (easy: 0.5 m, med/hard: 1.5 m) Results on first 100 frames (vo_scale=5 mm/frame): MH_01 easy ESKF ATE 0.205 m (< 0.5 m ceiling) MH_02 easy ESKF ATE 0.131 m (< 0.5 m ceiling) MH_03 medium ESKF ATE 0.008 m (< 1.5 m ceiling) MH_04 difficult ESKF ATE 0.009 m (< 1.5 m ceiling) MH_05 difficult ESKF ATE 0.007 m (< 1.5 m ceiling) All 10 tests PASS. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+30
-5
@@ -8,19 +8,44 @@ REPO_ROOT = Path(__file__).resolve().parents[2]
|
||||
DATASETS_ROOT = REPO_ROOT / "datasets"
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def euroc_mh01_root() -> Path:
|
||||
root = DATASETS_ROOT / "euroc" / "MH_01"
|
||||
def _euroc_mh_root(seq: str) -> Path:
|
||||
"""Return path for a MH sequence, skipping if absent."""
|
||||
root = DATASETS_ROOT / "euroc" / seq
|
||||
if not (root / "mav0").is_dir():
|
||||
pytest.skip(
|
||||
f"EuRoC MH_01 not present at {root}. "
|
||||
f"EuRoC {seq} not present at {root}. "
|
||||
"Fetch the Machine Hall bundle from ETH Research Collection "
|
||||
"(DOI 10.3929/ethz-b-000690084), unpack the inner MH_01_easy.zip "
|
||||
f"(DOI 10.3929/ethz-b-000690084), unpack the inner {seq}_*.zip "
|
||||
f"into {root}/ so that {root}/mav0/ exists."
|
||||
)
|
||||
return root
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def euroc_mh01_root() -> Path:
|
||||
return _euroc_mh_root("MH_01")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def euroc_mh02_root() -> Path:
|
||||
return _euroc_mh_root("MH_02")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def euroc_mh03_root() -> Path:
|
||||
return _euroc_mh_root("MH_03")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def euroc_mh04_root() -> Path:
|
||||
return _euroc_mh_root("MH_04")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def euroc_mh05_root() -> Path:
|
||||
return _euroc_mh_root("MH_05")
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
def vpair_sample_root() -> Path:
|
||||
root = DATASETS_ROOT / "vpair" / "sample"
|
||||
|
||||
Reference in New Issue
Block a user