Outils d'utilisateurs

Outils du Site


informatique:simulateur

UTCoupe : documentation du simulateur 2014

N'avez-vous jamais rêvé de savoir ce qu'il se passe dans la tête de votre robot ? De pouvoir afficher le résultat des milliers de lignes qui en composent son intelligence artificielle ? Ou tout simplement de pouvoir bosser alors que les mécanos sont pour une énième fois en train de bidouiller le robot ?

C'est pour répondre par l'affirmative qu'a été développé le simulateur ! Compagnon de tous les jours des développeurs de l'IA du robot, voici la documentation de la bestiole qui aura été améliorée depuis plusieurs années.

Explication générale : le simulateur

Le simulateur, qu’est-ce que c’est ?

En général, un simulateur est un logiciel qui permet de simuler un procédé physique. Dans notre cas, le simulateur sera simplement un logiciel graphique qui simule le comportement de nos robots et des objets de la table de jeu. Cela nous permet de tester et de débugger notre Intelligence Artificielle.

En effet, plutôt que de procéder à des tests sur un vrai robot (qu'il faut avoir…), il est intéressant de passer une grande partie du temps de débug sur le simulateur. Ainsi le développement de l'IA sera plus rapide et le robot pourra être utilisé pour d'autres choses.

Pour vous donner une idée, notre simulateur ressemble à ç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 :

  • Trajectoire des robots
  • Comportement des actionneurs
  • Système d’évitement (géré par l’IA dans notre architecture)
  • Choix pertinent des actions au cours du match (dynamique dans notre architecture)

L'objectif principal étant d'avoir un retour graphique sur le comportement général du robot et son interaction avec la table de jeu.

Et comment qu’on fait tout ça ?

Le simulateur doit gérer principalement 2 choses :

  • L'affichage des robots et des éléments de jeu
  • L'interaction entre les robots et les éléments de jeu

Notre simulateur s'appuie sur 2 librairies python :

  • PyGame, le moteur graphique qui va s'occuper de l'affichage
  • PyMunk, le moteur physique qui aura à charge la gestion de la physique de tous les objets

Concrètement, on va afficher un fond de carte vierge, sur lequel on va dessiner un ensemble d'objets que l'on peut déplacer (les robots et les éléments de jeu). Le gestionnaire de collision se chargera de simuler l'interaction entre les différents objets.

En définitive, le simulateur fonctionne un peu comme un jeu, où les éléments sont contrôlés par une IA.

Ok ! Et ça se passe comment la suite ?

Maintenant que le cadre est posé, la grande question est : comment l'IA fait pour faire bouger les éléments du simulateur ? Comment se passe l'interaction des deux logiciels ?

En réalité, le simulateur implémente l'ensemble des ordres qui peuvent être envoyés par l'IA à travers le protocole (voir section Le code en détail !, titre communication). Et c'est à travers ces ordres là que les éléments du simulateur bougent.

Par ailleurs, le simulateur doit aussi intégrer les codes de retour, envoyés normalement par le robot physique (ou en l'occurrence les cartes arduino clientes du point de vue du protocole de communication).

Le simulateur se substitue donc totalement aux clients du protocole de communication, tout en exécutant les ordres reçus et en envoyant les mêmes codes de retour. L'idée étant que du point de vue de l'IA, tout soit transparent (ce qui n'est malheureusement pas le cas étant donné notre architecture).

La documentation

Autre

informatique/simulateur.txt · Dernière modification: 2014/08/18 23:09 par tfuhrman