AxoLens
App de drone que projeta limites de propriedade em tempo real
App Android nativo para pilotos de drone DJI: importa limites de propriedade (KML/KMZ) e projeta sobre o vídeo ao vivo em tempo real, com correção de terreno via USGS 3DEP.

Estratégia
Não existia app que combinasse o feed ao vivo do drone DJI com importação de arquivos de limites e projeção corrigida por terreno. As ferramentas existentes ou mostravam tudo em mapa 2D (sem AR sobre o vídeo) ou exigiam exportar pra software de engenharia.
Pilotos profissionais precisavam de precisão sub-métrica direto no vídeo, em qualquer terreno dos EUA, sem depender de pós-processamento. Construímos o primeiro app Android nativo que importa limites de propriedade (KML/KMZ) e projeta sobre o vídeo ao vivo do drone DJI em tempo real — para topógrafos, corretores de terras e contratantes que precisam enxergar exatamente onde uma divisa está enquanto estão voando.
Design
Cada interação foi pensada para um piloto cuja atenção está no drone, não na tela do celular. Leituras de distância sub-métricas, chips de HUD com flip de cor, alinhamento por arrastar mais rápido do que digitar coordenadas e perfis de câmera trocáveis em pleno voo.
- HUD de distância à divisa com flip de cor (verde dentro / âmbar fora) e precisão sub-métrica perto da linha
- Modo de alinhamento por arrastar por divisa, armazenado em metros ENU no espaço-mundo — corrigir um viés de 30 cm do GPS em dois segundos sem sair da visão ao vivo
- 7 perfis de câmera DJI nomeados + slider Custom para hFOV — escolher a calibração certa no meio do voo sem rolar lista de specs
- Biblioteca de propriedades com repo em filesystem (atomic writes) + Flow updates quentes pra refletir mudanças instantaneamente
Tecnologia
Stack 100% nativa Android em Kotlin, com motor de projeção próprio — sem Unity, sem Unreal. Cada vértice da divisa passa por um pipeline geodésico → plano tangente local (ENU) → coordenadas do drone (NED) → frame da câmera OpenCV → modelo pinhole, com clipping Sutherland-Hodgman pra polígonos que saem do frame e elevação por vértice puxada do USGS 3DEP.
- Parser KML/KMZ próprio com domain model completo + biblioteca multi-propriedades em filesystem (atomic writes, hot Flow API)
- Pipeline de streaming USGS 3DEP DEM: TIFF/GeoTIFF parser puro Kotlin, range-fetched COGs do bucket S3 público, LZW + Deflate, predictor 1/2/3, decoders Float32/Int16
- API EGM96 de geoid undulation pra converter altura elipsoidal (GPS) ↔ ortométrica (a que topógrafo usa) — a diferença importa quando se trabalha sub-métrico
- Smoother de pose 60 Hz com ring buffer timestampado + lookback compensando os ~120 ms de latência do video-link DJI; velocity prediction + dewarp de lente end-to-end — sem fluttering da overlay
- DJI MSDK 5.17.0 validado contra um Mini 3 + RC-N1 real; MockTelemetryProvider pra dev sem hardware
- 521 testes Vitest verdes + ADRs documentando cada decisão arquitetural pra que o próximo piloto-engenheiro entre no projeto em dias, não semanas
