mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-22 13:31:14 +00:00
f67c5f3cd0
- schemas/eskf.py: keep ConfidenceTier + ESKFConfig; re-export IMUSample and ESKFState from hot_types (define ConfidenceTier BEFORE the hot_types imports to avoid circular import — eskf_state.py imports ConfidenceTier from this module). Legacy alias IMUMeasurement = IMUSample. - schemas/vo.py: re-export Features, Matches, RelativePose, Motion, VOEstimate from hot_types.vo_estimate. - schemas/satellite.py: re-export TileCoords, TileBounds, SatelliteAnchor. - schemas/metric.py: keep LiteSAMConfig; re-export AlignmentResult, ChunkAlignmentResult, Sim3Transform. - schemas/rotation.py: keep HeadingHistory + RotationConfig; re-export RotationResult. Auto-fixes (Rules 1 + 3) needed to keep the 216-test floor green: - core/rotation.py: refactor try_rotation_steps to use dataclasses.replace instead of attribute assignment on RotationResult (Rule 1 — frozen dataclass forbids mutation; Pydantic silently allowed it). PATTERNS.md §6.1 already flagged Pose mutation but missed this site. - hot_types/vo_estimate.py: add Optional `covariance: np.ndarray` field to RelativePose (Rule 3 — five test sites construct RelativePose with `covariance=np.eye(6)`; Pydantic v2 silently accepted the extra kwarg via default `extra="ignore"`. Declaring the field preserves the construction contract under the dataclass migration without editing tests). Verification: pytest tests/ -q --ignore=tests/e2e → 216 passed, 8 skipped (matches baseline). Accuracy bench (23 tests) passes.
33 lines
825 B
Python
33 lines
825 B
Python
"""Metric Refinement schemas (Component F09).
|
|
|
|
Phase 1 shim — hot-path types `AlignmentResult`, `ChunkAlignmentResult`,
|
|
`Sim3Transform` live in `gps_denied.hot_types.alignment_result`.
|
|
`LiteSAMConfig` (config) stays here as a Pydantic boundary type.
|
|
"""
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from gps_denied.hot_types.alignment_result import ( # noqa: F401
|
|
AlignmentResult,
|
|
ChunkAlignmentResult,
|
|
Sim3Transform,
|
|
)
|
|
|
|
|
|
class LiteSAMConfig(BaseModel):
|
|
"""Configuration for LiteSAM alignment."""
|
|
model_path: str = "mock_path"
|
|
confidence_threshold: float = 0.7
|
|
min_inliers: int = 15
|
|
max_reprojection_error: float = 2.0 # pixels
|
|
multi_scale_levels: int = 3
|
|
chunk_min_inliers: int = 30
|
|
|
|
|
|
__all__ = [
|
|
"AlignmentResult",
|
|
"ChunkAlignmentResult",
|
|
"LiteSAMConfig",
|
|
"Sim3Transform",
|
|
]
|