Architecture
La pile logiciel (backend-node) s'appuie sur une architecture orienté service.
Un service est une unité atomique avec une fonctionnalité bien précise. Mis ensemble, les services permettent ainsi d'effectuer la tâche du logiciel entier.
Exemple
La tâche de l'architecture backend-node est de pouvoir participer à un match de SSL.
Un service serait la prise de décision ou la manipulation en vitesse du robot.
Cette approche est à mettre en opposition à l'architecture traditionnelle du développement logiciel : architecture monolithique. La pile de NAMeC (backend-cpp) utilise cette architecture.
Ces deux types d'architectures (et leur variantes), présente chacun des avantages et des défauts.
info
A travers le cours du Club Innovation, l'accent sera mis sur les concepts clés à savoir de la SSL, cela permettra de ne pas vous rendre dépendant d'une plateforme ou d'une architecture (C++ ou NodeJS).
Schéma de l'architecture#

Présentation des services#
Dans la suite de ce chapitre, nous allons décrire précisément l'ensemble des fonctionnalités qu'apporte chaque service au projet.
Présentation des entrées-sorties#
Vision#
Les données de vision sont transmises par ssl-vision (réel) ou grSim (simulation) sous format protobuf.
Game-Controller#
TODO - A faire (17/12/2020)
Robot#
TODO - A faire
Order#
TODO - A faire
Présentation interne#
Structure principale#
La structure principale se compose de cinq services.
- network-gateway
- game-data
- MSB
- bots-control
- bots-gateway
Fonctionnalité
Réceptionner les données en entrées (vision ou game-controller).
Fonctionnalité
Filtrer les données obtenus en entrée.
Fonctionnalité
Prise de décision en fonction d'un état du jeu.
Fonctionnalité
Contrôler le robot à travers des ordres simples (aller à une position donnée, tirer, ...)
Fonctionnalité
Envoyer les ordres en vitesse au robot.
Outils#
Ces services sont dans le but de donner des outils et du confort au développeur.
Librairies externes#
ssl/types#
TODO
ssl/algorithm#
TODO