Différences

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

Lien vers cette vue comparative

info_bs:view [2019/10/26 21:08] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Visualisation d'un match ======
  
 +La visualisation d'un match sera possible grâce à une vue web interactive.
 +Cette vue aura 2 modes de fonctionnement :
 +  * Visualisation en temps réel d'un match (avec contrôles manuels possibles)
 +  * Replay d'un match déjà joué (via un fichier de log)
 +
 +Les deux modes de fonctionnement ont un affichage semblable afin de simplifier l'​expérience de l'​utilisateur. Leur fonctionnement réel et leur capacité seront par contre tout à fait différent. Chacun des modes sera spécifié séparément même pour les éléments d'​affichage communs.
 +
 +===== Visualisation en temps réel d'un match =====
 +
 +Ce mode de fonctionnement permet de contrôler en direct les états de nos 2 robots (on considérera qu'on a N robots dans la spécif) ainsi que l'​état de l'​environnement pour chacun des robots.
 +
 +La vue se décompose en 2 parties : la "​carte"​ et la "​description"​ de chaque robot :
 +{{ info:​info_bs:​much_views.png |}}
 +//(Le chat représente la carte et sera modifié)//
 +
 +==== Désynchronisation des robots ====
 +
 +Il faut savoir que les N robots ont une vue différente de leur environnement. La vue devra en tenir compte sans pour autant gâcher l'UX.
 +
 +Sur la partie "​carte"​ du la vue, la solution retenue sera d'​avoir un affichage en couches avec une couche par robot. Il existe une unique couche principale affichée sans détérioration. Les autres couches seront affichées avec une opacité très réduite pour la rendre visible sans pour autant gêner la couche principale. Cette aspect est visible sur le mockup où on voit les éléments Z et X dédoublés.
 +
 +Sur la partie "​description",​ une colonne sera alloué à chacun des robots (avec un maximum de 2~3 colonnes en fonction de la largeur de l'​écran et retour à la ligne pour les nouvelles colonnes).
 +
 +==== Description d'​état ====
 +
 +Cette spécification est valide pour un seul robot. Elle est à dupliqué pour s'​adapter à N robots différents.
 +
 +=== Mode auto/manuel ===
 +
 +Le robot a un nom et un mode de fonctionnement. Il peut être soit en commande automatique soit en commande manuelle.
 +
 +La commande automatique implique que le module d'​intelligence artificielle soit lancé. Ce type de commande est activé par défaut. C'est l'IA qui fournis les ordres au robots et l'​état propre du robot n'est donc pas modifiable. L'​environnement reste quand même modifiable même en mode automatique.
 +
 +La commande manuelle implique l'​arrêt du module IA. L'​activation du mode manuel arrête l'IA automatiquement et tout l'​état du robot devient contrôlable. L'​état propre du robot est alors contrôlable (en partie car il ne sera pas possible de modifier les éléments très bas niveau comme la rotation d'un seul moteur de déplacement). La réactivation du mode auto relance le module d'IA. Cela implique que l'IA soit stateless et hotplugable.
 +
 +=== Groupe de propriétés ===
 +
 +Chaque propriété à un groupe indicatif. Ce groupe est représenté uniquement par un identifiant (chaîne de caractère) et n'est jamais utile au sens fonctionnel. Ce groupe permet uniquement de grouper sémantiquement des propriétés pour l'​utilisateur.
 +
 +Ces groupes pourront être utilisés pour indiquer le module utilisant principalement la propriété. Dans le cas d'une propriété externe venant d'un esclave I2C, le groupe sera simplement le nom de l'​esclave. Dans le cas ou la propriété est une donnée interne (en générale l'IA), alors le groupe sera le nom du module interne.
 +
 +=== Propriétés RO/RW ===
 +
 +Les propriétés peuvent être modifiable et lisible ou uniquement lisible. Cette différence sera exprimé au sein de l'UI afin d'​améliorer l'UX. Dans le cas de donnée numériques bornées, RW sera modélisé par un slider alors que RO sera modélisé par une progressbar.