AxoLens
Drone app that overlays property boundaries in real time
Native Android app for DJI drone pilots: imports property boundaries (KML/KMZ) and projects them onto the live video feed in real time, with terrain-aware accuracy via USGS 3DEP.

Strategy
No app combined a live DJI drone video feed with imported boundary files and terrain-corrected projection. Existing tools either showed everything on a 2D map (no AR over the live video) or required exporting to engineering software.
Professional pilots needed sub-metre precision directly on the video feed, on any terrain across the United States, without depending on post-processing. We built the first native Android app that imports property boundaries (KML/KMZ) and projects them onto the live DJI video in real time — for surveyors, land buyers, and contractors who need to see exactly where a property line is while they're in the air.
Design
Every interaction is built around a pilot whose attention is on the drone, not on a phone screen. Sub-metre distance readouts, color-coded HUD chips, drag-to-shift alignment that's faster than typing coordinates, and camera profiles you can swap mid-flight.
- Distance-to-boundary HUD chip with sage-inside / saffron-outside color flip and sub-metre precision near the line
- Per-boundary drag-to-shift alignment, stored in world-space ENU metres — correct a 30 cm GPS bias in two seconds without leaving the live view
- 7 named DJI camera profiles + a Custom slider for hFOV — pick the right calibration mid-flight without scrolling through specs
- Property library with atomic-write filesystem repo + hot Flow updates so the boundary list reflects changes instantly
Technology
100% native Android in Kotlin, with an in-house projection engine — no Unity, no Unreal. Every boundary vertex runs through a geodetic → local tangent plane (ENU) → drone body (NED) → OpenCV camera frame → pinhole pipeline, with Sutherland-Hodgman clipping for polygons leaving the frame and per-vertex terrain backfilled from USGS 3DEP.
- Custom KML/KMZ parser with a full domain model + filesystem-backed multi-boundary repository (atomic writes, hot Flow API)
- USGS 3DEP DEM tile streaming pipeline: pure-Kotlin TIFF/GeoTIFF parser, range-fetched COGs from the public S3 bucket, LZW + Deflate, predictor 1/2/3, Float32/Int16 decoders
- EGM96 geoid undulation API for converting between ellipsoidal (GPS) and orthometric (surveyor) heights — the diff matters once you're working sub-metre
- 60 Hz pose smoother with a timestamped ring buffer + lookback to compensate the DJI video-link's ~120 ms latency; velocity prediction + lens dewarp end-to-end — no overlay flutter
- DJI MSDK 5.17.0 validated against a real Mini 3 + RC-N1; MockTelemetryProvider for dev without hardware
- 521 Vitest tests green + ADRs documenting every architectural decision so the next pilot-engineer ramps in days, not weeks
