Aller au contenu

Stack de développement local — macOS

Documentation de l'environnement de dev sur MacBook Apple Silicon. Couvre tout ce qu'il faut pour développer, tester, et flasher la flotte sans toucher à Linux.

Hors scope : la station de base mobile (Tailscale, accès headless via VNC, services tournant sur le laptop ops) est documentée dans ../base-station.md. Ce dossier traite uniquement de l'environnement développeur local.

Plateforme cible

  • MacBook Apple Silicon (validé M1 Pro), macOS récent (Sonoma 14+ ou Sequoia 15+).
  • Apple Silicon natif. Aucune VM, aucun Docker requis pour la stack de base.
  • Pas de Linux nécessaire pour Phase 0.5 et Phase 1.

Choix technologiques

Couche Outil Notes
Simulateur ArduPilot SITL Compilé natif macOS, multi-véhicules en parallèle
Visualiseur 3D FlightGear Rendu 3D synchronisé sur SITL via FDM UDP 5503 ; scenery monde entier
Bridge MAVLink → web mavlink2rest Rust, expose REST + WebSocket
GCS web (recommandé) Cockpit Vue.js, Electron, multi-véhicule, command prompt MAVLink, OSS
GCS classique QGroundControl Alternative desktop, plus stable pour les missions complexes
Hub MAVLink (debug) MAVProxy CLI
Radio Radiomaster Boxer Mode joystick USB HID, EdgeTX
Cross-compile firmware gcc-arm-none-eabi Cible Matek H743-WING V3
Glue logicielle (custom) Rust (workspace Cargo) Règles cross-vehicle ; portable Mac → Pi Zero 2W → ESP32

Pas de Go, pas de C, pas de Python pour la glue. Python sert uniquement à MAVProxy et au build system d'ArduPilot (waf). C reste pour ArduPilot upstream uniquement.

Ordre de lecture

  1. setup-macos.md — prérequis système, Homebrew, toolchains. À faire en premier.
  2. sitl.md — build et exécution du simulateur, connexion radio Boxer, scénarios multi-véhicules. Phase 0.5.
  3. cockpit.md — web GCS (Cockpit + mavlink2rest), make web tout-en-un. OSS, recommandé.
  4. flightgear.md — visualiseur 3D synchronisé sur SITL ; spawn par défaut @ CYHU (Rive-Sud Montréal).
  5. training/Formation pilote progressive en 7 niveaux pour devenir expert SITL + Cockpit avant d'écrire du code custom.
  6. firmware.md — cross-compile et flash du firmware sur le Matek H743-WING V3. Phase 1.
  7. glue.md — environnement de dev pour la logique multi-véhicules (software/). Phase 4.
  8. style.md — conventions de code Rust (lints, panics, locks, no_std discipline).

Workflow — Makefile racine

Une fois le setup fait, le Makefile à la racine du repo (my_fleet/Makefile) gère tout le cycle SITL :

make up         # Plane SITL + QGC (TCP 5760)
make web        # Plane SITL + mavlink2rest + Cockpit
make fg         # Plane SITL @ CYHU + FlightGear 3D
make down       # arrête SITL (laisse GUIs ouvertes)
make multi      # Plane + Rover en parallèle (5760 + 5770)
make status     # ports écoutés + apps GUI
make logs       # tail -f du log Plane
make help       # liste complète

make up est idempotent (détecte si SITL ou QGC sont déjà actifs). QGC se connecte via Comm Link TCP 127.0.0.1:5760 (à ajouter une fois dans QGC, persisté).

Workspace

~/Project/bascanada/
├── ardupilot/             # upstream ArduPilot (cloné)
└── my_fleet/              # ce repo
    ├── docs/              # documentation technique
    ├── presentations/     # decks Marp
    ├── software/          # workspace Rust (3 crates : mavlink/base/companion)
    ├── fleet-params/      # snapshots ArduPilot .parm versionnés par véhicule
    ├── cad/               # modèles 3D
    ├── Makefile           # workflow dev SITL
    └── README.md

Aucun de ces dossiers ne doit vivre dans iCloud Drive — les builds génèrent des dizaines de milliers de fichiers et la sync iCloud les corrompt.