Proposition 2019 d'un projet 
pour étudiants du MASTER 1 ANDROIDE
"Une recherche d'efficacité par l'apprentissage pour un robot roulant autonome".

Deux chercheurs du LIP6 (laboratoire d'informatique paris 6 - Jussieu), Jean-Michel Ilié et François Pêcheux (équipes MoVe - CIAN) souhaitent développer des objets intelligents autonomes, au sens où ils auront la capacité de repousser à leur maximum l'intervention humaine. 

L'objet considéré ici dans ce projet est un robot roulant représentant un véhicule terrestre intelligent sur lequel s'appuiera un acteur humain pour mener à bien ses missions, comme par exemple livrer des médicaments à des pharmacies réparties dans une ville dont on connaît la topologie. Il existe déjà une version de ce robot. Le robot est destiné à remplir des missions applicatives nécessitant de se déplacer. Il peut observer son environnement grâce à différents dispositifs matériels (caméras, lidar, ...), et ainsi reconnaître des objets, des entités proches du robot. 

Le contrôle logiciel du robot est un agent composé hiérarchiquement d’une couche logicielle symbolique, destinée à planifier les actions à réaliser, et d’une couche logicielle dite physique, mettant en oeuvre la perception et le pilotage du robot. Un ordinateur embarqué sur le robot permet d’exécuter l'agent (avec un sur-ensemble de l’OS nommé ROS, Robotic Operating System). 

Le projet proposé consiste à améliorer le fonctionnement du robot roulant pour lui permettre de réaliser un pilotage performant et autonome, sans perte de réactivité face au contexte changeant de son environnement. Outre la question de la conduite à faire dans les règles, il s'agit de rendre sa perception de l'environnement rapide et pertinente et de pouvoir réagir en fonction. Pour accélérer certaines tâches, nous comptons exploiter la puissante carte Jetson TX2 de NVIDIA destinée aux applications d'intelligence artificielle, en particulier pour reconnaître des entités à partir de flux video de la caméra du robot et tracer celles qui se déplacent. Il s'agira de déterminer les intérêts de cette carte pour le fonctionnement du robot, d'en mesurer les avantages et d'introduire plus largement des notions d'apprentissage dans l'observation et le pilotage du robot.

Votre développement concernera en priorité quatre modules informatiques de l'agent «observation process», «context process», «action process» et  «learning process» qui vont fonctionner de concert pour assurer l'autonomie de déplacement du robot. Le langage de développement est le python. 

-	Le premier module exploite le flux d’images de la caméra pour reconnaître dans l'environnement proche du robot des objets et tracer ceux qui se déplacent.
-	Le second module a en charge de maintenir dynamiquement le modèle symbolique du monde, de telle manière que celui-ci puisse être aisément utilisé par les autres modules de l'agent.  De façon sous jacente, une base de données orientée graphe (neo4j-cypher) stocke le plan des routes, les expériences de conduite, l'état et les données odométriques du robot, ceux des objets détectés ou à observer. 
-	le troisième a en charge le pilotage du robot. Ce dernier devra pouvoir contrôler sa vitesse en fonction du contexte et sera le centre d'arcs réflexes en cas d'incident (obstacle qui apparaît soudainement, qui implique d’arrêter ou de ralentir les moteurs).
-	le quatrième module a en charge un apprentissage symbolique réalisé sur les expériences d'exécution des actions à plannifier. 

D'autres modules vous seront accessibles facilitant le travail demandé :
- le simulateur graphique et visuel de ROS dit Gazebo mis en place est capable d'embarquer une description du monde et du robot (abstrayant ainsi les problèmes de robotique matérielle), et est en interaction avec le code développé pour le robot. 
- un éditeur de monde (pour la base de données et le simulateur), spécifiant aussi le paramétrage du robot et des aléas devant apparaître dynamiquement (écrit en reactJS). 
- le testeur des services d'un module (suivant les concepts de programmation modulaire que nous avons mis en place). Des tests qualitatifs et quantitatifs peuvent être réalisés.

Prérequis
• 4 personnes maximum
• Intérêt pour la robotique, et l’interaction avec du matériel mécanique et électronique
• Connaissances appréciées en Python, Cypher, reactJS
• Connaissances en Linux et programmation système (process, socket, réseau, driver de matériel).

Résultats attendus
• Mise à jour du GIT :
	- sources développés
	- documentation en ligne pour l'utilisation et la programmation des APIs 
• Démonstration de cheminement et de l'adaptation dynamique au contexte
• Mesures et graphiques d'évaluation mettant en valeur des performances du robot.

Références bibliographiques
• (pour le côté symbolique)
Jean-Michel Ilié et Ahmed Chawki Chaouche, "Toward an Efficient Ambient Guidance for Transport Applications", in the 14th International Conference on Mobile Systems and Pervasive Computing (FNC/MobiSPC 2017), 2017. 
• (pour le développement de la couche physique et du simulateur) 
Tarek Chouaki, Pierre Dubaillay, Tristan de Blauwe (MASTER 1 Androide)
Taha El Robrini (Polytech 4ème année),
Rapport de projet et stages d'été 2018.