Next-Generation Positioning System (NGPS) for high-altitude drone navigation without GPS.
This codebase implements a visual geo-localization system for drones that matches down-facing camera images against satellite reference images using deep learning-based feature matching. The system provides absolute position estimates to correct drift in Visual-Inertial Odometry (VIO) systems.
-
ap_ngps_ros2: ROS2 node that performs visual geo-localization by matching camera images to satellite reference images using LightGlue/SuperPoint deep learning features. Runs at 1-2 Hz.
-
ap_ukf: Unscented Kalman Filter that fuses multiple sensor inputs:
- NGPS absolute position (1-2 Hz)
- VIO relative pose (10-20 Hz)
- IMU data (high frequency) Outputs fused odometry at 10-20 Hz for flight control.
-
ap_vips: Visual-Inertial Odometry system that provides high-frequency relative pose estimates optimized for high-altitude flight.
- NGPS module matches real-time camera frames to a georeferenced satellite reference image
- Provides absolute position estimates at low frequency (1-2 Hz)
- UKF fuses NGPS absolute positions with high-frequency VIO estimates
- Fused output sent to ArduPilot's EKF for final state estimation
- GSoC 2024: High Altitude Non-GPS Navigation - Initial GSoC project summary
- Transformer & Optimization Based High Altitude GPS-Denied Fusion - Updated implementation and architecture details
- ap_nongps - Earlier prototype implementation with SIFT-based feature matching and optical flow methods
- Add a fallback VO pipeline
- Add global optimisation for fusion
- Update AP to accept position and odometry as separate sources to be fused internally
- Add support for multiple reference images
- Optimize feature matching for faster performance
- Add calibration tools and documentation
- Improve error handling and recovery
- Add more unit tests
- Document configuration parameters
- Add example launch files for different scenarios
- Performance profiling and optimization
- Support for different camera models
See individual package READMEs:
ap_ngps_ros2/README.mdap_ukf/README.mdap_vips/README.md
- Changelog - Project history and version timeline
- Camera-IMU Calibration - Google Docs
- Non-GPS Navigation Setup - Google Docs
A huge shoutout to my partner in disguise, ChatGPT, for generating tests and helping with packaging this codebase.
IMPORTANT DISCLAIMER: This software is provided for research and educational applications only. The developers and contributors of this project doesn't promote and are not responsible for any misuse.
See LICENSE file.