Gisnav
Estimates airborne drone global position by matching video to map retrieved from onboard GIS server.
Install / Use
/learn @hmakelin/GisnavREADME
https://user-images.githubusercontent.com/22712178/187902004-480397cc-460f-4d57-8ed7-13f4e9bb3757.mp4
Introduction
Warning Do not use this software for real drone flights. GISNav is untested and has only been demonstrated in a simulation environment.
GISNav is a ROS 2 package that enables map-based visual navigation for airborne drones in a simulation environment.
GISNav provides a precise global position by visually comparing frames from the drone's nadir-facing camera to a map of the drone's approximate global position retrieved from an onboard GIS system.
Mock GPS Example
The below steps demonstrate how GISNav enables GNSS-free flight with PX4 Autopilot's Mission mode in a SITL simulation.
You will need to have the Docker Compose plugin and NVIDIA Container Toolkit installed.
Install GISNav CLI
The GISNav CLI (gnc) is a Docker Compose wrapper that significantly simplifies building and deploying GISNav's Docker Compose services. It is packaged as a Debian distributable.
Create the Debian distributable and install gnc from it using the following commands:
git clone https://github.com/hmakelin/gisnav.git
cd gisnav
make install
Build and run SITL simulation
Build the Docker images and create and run the containers (downloading and building everything will take a long time):
Note
- This script will automatically expose your X server to the created Docker containers to make the GUI applications work.
- We stop autoheal because current healthchecks are quite naive and often flag healthy services as unhealthy.
- Gazebo in the
px4service will on first run download a number of models and will be slow to start up (on first run).mapserverservice will on first run transfer some files to a shared volume and will be slow to start up (on first run).
gnc build px4 gisnav --with-dependencies
gnc create px4 gisnav
gnc start px4 gisnav && gnc stop autoheal
Upload flight plan via QGroundControl
Once both the Gazebo and QGroundControl windows have appeared (QGroundControl should show the drone location near San
Carlos airport), use QGroundControl to upload the sample ~/ksql_airport_px4.plan flight plan that is included inside the
Docker container, and then start the mission.
Simulate GPS failure
Wait until the drone has risen to its final mission altitude. You can then try disabling GPS through your MAVLink Shell (accessible e.g. through QGroundControl > Analyze Tools > MAVLink Console):
failure gps off
The drone should now continue to complete its mission GNSS-free with GISNav substituting for GPS.
You can check if PX4 is receiving the mock GPS position estimates by typing the following in the MAVLink shell:
listener sensor_gps
Note The
gisnavservice will by default send uORB messages to PX4 via the micro-ROS agent which bypasses the GPS driver so you will not see the GPS status with commands likegps status.
Finally, you can stop all simulation services with the below command:
gnc stop
Documentation
See the latest developer documentation for information on how to setup a local environment for GISNav development, for code examples and API documentation, and integration examples.
License
This software is released under the MIT license. See the LICENSE.md file for more information.
Related Skills
qqbot-channel
351.4kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
docs-writer
100.6k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
351.4kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
arscontexta
3.1kClaude Code plugin that generates individualized knowledge systems from conversation. You describe how you think and work, have a conversation and get a complete second brain as markdown files you own.
