Aller au contenu

Niveau 4 — Missions AUTO avec waypoints

Objectif : programmer une mission (décollage + 3 waypoints + atterrissage), l'exécuter en mode AUTO, la modifier en vol.

Durée : 2 h.

Prérequis : niveau 2 (modes), pas besoin de joystick (Cockpit suffit).

1. Anatomie d'une mission ArduPlane

Une mission = séquence d'items numérotés. L'avion exécute item 1, puis 2, etc. Les types essentiels :

Item Code Ce qu'il fait
MAV_CMD_NAV_TAKEOFF 22 Décolle automatiquement jusqu'à altitude
MAV_CMD_NAV_WAYPOINT 16 Vole vers (lat, lon, alt), puis passe au suivant
MAV_CMD_NAV_LOITER_TIME 19 Cercle au-dessus de (lat, lon, alt) pendant N secondes
MAV_CMD_NAV_LOITER_UNLIM 17 Cercle indéfiniment (sentinel)
MAV_CMD_DO_JUMP 177 Saute à l'item N (boucle)
MAV_CMD_NAV_RETURN_TO_LAUNCH 20 RTL puis loiter à HOME
MAV_CMD_NAV_LAND 21 Approche d'atterrissage glissée

Une mission typique de scouting :

1. TAKEOFF altitude=50
2. WAYPOINT lat=A lon=B alt=80
3. WAYPOINT lat=C lon=D alt=80
4. WAYPOINT lat=E lon=F alt=80
5. WAYPOINT (retour vers home area) alt=80
6. RTL

Pas de LAND ici parce qu'en réel sans piste, on préfère un RTL + cercle (le pilote prend le contrôle pour atterrir manuellement). Pour SITL on peut ajouter LAND.

2. Créer une mission dans Cockpit

Cockpit a un Mission Planner intégré (carte + édition).

Procédure

  1. make web → Cockpit, ouvre la vue Map ou Mission
  2. Bascule en mode édition (icône crayon / "Edit Mission")
  3. Sur la carte, clique pour ajouter des waypoints
  4. Pour chaque WP, ajuste :
  5. Altitude (m AGL — Above Ground Level depuis HOME)
  6. Vitesse (optionnelle, par défaut AIRSPEED_CRUISE)
  7. Acceptance radius (rayon de validation, défaut 50 m)
  8. Le premier item devrait être TAKEOFF, le dernier RTL ou LAND

Mission test recommandée

À Canberra (le HOME du SITL par défaut, -35.36, 149.16) :

# Item Lat Lon Alt (m)
1 TAKEOFF (auto) (auto) 50
2 WAYPOINT -35.358 149.165 80
3 WAYPOINT -35.358 149.170 80
4 WAYPOINT -35.366 149.170 80
5 WAYPOINT -35.366 149.165 80
6 RTL

Ça fait un carré de ~700 m de côté à 80 m d'altitude. Vol de ~5 min à 18 m/s.

Upload de la mission

Une fois la mission éditée :

  1. Save dans Cockpit
  2. Upload to vehicle — Cockpit envoie via MAVLink MISSION_ITEM_INT à ArduPlane
  3. Vérification : Cockpit confirme "Mission uploaded X items"
  4. Optionnel : Download pour vérifier que c'est bien stocké côté véhicule

3. Exécuter la mission

  1. ARM (via Cockpit ou manette)
  2. Mode → AUTO
  3. L'avion exécute item 1 (TAKEOFF), passe à 2, 3...

Ce que tu dois observer dans Cockpit

  • Le current waypoint s'incrémente (1 → 2 → 3...)
  • Une ligne en pointillés entre la position courante et le WP courant
  • L'altitude target change selon l'item
  • L'airspeed target = AIRSPEED_CRUISE (~18 m/s)

Critère de succès

  • Décollage automatique
  • 4 WP visités dans l'ordre, l'avion passe à <50 m de chaque
  • RTL retourne à HOME, cercle au-dessus
  • Aucun message d'erreur de mission

4. Modifier la mission en vol

Cas réel : tu vois sur la carte qu'il y a un truc intéressant à observer, ou un nuage trop bas pour ton altitude. Il faut changer la mission sans atterrir.

Méthode A — Goto courant

Dans Cockpit, en cours d'AUTO :

  1. Clique droit sur un point de la carte → "Go to here"
  2. Cockpit envoie MAV_CMD_DO_REPOSITION → l'avion bifurque
  3. Le mode passe en GUIDED le temps d'y aller
  4. Une fois arrivé, il reprend la mission là où elle en était (selon config)

Méthode B — Skip waypoint

Pour sauter un WP (par exemple, conditions défavorables) :

  1. Cockpit → liste des items → clic droit sur WP courant → "Skip" ou "Set current to N"
  2. ArduPlane saute à l'item N

Méthode C — Replace mission entière

  1. Édite la mission dans Cockpit pendant que tu voles
  2. Upload → ArduPlane reçoit la nouvelle mission
  3. Selon le timing, ArduPlane peut continuer la précédente jusqu'à la fin, ou redémarrer

Critère de succès

  • Tu as réussi une "Go to here" pendant un AUTO
  • L'avion est retourné à la mission ensuite (ou a fini en RTL)
  • Tu n'as PAS désarmé pour changer la mission

5. Vitesses et altitudes — concepts critiques

Altitude

  • AGL (Above Ground Level) : par rapport au sol au point HOME — c'est ce que Cockpit affiche par défaut
  • MSL (Mean Sea Level) : par rapport au niveau de la mer — utilisé par ArduPilot interne
  • En SITL plat, AGL = MSL - 584 (l'altitude de Canberra)

Sois clair·e dans tes têtes : 80 m AGL veut dire 80 m au-dessus de ton décollage. Si tu vol au-dessus d'une vallée 100 m plus basse, tu seras à 180 m AGL effectif. ArduPlane ne sait PAS lire le terrain (sauf si tu actives TERRAIN_ENABLE). Mission Phase 1 = vol en altitude sûre quelle que soit la topo.

Vitesse

  • Airspeed : vitesse par rapport à l'air. C'est ce qui te fait voler. Vise 16–22 m/s pour le Swordfish.
  • Groundspeed : vitesse par rapport au sol. Avec vent : groundspeed = airspeed ± vent.
  • En SITL pas de vent (par défaut). En vrai vol forestier : vent réduit l'autonomie.

6. Patterns utiles à programmer

A — Patrouille fermée (sentinel)

TAKEOFF alt=80
WAYPOINT A
LOITER_UNLIM A      ← tourne ici jusqu'à intervention manuelle

B — Survey en raster

Cockpit a un outil "Survey grid" : tu dessines un polygone, il génère automatiquement les passes parallèles (utile pour photogrammétrie ou couverture systématique).

  1. Dessine un polygone sur la carte
  2. Configure spacing (ex: 100 m entre passes)
  3. Génère mission
  4. Upload

Bonus : très bon pour s'entraîner à observer du retour vidéo en mode auto.

C — Boucle avec retours réguliers

Avec DO_JUMP, tu fais tourner une route N fois :

1. TAKEOFF
2. WAYPOINT A
3. WAYPOINT B
4. WAYPOINT C
5. DO_JUMP item=2 count=5   ← répète 2→3→4 cinq fois
6. RTL

7. Avant le niveau 5

Vise au moins ces réussites :

  • Tu as programmé et exécuté 3 missions distinctes
  • Tu as modifié une mission en vol au moins une fois (méthode A, B, ou C)
  • Tu sais reconnaître les types d'item (TAKEOFF / WAYPOINT / RTL) dans la timeline Cockpit
  • Tu as fait une mission survey grid au moins une fois
  • Tu as expérimenté le "DO_JUMP" au moins une fois

Niveau 5 — Failsafes