Intelligence Artifielle
-----------------------

L'IA a pour objectif de, a partir des coordonnes des balises, et de la position du robot, dterminer une trajectoire. Mais celui ci ne doit pas tre automatique, a savoir qu'il ne doit pas seulement trouv des trajectoires puis s'avoir s'arreter au bout d'un moment dtermin, mais doit interagir avec son environnement en fonction du temps. 

Pour cela on utilise un seul programme, avec surement plusieurs 'thread', qui se base sur un fichier normalis contenant des informations sur les tats qu'il doit prendre - par exemple, s'il ne doit pas bouger, s'il doit chercher a relever des quilles, ... [TODO: dfinir les tats] - 
-S'il ne doit pas bouger, il y a simplement une boucle qui vrifie la validit de l'tat en fonction du temps ( un do...while ).
-S'il doit relever des quilles, une boucle prend les coordonnes, des quilles, recherche celle qui sont tombs, prend la plus accssible ( vrification simple uniquement: distance, coef d'access en fct de l'angle par rapport au robot, puis comparaison ( on prend le plus haut score ). Ensuite on cherche la meilleur trajectoire ( A* ) pour aller relever la quille [TODO: trouver une solution pour ne pas arriver perpendiculairement a la table].

Aprs avoir dtermin les actions a ffectu, une fonction s'occupe de traiter la trajectoire ( elle l'envoie a la partie elec grce au port // ).

L'IA doit tre relativement simple, rapide et surtout fficace, il ne doit pas y avoir d'accident ( touch des quilles debout, se bloqu, se buggu).

Pour le dbuggage, il faudra ffectuer un petit script qui fourni des coordonnes et rcuppre la solution ( prvoir un fichier de log !).

En ce qui concerne le fichier de stratgie que le programme doit charger au dmarrage et qui dtermine les diffrentes "tapes" du match.
Celles ci sont disponibles dans un fichier structur crit  l'avance et qui a un nom constant.
Les lignes impaires correspondent a des instructions alors que les lignes impaires,  des temps ( en secondes, crit sur 2 chiffres ) qui dfinissent la validit de l'intruction prcdente, exemple:
ex:
    SLEEP
    05
    GOTO 5 3 7
    00
    SEARCH
    ...
La premire instruction ordonne au robot de dormir ( rien faire ) jusqu' 5, c'est alors qu'il va ( GOTO )  la case qui a pour coordonne X ( 5 ) et Y ( 3 ) en se mettant dans telle position ( 7 ). Ces dernires sont au nombre de 8 et dfinissent l'angle avec lequel le robot doit arriver  la case. ( 0 = Indtermin, 1 = angle 0 par rapport  X , puis volution dans le sens trigo ( 2 = pi/4 ) ).
En ce qui concerne les temps, 00 signifie que ds que l'action est termin, il passe  la suivante sinon il attend simplement que l'instruction soit prime.



