How wingg001/ps26168 works
PS26168 is a smartphone-based dead-reckoning and GNSS/INS fusion system for vehicle navigation during degraded or absent GNSS. Its main workflow loads and prepares phone/vehicle recordings, runs the Phase 3 estimator to produce a trajectory, then optionally snaps that trajectory to a road network. README capabilities include inertial mechanization, UKF fusion, motion constraints, GNSS health/adaptive noise, and HMM map matching. Some estimator wiring is supported by the runner excerpt and SOURCE INDEX; unsampled integration details are not inferred.
Main entry points: run_phase3.py Phase 3 estimator · pipeline.py Phase 1 preparation · map_match.py Nearest-edge matching · loaders.py CSV loading
Components 19
Data preparation
- Phase 1 preparation
src/phase1/pipeline.py - CSV loading
src/phase1/loaders.py - Schema utilities
src/phase1/schema_utils.py - Time alignment
src/phase1/time_alignment.py - Static calibration
src/phase1/calibration.py - Frame alignment
src/phase1/alignment.py
Navigation estimation
- Phase 3 estimator
src/eval/run_phase3.py - INS mechanization
src/filters/mechanization.py - Coordinate transforms
src/filters/coordinates.py - 15-state UKF
src/filters/ukf.py - Motion constraints
src/filters/constraints.py - CNN speed model
models - Estimated trajectory
GNSS quality
- GNSS noise calibration
src/calibration/gnss_noise.py - GNSS health manager
src/filters/gnss_deficit.py
Road matching
- Road graph
src/maps/road_graph.py - Nearest-edge matching
src/maps/map_match.py - HMM matching
src/maps/hmm_match.py
Other components
- Phone and vehicle data
Connections 20
- Phone and vehicle data → Phase 1 preparation: loads recordings
src/phase1/pipeline.py - Phase 1 preparation → CSV loading: loads CSVs
src/phase1/pipeline.py - CSV loading → Schema utilities: uses schema
src/phase1/loaders.py - Phase 1 preparation → Time alignment: aligns clocks
src/phase1/pipeline.py - Phase 1 preparation → Static calibration: calibrates sensors
src/phase1/pipeline.py - Phase 1 preparation → Frame alignment: aligns frames
src/phase1/pipeline.py - Phase 1 preparation → Phase 3 estimator: provides prepared data
- Phase 3 estimator → Time alignment: uses alignment
src/eval/run_phase3.py - Phase 3 estimator → Coordinate transforms: transforms positions
src/eval/run_phase3.py - Phase 3 estimator → INS mechanization: propagates state
src/eval/run_phase3.py - Phase 3 estimator → 15-state UKF: updates filter
src/eval/run_phase3.py - Phase 3 estimator → Motion constraints: applies constraints
src/eval/run_phase3.py - Phase 3 estimator → GNSS noise calibration: calibrates GNSS noise
src/eval/run_phase3.py - Phase 3 estimator → GNSS health manager: tracks signal health
src/eval/run_phase3.py - Phase 3 estimator → CNN speed model: uses speed estimate
README.md - Phase 3 estimator → Estimated trajectory: produces trajectory
README.md - Estimated trajectory → Nearest-edge matching: matches positions
README.md - Nearest-edge matching → Road graph: queries edges
src/maps/map_match.py - HMM matching → Nearest-edge matching: uses candidates
src/maps/hmm_match.py - Estimated trajectory → HMM matching: decodes path
README.md