Aller au contenu

Niveau 1 — Premier vol SITL

Objectif : décoller, monter à 50 m, tourner, atterrir, sans rien casser (c'est virtuel, mais on prend les bonnes habitudes).

Durée : 30 min — répéter 3 fois.

1. Vérifier que tout est UP

Dans un terminal :

cd ~/Project/bascanada/my_fleet
make status

Tu dois voir :

── SITL ──
  ✓ Plane         TCP 5760 LISTEN
── Bridge web ──
  ✓ mavlink2rest   :8088
── Apps GUI ──
  ✓ Cockpit

Sinon make web pour tout relancer.

2. Lire Cockpit — orientation

Avant d'agir, observe l'écran principal :

Zone Ce que tu y lis
Mode courant (haut centre, gros) Probablement MANUAL ou INITIALIZING au démarrage
Armed / Disarmed Texte ou indicateur — désarmé au démarrage
Altitude 0 m (sol)
Airspeed / Groundspeed 0 m/s
Battery 12.6 V, 100 % (simulé)
GPS nombre de satellites, fix type. Normalement 3D Fix après ~20 s
HDOP "horizontal dilution of precision". <2 = bon
Carte Avion devrait apparaître à Canberra (-35.36, 149.16) par défaut
EKF Voyant santé EKF — attends qu'il soit vert
Heartbeat Latence du dernier heartbeat. <2 s en SITL local

Critère de succès : tous les indicateurs verts ou neutres, aucun rouge.

Si tu vois "Pre-arm: Need 3D fix" ou similaire, attends 20 s — le GPS simulé prend quelques secondes à converger.

3. Le pré-armement (pre-arm checks)

ArduPilot refuse d'armer si quelque chose cloche. C'est la sécurité de base.

Dans Cockpit, cherche le bouton ARM (souvent en bas à droite ou via le widget vehicle status). Clique. Deux scénarios :

Cas A — ça arm directement

Tu vois : - Mode passe en armed - Throttle peut être à 0 mais le moteur "tourne" (tu vois un changement de status) - Critère de succès : badge "Armed" affiché, pas d'erreur

Cas B — ça refuse avec un message

Lis le message d'erreur dans la notification. Typiquement : - "Need 3D fix" → GPS pas prêt, attendre 20 s - "AHRS not healthy" → EKF pas convergé, attendre 30 s - "Compass not calibrated" → en SITL c'est rare, sinon paramètre à fixer - "RC not calibrated" → on n'a pas de RC en SITL, voir plus bas

En SITL pur sans joystick, ArduPlane peut refuser sur "RC not calibrated". Solution : changer ARMING_CHECK ou ARMING_RUDDER, on verra ça au niveau 6. Pour maintenant, utilise le mode TAKEOFF qui arm tout seul (étape 5).

4. Comprendre le système de coordonnées

Avant le takeoff, regarde la carte. L'avion est orienté avec un cap (heading). 0° = nord, 90° = est, 180° = sud, 270° = ouest. ArduPilot va décoller dans la direction où il pointe.

Pour le SITL plane par défaut, l'orientation initiale est ~353° (presque plein nord). Bon à savoir parce que ton avion va décoller dans cette direction.

5. Premier décollage automatique — mode TAKEOFF

Le mode TAKEOFF d'ArduPlane fait tout pour toi : il monte gaz à fond, garde le bon angle d'attaque, plafonne à une altitude cible (TKOFF_ALT, par défaut ~30 m), puis bascule en FBWA.

Procédure

  1. Dans Cockpit, change le modeTAKEOFF
  2. Tu peux le faire via le dropdown de modes ou via le command prompt MAVLink
  3. Si pas déjà armé : ARM
  4. Observe la carte : l'avion devrait commencer à avancer puis monter
  5. Regarde l'altitude grimper de 0 à ~30 m en ~15 s
  6. À ~30 m, ArduPilot passe automatiquement en FBWA (Fly-By-Wire A) et l'avion continue tout droit

Critères de succès

  • Altitude > 25 m
  • Airspeed > 12 m/s (~43 km/h)
  • Mode = FBWA (ou encore TAKEOFF si tu n'as pas attendu)
  • Pas de message d'erreur dans Cockpit

6. Laisser l'avion tourner — mode LOITER

Maintenant que l'avion vole, mets-le en LOITER. C'est le mode "tourner en rond autour de la position courante", utile pour réfléchir sans crasher.

  1. Mode dropdown → LOITER
  2. Observe : l'avion fait des cercles autour de sa position
  3. Le rayon par défaut est ~80 m (WP_LOITER_RAD)

Critère de succès

L'avion tourne stable, altitude tenue à ±5 m, pas en piqué ni en montée incontrôlée.

7. Retour à la base — RTL

RTL = Return To Launch. L'avion retourne au point HOME (là où tu as armé) à une altitude minimum (RTL_ALTITUDE, défaut 100 m), puis fait un cercle.

  1. Mode → RTL
  2. Observe : l'avion change de cap vers HOME (rappel: -35.36, 149.16)
  3. Il monte à 100 m s'il est plus bas, ou maintient son altitude s'il est plus haut
  4. Arrive au HOME, fait un cercle LOITER permanent

Critère de succès

  • Avion à <50 m de HOME (regarde la carte)
  • Altitude stable autour de 100 m
  • Tourne en cercle

8. Atterrir — mode LAND (sans piste, glissé contrôlé)

LAND dans ArduPlane = approche glissée jusqu'au sol. En vrai ça suit un glide path précis ; en SITL ça simule.

  1. Mode → LAND
  2. L'avion descend progressivement
  3. Touche le sol → moteur coupé, désarme automatique
  4. Mode revient à STABILIZE ou MANUAL

Critère de succès

  • Altitude = 0
  • Avion désarmé
  • Pas de message d'erreur

En SITL, le LAND peut "crasher" doucement parce que la simulation n'a pas de piste. C'est OK. En vrai vol, tu utilises LAND avec une mission qui contient le glide path.

9. Recommence

Désarme si pas déjà, puis recommence la séquence complète : TAKEOFF → LOITER → RTL → LAND.

Vise 3 cycles propres avant de passer au niveau 2.

Récap des modes vus

Mode Ce qu'il fait Quand l'utiliser
TAKEOFF Décollage automatique jusqu'à TKOFF_ALT Au début
FBWA Pilotage assisté, l'avion garde l'attitude commandée Cruise contrôlé
LOITER Cercle autour de la position courante Pause / observation
RTL Retour HOME + cercle Urgence / fin de mission
LAND Approche glissée → touchdown Atterrissage

Le niveau 2 couvre tous les autres modes et explique quand utiliser quoi.

Si ça part mal

Symptôme Cause Action
Avion fait un piqué non commandé Stall ou EKF buggué Mode → STABILIZE ou MANUAL pour reprendre, sinon RTL
Avion en cercle infini sans monter Mode mal mis (CIRCLE) ou throttle 0 Mode → AUTO ou TAKEOFF
Cockpit "Vehicle disconnected" mavlink2rest crashé Terminal : make status ; si rouge make web
Avion crash et SITL coincé Pas grave en sim Terminal : make plane-down && make plane

Pour aller plus loin

  • Lire le code source minimal de ArduPlane/mode_takeoff.cpp (dans ~/Project/bascanada/ardupilot) — pas obligatoire, mais éclairant
  • Regarder le SITL log : make logs — voir le flux de messages

Quand tu peux faire le cycle complet sans regarder ce doc, passe au niveau 2.