Auto-sincronización de geofence + no-fly
Los polígonos de geofence y no-fly dibujados en ARGUS no sólo se renderizan en el mapa — se sincronizan nativamente a cada dock DJI asignado a la misión, para que el propio controlador de vuelo de la aeronave los aplique. Ésta es la tercera capa de la envolvente de seguridad de geofence de ARGUS — se ejecuta incluso si la app ARGUS, el gateway Android e internet desaparecen.
Tipos de polígonos que se sincronizan
Sólo dos tipos de polígonos se sincronizan a DJI:
- Geofence (tipo
geofence) — mantener-dentro. Se convierte en undnfzDJI (Do Not Fly Zone — inversa, la aeronave debe permanecer dentro). - No-fly (tipo
nofly) — mantener-fuera. Se convierte en ungfzDJI (Geo-Fence Zone — área prohibida).
Los polígonos SAR y los polígonos de rejilla de búsqueda no se sincronizan — son sólo de planificación.
Tanto polígonos como círculos están soportados en el formato DJI de custom-flight-area.
El pipeline de auto-sincronización
Cuando dibujas, editas o eliminas un polígono de geofence / no-fly en el mapa:
- Debounce de 1,5 segundos — los eventos de polygon-draft estallan (cada clic de vértice dispara una escritura). El debounce espera a que se estabilicen las ediciones para que dibujar un polígono de 20 vértices dispare una sincronización, no veinte.
- Fingerprint — ARGUS calcula un MD5 del conjunto de polígonos. Si el fingerprint coincide con el último estado sincronizado, no ocurre ninguna sincronización. Esto deduplica pasadas donde los polígonos se movieron un píxel o dos sin cambio real.
- Empaquetar — ARGUS serializa todos los geofences + no-flys actuales al formato JSON DJI de custom-flight-area. El MD5 se calcula del lado del cliente (crypto.subtle no cubre MD5 así que hay una implementación de fallback).
- Subir a S3 mediante un PUT presigned de corta vida.
- Registrar con argus-api. argus-api valida el objeto S3 con
HeadObjectCommandy escribe un documentoflight_areas/{id}. - Asignar el archivo a cada dock actualmente dentro del alcance
de la misión (
dji_docks/{sn}.missionId == operationId). Escribe un back-linkassignedDocksen el documento del área de vuelo para que puedas ver qué docks llevan esta zona. - Publicar MQTT
flight_areas_updatea cada dock. argus-dji envía este comando de servicio. - El dock descarga + aplica. El controlador de vuelo de la aeronave ahora aplica las áreas. A partir de este punto, el dron físicamente no puede cruzar un límite.
Comportamiento con conjunto vacío
Si eliminas todos tus polígonos geofence + no-fly, la sincronización aún se ejecuta con un archivo de áreas de longitud cero. El dock lo recibe y borra sus overrides locales — de modo que eliminar un polígono en ARGUS elimina la restricción del dron también.
Solapamiento + prioridad
Si un geofence y un no-fly se solapan, el no-fly gana dentro de la región de solapamiento. El controlador de vuelo de DJI trata el no-fly como hard-stop independientemente del geofence contenedor.
Visualizar el estado de sincronización
Pasa el ratón sobre cualquier polígono del mapa → el popover de info muestra:
- Si el polígono ha sido sincronizado a cada dock.
- Marca de tiempo de la última sincronización exitosa por dock.
- Fingerprint de la versión que el dock lleva actualmente (útil para depuración: si el dock A tiene fingerprint X y el dock B tiene Y, sabes que uno está obsoleto).
La superficie REST CRUD
Entre bastidores, argus-api proporciona el CRUD REST completo para
flight_areas:
POST /api/dji/flight-areas/upload-url— PUT presigned.POST /api/dji/flight-areas/register— validación post-subida.GET /api/dji/flight-areas— listar por org, ordenado por createdAt.GET /api/dji/flight-areas/{id}— detalle.DELETE /api/dji/flight-areas/{id}— borrado suave (state='deleted').POST /api/dji/docks/{sn}/flight-areas/assign— asignación explícita (separada de la auto-asignación impulsada por polygon-sync).
Solución de problemas
- El dock muestra sync-failed. Verifica en Admin → Gestión DJI → Áreas de vuelo el estado de asignación por dock. Causa más común: dock offline en el momento de la sincronización. Vuelve a guardar cualquier polígono para re-disparar la sincronización; la sincronización se aplicará una vez que el dock se reconecte.
- El dock ignora el polígono. Verifica la versión de firmware. La aplicación de custom-flight-area de DJI requiere un nivel mínimo de firmware; firmwares más antiguos aceptan el archivo pero no lo aplican. Actualiza vía firmware.
- Rendimiento con polígonos muy complejos. Polígonos de mil vértices estresan el controlador de vuelo del dock. Simplifica mediante la acción Simplify del menú contextual del polígono (algoritmo RDP), o divide en múltiples polígonos más simples.
Relacionado
- Polígonos — la UI de dibujo.
- Envolvente de seguridad de geofence — la historia de aplicación de tres capas.
- Admin → Gestión DJI — la vista de administración de asignaciones de áreas de vuelo.