Aller au contenu

Robocup SSL


La RoboCup est une compétition internationale avec pour but principal d’accélérer la recherche en robotique et sur les IA. La SSL, Small Size League, est une de ses nombreuses catégories.
2 équipes de 8 robots, 6 en division B, s’affrontent dans un match de football. Chaque robot doit rentrer dans un cercle de diamètre 180mm et ne doit pas excéder une hauteur de 150mm. Le jeu se déroule sur un tapis vert de 12m de long et 9m de large avec une balle de golf orange.
Chaque entité sur le terrain (robots et balle) est identifiée par un système de vision standardisé se basant sur les données vidéos de caméras situées à 4m de la surface de jeu. Le système de vision standardisé est un projet open source de la communauté de la coupe.
Un ordinateur situé à l’extérieur du terrain reçoit la position des robots et de la balle et coordonne les déplacements et actions de chaque robot de son équipe. Toutes les transmissions sont sans fils et en FM.

Membres du groupe


Lakhal Nada (élec)
Loo Darren (élec)
Sehoubo Victoire (info)
Saliba Thomas (élec)

Description du projet


Une partie du projet est de réaliser le path finding des robots.
En connaissant la position initiale et la position finale du robot, un algorithme élabore la trajectoire du robot en prenant en compte la position des autres robots et de la balle en temps réel.

Une autre partie du projet est le contrôle des déplacements du robots.
Pour cela, il faut dans un premier temps réaliser un asservissement sur chaque moteur, puis, grâce au modèle dynamique du robot, asservir ses déplacements avec en entrée, un vecteur vitesse et un vecteur vitesse de rotation fournis par le système de vision standardisé.
Chaque moteur sera commandé par une tension de commande et asservi en vitesse. L’asservissement se fera avec l’implantation d’un correcteur PIDf (à actions Proportionnelle, Intégrale, Dérivée et de filtrage).

Support


Afin d’effectuer l’identification du moteur et de vérifier la pertinence des actions du correcteur, un banc de test a été réalisé à l’aide de la découpeuse laser d’Eirlab. La vitesse de rotation du moteur est récupérée par un encodeur magnétique situé à l’arrière du moteur. L’aimant utilisé a été soigneusement placé avec un gabarit fait à l’imprimante 3D.

 

Partie informatique

Elle consiste en la prise en main des fonctionnalités déjà développées par l’équipe du labri et à l’implémentation du contrôle haut niveau des robots. Les logiciels grSim(pour la simulation), ssl-refbox(pour le contrôle par l’arbitre) sont utilisés pour la vérification du fonctionnement théorique de nos algorithmes.
Le contrôle haut niveau du robot a été découpée en plusieurs sous-tâches. Entre autres, on a :

  • Le tracé de courbes d’un point de départ à un point d’arrivée sous plusieurs contraintes (rayon de courbure minimum du robot, …)
  • Prévisions du mouvement de tous les robots présents sur le terrain
  • Comportements :

– Coordonner les mouvements entre robots en générant des trajectoires qui ne se croisent pas
-Succession d’actions coordonnées:
Exemple : Un robot ayant la balle et connaissant la position d’un autre robot partenaire près des cages de but , doit envoyer la balle à ce dernier pour qu’il marque.

  • Stratégie


=> Tous les mouvements des robots et leurs interactions doivent être synchronisés et respecter les règles du jeu notamment les décisions de l’arbitre.

Algorithmes mis en oeuvre

En vue de calculer en temps réel la meilleure trajectoire que doit prendre un robot d’une position initiale à une position finale donnée, nous devons combiner les algorithmes de recherche de chemin, d’évitement d’obstacles et de tracé de courbes. Le résultat de nos recherche est résumé dans le fichier suivant:
https://drive.google.com/open?id=1fRvp3v9pUFU8v6p59sLrBkBSSc9Q6jl7

Pathfinding algorithms

Algorithme A* :

L’algorithme de recherche A* est un algorithme de recherche de chemin dans un graphe entre un nœud initial et un nœud final tous deux donnés. L’algorithme A* a été créé pour que la première solution trouvée soit l’une des meilleures, c’est pourquoi il est célèbre dans des applications comme les jeux vidéo privilégiant la vitesse de calcul sur l’exactitude des résultats.

Algorithme D* :

Cet algorithme est une extension de l’algorithme précédent. contrairement à A*, D* commence à partir du point final et il est capable de changer sa trajectoire même en rajoutant des obstacles en gardant la majorité de la trajectoire déjà calculée.

Algorithme RRT:

RRT est un acronyme du Rapidly-exploring Tree. Elle consiste à faire évoluer un arbre partant de la configuration initiale afin d’atteindre une configuration but. RRT est représentée par un graphe topologique noté G. L’arbre a pour racine la configuration initiale qinit.

Algorithme RRT*


Cette algorithme hérite de toutes les propriétés du RRT, et y rajoute deux nouvelles fonctionnalités qui sont: la recherche du plus proche voisin et la possibilité de mettre à jour l’arbre en avant dans la partie du jeu.

Asservissement du robot


Un dépôt github regroupe les fichiers MATLAB qui ont servi à l’élaboration du régulateur, différentes courbes et un rapport expliquant les choix effectués et les démarches adoptées durant ce projet. Il y a aussi les pièces conçues sous Inventor.
Une vidéo de démonstration sur banc de test y est aussi.