Saltearse al contenido

Tareas de vuelo DJI

Una tarea de vuelo es una misión WPML-KMZ de waypoints enviada a un dock DJI. ARGUS genera el KMZ desde tu plan de misión de dron, lo sube a S3, registra una wayline DJI y guía al dock por preparar → ejecutar → progreso en vuelo → completar.

Enviar una tarea

  1. Abre un plan de misión de dron en el planificador.
  2. Asegúrate de que está asignado a un dock (Asignación → elige un dock).
  3. Haz clic en Enviar. ARGUS:
    • Convierte el plan a DJI WPML KMZ mediante kmz-generator.ts. Incrusta globalHeight, executeHeight, takeOffSecurityHeight, payloadLensIndex, etc. según la especificación DJI.
    • Sube vía PUT presigned S3 de 10 minutos.
    • Crea un documento dji_flight_tasks/{id}.
    • Escribe un documento dji_commands de tipo flight_task_prepare.
    • argus-dji lo recoge y publica MQTT flighttask_prepare con la wayline + dock + metadatos.
  4. El dock hace ACK. Prepara — la cubierta se abre, la aeronave se enciende, bloqueo GPS, chequeos pre-vuelo.
  5. Una vez que DJI reporta listo, ARGUS sigue automáticamente con flighttask_execute. La aeronave despega.

No tienes que disparar manualmente “execute” después de “prepare” — está encadenado por ti.

Seguir el progreso

Durante la ejecución ves:

  • Tile del stream del dron — vídeo en vivo + HUD.
  • Registro de vuelo — cada waypoint-alcanzado, cambio-de-modo, alerta HMS.
  • Panel de progreso de misión (desde el tile de flota) —
    • Índice de waypoint / total.
    • Porcentaje de distancia cubierta.
    • Tiempo restante estimado.
    • current_step de DJI.
    • step_key para subestado dentro de un paso.

Las snapshots de break-point (el estado del lado del dock de “dónde estaba el dron cuando pausó”) se persisten para que un vuelo reanudado continúe correctamente.

Controlar una tarea en ejecución

El panel de progreso de misión expone:

  • Pausar — la aeronave hace hover en el waypoint actual. El dock hace ACK antes de que la UI cambie de estado — sin UI optimista.
  • Reanudar — quitar la pausa.
  • Detener — retorno al hogar inmediato (aborta los waypoints restantes).
  • Abortar configuración — sólo durante la preparación; cancela antes del despegue.
  • Retorno al hogar — RTH explícito.
  • Retorno a un hogar específico — RTH pero a un punto no por defecto (lat/lng/alt suministradas).
  • Entregar wayline en vuelo — reemplaza la wayline activa con un KMZ nuevo mientras vuela. Usado por relay multi-dock para las entregas.
  • Detener wayline en vuelo — detener la wayline entregada pero mantener la aeronave volando.
  • Cancelar wayline en vuelo — cancelar + iniciar RTH.
  • Recuperar wayline en vuelo — re-enviar desde el último break-point.

Cada botón se mapea a un tipo de documento dji_commands y pasa por argus-dji → dock.

Manejo de service-reply

Cada comando MQTT que el dock recibe obtiene un ACK (service-reply). ARGUS distingue:

  • Fallos pre-ejecución — fallos de prepare / pre-despegue → la tarea pasa a FAILED, el dock se libera.
  • Fallos en vuelo — fallos de execute / pause / resume / stop durante un vuelo → ARGUS revierte el estado optimista pero mantiene la tarea viva y reporta el error con un código de error DJI traducido mediante nuestro diccionario de 448 códigos.

La UI muestra el código de error + descripción mediante la franja de precaución maestra.

Estados de tarea de vuelo

  • SENT — comando enviado, esperando ACK del dock.
  • CANCELLED — cancelada explícitamente por el operador.
  • REJECTED — dock rechazó (error del lado del dock).
  • TIMEOUT — el ACK no llegó a tiempo.
  • PARTIAL_DONE — algunos waypoints completados, luego abortados.
  • SUCCESS — éxito completo.
  • FAILED — se ejecutó pero falló al completar.

Integración con línea de tiempo + informe

Cada transición de tarea escribe a la línea de tiempo de la misión + al registro de vuelo. Las tareas completadas también alimentan automáticamente el informe de misión.

Limitaciones conocidas

  • Sin inserción de waypoint en vuelo. Puedes entregar un KMZ nuevo pero no puedes añadir un solo waypoint a uno ya en ejecución.
  • Sin cambio de altitud-RTH en vuelo — eso está fijado en el momento del envío.
  • Sin envío programado desde la tarea — usa el scheduling en la propia misión para vuelos con inicio retrasado.

Relacionado