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¶
make web→ Cockpit, ouvre la vue Map ou Mission- Bascule en mode édition (icône crayon / "Edit Mission")
- Sur la carte, clique pour ajouter des waypoints
- Pour chaque WP, ajuste :
- Altitude (m AGL — Above Ground Level depuis HOME)
- Vitesse (optionnelle, par défaut
AIRSPEED_CRUISE) - Acceptance radius (rayon de validation, défaut 50 m)
- 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 :
- Save dans Cockpit
- Upload to vehicle — Cockpit envoie via MAVLink
MISSION_ITEM_INTà ArduPlane - Vérification : Cockpit confirme "Mission uploaded X items"
- Optionnel : Download pour vérifier que c'est bien stocké côté véhicule
3. Exécuter la mission¶
- ARM (via Cockpit ou manette)
- Mode → AUTO
- 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 :
- Clique droit sur un point de la carte → "Go to here"
- Cockpit envoie
MAV_CMD_DO_REPOSITION→ l'avion bifurque - Le mode passe en GUIDED le temps d'y aller
- 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) :
- Cockpit → liste des items → clic droit sur WP courant → "Skip" ou "Set current to N"
- ArduPlane saute à l'item N
Méthode C — Replace mission entière¶
- Édite la mission dans Cockpit pendant que tu voles
- Upload → ArduPlane reçoit la nouvelle mission
- 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)¶
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).
- Dessine un polygone sur la carte
- Configure spacing (ex: 100 m entre passes)
- Génère mission
- 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