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
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