Outils d'utilisateurs

Outils du Site


simu:simu13

UTCoupe : explication du simulateur

Objectif du document : expliquer à quoi sert le simulateur et son fonctionnement.

Simulateur : Qu’est-ce que c’est ?

Le simulateur d’UTCoupe est un petit logiciel graphique qui représente la carte de la coupe (avec l’ensemble des objets) et qui sert à simuler le comportement de l’IA.

En effet, plutôt que de procéder à des tests sur un vrai robot, il est intéressant de passer une grande partie du temps de débug sur le simulateur. Si celui-ci est bien fait, il pourra retranscrire le comportement réel du robot assez fidèlement.

Et ça ressemble actuellement à ça :

C’est bien beau, mais pour simuler quoi ?

C’est une très bonne question ! On parle de simuler le comportement du robot, mais quoi exactement ? En fait, la principale fonction du simulateur est de pouvoir observer ces différents points :

  • Choix pertinent des actions au cours du match
  • Trajectoires du robot (par exemple s’il ne fonce pas dans un mur)
  • Système d’évitement (géré par l’IA)

Les actions en elle-même sont assez difficiles à simuler (surtout celles en 3d, le simulateur étant limité à 2 dimensions), d’autant plus qu’il est presque impossible de reproduire relativement fidèlement les actionneurs et les senseurs.

Le simulateur se concentre donc sur la prise de décision de l’IA par rapport à l’état actuel du jeu, les trajectoires qu’elle prend et si son système d’évitement est efficace.

Et comment qu’on fait tout ça ?

Le simulateur, afin de simuler un environnement réel, s’appuie principalement sur un moteur graphique (qui permet de gérer l’affichage sur l’écran) et un moteur physique (qui permet de simuler un minimum de physique, le robot a une masse, une accélération, etc… ce sont plein de petites choses à gérer dans le simulateur), le tout coupler par un engine (engine.py dans le code).

L’ensemble des objets déplaçables (robots, feux, foyers, etc…) sont chacun des objets indépendants (au sens informatique du terme). La carte est générée, le moteur graphique se charge de charger l’ensemble des objets afin de compléter la carte. On se retrouve ainsi dans une position de début du match, en simulé.

Ok ! Et ça se passe comment la suite ?

Le simulateur est un client comme un autre au niveau de l’architecture globale. Donc l’IA, via le protocole de communication, appel le simulateur (au lieu d’appeler l’asserv) et le lien se fait entre les 2. Pour l’IA c’est totalement transparent : elle pense qu’elle est en train de jouer un vrai match, pas un match simulé.

Il incombe donc au simulateur de renvoyer tous les événements et messages nécessaires pour que l’IA pense qu’un match est en train de se dérouler (check de l’asserv, position des robots ennemis, etc…).

Cela est possible en émulant l’ensemble des organes du robot en virtuel. C’est la partie un peu délicate du simulateur, car on doit tout émuler afin que l’IA pense qu’elle tourne en normal, et non sur le simulateur (donc émuler l’asserv, les actionneurs et senseurs, l’hokyo, etc…).

Une fois que tout cela est fait et que les liens sont établis, l’IA se lance == le match commence !

Petite précision sur les actionneurs du robot :

Les éléments de la table de jeu ont une taille fixe durant le jeu, ce qui n'est pas le cas des robots. On en effet, au cours du match, le robot peut activer des actionneurs qui auront pour effet de rendre sa surface au sol plus grande (on sort un bras par exemple).

Du fait du caractère dynamique de l'évolution du robot, un système d'extension a été intégré au simulateur. Ainsi notre robot peut se voir doté de bras (et pour la simulation, on peut activer l'option via un raccourci clavier), mais ceux-ci sont a une certaine hauteur, donc ils ne percutent pas tout (un paramètre important à prendre en compte dans la simulateur).

Bref, les robots peuvent être associés à une liste d'extensions activable et désactivable au cours du match du simulateur (à l'aide de raccourci claviers).

Conclusion

En gros, le simulateur créé un environnement virtuel identique à une table de jeu et l’IA contrôle l’ensemble des actions qui se passent (par l’intermédiaire d’un robot virtuel) et le simulateur se contente d’appliquer les ordres de l’IA et de lui renvoyer les informations utiles pour son bon fonctionnement.

Ainsi on est capable de déterminer si les prises de décisions de l’IA sont correctes, si les chemins empruntés sont cohérents et conformes et si le système d’évitement est fonctionnel.

La seule différence entre un match réel et un match simulé est la physique : l’asserv ne répondra pas exactement de la même façon, les actionneurs et les senseurs non plus, et l’exactitude des informations ne sera pas la même (sur le simu on connait exactement la position du robot, en réel il peut y avoir des décalages). Mais d’une règle général, le comportement de l’IA doit être identique dans les deux cas.

Autre

simu/simu13.txt · Dernière modification: 2014/08/17 20:54 par tfuhrman