RoboCup 2015 - Pyro Team : Différence entre versions

De Wiki de Projets IMA
(Etapes du projet)
(Avancement du Projet)
Ligne 65 : Ligne 65 :
 
===Semaine 2===
 
===Semaine 2===
  
Jour 1 :
+
====Jour 1 :====
  
*Etablissement du cahier des charges :
+
Etablissement du cahier des charges :
**Prise de connaissance des contraintes d'environnement
+
*Prise de connaissance des contraintes d'environnement
**Dialogue avec l'équipe responsable de la partie [http://projets-imasc.plil.net/mediawiki/index.php?title=RoboCup_2015 Manager]
+
*Dialogue avec l'équipe responsable de la partie [http://projets-imasc.plil.net/mediawiki/index.php?title=RoboCup_2015 Manager]
*Familiarisation avec l'environnement logiciel ROS
+
Familiarisation avec l'environnement logiciel ROS
*Recherches de solutions pour la localisation (SLAM) et la génération de trajectoire (algorithme A-star)
+
Recherches de solutions pour la localisation (SLAM) et la génération de trajectoire (algorithme A-star)
  
Jour 2 :  
+
====Jour 2 : ====
  
*Tout d'abord nous avons voulu orientés nos recherches sur le déplacement du Robotino, pour cela il a fallu chercher un algorithme de trajectoire.
+
Nous avons fait nos recherches en nous orientant sur le déplacement du Robotino afin de trouver un algorithme de trajectoire, capable de trouver le chemin le plus court, puisqu'un des buts de la compétition étant la rapidité
*Un des buts de la compétition étant la rapidité, nous avons orientés nos recherches vers des algorithmes qui offraient la possibilité de parcourir une *distance minimale.
+
Plusieurs algorithmes sont donc ressortis :
*Deux algorithmes sont donc ressortis :
+
*- L'algorithme Dijkstra (On part du point de départ et on cherche le chemin le plus court vers le point d'arrivée en cherchant dans TOUTES les directions)
 +
*- L'algorithme A-Star (Basé sur Dijkstra, cet algo s'oriente directement vers le point d'arrivée en minimisant la distance avec celui-ci)
 +
*- L'algorithme D-Star Lite (Amélioration du A-Star avec bufferisation des précédents calculs pour éviter les calculs inutiles)
  
**- L'algorithme A-Star (ou A*)
+
Fonctionnement de l'algorithme A-Star :
 
 
**- L'algorithme Dikjstra
 
 
 
*L'algorithme A-Star est un algorithme dérivé de celui de Dikjstra mais qui permet au robot de faire moins de calcul.
 
*L'algorithme de Dikjstra est utile si les obstacles créent un vrai labyrinthe pour le robot, mais ce n'est pas le cas de notre compétition.
 
 
 
*Nous avons donc choisi l'algorithme A-Star, voici son fonctionnement :
 
 
 
*Tout d'abord, on calcule la distance qui sépare le robot du point d'arrivée, et on défini les points interdits par les obstacles. (la zone bleue correspond
 
*à l'obstacle et la zone verte est une zone ou le robot touche l'obstacle. Ces deux zones constituent la zone interdite).
 
 
 
[[Fichier:Projet_S8_A_STAR_1.PNG]]
 
  
 +
*Tout d'abord, on calcule la distance qui sépare le robot du point d'arrivée, et on définit les points interdits par les obstacles. (la zone bleue correspond
 +
à l'obstacle et la zone verte est une zone ou le robot touche l'obstacle. Ces deux zones constituent la zone interdite).
  
 +
[[Fichier:Projet_S8_A_STAR_1.PNG | thumb | left]]
  
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------
  
 
+
[[Fichier:Projet_S8_A_STAR_2.PNG | thumb | right]]
 
 
[[Fichier:Projet_S8_A_STAR_2.PNG]]
 
  
  
 
*Ensuite le Robot trouve un premier noeud sur la grille qu'on lui a attribué. Si le noeud n'est pas dans une zone interdite, il sauvegarde ce noeud.
 
*Ensuite le Robot trouve un premier noeud sur la grille qu'on lui a attribué. Si le noeud n'est pas dans une zone interdite, il sauvegarde ce noeud.
  
[[Fichier:Projet_S8_A_STAR_3.PNG]]
+
[[Fichier:Projet_S8_A_STAR_3.PNG | thumb | left]]
 
 
 
 
  
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------------------------------------------------------------------------------
  
 
+
[[Fichier:Projet_S8_A_STAR_4.PNG | thumb | right]]
 
 
[[Fichier:Projet_S8_A_STAR_4.PNG]]
 
 
 
  
 
*Il répète l'opération jusqu'à trouver le chemin qui le mènera à l'arrivée
 
*Il répète l'opération jusqu'à trouver le chemin qui le mènera à l'arrivée
  
[[Fichier:Projet_S8_A_STAR_5.PNG]]
+
[[Fichier:Projet_S8_A_STAR_5.PNG | thumb | right]]
  
 
*Attention : c'est seulement lorsqu'il aura trouvé le chemin complet que le robot va se déplacer !
 
*Attention : c'est seulement lorsqu'il aura trouvé le chemin complet que le robot va se déplacer !
  
 
== Fichiers Rendus ==
 
== Fichiers Rendus ==

Version du 5 février 2015 à 16:32


Cahier des charges

LogoPyro icone.png

Présentation générale du projet

Avec plusieurs IMAs, nous avons créer une équipe pour participer à la Logistic League de la RoboCup. Lors de la compétition de l'Open German, version européenne de la RoboCup, il faudra mettre en place un système autonome de production à l'aide de Robotinos (robots mobiles de Festo ayant un système d'exploitation Linux) afin de réaliser des produits en fonction des demandes de l'arbitre du jeu : la Referee Box. Nous traiterons dans ce projet de l'aspect navigation des robots, composé d'une partie localisation et d'une partie déplacement.

Contexte

La compétition de l'Open German se déroule en quatre phases spécifiques : phase de début-de-jeu, phase d'exploration, phase de production, phase de fin-de-jeu. La navigation sera utilisée dans la phase d'exploration afin de réaliser une carte de la zone de jeu permettant de définir des zones de passage entre les machines. Dans la phase de production, la navigation permettra de se déplacer à partir de la carte créée au préalable (avec les obstacles fixes) et des robots (obstacles mobiles) se déplaçant en même temps.

Objectif du projet

Fournir aux Robotinos un système capable de se localiser et de parcourir des trajectoires calculées à partir de coordonnées envoyées par le Manager.

Description du projet

ProjetS8.png
  • Localiser correctement le robot (à 5 cm près)
  • Localiser les éléments fixes :
    • Murs
    • Machines
  • Générer une trajectoire selon :
    • les demandes du "Manager"
    • la détection d'obstacles dynamiques (robots)
  • Assurer le suivi de la trajectoire

Choix techniques : matériel et logiciel

  • Utilisation de 3 Robotinos équipés chacun de :
    • 1 détecteur laser pouvant réaliser des mesures à 240°
    • 1 gyroscope
    • 9 capteurs SHARP (télémètres infrarouges)
    • 3 codeurs incrémentaux présents en sortie de chaque moteur du Robotino
  • Utilisation de ROS Hydro
  • Utilisation de différents langages : C++ ou Python
  • Utilisation de Linux Ubuntu 12.04

Etapes du projet

Schéma du concept de la Localisation et Cartographie Simultanée :

SLAM.png

Explicitation des différentes parties :

  • Odometry change  : changement de position
  • Odometry update  : mise à jour de l'odométrie
  • Re-observation  : vérification des changements à partir de toutes les données disponibles
  • New observations  : mise à jours de la matrice d'état
  • Laser scan  : scan laser brut
  • Landmark Extraction : extraction des objets caractéristiques
  • Data Association  : association entre objets scannés et objets en mémoire

Avancement du Projet

Semaine 1

  • Participation aux Finales Nationales des Olympiades des Métiers en robotique mobile (4ème)

Semaine 2

Jour 1 :

Etablissement du cahier des charges :

  • Prise de connaissance des contraintes d'environnement
  • Dialogue avec l'équipe responsable de la partie Manager

Familiarisation avec l'environnement logiciel ROS Recherches de solutions pour la localisation (SLAM) et la génération de trajectoire (algorithme A-star)

Jour 2 :

Nous avons fait nos recherches en nous orientant sur le déplacement du Robotino afin de trouver un algorithme de trajectoire, capable de trouver le chemin le plus court, puisqu'un des buts de la compétition étant la rapidité Plusieurs algorithmes sont donc ressortis :

  • - L'algorithme Dijkstra (On part du point de départ et on cherche le chemin le plus court vers le point d'arrivée en cherchant dans TOUTES les directions)
  • - L'algorithme A-Star (Basé sur Dijkstra, cet algo s'oriente directement vers le point d'arrivée en minimisant la distance avec celui-ci)
  • - L'algorithme D-Star Lite (Amélioration du A-Star avec bufferisation des précédents calculs pour éviter les calculs inutiles)

Fonctionnement de l'algorithme A-Star :

  • Tout d'abord, on calcule la distance qui sépare le robot du point d'arrivée, et on définit les points interdits par les obstacles. (la zone bleue correspond

à l'obstacle et la zone verte est une zone ou le robot touche l'obstacle. Ces deux zones constituent la zone interdite).

Projet S8 A STAR 1.PNG

Projet S8 A STAR 2.PNG


  • Ensuite le Robot trouve un premier noeud sur la grille qu'on lui a attribué. Si le noeud n'est pas dans une zone interdite, il sauvegarde ce noeud.
Projet S8 A STAR 3.PNG

Projet S8 A STAR 4.PNG
  • Il répète l'opération jusqu'à trouver le chemin qui le mènera à l'arrivée
Projet S8 A STAR 5.PNG
  • Attention : c'est seulement lorsqu'il aura trouvé le chemin complet que le robot va se déplacer !

Fichiers Rendus