P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens

De Wiki de Projets IMA
Révision datée du 24 février 2015 à 09:00 par Vvergez (discussion | contributions) (Downloads)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Downloads

Rapport intermédiaire
Rapport final

Présentation du projet

Pour bien comprendre l'objet de ce projet, il faut savoir où sont nés les besoins. Depuis l'année scolaire 2013/2014, des membres de Polytech Lille ont entrepris de participer à la Logistic League de la Robocup.
La Robocup est une compétition internationale de Robotique, ayant pour but d'encourager le développement des robots autonomes. Historiquement la Robocup présente des compétitions de robots footballeurs, l'objectif initial étant d'obtenir une équipe de robots capable de rivaliser avec une équipe humaine.
Depuis sa création, la Robocup a pris beaucoup d'ampleur et héberge maintenant - en plus de ses différentes leagues de football - des leagues orientés autour du secours, de la maison ou encore de la logistique.


C'est cette league logistique qui nous intéresse. Créée et supportée par l'entreprise Festo, elle vise à représenter un environnement logistique de plus en plus autonome.

Le travail se concentre principalement sur les Robotinos de Festo, des robots mobiles holonomes. Ces robots doivent évoluer par équipes de trois, deux équipes adverses à la fois, sur un terrain représentant un environnement de production.
Leur rôle est d'optimiser la production du site en gérant les différentes machines de fabrication de produits et en s'adaptant à leur environnement.
L'utilisation des machines est très simplifié, la majeure partie du travail se concentre finalement autour de la compréhension de l'environnement et de la stratégie de production.

Une grande partie de l'appréhension de l'environnement par les robots est faite par vision. La vision par ordinateur est une chose complexe, l'un des besoin est donc d'obtenir un traitement d'image efficace et robuste.

La stratégie elle, nécessite un nombre important de tests.
Il est très coûteux de reproduire l’environnement de compétition complet, il faut avoir l'espace nécessaire pour l'installer. Il faudrait aussi deux fois plus de robots pour représenter l'équipe adverse et le matériel s'userait rapidement à cause de l'utilisation intense.
Il est assez évident qu'un outil de simulation, sans être absolument nécessaire, serait un grand avantage.

Présentation des outils

Pour répondre à ces besoins, plusieurs outils sont utilisés. Les trois principaux sont ROS, V-REP et OpenCV.

ROS (Robot Operating System) - Framework pour applications de robotique

ROS, est une collection d'outils permettant le développement efficace et surtout rapide d'application de robotique.
Partant du constat que les applications de robotique sont souvent similaires et que l'on y retrouve les même besoins, Open Source Robotics Foundation a lancé ROS, un projet open source qui permettrait aux roboticiens de développer leur logiciels de robotique à partir d'une base solide et standard.
Depuis l'idée de départ jusqu'à aujourd'hui, ROS a rencontré un franc succès au point d'être pour ainsi dire une référence dans le domaine.

Son concept de base est très intéressant car il permet de concevoir son système logiciel sous forme de plusieurs petits nœuds "indépendants". Indépendants ne veux pas dire isolés, les nœuds peuvent communiquer entre eux par plusieurs moyens de communications très complets. Mais leur développement lui peut-être réalisé indépendamment du reste de l'application.

C'est très satisfaisant d'un point de vue du travail collaboratif premièrement, mais aussi pour le diagnostique d'erreur. Un système découpé en sous-systèmes est bien plus facile à maintenir.
Mais c'est surtout très intéressant pour la partie qui va suivre, la simulation.

ROS est l'environnement utilisé pour tout l'applicatif embarqué sur les Robotinos de l'équipe de Polytech Lille. Il sera donc un outil incontournable pour ce projet.

V-Rep - Simulateur de robotique temps réel

V-REP, le simulateur de Coppelia Robotics, se définit comme le couteau suisse de la simulation robotique. C'est un logiciel Open Source, gratuit pour une utilisation non commerciale et assez récent.
Il est toutefois déjà très abouti et a comme grand intérêt d'être très facilement interconnectable avec d'autres applicatif et notamment avec ROS.
Autre intérêt, V-REP propose un mode de fonctionnement en temps-réel. Cela signifie que la simulation est optimisée pour respecter des contraintes de temps-réel et permet d'avoir une simulation fidèle à la réalité, utilisable en combinaison avec un système réel.

Comme dit précédemment, ROS fonctionne avec des nœuds indépendants. Dans le système commandant les Robotinos de l'équipe, un paquets de nœuds sont en charge de l'interfaçage entre le logiciel et le matériel. D'un point de vue des nœuds ROS, il importe peu de savoir quels nœuds fonctionnent, tant que nos messages d'informations sont reçus et que les informations nécessaires nous sont émises.
Partant de ce principe, si c'est V-REP qui reçoit tout les ordres de mouvements et qui renvoi, à la place des nœuds habituels, les informations des capteurs, le flux caméra, etc, l'application fonctionnera sans problème.
L'utilisation de la simulation sera alors totalement transparente, aucune modification de l'application ne sera nécessaire et c'est là toute la force de cette combinaison V-REP/ROS.

OpenCV - Bibliothèque Open Source de vision par ordinateur

S'agissant d'un rapport intermédiaire, le travail effectué jusqu'ici n'utilise pas OpenCV. Il est toutefois intéressant d'en parler pour présenter le projet dans sa globalité.
OpenCV est une bibliothèque, open-source elle aussi, de Computer Vision (vision par ordinateur, ou encore traitement d'images). Elle sera utilisée dans la seconde partie du projet qui consiste à fiabiliser le traitement d'images et le rendre plus efficace.
La encore, cette bibliothèque est complètement intégrée à ROS, ce qui est bien-sûr un grand avantage. Elle permettra de traiter tant les flux vidéos réels que ceux en provenance de la simulation.

Je précise ici, qu'à ce stade du projet, du code OpenCV est déjà fonctionnel sur un flux vidéo en provenance du robotino. C'est une source de problèmes en moins pour cette partie du projet, il ne reste plus qu'à s'occuper des algorithmes.

Résultats

Avancement du projet

Partie Simulateur

Semaine 01 | 22/09 - 28/09

Objectif : Planification du projet
Découverte du simulateur V-Rep via les tutoriels.
Planification des premières semaines de projet, consacrées au simulateur. Les semaines suivants la soutenance de décembre seront elles consacrées au travail sur la reconnaissance vidéo.
Rédaction de la base de la page Wiki.

Semaine 02 | 29/09 - 05/10

Objectif : Modélisation Robotino 3
Modélisation de la roue omnidirectionnelle.

  • Méthode 1 : Pure shape sphérique motorisé sur un axe et laissée libre sur un second axe. Pour garder l'axe libre à l'horizontale, même après rotation de la roue, un script viens replacer l'axe à chaque itération de la simulation. Cette méthode semble avoir des effets secondaires indésirables. Un couple apparaît sur l'axe "libre" de la roue, au point de pouvoir maintenir le robot à l'oblique. L'origine de ce couple n'est pas encore claire.
  • Méthode 2 : Modélisation complète de la roue omnidirectionnelle avec des galets ovoïdes "non pure". Cela complexifie la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti la simulation (la simulation ne respecte plus les contraintes temps réel).
  • Méthode 3 (à tester) : Remplacer les galets par plusieurs "pure shape" sphériques.
  • Méthode 4 (à tester) : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet.

Semaine 03 | 06/10 - 12/10

Objectif : Modélisation Robotino 3

  • Méthode 3 : Remplacer les galets par plusieurs "pure shape" sphériques. Il faut plusieurs sphères pure pour remplacer un seul galet (ovoïdes "non pure"). Le gain obtenu par simplification des éléments est perdu par la multiplication des éléments libres. Cela complexifie aussi la simulation qui semble avoir des ratés sur la résolution des contacts avec le sol et qui ralenti sévèrement la simulation (la simulation ne respecte plus les contraintes temps réel).
  • Méthode 4 : Regarder du côté des textures avec aucune friction sur l'un des axes de l'objet. Ces textures fonctionnent avec le moteur physique Vortex. Il a pour inconvénient d'être payant et de ne proposer que 20 secondes de simulation dans sa version gratuite. Néanmoins, les résultats sont époustouflants et correspondent aux besoins (avec respect des contraintes temps réel dans la simulation).

Ces quatre solutions sont toutes les solutions que j'ai trouvées à ce jour. Je pense garder celle du moteur physique Vortex pour des tests cours et tenter d'améliorer les résultats de la première méthode en m'attardant sur les manipulation scriptées pour éviter ou réduire les effets secondaires lors de simulations longues (plus de 20sec).

Semaine 04 | 13/10 - 19/10

Objectif : Modélisation Robotino 3

Semaine 05 | 20/10 - 26/10

Objectif : Interfaçage ROS et V-REP

Semaine 06 | 27/10 - 02/11

Objectif : Interfaçage ROS et V-REP

Semaine 07 | 03/11 - 09/11

Objectif : Interfaçage ROS et V-REP

Semaine 08 | 10/11 - 16/11

Objectif : Tests et correction de la modélisation

Semaine 09 | 17/11 - 23/11

Objectif : Tests et correction de la modélisation

Semaine 10 | 24/11 - 30/11

Objectif : Tests et correction de la modélisation
Abandon définitif de la modélisation dynamique (modélisation des roues omnidirectionnelles).
La modélisation sera uniquement cinématique.

Semaine 11 | 01/12 - 07/12

Objectif : Définition des besoins pour la partie reconnaissance vidéo

Semaine 12 | 08/12 - 14/12

Objectif : Préparation de la soutenance

Semaine 13 | 15/12 - 21/12

Objectif : Soutenance de projet

Partie Reconnaissance vidéo

Semaine 14 | 22/12 - 28/12

Objectif : Planification de la partie reconnaissance vidéo

Médiagraphie

Site de Coppeliarobotics (simulateur V-Rep)
http://www.coppeliarobotics.com/

Site et wiki de ROS (Robot Operating System)
http://www.ros.org/
http://wiki.ros.org/