• Aucun résultat trouvé

Distribution apprise (moyenne et variance)

2.5 Logiciels réalisés

2.5.1 Logiciel de prédiction de mouvements et d’exécution de gestes robo-tiques

Dans cette thèse, nous avons développé un logiciel qui permet de modéliser des mouvements quelconques, ainsi que d’interpréter un mouvement partiel afin d’en prédire le futur. De plus, il permet d’utiliser ces prédictions afin que le robot iCub exécute des gestes.

Ce logiciel est accessible publiquement sous une licence GPL [soft.Pred.Mult]. Il se compose de deux modules, représentés dans la Figure 2.6.

Durant la phase d’apprentissage, le robot apprend les différentes ProMPs et leur tâche correspondante, pendant que le partenaire humain contrôle ses gestes. Ce contrôle est effectué à l’aide d’un guidage manuel, lorsqu’il s’agit de l’iCub réel, ou d’un dispositif haptique lors de simulation.

Un module Matlab permet de rejouer les ProMPs, ou de finir un mouvement qui a été initié par un utilisateur. Ce module permet au robot d’apprendre des ProMPs à partir des

module C++ Pour lier et rediriger

les différentes informations trajectoires trajectoire1.txt .... trajectoireN.txt sauvegarde des trajectoires récupère des trajectoires comma ndes reto ur de forc es tra jec to ires comma ndes manuellement ou à l'aide d'un dispositif haptique Guidage de l'utilisateur module Matlab Modélise, prédit & continue des trajectoires iCub Goal 1 Goal 3 Goal 2 commandes Phase de prédiction Phase d'apprentissage Toutes les phases

réel ou en simulation Guidage de l'utilisateur trajectoires prédites position et forces du iCub

C B

A

Figure 2.6 – Architecture du logiciel avec représentation des échanges de données.

Le robot est soit guidé par l’utilisateur (manuellement ou à l’aide d’un dispositif haptique), ou à l’aide d’un module Matlab. Le module C++ permet de faire transiter les informations entre le robot et ces deux moyens de le guider.

trajectoires effectuées ; de rejouer ces ProMPs ; de reconnaître la ProMP qui correspond le plus à une trajectoire en cours ; et de prédire le “futur” de cette trajectoire, jusqu’à atteindre le but.

Un module C++ transmet au robot l’information de contrôle qui provient soit de l’utilisateur, soit du module Matlab. Le robot est alors capable de finaliser le mouvement initié par l’utilisateur (directement ou à l’aide d’un dispositif haptique) de manière autonome, comme présenté dans la Figure 4.2. Le module C++ est présenté dans la Section A.1.1, puis les algorithmes utilisés dans le module Matlab sont expliqués dans la Section 3.3. Un exemple jouet est alors présenté dans la Section A.2, suivi par un exemple plus concret dans la Section 4, où le robot simulé apprend différents types d’informations concernant les mouvements qu’il doit effectuer (c’est-à-direqu’il s’agit de ProMPs multi dimensionnelles). Finalement, une étude sur le robot réel est présentée dans la Section 4.3.

Dans le répertoire GIT du logiciel, un tutoriel est aussi fourni, ainsi qu’un fichier d’explication (README) et des vidéos de présentation. Le fichier d’explication décrit comment lancer des

dé-monstrations basiques. Les vidéos présentent ces dédé-monstrations, afin d’éclaircir le fonctionnement de cette application.

Pour plus d’information, le lecteur pourra se reporter à l’Annexe A.1.

2.5.2 Logiciel de prédiction des mouvements humains corps-complet

Le logiciel précédent n’est cependant pas capable d’exécuter des prédictions de trajectoires à grande dimension en temps réel, comme l’a mis en avant l’expérience présentée dans la Section 6.4.1. C’est pourquoi un deuxième logiciel a été créé, permettant la prédiction de trajectoire humaine corps-complet à grande dimension. Le schéma de la Figure 2.7 présente les différentes parties de ce logiciel.

Ce programme utilise le même module Matlab afin de modéliser, reconnaître et prédire des mouvements.

Mesure de 36 positions articulaires

à l'aide de capteurs

Combinaison XSENS MVN Studio

Fichiers d'enregistrement

Module Python Autoencodeur (AE ; VTSFE)

Module Matlab

Modélise, reconnait

et prédit des trajectoires envoit les trajectoires compressées Envoi de

postures Récupère les trajectoires Envoit la prédiction de la trajectoire compressée Communication par YARP

Figure 2.7 – Architecture du logiciel avec représentation des échanges de données.

L’utilisateur porte la combinaison Xsens et se déplace avec. Les mesures de la posture sont alors enregistrées et forment des trajectoires. Un auto-encodeur codé en Python compresse ces trajectoires, qui sont ensuite modélisées ou prédites par le module Matlab.

La différence est que dans ce logiciel, un module Python est ajouté en amont, afin de compresser des trajectoires à grande dimension dans un espace réduit. Ces trajectoires à grande dimension proviennent des postures mesurées par les capteurs du Xsens, lorsqu’une personne porte la combinaison. Malgré cette compression, les caractéristiques principales des mouvements sont conservées (grâce l’auto-encodeur du module Python, qui apprend ces caractéristiques). Ces trajectoires compressées sont alors modélisées par le module Matlab. Cette modélisation est ensuite utilisée afin d’interpréter des mouvements compressés partiels et d’en prédire le futur. Le mouvement prédit est finalement décompressé à l’aide de l’auto-encodeur Python.

Méthodes

Dans cette Section, nous détaillons le cadre théorique utilisé. Il s’agit d’une description de la méthode ProMP, suivie par des méthodes de compression de données, puis de leur combinaison avec les ProMPs. Ces méthodes sont utilisées au sein de notre application afin de reconnaître les intentions humaines et de prédire la poursuite de mouvements.

En amont, la Section 3.1 précise les différentes hypothèses utilisées dans nos expériences et dans nos calculs et la Section 3.2 présente les différentes notations utilisées dans cette thèse, afin d’aider la compréhension des différentes méthodes.

Puis, la Section 3.3 présente la méthode ProMP.

Pour cela, la Section 3.3.2 formule tout d’abord le problème de l’apprentissage d’une primitive, dans un cas simplifié. L’apprentissage de cette primitive est effectué à l’aide de plusieurs trajectoires de démonstration. Ensuite, la Section 3.3.3 formule et fournit la solution au problème de prédiction de la trajectoire « future », à partir des premières observations de celle-ci. De plus, dans la Section 3.3.4, nous discutons de l’inférence de la durée globale de la trajectoire à prédire.32

Finalement, dans la Section 3.3.5 nous montrons comment reconnaître, à partir d’une portion de trajectoire, quelle compétence (chacune étant représentée par une ProMP) doit être sollicitée parmi celles apprises, puis comment prédire la poursuite de la trajectoire initiée.

La Section 3.4 présente la méthode AE-ProMP utilisée afin de prédire la poursuite de trajectoires décrites par des données de dimension importante. Pour cela, un rappel sur ce qu’est un auto-encodeur est présenté dans la Section 3.4.1, suivi par une présentation de la méthode VTSFE présentée dans la Section 3.4.2, permettant d’auto-encoder des trajectoires (c’est-à-diresuite de données à valeur dans un espace continu (temps). Pour finir, les méthodes permettant de combiner ces solutions d’auto-encodage (position seule ou de trajectoire) avec les ProMPs sont présentées dans la Section 3.4.3.