How dsgaming98/sih26168-idr works
NavGhost is an Android, phone-only navigation app that uses inertial dead reckoning when GNSS is unavailable, then cautiously verifies GNSS recovery. Its runtime workflow is sensor/GNSS input → on-device navigation engine → live navigation and trip/map experience. The repository also contains a Python research stack for preparing Android sessions, running blackout and estimator experiments, map matching, and evaluation, plus an optional local telemetry observer. Android engine internals are excerpted; several product integrations and research modules are represented by their exact tree paths, with uncertain connections omitted.
Main entry points: IdrEngine.kt IDR engine · pipeline.py Frozen runtime experiments · phase5_pipeline.py Estimator comparisons · MainActivity.kt Live navigation UI
Components 33
On-device Navigation
- Sensor capture
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/core/SensorRepository.kt - GNSS freshness
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/core/GnssLocationRepository.kt - Conditioning
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/engine/SensorConditioner.kt - IDR engine
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/engine/IdrEngine.kt - Classical EKF
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/engine/ClassicalEkf.kt - Stationary gate
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/engine/InertialStopGate.kt - Gated velocity model
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/engine/FrozenVelocityModelData.kt
App Experience
- Live navigation UI
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/ui/MainActivity.kt - Map renderers
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/ui/Google3dMapSurface.kt - Trip recording
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/product/TripRecorder.kt - Trip storage
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/product/TripDao.java - GeoMesh zones
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/product/GeoMeshRepository.kt - GeoMesh storage
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/product/NavGhostDatabase.java
Research and Evaluation
- Android session reader
research/src/idr/phase9/android_session.py - Canonical adaptation
research/src/idr/phase8/canonical.py - Frozen runtime experiments
research/src/idr/phase8/pipeline.py - GNSS recovery experiments
research/src/idr/phase7/pipeline.py - Recovery state machine
research/src/idr/phase7/engine.py - Estimator comparisons
research/src/idr/phase5_pipeline.py - Blackout scenarios
research/src/idr/blackout.py - Dead-reckoning estimators
research/src/idr/dead_reckoning.py - Hybrid estimator
research/src/idr/hybrid/hybrid_idr.py - Velocity model
research/src/idr/ml/velocity_model.py - Map matching
research/src/idr/map_matching/matcher.py - Evaluation
research/src/idr/evaluation.py
Local Observer
- Telemetry observer
research/server/app.py - Ephemeral telemetry hub
research/server/state.py - Observer dashboard
research/server/static/dashboard.js
Other components
- Phone user
- Phone sensors
- GNSS fixes
- GeoMesh service
- Phone telemetry
Connections 35
- Phone user → Live navigation UI: uses
README.md - Phone sensors → Sensor capture: provides samples
README.md - GNSS fixes → GNSS freshness: provides fixes
README.md - Sensor capture → IDR engine: feeds runtime
- GNSS freshness → IDR engine: supplies fixes
- GNSS freshness → GNSS freshness: checks freshness
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/core/GnssLocationRepository.kt - IDR engine → Conditioning: conditions samples
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/engine/IdrEngine.kt - IDR engine → Classical EKF: updates state
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/engine/IdrEngine.kt - IDR engine → Stationary gate: gates motion
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/engine/IdrEngine.kt - IDR engine → Gated velocity model: requests inference
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/engine/IdrEngine.kt - IDR engine → Live navigation UI: provides navigation
- Live navigation UI → Map renderers: presents maps
- Live navigation UI → Trip recording: records trips
- Trip recording → Trip storage: persists trips
- Live navigation UI → GeoMesh zones: uses zones
- GeoMesh zones → GeoMesh storage: reads and writes
technical-evidence/android/android/app/src/main/java/org/sih26168/idrlogger/product/GeoMeshRepository.kt - GeoMesh zones → GeoMesh service: syncs zones
- Android session reader → Canonical adaptation: adapts session
research/src/idr/phase9/android_session.py - Frozen runtime experiments → Canonical adaptation: uses adaptation
research/src/idr/phase8/pipeline.py - Frozen runtime experiments → Dead-reckoning estimators: runs estimators
research/src/idr/phase8/pipeline.py - Frozen runtime experiments → Hybrid estimator: runs hybrid
research/src/idr/phase8/pipeline.py - Frozen runtime experiments → Velocity model: uses velocity model
research/src/idr/phase8/pipeline.py - GNSS recovery experiments → Recovery state machine: steps recovery engine
research/src/idr/phase7/pipeline.py - Recovery state machine → Blackout scenarios: consumes outage inputs
- Estimator comparisons → Blackout scenarios: creates scenarios
research/src/idr/phase5_pipeline.py - Estimator comparisons → Dead-reckoning estimators: runs dead reckoning
research/src/idr/phase5_pipeline.py - Estimator comparisons → Hybrid estimator: runs hybrid
research/src/idr/phase5_pipeline.py - Estimator comparisons → Velocity model: uses model bundle
research/src/idr/phase5_pipeline.py - GNSS recovery experiments → Map matching: evaluates map matching
research/src/idr/phase7/pipeline.py - GNSS recovery experiments → Evaluation: uses metrics
research/src/idr/phase7/pipeline.py - Frozen runtime experiments → Evaluation: uses metrics
research/src/idr/phase8/pipeline.py - Estimator comparisons → Evaluation: evaluates predictions
research/src/idr/phase5_pipeline.py - Phone telemetry → Telemetry observer: streams telemetry
- Telemetry observer → Ephemeral telemetry hub: accepts and fans out
research/server/app.py - Telemetry observer → Observer dashboard: serves observer