Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

info_bs:archi [2019/10/26 21:08] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Architecture applicative ======
  
 +===== Contrainte d'​architecture =====
 +
 +La solution choisie pour établir l'​architecture applicative d'un des robots est construite en prenant en compte les contraintes fonctionnelles suivantes :
 +  * Modularité
 +  * Evolutivité
 +  * Simplicité
 +  * Traçabilité
 +  * Sécurité
 +  * Maintenabilité
 +  * Robustesse
 +
 +===== Schéma d'​architecture applicative =====
 +
 +{{ info:​info_bs:​archi_clk_-_new_page_1_.jpeg?​300 |}}
 +
 +===== Mémoire partagée et état du robot =====
 +
 +La solution applicative choisie s'​organise autour d'une **mémoire partagée** entre différents acteurs logiciels.
 +
 +La mémoire contient l'​**état courant** du robot ainsi que l'​**état souhaité**.
 +
 +L'​état courant représente un état réel dans le cas où les données viennent des **esclaves I2C** et représente un état simulé si elles viennent des **simulateurs**.
 +
 +L'​état souhaité est un état modélisant les commandes à appliquer et le souhait de l'​application (l'IA en général).
 +
 +Tous les acteurs logiciels sont totalement indépendants entre eux. Le seul moyen de communication et de passer par la mémoire partagée. Cette indépendance garanti la modularité de l'​application et permet également de maintenir l'​évolutivité.
 +
 +===== Contrôleurs d'​esclaves I2C et simulateurs =====
 +
 +Le but des esclaves I2C et des simulateurs est de faire tendre l'​état courant vers l'​état souhaité.
 +
 +Les **contrôleurs d'​esclaves I2C** se chargeront de lire l'​état souhaité et de transmettre celle-ci à leur esclave I2C correspondant. En retour, ils lieront l'​état réel de leur esclave I2C et la transmettrons dans l'​état courant.
 +Les simulateurs effectuerons le même workflow de lecture/​écriture en simulant l'​opération au lieu de la transmettre à l'​esclave I2C.
 +
 +Une partie du robot peut être simulée tandis que l'​autre partie peut être réelle, en dialoguant à travers le bus I2C.
 +
 +**Attention : ** Pour éviter des conflits de workflow sur la donnée, un simulateur et une controleur d'​esclave I2C effectuant la même transformation ne peuvent pas fonctionner en même temps.
 +
 +===== Intelligence artificielle =====
 +
 +L'IA du robot est complètement indépendant du reste de l'​application. Elle ne peut connaître que ce qui est contenu dans la mémoire partagée.
 +
 +Mathématiquement l'IA est une fonction transformant l'​état courant du robot en un état souhaité avec comme aide le contexte. Le contexte est la mémoire interne de l'IA qui peut contenir ses ordres déjà exécuté et d'​autres informations utiles (plan de la carte).
 +
 +===== Débug =====
 +
 +Le débug de l'​application est primordial durant la phase de recherche et de développement. Elle doit être fonctionnelle en premier et doit fonctionner aussi bien en simulation (partielle ou non) qu'en situation réelle.
 +
 +Simplement, cela s'​effectue par un log de l'​ensemble des états courant et voulu. Plus complexe et plus utile, un logiciel de visualisation et simulation complète peut être défini.