feat(01-03): move ORB + SequentialVO into components/vio/orbslam_backend.py

- Extract SequentialVisualOdometry and ORBVisualOdometry from core/vo.py
  into a dedicated pure-Python OpenCV backend module.
- Module deliberately does NOT import cuvslam — keeps optional-SDK
  isolation from the cuvslam backend (Plan 01-03 Task 1).
- Both classes inherit from the components.vio.protocol.ISequentialVisualOdometry
  Protocol alias (Plan 01-02 surface).
- Barrel-export both classes from components/vio/__init__.py.
- core/vo.py is unchanged in this commit; the shim wires up in Task 4.
This commit is contained in:
Yuzviak
2026-05-10 22:59:03 +03:00
parent e13df36c9a
commit d9895acb77
2 changed files with 289 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
"""VIO component (ARCH-01).
Public surface for visual-inertial odometry adapters. Phase-1 split of
the legacy ``core/vo.py`` monolith into per-backend modules:
- protocol.py — VisualOdometry Protocol (alias ISequentialVisualOdometry)
- orbslam_backend.py — pure-Python OpenCV: SequentialVisualOdometry + ORBVisualOdometry
- cuvslam_backend.py — Jetson cuVSLAM SDK bridge: CuVSLAMVisualOdometry + CuVSLAMMonoDepthVisualOdometry
- factory.py — create_vo_backend env-aware DI seed
- native/ — placeholder for future cuvslam SDK native glue
The legacy ``gps_denied.core.vo`` import path is preserved as a thin
re-export shim for one phase; tests still import from there.
"""
from gps_denied.components.vio.protocol import (
ISequentialVisualOdometry,
VisualOdometry,
)
from gps_denied.components.vio.orbslam_backend import (
ORBVisualOdometry,
SequentialVisualOdometry,
)
__all__ = [
"VisualOdometry",
"ISequentialVisualOdometry",
"ORBVisualOdometry",
"SequentialVisualOdometry",
]