Outils d'utilisateurs

Outils du Site


informatique:ia

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 bras). Une fois que s'est fait, elle calcule un nouvel objectif et demande à l'asservissement de s'y rendre.

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

  • Un module de communication (pour discuter avec les tourelles et le petit robot): /ia/communication
  • Un module pour stocker les informations des robots et de la tourelle (stocker sa position, connaitre ses futurs objectifs, met à jour la position des robots): /ia/data
  • Un module de navigation sur la map (pour spécifier à l'asserv où elle doit aller): /ia/event/goal/navigation
  • Un module action (qui envoie les ordres au bon moment à chaque robots, vérifie les collisions, contrôle la durée de jeu):ia/event
  • Un module choix d'objectif (lit les scripts imposé, déclenche un calcule d'objectif quand le précédent est terminé): ia/event/goal
  • Un module qui permet de gérer la camera (donne la position et la couleur des triangles): ia/event/goal/visio

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 objectif

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 objectif le robot doit effectuer, elle va envoyer au robot un ensemble de commandes, puis une fois les actions effectué ou après un timer, l'ia envoie le groupe d'actions qui suivent
  • L'IA rentre dans la classe eventManager, qui est une série d'action à effectuer pour effectuer l'objectif (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.txt · Dernière modification: 2014/06/20 22:13 par bacheced