OpenAthena for Android
An Android port of the OpenAthena project
OpenAthena™ allows common drones to spot precise geodetic locations.
🖼️👨💻 + 🧮⛰️ = 🎯📍
Copyright (C) 2024 Theta Informatics LLC
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
https://github.com/Theta-Limited/OpenAthenaAndroid/releases
To use this app, you need a GeoTIFF or DTED (resolution level 2 or higher) Digital Elevation Model (DEM) file. DEM files store terrain elevation data for an area on Earth. OpenAthena performs a ray-cast from a drone camera's position and orientation towards the terrain, which can be used to precisely locate any point within a given drone image.
GeoTIFF DEM files obtained from the STRM GL1 30m tend to produce more accurate target results than DTED
To obtain a GeoTIFF file for a certain area, use this link.
Load the DEM file (e.g. cobb.tif) using the "⛰" button. The app will display the size of the file and its latitude and longitude boundaries:
(NOTE: during file selection, the thumbnail image preview for any GeoTIFF ".tif" or DTED ".dt#" file will be blank. This is normal.)
It is strongly suggested that you should calibrate the drone's compass sensor for the local environment before taking photos to be used with OpenAthena. Consult your drone's operation manual for this procedure. The image metadata from an un-calibrated drone can be several degrees off from the correct heading. This can result in dramatic target-resolution inaccuracies if the sensor is not calibrated. Always verify a target match location from OpenAthena before use!
E.g.:
If you find your aircraft's compass sensor is still not providing correct heading information, you can use this slider to manually apply a configurable offset anywhere in the range of [-15.0°, +15.0°]. This offset will be added to your aircraft's camera heading before target calculation is performed:
NOTE: This value is NOT for setting magnetic declination! Magnetic declination is already accounted for by your drone's onboard digital World Magnetic Model (WMM). Improper use of this Manual Offset setting will result in bad target calculation output.
Your selected manual correction value is saved automatically between launches of the app. To reset the value, tap the "RESET" button in the Settings screen or move the slider to the middle.
For the best results for target calculation, it's important to let your drone sit at the launch position until it can get an accurate GPS fix. This is important for it to be able measure altitude correctly during flight.
On DJI drones, this indicator shows the number of GPS satellites visible to the drone:
Wait until at least 6 GPS satellites are visible (or you can confirm the GPS fix is good) before starting flight.
This app is compatible with images taken by select models of DJI, Skydio, Autel, and Parrot aircraft models. The drone's position and its camera's orientation are automatically extracted from the image metadata.
After loading a GeoTIFF DEM, use the "🖼" button to select a drone image containing the necessary metadata:
Tap anywhere on the displayed image to calculate the corresponding target location on the ground. You can tap the result display box to copy the result text to your clipboard or open the position in Google Maps by clicking the blue hyperlink:
ATAK Cursor on Target
When the "✉️" button is pressed, OpenAthena will send a Cursor on Target multicast UDP packet to udp://239.2.3.1:6969 to all devices on the same network as your device. Under default settings, this will cause a marker to show up in ATAK at the target location for all recipients:
Change the marker to its appropriate type (friend, suspect, hostile) in ATAK, then send the updated target to other networked users.
OpenAthena allows users to tap any point in the image to locate it. Tapping on any point in the image will move the marker and calculate the new location. A new Cursor-on-Target message will not be sent to ATAK until the "✉️" button is pressed:
OpenAthena for Android supports multiple output modes for target calculation, including:
- Latitude, Longitude (standard WGS84)
- Nato Military Grid Reference System (MGRS) 1m, 10m, and 100m
- CK-42 Система координат Latitude Longitude (an alternative geodetic system commonly used in slavic countries)
- CK-42 Система координат Gauss-Krüger Grid: Northing, Easting (an alternative military grid reference system used by former Warsaw pact countries)
To change the ouptut mode of OpenAthena for Android, tap the kebab menu icon (three dots) at the top-right corner of the screen and select "Settings":
Select your desired output mode by pressing its button in the list:
Then press the back button or again tap the kebab menu icon (three dots) to return to the "Calculate" screen:
The app also supports selection between Meter
and US Foot
as the Distance Unit for the apps's output.
The end goal of this project is to enable UAS operators to perform terrain-raycast localization from any point within a live video feed. The target resolution engine of this application is highly modular and may be extended to operate on any such telemetry data source. This capability will be specific to each UAS manufacturer's SDK; therefore, it will take time to develop.
If you're interested in contributing to this project, feel free to make a fork. This project will follow the fork and pull model for third-party contributors.
This project requires content from other git repositories (such as Theta's DroneModels database) to build correctly.
To clone this project properly, with the necessary submodules:
git clone --recursive git@github.com:Theta-Limited/OpenAthenaAndroid.git # can also use https clone url instead
If you have already cloned, and wish to acquire the neccesary submodule contents:
git submodule init
git submodule update
If you wish to update the contents of submodules from their source:
git submodule update --remote
This software project would not be possible without the tireless work of many U.S. public servants and open source maintainers. Please see CREDITS.md for a full list of included software libraries, and their authors and licenses.