Intelligence du robot

1) But
Le but de ce module est de créer un algorithme capable de déterminer quel est le meilleur chemin a suivre par le robot pour se rendre aux cibles tout en évitant les obstacles

2) Réalisation du projet
-A Calcul de la trajectoire
Le calcul de la trajectoire se fait à l'aide d'un algorithme basé sur des notions de graphique. La structure qui a été choisie pour modéliser l'environnement du robot est donc le graphique. Ce dernier consiste en un ensemble de point qui sont connectés les uns aux autres. Les connections doivent être définies ainsi que le poids de cette connection (la distance, dans ce cas).
L'environnement du robot a donc été défini de la façon suivante:
>
On peut voir que la dimension du graphique est facilement modifiable et que les points sont interconnectés via huit chemins, donc avec des pas de 45 degrés. Ceci veut dire que la trajectoire pourra suivre des diagonales dans le graphique et permettra au robot un jeu de 8 directions possibles. De plus, les chemins des diagonales ont un poids plus grand que les chemins droits car ils sont géométriquement plus longs (~1.4 fois).
L'algorithme utilisé calcule le chemin le plus court à partir de la définition du graphique entre 2 points donnés. Cet algorithme s'appelle Dijkstra et est un algorithme de calcul de trajectoire bien connu que nous avons tiré d'un volume que nous avions de notre cours d'algorithmes de l'ingénieur.
Le code est assez simple. D'abord, le graphique est initialisé avec un jeu de boucle qui défini tous les points possibles dans une matrice N*M. Ensuite, il faut éliminer les points qui sont inaccessibles par le robot (les obstacles). Ceci est fait en utilisant les résultats du traitement d'image et en faisant une conversion entre le système de coordonnées de l'image et celui du graphique. On obtient ainsi les régions du graphique qui ne doivent pas être utilisé dans le calcul de la trajectoire. Ils sont donc éliminés et le calcul peut ensuite avoir lieu.
Le résultat du calcul est ensuite utilisé pour dessiner l'environnement dans l'application principal et pour guider le robot.

B- Contrôle du robot
Le contrôle du robot est assez simple une fois que le trajet a été calculé. Le trajet sera une série de lignes droites. La stratégie de déplacement du robot a été choisie pour permettre de s'assurer qu'une erreur de déplacement pourra être corrigée en cours de route et pour s'assurer d'arriver le plus près possible des cibles.
Il s'agit donc de retenir seulement la première ligne droite du trajet calculé et de la faire parcourir par le robot. Ensuite, on recommence. De cette façon, toutes les lignes droites seront parcourues jusqu'à ce que la dernière itération amène le robot à la cible. De plus, si le déplacement du robot est erroné sur un segment, alors le calcul de la trajectoire sera modifié automatiquement selon la nouvelle position du robot.
Chaque itération contient donc les étapes suivantes:
1) Calculer le trajet
2) Retenir la première ligne droite
3) Calculer l'angle que le robot doit tourner pour se diriger dans la bonne direction
4) Faire tourner le robot et le faire parcourir en ligne droite, la distance nécessaire.
5) Si robot n'a pas atteint la cible, retour à l'étape 1. Sinon, saisir ou relâcher la cible.