Outils d'utilisateurs

Outils du Site


informatique:ia

Ceci est une ancienne révision du document !


UTCoupe : fondements et explication de l'IA

Objectif du document : expliquer la théorie, la pratique et le code de l'IA développée à UTCoupe.

La théorie

L'IA : à quoi ça sert ?

La principale utilité de notre IA est d'être le “cerveau” du robot : c'est elle qui donne les ordres. Elle récupère des informations des différents organes du robot (asserv, hokyo, capteurs divers) et prend les décisions qui s'imposent au cours du match.

Son rôle est donc de faire l'ensemble de la gestion des données récupérées par l'ensemble des organes du robot et de prendre des décisions au cours du match.

Quelle est son architecture ?

Globalement et en très simplifié, son architecture actuelle est orientée action : l'IA décide d'accomplir un objectif en jeu (par exemple renverser un feu), elle dit à l'asservissement d'aller à la position et une fois arrivée, l'action se déclenche (par exemple la sortie d'un vérin). Une fois que s'est fait, elle calcule un nouvel objectif et demande à l'asservissement de s'y rendre.

On pratique, l'IA possède plusieurs modules (comprendre classes en POO) :

  • Un module de calcule de chemin (pour savoir la distance entre le robot et les différentes actions à accomplir)
  • Un module de navigation sur la map (pour spécifier à l'asserv où elle doit aller)
  • Un module action (qui regroupe l'ensemble des actions à déclencher quand on arrive à la position voulue)
  • Un module gamestate (qui permet de connaitre l'état du jeu)
  • Un module qui permet de gérer le robot
  • Un module IA qui orchestre tout le reste

Le cœur de l'IA se charge donc d'appeler les diverses méthodes des modules dont elle a besoin en cours d'exécution.

La pratique

En pratique, l'IA est relativement complexe, car elle doit gérer de nombreux paramètres et tâcher de faire concorder la situation réelle du robot, son évolution dans son environnement, mais aussi son état “virtuel”. Concilier ces divers points et gérer l'ensemble du robot et de son environnement est particulièrement difficile car nombre de variables et d'inconnues interviennent.

Néanmoins, diviser l'ensemble en plusieurs modules (comme ce qui se fait en programmation orientée objet) permet de simplifier grandement la conception et la réalisation de l'IA. C'est la solution qui a été retenue.

Fonctionnement des actions et de l'architecture orientée action

Outre toute la gestion, le principal rôle de l'IA est de commander le robot pour accomplir les actions en jeu (et donc rapporter des points). Un schéma général est respecté pour accomplir les actions :

  • A partir de la position actuelle du robot, l'IA calcule la distance qui sépare le robot des endroits où les actions doivent être effectuées. Une fois cela fait et à partir d'autres paramètres, elle détermine quelle action il faut effectuer.
  • Quand l'IA sait quelle action le robot doit effectuer, elle va envoyer à l'asserv les coordonnées d'une zone qui déclenchera l'action : lorsque le robot y est, la classe action (cf plus bas) adéquate se déclenche.
  • L'IA rentre dans la classe action, qui est une série de commandes à effectuer pour effectuer l'action (avancer le robot de 10cm, activer l'AX12 numéro 3, tourner de 90°, etc…)
  • Une fois que toutes les commandes ont été effectuées, l'IA calcule à nouveau la distance entre le robot et les actions restantes, en choisie une et on recommence.

Autre :

informatique/ia.1385662656.txt.gz · Dernière modification: 2013/11/28 19:17 par qchateau