Voilier Autonome


Groupe Software

Thomas ABOT - Thibaut CHARLES




Sommaire

  • Introduction
  • Fonctionnalités
  • Technologies
  • Quality Assurance
  • Hardware
  • Conclusion

Introduction

Objectif

  • Suivre un parcours au lac de Saint Renan
  • Sans intervention extérieure
  • A terme, participer à la Microtransat

Travail à effectuer

  • Équiper un voilier radio-commandé
    pour le rendre autonome
  • Concevoir une intelligence pour le diriger

Équipe

Fonctionnalités

Calculs GPS

  • Conversions DD/GPS/DMS
  • Routes orthodromiques
  • Précision d'environ 1 mètre

  • Implémentation de :
    • Distance point-point
    • Distance point-route
    • Cap en début de route
    • Cap en fin de route

Navigation par polaires

  • Navigation optimisée
  • Choix du cap en fonction du vent
  • Tirage de bords

Interface Web (1337)

  • État des capteurs/actionneurs
  • Décisions de l'intelligence
  • Émulation des capteurs et intelligence
  • Filtrage des logs

Séparation Hardware / Software

  • HardWareDaemon (HWD) : Acquisition et traitement bas niveau des données des capteurs
  • Intelligence (Intel) : Interprétation des données et prise de décisions

  • Communication via Socket UNIX
  • Permet un développement séparé des deux programmes

Tolérance aux crash Software

  • Un launcher qui surveille l'état des processus
  • Relancement auto. du HWD et de l'Intel
  • Reconnexion automatique de l'Intel au HWD
  • Reprise de la route

Technologies

Langage D

  • Langage compilé natif performant
  • À la fois haut et bas niveau
  • Syntaxe claire héritée du C++/Java/Python
  • Orienté meta-programming
  • Pas de redondance de code
  • Simplifie la QA
  • Un successeur du C++ et du Java?


Pour l'intelligence

Vibe.d

  • Bibliothèque D
  • Serveur Web intégré au programme


Pour l'interface web de debug (1337)

AngularJS

  • Framework Javascript
  • Programmation rapide d'interfaces web
  • Data-Binding


Pour l'interface web de debug (1337)

Quality Assurance

Design objet

  • Intelligence séparée en 3 classes distinctes (threads)
  • Peu de classes
  • Interactions simples

Programmation par contrat

  • Vérification de :
    • La cohérence d'un objet modifié
    • L'état avant l’exécution d'une fonction
    • L'état après l’exécution d'une fonction
    • Entrées/Sorties d'une fonction

  • Génère un assert en cas de problème

Tests unitaires et Coverage

  • Tests automatisés de chaque classe

  • Coverage :
    • Comptage de l'exécution de chaque ligne
      parcourue par les tests unitaires
    • Pourcentage lignes exécutées / lignes totales
    • Vérifie que le code est bien testé

  • Coverage > 60%

Configuration

  • Polaires = fichiers JSON
  • Route = fichier JSON
  • Configuration = fichier INI :
    • Chemin vers fichiers de log
    • Chemin vers fichier de route/polaire
    • Période d’exécution des threads
    • Port de l'interface 1337
    • Réglages de l'Autopilot, du SailHandler
    • Tension critique de la batterie
    • ...

Développement continu

  • Utilisation de Git
  • Version master / Dev

Disponibles et motivés

  • Présentation du programme
  • Cours sur le Langage D

Hardware

Réalisation du HWDaemon

  • Contrôle des servo-moteurs
  • Acquisition et traitement du GPS
  • Acquisition et traitement de la girouette
  • Acquisition et traitement de l'accéléromètre
  • Acquisition et traitement de la tension batterie

Girouette

  • Conception de la partie rotative
  • Installation en tête de mât
  • Frottements réduits au maximum
  • Capteurs optiques protégés de la lumière

Capots

  • Problèmes de coincements :
    • Dans les coins des capots
    • Autour des treuils
    • Sur les autres équipements sur le pont
  • Problème de fermeture : difficile à maintenir fermé

Capots - Solution

  • Conception de capots lisses en styrodur
  • Fermeture en force

Capots - Solution

Fuites

  • Deux fuites
  • Rebouchage à la colle silicone

Divers

  • Passage des câbles
  • Réduction de la voilure
  • Attache antenne Wifi
  • Peinture

Conclusion

Cahier des charges

  • Validé via simulation

  • Toutefois quelques problèmes sur le Hardware :
    • Faux contacts ?
    • Imprécision du compas

Perspectives pour l'avenir

  • Détection des pannes Hardware
  • Gestion des pannes
  • Apprentissage et auto-étalonnage des polaires
  • Autopilot en fonction de la vitesse de rotation du bateau

Questions?

Calculs GPS - Orthodromie

  • Routes orthodromiques (rouge)
  • Basés sur la formule de Haversine
    (Approximation sphéricité de la Terre)

Définition des Polaires

  • Représentation des choix et actions
  • Definition de points et extrapolation

Navigation par Polaires

  • Optimisation par superposition

Pilote automatique

  • Fonctionnement par Delta variable
  • Si le bateau n'est plus manœuvrable, retour à 0