Niveau 5 — Failsafes et gestion d'incidents¶
Objectif : provoquer chaque type de panne dans le SITL, comprendre la réaction d'ArduPlane, savoir intervenir.
Durée : 1 h.
Prérequis : niveau 4.
Tout ce qui peut t'arriver en vrai vol doit t'être arrivé d'abord en simulation. C'est le but de cette section.
Les 4 grandes familles de failsafe¶
| Famille | Cause | Réaction par défaut |
|---|---|---|
| RC failsafe | Perte du signal radio (RC) | Mode → CIRCLE puis RTL |
| GCS failsafe | Perte du lien station de base | Mode → RTL |
| Batterie failsafe | Tension basse / consommation excessive | Mode → RTL puis LAND |
| GPS failsafe | Perte de fix GPS | Mode → LOITER ou LAND selon config |
| Geofence breach | Sortie de zone autorisée | Mode → RTL ou LAND |
Tous configurables via paramètres FS_*.
1. Provoquer un RC failsafe en SITL¶
Méthode¶
SITL accepte des commandes pour simuler des pannes :
Ou plus simple — dans Cockpit, désactiver le joystick (icône joystick → off) pendant un vol manuel.
Procédure exercice¶
- Lance un vol en mode FBWA avec joystick actif
- Vole 30 s
- Coupe la manette (débranche USB ou désactive dans Cockpit)
- Compte les secondes : ArduPlane attend
FS_SHORT_TIMEOUT(~2 s) avant de réagir - Observe : mode passe à CIRCLE d'abord
- Si tu attends
FS_LONG_TIMEOUT(~10 s) sans reconnecter : mode passe à RTL - Rebranche la manette → tu peux reprendre le contrôle en changeant de mode manuellement
Critère de succès¶
- Tu as vu le mode passer en CIRCLE
- Tu as vu le mode passer en RTL après le timeout long
- Tu sais que reconnecter la manette ne reprend pas le contrôle automatiquement — il faut explicitement changer de mode
En vrai vol : si l'avion entre en RTL pour cause de perte RC, il revient seul. Tu peux le récupérer en LOITER quand il est en cercle au-dessus de HOME.
2. Provoquer un GCS failsafe¶
C'est la perte du lien station de base ↔ avion. Pour la fleet, c'est ton MacBook qui devient injoignable (Mac s'éteint, lien Tailscale tombe, etc.).
Procédure¶
- Lance le vol normalement
- Dans le terminal, kill mavlink2rest :
- Cockpit perd le véhicule (icône "disconnected")
- ArduPlane détecte aussi la perte (paramètre
FS_GCS_ENABLE) - Après timeout (~5 s default) : RTL automatique
Critère de succès¶
- Cockpit affiche "disconnected"
- L'avion continue à voler — il n'est pas arrêté
- Après ~5 s, l'avion bascule en RTL (visible quand tu relances
make mavlink2restet reconnectes Cockpit)
Important : la perte GCS n'arrête pas l'avion. Il fait RTL → cercle. Si tu n'as plus aucun lien, l'avion finira son carburant en cercles au-dessus de HOME.
3. Provoquer un battery failsafe¶
ArduPlane lit la tension batterie. Sous BATT_LOW_VOLT, il alerte. Sous BATT_CRT_VOLT, il prend une action drastique (RTL ou LAND).
Procédure SITL — injection de tension¶
En SITL, on peut forcer la tension simulée :
Ou — plus simple sans MAVProxy — changer le seuil pour qu'il déclenche à tension normale :
# Forcer FS_BATT_VOLT à 13.0 (tension actuelle ~12.6 V)
# Via Cockpit → Parameters → search "FS_BATT_VOLT" → set 13.0
Observation¶
- Le seuil franchi → notification Cockpit "Battery low"
- Mode bascule sur
BATT_FS_LOW_ACT(souvent RTL) - Si critique :
BATT_FS_CRT_ACT(souvent LAND)
Critère de succès¶
- Tu as vu la notification
- Le mode a basculé automatiquement
- Tu sais où voir les paramètres
BATT_*dans Cockpit
4. Provoquer un GPS failsafe¶
Perte de fix GPS = catastrophe pour un fixed-wing autonome.
Procédure SITL¶
Ou simule des satellites perdus :
Observation¶
- Quelques secondes plus tard : "GPS Glitch" ou "EKF Failsafe" dans Cockpit
- Si en AUTO : mode bascule vers LAND ou RTL selon
FS_EKF_ACTION - L'avion essaie de garder l'attitude par baromètre + IMU (dead reckoning) — précis quelques minutes max
Recovery¶
GPS revient, EKF re-converge en ~10 s, mode peut être repris manuellement.
Critère de succès¶
- Tu as vu le mode auto-basculer
- Tu as restauré et repris le contrôle
- Tu réalises que le GPS, c'est ta vie en autonome
5. Geofence — barrière virtuelle¶
Tu peux définir une zone (cercle ou polygone) où l'avion a le droit de voler. Sortie = action de failsafe.
Setup¶
- Cockpit → Geofence (souvent dans le menu Mission)
- Dessine un cercle de rayon 500 m autour de HOME
- Active
FENCE_ENABLE = 1 FENCE_ACTION = 4(RTL) ou1(report only)
Test¶
- Lance une mission qui sort de la zone (ex : WP à 1 km de HOME alors que fence = 500 m)
- À la frontière, ArduPlane refuse de continuer
- Mode passe à RTL automatiquement
Critère de succès¶
- Tu as défini une geofence
- Tu as vu l'avion s'arrêter à la frontière
6. Tableau de bord "santé véhicule"¶
Cockpit affiche en permanence ces indicateurs critiques. Apprends à les lire en moins de 2 secondes :
| Indicateur | Valeur saine | Alerte si... |
|---|---|---|
| Batt voltage | 12.6 V (4S nominal 14.8 V, low 13.2) | < 13.2 V |
| Batt current | varie selon throttle | > seuil défini |
| GPS sats | ≥ 10 | < 6 |
| HDOP | < 1.5 | > 3 |
| EKF status | green | rouge / yellow |
| Heartbeat latency | < 2 s | > 5 s |
| Mode | celui que tu attends | un mode failsafe non demandé |
| Armed | selon contexte | armed quand tu ne t'y attends pas |
Apprendre à scanner cette barre du coin de l'œil = le réflexe pilote autonome.
7. Pratique : enchaîner les pannes¶
Exercice final : lance un vol AUTO. Pendant qu'il vole, provoque dans cet ordre :
- RC loss (coupe la manette) → laisse l'avion entrer en CIRCLE puis RTL
- Reconnecte la manette, mode → LOITER, reprends position
- Geofence breach (force-le à sortir d'une fence) → RTL
- Bas batterie (param BATT_LOW_VOLT = 13.0) → notification + RTL
- GPS loss (SIM_GPS_DISABLE = 1) → LAND ou EKF failsafe
Si l'avion survit cet enchaînement → tu maîtrises les failsafes.
Avant le niveau 6¶
- Tu sais déclencher chaque failsafe dans SITL
- Tu sais reconnaître chaque failsafe en regardant Cockpit
- Tu sais recover de chaque failsafe (reprendre la main)
- Tu as une checklist mentale des 5 indicateurs santé à vérifier en vol