Introduction to GISNav
Warning: Simulation use only
Do not use this software for real flight missions. GISNav is untested and has only been demonstrated in a simulation environment.
GISNav is a software system and a simulation environment for map-based GNSS-free visual navigation for UAVs.
GISNav uses visual comparisons between frames captured by the vehicle's camera along with orthoimagery and digital elevation models retrieved from an onboard GIS server to compute an estimate of the vehicle's global position. This provides complementary offline navigation in environments where traditional GNSS signals or other online navigation may be unavailable or unreliable.
Overview of components
GISNav at the high level consists of the following components:
Debian distributable: GISNav is available as a Debian package to provide a streamlined onboarding experience. This allows for easy installation and management of GISNav on Debian-based systems.
Containerized simulation environment: Under the hood, GISNav consists of a suite of Docker Compose services. This containerized approach ensures that all dependencies are properly isolated, allowing for consistent and reproducible deployments across different environments. The Docker Compose services include all necessary components for GISNav to function, from the GIS server and sample maps to the deep learning model used for keypoint matching.
ROS 2 package: The core of GISNav is a ROS 2 package called
gisnav
, implementing the main application logic and providing integration with the ROS ecosystem. This ensures compatibility with a wide range of existing robotics applications. The simulation environment includes a containerized image with the ROS 2 package installed.Command Line Interface: The GISNav Debian package comes with a simple command line interface (CLI) tool called
gnc
that allows users to easily control the system. The CLI provides commands for setting up the environment, starting and stopping services, and monitoring the system's status.systemd service: The Debian package also includes the
gisnav.service
systemd service that ensures all required services are automatically started on system startup.Captive admin portal: GISNav includes a web-based captive admin portal for managing and configuring the system, including managing the onboard GIS data with no prior knowledge of GIS tools required.
Documentation: Detailed user and developer documentation is provided to facilitate the setup, usage, and development of GISNav. This includes installation guides, configuration instructions, and development resources to support both end users and contributors.
How does it work?
At its core, GISNav uses PyTorch and deep learning for keypoint matching and OpenCV for solving the resulting Perspective-n-Point (PnP) problem. This process involves:
- Uploading orthoimagery: High-resolution aerial and satellite aerial imagery is available from both national agencies and commercial providers. Downloaded orthoimagery and DEMs are uploaded onto an onboard companion computer.
- Matching keypoints: Frames from the vehicle’s camera are analyzed to detect and match keypoints with the preloaded orthoimagery.
- Solving the PnP problem: The matched keypoints are then used to solve the Perspective-n-Point (PnP) problem, determining the vehicle's global pose (geopose) relative to the orthoimage. Depth information is optionally used from the onboard DEMs to improve accuracy.
- Sending mock GPS messages: Once the geopose is estimated, GISNav generates mock GPS navigation messages that can be fed into the vehicle's autopilot software, such as PX4 and ArduPilot. Because GISNav masquerades as an ordinary GPS, no autopilot firmware customizations are needed.
Autopilot integration
GISNav integrates with MAVLink based autopilot software including PX4 and ArduPilot. NMEA and uORB protocols are supported for downstream integrations. uORB works with PX4 only.
Warning: ArduPilot support unmaintained
ArduPilot simulation needs significant rework to get working again. Only PX4 is currently tested.
Source code
The source code for GISNav is open source, permissively MIT licensed, and hosted on GitHub at github.com/hmakelin/gisnav. Feedback is welcome to help improve the project.
Quick start
If you are sure your system is up to the task, you can install the Debian package and try simulating GPS failure in a local SITL simulation.