<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lrodrig1</id>
		<title>Wiki d'activités IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lrodrig1"/>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php/Sp%C3%A9cial:Contributions/Lrodrig1"/>
		<updated>2026-05-13T03:28:17Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:ReadmeNAO.txt&amp;diff=17849</id>
		<title>Fichier:ReadmeNAO.txt</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:ReadmeNAO.txt&amp;diff=17849"/>
				<updated>2015-02-26T11:04:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17848</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17848"/>
				<updated>2015-02-26T11:03:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* RENDUS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==RENDUS==&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sources programme[[Fichier:source.zip]]&lt;br /&gt;
&lt;br /&gt;
ReadME des sources[[Fichier:readmeNAO.txt]]&lt;br /&gt;
&lt;br /&gt;
Manuel d'utilisation Remote [[Fichier:remotenao.pdf]]&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17847</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17847"/>
				<updated>2015-02-26T10:58:16Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* RENDUS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==RENDUS==&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sources programme[[Fichier:source.zip]]&lt;br /&gt;
&lt;br /&gt;
Manuel d'utilisation Remote [[Fichier:remotenao.pdf]]&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17846</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17846"/>
				<updated>2015-02-26T10:58:07Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==RENDUS==&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17845</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17845"/>
				<updated>2015-02-26T10:57:51Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Cahier des charges */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==RENDUS==&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sources programme[[Fichier:source.zip]]&lt;br /&gt;
&lt;br /&gt;
Manuel d'utilisation Remote [[Fichier:remotenao.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Remotenao.pdf&amp;diff=17844</id>
		<title>Fichier:Remotenao.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Remotenao.pdf&amp;diff=17844"/>
				<updated>2015-02-26T10:56:32Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17843</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17843"/>
				<updated>2015-02-26T10:56:14Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sources programme[[Fichier:source.zip]]&lt;br /&gt;
&lt;br /&gt;
Manuel d'utilisation Remote [[Fichier:remotenao.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Source.zip&amp;diff=17842</id>
		<title>Fichier:Source.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Source.zip&amp;diff=17842"/>
				<updated>2015-02-26T10:54:59Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17841</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17841"/>
				<updated>2015-02-26T10:54:34Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sources programme[[Fichier:source.zip]]&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17828</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17828"/>
				<updated>2015-02-25T21:53:19Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17827</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17827"/>
				<updated>2015-02-25T21:53:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17826</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17826"/>
				<updated>2015-02-25T21:52:44Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
exemple :  names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17825</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17825"/>
				<updated>2015-02-25T21:51:13Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17824</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17824"/>
				<updated>2015-02-25T21:50:58Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
Chaque fonction est relié à des commandes direct du moteur et non des behaviors du NAO. En conséquence, ces commandes sont prioritaires et plus rapides.&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17823</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17823"/>
				<updated>2015-02-25T21:47:48Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Base de données des prénoms et formules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17822</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17822"/>
				<updated>2015-02-25T21:47:36Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17821</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17821"/>
				<updated>2015-02-25T21:47:17Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17629</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17629"/>
				<updated>2015-02-24T09:55:10Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Executable Programme NAO finale [[Fichier:remote.zip]]  &amp;quot;cliquer sur l'application Programme NAO finale&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Remote.zip&amp;diff=17626</id>
		<title>Fichier:Remote.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Remote.zip&amp;diff=17626"/>
				<updated>2015-02-24T09:53:49Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17624</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17624"/>
				<updated>2015-02-24T09:51:56Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.rar]]&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17620</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17620"/>
				<updated>2015-02-24T09:45:26Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf]]]]&lt;br /&gt;
&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17615</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17615"/>
				<updated>2015-02-24T09:35:37Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
Rapport de soutenance fin parcours [[Fichier:[[Fichier:Rapport_PFE_RodriguezTahry.pdf‎.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=17614</id>
		<title>Projets IMA5 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=17614"/>
				<updated>2015-02-24T09:34:28Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapports finaux&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P1 Modélisation et commande de l'auto-ignition d'un moteur HCCI]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moulé Alexandre / Taché Clément &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Anne-Lise Gehin / Jean-Yves Dieulot &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier:Rapport decembre moule tache.pdf]]  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P5 Filtrage des indicateurs numériques de diagnostic]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; ZIOU Ismaïl / HAMZAOUI Oussama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_Z.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE ZIOU HAMZAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P6 Gestion des flux thermiques du bâtiment Polytech]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Florian Royer / Zohour Assaieb &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_Royer_Assaieb.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P7 Utilisation d'un Robot Nao pour les enfants autistes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rodriguez Loïc/Ismaïl Tahry&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Projetpfenaomi.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE RodriguezTahry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P8 Pilulier]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Mercier / Emile Pinet&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS / Alexandre BOE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport decembre PFE pilulier mercier pinet.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE Pinet Mercier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P9 Agenda pour personnes non lectrices]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Cédric DESPREZ &amp;amp; Soufiane HADDAOUI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_MiSoutenance_DESPREZ_HADDAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P11 Détecteur d'obstacles pour fauteuils électriques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Geoffrey ROSE / Marjorie TIXIER &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS / Blaise Conrard &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_PFE_GAPAS_Rose_Tixier.pdf]]&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P12 Automatiser à l'aide d'une interface LabView la procédure de mesure de conductivité électrique d'un alternateur à griffes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Hugo FONDU &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Abdelkader Benabou &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_presoutenance.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P13 Construction d'un support motorisé pour la réalisation des essais de décharges électrostatique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; JEBBARI Zineb / BEKRAOUI Oumaima &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Nathalie Rolland &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:rapportJebbek.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P19 Contrôle et synchronisation d'instruments en microscopie]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Simon Duthoit&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Samuel Hym &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Balise Bluetooth Low Energy]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Kévin CHALONO / Armagan YAMNAZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[ Fichier:ProjetBLE 1 pdf.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_Yanmaz_Chalono2.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Bis Prototypage d'interactions localisées et contextualisées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Olivier Tailliez&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Vantroys / Yvan Peter &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P22 Google Glass en logistique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémy Gondry / Vincent Meunier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_intermediaire_Gondry_Meunier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_final_PFE_Meunier_Gondry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P24 Robot de surveillance domestique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Sébastien DELTOMBE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_P24_Deltombe.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P25 SmartMeter]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Ederlé / Sylvain Fossaert&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Guillaume Renault / Xavier Redon / Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportFossaertEderle.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P26 Vehicule Electrique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Smain Labdouni / Adnane Jaoui &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Arnaud Chielens / Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:RAPPORT_VE_DEC.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_pfe_Jaoui_Labdouni_Fevrier.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P27 Controle Direct de Puissance d'un Convertisseur Matriciel ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Quentin Pesqueux / Nicolas Alexandre &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:PFE_IMA5_MATRIX_CONVERTER_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_PFE_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Charlotte BRICOUT / Nathan MARTIN &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémie DEQUIDT&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:-BRICOUT MARTIN--Rapport PFE.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P33 Ligthing contactless / &amp;quot;wireless&amp;quot;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benjamin Lafit &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Benjamin_Lafit.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P35 Hack-a-Wii : Emulation de wiimote pour rendre la Wii accessibles aux personnes handicapées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Fabien Violier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P37 Creation d'un composant d'audit des accès cache mémoire sur un microprocesseur LEON3 simulé en FPGA ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérôme Vaessen &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Julien Cartigny / Pierrick Buret &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_VAESSEN_presoutenance.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P44 Création d'un systeme domotique sans fil ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benoit MALIAR / Thomas MAURICE&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierrick BURET / Thomas VANTROYS  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportMaliarMauriceDecembre.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_final_Maliar_Maurice.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P45 Aide à la navigation d'un véhicule autonome]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierre APPERCÉ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Valentin VERGEZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P57 CHRU Lille : Smart Picking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu Bossennec / Florian Caron&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Gwénaëlle Maton / Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P58 Transformation des spectateurs d’un concert en afficheur géant interactif]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hautecoeur Mélanie &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier : PFE_Rapport_Hautecoeur_Melanie.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P59 Assistance globale pour aide au parking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu GERIER / Céline LY &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Rapport_PFE_RodriguezTahry.pdf&amp;diff=17613</id>
		<title>Fichier:Rapport PFE RodriguezTahry.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Rapport_PFE_RodriguezTahry.pdf&amp;diff=17613"/>
				<updated>2015-02-24T09:33:52Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : Rapport de PFE du groupe Rodriguez/Tahry sur la collaboration entre NAO et GAPAS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rapport de PFE du groupe Rodriguez/Tahry sur la collaboration entre NAO et GAPAS&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=17611</id>
		<title>Projets IMA5 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=17611"/>
				<updated>2015-02-24T09:28:49Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapports finaux&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P1 Modélisation et commande de l'auto-ignition d'un moteur HCCI]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moulé Alexandre / Taché Clément &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Anne-Lise Gehin / Jean-Yves Dieulot &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier:Rapport decembre moule tache.pdf]]  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P5 Filtrage des indicateurs numériques de diagnostic]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; ZIOU Ismaïl / HAMZAOUI Oussama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_Z.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE ZIOU HAMZAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P6 Gestion des flux thermiques du bâtiment Polytech]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Florian Royer / Zohour Assaieb &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_Royer_Assaieb.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P7 Utilisation d'un Robot Nao pour les enfants autistes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rodriguez Loïc/Ismaïl Tahry&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Projetpfenaomi.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE Rodriguez/Tahry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P8 Pilulier]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Mercier / Emile Pinet&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS / Alexandre BOE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport decembre PFE pilulier mercier pinet.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE Pinet Mercier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P9 Agenda pour personnes non lectrices]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Cédric DESPREZ &amp;amp; Soufiane HADDAOUI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_MiSoutenance_DESPREZ_HADDAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P11 Détecteur d'obstacles pour fauteuils électriques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Geoffrey ROSE / Marjorie TIXIER &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS / Blaise Conrard &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_PFE_GAPAS_Rose_Tixier.pdf]]&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P12 Automatiser à l'aide d'une interface LabView la procédure de mesure de conductivité électrique d'un alternateur à griffes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Hugo FONDU &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Abdelkader Benabou &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_presoutenance.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P13 Construction d'un support motorisé pour la réalisation des essais de décharges électrostatique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; JEBBARI Zineb / BEKRAOUI Oumaima &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Nathalie Rolland &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:rapportJebbek.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P19 Contrôle et synchronisation d'instruments en microscopie]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Simon Duthoit&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Samuel Hym &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Balise Bluetooth Low Energy]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Kévin CHALONO / Armagan YAMNAZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[ Fichier:ProjetBLE 1 pdf.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_Yanmaz_Chalono2.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Bis Prototypage d'interactions localisées et contextualisées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Olivier Tailliez&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Vantroys / Yvan Peter &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P22 Google Glass en logistique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémy Gondry / Vincent Meunier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_intermediaire_Gondry_Meunier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_final_PFE_Meunier_Gondry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P24 Robot de surveillance domestique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Sébastien DELTOMBE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_P24_Deltombe.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P25 SmartMeter]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Ederlé / Sylvain Fossaert&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Guillaume Renault / Xavier Redon / Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportFossaertEderle.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P26 Vehicule Electrique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Smain Labdouni / Adnane Jaoui &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Arnaud Chielens / Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:RAPPORT_VE_DEC.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_pfe_Jaoui_Labdouni_Fevrier.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P27 Controle Direct de Puissance d'un Convertisseur Matriciel ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Quentin Pesqueux / Nicolas Alexandre &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:PFE_IMA5_MATRIX_CONVERTER_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_PFE_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Charlotte BRICOUT / Nathan MARTIN &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémie DEQUIDT&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:-BRICOUT MARTIN--Rapport PFE.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P33 Ligthing contactless / &amp;quot;wireless&amp;quot;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benjamin Lafit &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Benjamin_Lafit.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P35 Hack-a-Wii : Emulation de wiimote pour rendre la Wii accessibles aux personnes handicapées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Fabien Violier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P37 Creation d'un composant d'audit des accès cache mémoire sur un microprocesseur LEON3 simulé en FPGA ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérôme Vaessen &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Julien Cartigny / Pierrick Buret &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_VAESSEN_presoutenance.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P44 Création d'un systeme domotique sans fil ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benoit MALIAR / Thomas MAURICE&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierrick BURET / Thomas VANTROYS  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportMaliarMauriceDecembre.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_final_Maliar_Maurice.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P45 Aide à la navigation d'un véhicule autonome]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierre APPERCÉ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Valentin VERGEZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P57 CHRU Lille : Smart Picking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu Bossennec / Florian Caron&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Gwénaëlle Maton / Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P58 Transformation des spectateurs d’un concert en afficheur géant interactif]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hautecoeur Mélanie &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier : PFE_Rapport_Hautecoeur_Melanie.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P59 Assistance globale pour aide au parking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu GERIER / Céline LY &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17492</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17492"/>
				<updated>2015-02-23T14:29:58Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Remote finale */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.png]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17251</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17251"/>
				<updated>2015-02-19T17:35:24Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Déroulement du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
===Mois de Février===&lt;br /&gt;
&lt;br /&gt;
Essais avec les enfants des exercices supplémentaires en améliorant l'expérience du coté utilisateurs et du coté cible&lt;br /&gt;
Au final nous touchons deux sens principaux : la vue et l'ouïe.&lt;br /&gt;
Malgré le fait qu'ils soit partiellement aveugles ou totalement, les enfants ressentes le robot et reste très enthousiastes quant aux exercices avec lui&lt;br /&gt;
Avec les éducateurs, nous avons pu travailler sur un conte, sur de la musique et sur des bruits quotidien et d'animaux. Chaque exercices ayant pour but de calmer les enfants et de les faire prêter attention aux robots.&lt;br /&gt;
Avec un groupe test de 5-6 enfants, nous avons pu observer des enfants réagir très rapidement et pour tous les exercices. Certains d'entre eux ont quant à eux réagis qu'a une musique très douce et d'autres (les plus voyants d'entre eux ) lorsque le NAO exécute une cascade&lt;br /&gt;
&lt;br /&gt;
A la fin des divers tests, nous avons :&lt;br /&gt;
Pour tout lier, nous avons programmé une télécommande sous Windows 7 et supérieur exportable sur une tablette (Andoid ou Apple) via le Wifi. Cette télécommande est complètement indépendante de chorégraph (logiciel spécifique du NAO ) et donc ne nécessite aucune licence supplémentaire.&lt;br /&gt;
&lt;br /&gt;
Via cette télécommande il sera donc possible de diriger le robot Manuellement ( Avant arrière, a droite à gauche), de le faire changer de position (urgence debout , assis) mais aussi d'envoyer des message que le robot pourra dire. &lt;br /&gt;
&lt;br /&gt;
A partir de cette télécommande il sera aussi possible d'enclencher les exercices cités plus haut.&lt;br /&gt;
Nous avons fourni une documentation technique plus détaillée pour l'utilisation de cette télécommande &lt;br /&gt;
&lt;br /&gt;
Le livrable est donc le suivant : Un exécutable de la télécommande, une documentation technique de cette télécommande, un récapitulatif des exercices (avec instructions de démarrage) et les codes sources des exercices.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.jpg]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Remote.png&amp;diff=17248</id>
		<title>Fichier:Remote.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Remote.png&amp;diff=17248"/>
				<updated>2015-02-19T17:23:18Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17247</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=17247"/>
				<updated>2015-02-19T17:22:10Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Fonctions Remote du NAO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
===Exploitation des behaviors===&lt;br /&gt;
&lt;br /&gt;
 private void anibutt_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            beh3 = new BehaviorManagerProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            beh3.runBehavior(&amp;quot;animaux&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Au final nous avons &lt;br /&gt;
- la présentation du NAO aux enfants&lt;br /&gt;
- le conte des 3 petits cochons&lt;br /&gt;
- la reconnaissance des animaux&lt;br /&gt;
- la reconnaissance des bruits quotidiens&lt;br /&gt;
- la reconnaissance des musique        &lt;br /&gt;
En ce qui concerne les &amp;quot; à coté&amp;quot; nous avons donc la Dance Thaï chi, La Macarena , la Dance Vengelis&lt;br /&gt;
&lt;br /&gt;
===Base de données des prénoms et formules===&lt;br /&gt;
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
          &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void buttonformula_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            name = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            formula = new TextToSpeechProxy(NAOIptxt.Text, NAOQI_DEFAULT_PORT);&lt;br /&gt;
            name.say(comboBox1.Text);&lt;br /&gt;
            formula.say(comboBox2.Text);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void refresh_Click(object sender, EventArgs e)&lt;br /&gt;
        {&lt;br /&gt;
            comboBox1.Items.Clear();&lt;br /&gt;
            comboBox2.Items.Clear();&lt;br /&gt;
            string[] lineOfContents =File.ReadAllLines(&amp;quot;bddname.txt&amp;quot;);&lt;br /&gt;
            foreach (var line in lineOfContents)&lt;br /&gt;
            {&lt;br /&gt;
                string[] tokens = line.Split(';');&lt;br /&gt;
                comboBox1.Items.Add(tokens[0]);&lt;br /&gt;
            }&lt;br /&gt;
            string[] lineOfContents2 = File.ReadAllLines(&amp;quot;formula.txt&amp;quot;);&lt;br /&gt;
            foreach (var line2 in lineOfContents2)&lt;br /&gt;
            {&lt;br /&gt;
                string[] toke = line2.Split(';');&lt;br /&gt;
                comboBox2.Items.Add(toke[0]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Remote finale===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:remote.jpg]]&lt;br /&gt;
&lt;br /&gt;
Première étape : Entrer le nom du NAO dans la case NAO IP. Il y’a connexion dès que la case se grise.&lt;br /&gt;
Seconde étape : Rafraîchir la Base de Données des noms et des formules&lt;br /&gt;
	Pour rappel, dans le dossier source, il y’a deux fichier texte (name.txt ; formula.txt). Le nom des fichiers n’est surtout pas à changer. Vous pouvez par contre les éditer afin d’enlever ou rajouter des noms et des formules à raison d’un groupement par ligne du fichier et de finir par le caractère « ; »&lt;br /&gt;
Troisième étape : Utilisation de la télécommande en appuyant sur le bouton voulu&lt;br /&gt;
Dans les commandes manuelles, une pression sur un des boutons va entrainer son action. Pendant cette action il n’est pas possible de faire autre chose (blocage de l’interface jusqu’au terme). Les deux boutons « Assis »  et « Debout » sont des boutons d’urgence. La pression sur l’un des deux boutons entrainera l’action écrite et ceux dans n’importe qu’elle position de départ du robot. De plus, l’action se fera tant que le robot n’atteindra pas la position souhaitée.&lt;br /&gt;
Dans les commandes automatiques, une pression entrainera le commencement de l’exercice choisi. A savoir qu’il sera impossible de l’arrêter. &lt;br /&gt;
Pour la première zone de texte en haut à droite de l’interface, il suffit de rentrer le texte et d’appuyer sur « Envoyer message » pour que le robot dise le texte &lt;br /&gt;
	Pour rappel, il faut écrire en phonétique (exemple : Français &amp;lt;==&amp;gt;Franssais ; envoyer &amp;lt;==&amp;gt;envoyé) &lt;br /&gt;
Dans la section en bas à gauche de l’interface, les deux zones blanches sont des listes de défilement ou sera noté les prénoms (à gauche) et des formules (celle de droite) . Une fois choisi la paire, une pression sur « Envoie »  et le Nao dira le texte &lt;br /&gt;
Les deux boutons « Réussite » et « Echec »  envoie respectivement la musique de réussite de l’exercice et un message «  courage, essaie encore une fois ».&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16663</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16663"/>
				<updated>2015-02-10T15:29:08Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Mois de Janvier */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Utilisation du langage C#&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16662</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16662"/>
				<updated>2015-02-10T15:21:40Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16661</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16661"/>
				<updated>2015-02-10T15:19:44Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
&lt;br /&gt;
==Fonctions Remote du NAO==&lt;br /&gt;
=== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16660</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16660"/>
				<updated>2015-02-10T15:18:28Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16659</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=16659"/>
				<updated>2015-02-10T15:17:10Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;br /&gt;
&lt;br /&gt;
===Mois de Janvier===&lt;br /&gt;
Après avoir fait plusieurs exercices avec les enfants en touchant divers stimulis, nous avons donc pris la décision d'axer des exercices que sur l'audition et de mettre au point un remote controlable par un éducateur&lt;br /&gt;
&lt;br /&gt;
Nous avons donc créé des fonctions de base de mouvements en langage c# afin de mettre une application intuitive sous Windows.&lt;br /&gt;
Fonction StandUp &amp;quot;Robot se lève peu importe sa position de base&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class StandUpExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public StandUpExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == null || curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(&amp;quot;Body&amp;quot;, 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Stand)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Sit:&lt;br /&gt;
                        ChangePositionFromSitToCrouch();&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToStand();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToStand()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, 0.00000f, 0.00000f, -0.51393f, -0.30224f, 0.26354f, 0.12043f, -0.00940f, 0.06592f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, 0.00000f, 0.34907f, 0.17177f, 0.34511f, 0.01047f, 0.02967f, 0.37886f, -0.03993f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 2.03865f, 2.08560f, 2.08560f, 2.08560f, 2.03251f, 1.28698f, 0.95717f, 0.73321f, 0.73321f, 1.59225f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.00000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.36652f, 0.00870f, 0.29909f, 0.44331f, 0.07052f, 0.26687f, 0.49851f, 0.49851f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.08727f, 0.08727f, -1.96049f, -0.85448f, -0.25008f, 0.08308f, 0.08308f, -1.03089f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.20000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, -0.03491f, -1.54462f, -1.56210f, -0.69813f, -0.00870f, -0.19199f, -1.04615f, -0.87280f, -0.82985f, -0.80535f, -0.80535f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.72562f, -0.71949f, -0.72256f, -0.71182f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00219f, 0.00269f, 0.00290f, 0.00451f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.08567f, 1.95283f, 2.08560f, 2.08560f, 2.08560f, 2.07708f, 2.03720f, 1.44047f, 0.89131f, 0.89131f, 1.46961f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.36652f, -0.00870f, -0.45717f, -0.56455f, -0.70568f, -0.87266f, -0.68068f, -0.15037f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.08727f, -0.08727f, -0.08134f, -0.06907f, -0.02612f, 0.00062f, 0.00062f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.03491f, 1.54462f, 1.56210f, 0.69813f, 0.00870f, 0.09668f, 0.02152f, 0.19026f, 0.45379f, 0.55995f, 0.38047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.07989f, 1.07836f, 1.07989f, 1.08450f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00000f, 0.00287f, 0.00300f, 0.00308f, 0.00376f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.49851f, -0.85900f, -0.69639f, -0.40225f, -0.40225f, -0.23006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06478f, 0.54105f, 0.15498f, -0.17483f, 0.00925f, 0.19199f, 0.17453f, 0.15191f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17808f, -1.57080f, -0.85746f, -0.05672f, -0.45556f, -0.85521f, -0.83599f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07777f, 1.67552f, 2.11075f, 2.11227f, 2.11253f, 2.11253f, 2.11253f, -0.08901f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67748f, 0.66323f, -0.45564f, -1.10145f, -1.18952f, -1.18952f, -1.18952f, 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17109f, -0.10472f, -0.39573f, -0.09967f, 0.04299f, 0.11810f, 0.08727f, -0.13648f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06190f, -0.54105f, -0.55833f, -0.61049f, -0.62657f, -0.29671f, -0.01745f, -0.06285f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16456f, -1.57080f, -1.52484f, -1.56012f, -1.02974f, -0.90583f, -0.90583f, 0.20858f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09386f, 1.67552f, 1.22111f, 1.09992f, 1.08385f, 0.87616f, 1.76278f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71737f, 0.66323f, 0.78545f, 0.78392f, 0.44157f, 0.40317f, -0.57945f, 0.08134f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.20000f, 3.60000f, 4.30000f, 4.80000f, 5.60000f, 6.50000f, 7.40000f, 8.00000f, 8.60000f, 10.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.16084f, 0.10472f, 0.00925f, -0.09813f, 0.44331f, 0.67960f, 0.27751f, 0.06294f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67195f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.12741f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.59378f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.21779f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -1.01862f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -0.68105f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f, -0.71028f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f, 0.00455f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.47882f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.39275f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f, 1.08603f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f, 0.00380f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.02269f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, -0.23619f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, 0.21327f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, 0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, -0.13495f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, -0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.80460f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, 0.21012f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09233f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64403f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, 0.08595f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.06140f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToStand()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.06745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.04146f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.58611f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.22392f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -1.02169f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.65958f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.75170f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00456f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.46808f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.14731f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.90962f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.37127f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 1.05535f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.00381f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.23926f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.14884f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21173f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.09055f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.08126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.13342f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.05825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.21165f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { -0.07666f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.07981f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.50000f });&lt;br /&gt;
            keys.Add(new[] { 0.05987f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSitToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00149f, -0.27925f, -0.34826f, -0.47124f, -0.52360f, -0.28690f, -0.00940f, -0.00940f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.76000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.36965f, 0.22689f, 0.27576f, 0.15708f, 0.34971f, 0.37886f, 0.37886f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.49567f, 0.57421f, 0.62657f, 1.01393f, 0.65101f, 0.75162f, 1.12050f, 1.17286f, 1.40848f, 1.06814f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.24386f, 0.49393f, 0.41567f, 0.50964f, 0.75398f, 0.61087f, 0.51078f, 0.07666f, 0.15489f, 0.68872f, 0.59208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.54461f, -0.71182f, -0.73636f, -0.81766f, -0.29764f, -0.16265f, -0.86982f, -1.01402f, -0.92044f, -0.36513f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 2.56000f, 3.00000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.06302f, -0.93416f, -0.79304f, -0.94183f, -1.06762f, -0.62430f, -0.89121f, -0.85133f, -1.23636f, -1.07836f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { -0.74250f, -0.77164f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00116f, 0.00126f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 0.84000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.56609f, 0.73304f, 1.32695f, 1.96664f, 2.08560f, 2.06787f, 2.08560f, 2.02799f, 1.61381f, 1.42359f, 1.21650f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.35133f, -0.67500f, -0.63819f, -0.62832f, -0.00873f, -0.50933f, -0.55382f, -0.56455f, -0.66580f, -0.57683f, -0.26236f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.48010f, 1.82235f, 2.05399f, -0.08727f, -0.08134f, -0.07674f, -0.06600f, 0.31596f, 1.67969f, 0.96638f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 1.92000f, 2.20000f, 3.00000f, 3.40000f, 3.76000f, 4.36000f, 5.04000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.21650f, 1.02936f, 0.68114f, 0.85521f, 0.00873f, 0.07981f, 0.05987f, 0.01692f, 0.33292f, 0.49706f, 0.97260f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 1.07529f, 1.09523f, 1.08756f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00221f, 0.00244f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.67645f, -0.65173f, -0.75144f, -0.49909f, -0.64559f, -0.85897f, -0.43408f, -0.28221f, -0.17330f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13964f, 0.14501f, 0.14808f, 0.54105f, 0.15498f, -0.02526f, -0.17453f, 0.18259f, 0.44030f, 0.13043f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.57077f, -1.57080f, -1.57080f, -1.57080f, -0.85706f, -0.59586f, -0.05236f, -0.40143f, -0.69026f, -0.75469f, -0.73014f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.72401f, 0.95923f, 1.18473f, 1.67552f, 2.11255f, 2.11255f, 2.11255f, 2.00182f, 2.11253f, 1.61833f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.77616f, 0.75542f, 0.75542f, 0.66323f, -0.45379f, -0.68068f, -1.09956f, -1.18944f, -1.18944f, -0.73636f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.05058f, -0.00550f, 0.02671f, -0.17453f, -0.39573f, -0.08681f, -0.10379f, 0.01078f, -0.01683f, -0.08893f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14415f, -0.13336f, -0.21006f, -0.54105f, -0.55842f, -0.73468f, -0.61087f, -0.25460f, -0.08126f, -0.07512f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.55245f, -1.57080f, -1.57080f, -1.57080f, -1.52484f, -1.57080f, -1.55965f, -0.84988f, -0.67807f, -0.64892f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.84374f, 0.95426f, 1.21504f, 1.67552f, 1.22173f, 1.27333f, 1.09956f, 0.59523f, 1.44047f, 1.58006f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.78545f, 0.76027f, 0.76027f, 0.66323f, 0.78540f, 0.66976f, 0.78540f, 0.78540f, 0.54105f, 0.48172f, -0.36965f, -0.78843f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.60000f, 1.12000f, 1.56000f, 2.20000f, 3.00000f, 3.28000f, 3.52000f, 3.76000f, 4.36000f, 4.72000f, 5.04000f, 5.80000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04913f, 0.00073f, -0.00081f, 0.17453f, 0.00929f, 0.07436f, -0.15708f, -0.10472f, 0.24435f, 0.34907f, 0.44030f, 0.42343f, 0.09055f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Fonction SitDown &amp;quot; Le robot s'asseoit peu importe sa position de base&amp;quot;&lt;br /&gt;
&amp;quot;using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using Aldebaran.Proxies;&lt;br /&gt;
&lt;br /&gt;
namespace StandUp&lt;br /&gt;
{&lt;br /&gt;
    class SitDownExecuter&lt;br /&gt;
    {&lt;br /&gt;
        MotionProxy motionProxy;&lt;br /&gt;
        RobotPoseProxy robotPoseProxy;&lt;br /&gt;
&lt;br /&gt;
        public SitDownExecuter(MotionProxy motionProxy, RobotPoseProxy robotPoseProxy)&lt;br /&gt;
        {&lt;br /&gt;
            this.motionProxy = motionProxy;&lt;br /&gt;
            this.robotPoseProxy = robotPoseProxy;&lt;br /&gt;
        }&lt;br /&gt;
     public bool Start()&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            NAOPositions curPosition = GetPosition();&lt;br /&gt;
            if (curPosition == NAOPositions.Unknown || curPosition == NAOPositions.HeadBack)&lt;br /&gt;
            {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 1, 1);&lt;br /&gt;
            while (curPosition != NAOPositions.Sit)&lt;br /&gt;
            {&lt;br /&gt;
                switch (curPosition)&lt;br /&gt;
                {&lt;br /&gt;
                    case NAOPositions.Belly:&lt;br /&gt;
                    case NAOPositions.Frog:&lt;br /&gt;
                    case NAOPositions.Knee:&lt;br /&gt;
                        ChangePositionFromBellyToCrouch();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Back:&lt;br /&gt;
                        ChangePositionFromBackToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Right:&lt;br /&gt;
                    case NAOPositions.Left:&lt;br /&gt;
                        ChangePositionFromSideToBelly();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Stand:&lt;br /&gt;
                    case NAOPositions.Crouch:&lt;br /&gt;
                        ChangePositionFromCrouchToSitDown();&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.HeadBack:&lt;br /&gt;
                        return false;&lt;br /&gt;
                        break;&lt;br /&gt;
                    case NAOPositions.Unknown:&lt;br /&gt;
                        return false;&lt;br /&gt;
                    default:&lt;br /&gt;
                        return false;&lt;br /&gt;
                }&lt;br /&gt;
                curPosition = GetPosition();&lt;br /&gt;
            }&lt;br /&gt;
            //motionProxy.stiffnessInterpolation(NAOBodyParts.Body.ToString(), 0, 1);//Release stiffness&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromCrouchToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.31605f, -0.44030f, -0.63358f, -0.62745f, -0.40962f, -0.18412f, -0.00004f, -0.02152f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.37119f, 0.37579f, 0.36812f, 0.35738f, 0.36812f, 0.36658f, 0.37886f, -0.03379f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.04371f, 0.72955f, 0.72955f, 1.01086f, 1.50481f, 2.03404f, 1.53764f, 0.67719f, 0.91269f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.33590f, 0.53532f, 0.48171f, 0.83776f, 0.44331f, 1.55683f, 0.56907f, 0.21932f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56302f, -0.08552f, 0.10580f, -1.55334f, -0.32985f, -1.20777f, -0.76091f, -0.43723f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 4.70000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.95871f, -1.20253f, -0.69813f, -0.90234f, -0.48695f, -0.68591f, -0.95993f, -1.32227f, -1.28085f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.08740f, -0.71642f, -0.71642f, -0.71642f, -0.72869f, -0.73023f, -0.72256f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00404f, 0.00117f, 0.00116f, 0.00116f, 0.00128f, 0.00121f, 0.00106f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.80809f, 0.59341f, 1.74420f, 2.07694f, 2.08560f, 1.88839f, 0.78191f, 0.93118f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 2.90000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.56762f, -0.93026f, -0.76271f, -0.55327f, -0.52534f, -0.55327f, -1.55683f, -0.54921f, -0.26389f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.13963f, 0.00456f, -0.06907f, -0.14731f, 0.11694f, 1.75179f, 1.12745f, 0.51845f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.83776f, 0.47865f, 0.07828f, 0.10129f, 0.59167f, 1.03856f, 1.29320f, 1.28247f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18864f, 1.05535f, 1.05228f, 1.04308f, 1.04308f, 1.04768f, 1.06149f, -0.05987f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 3.90000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00709f, 0.00149f, 0.00154f, 0.00180f, 0.00206f, 0.00201f, 0.00211f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.39726f, -0.42334f, -0.90809f, -0.58595f, -0.53993f, -0.79304f, -0.77770f, -0.61356f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18259f, 0.31416f, -0.26227f, 0.29304f, 0.52927f, 0.23321f, 0.35746f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.59055f, -0.86974f, -0.00916f, -0.62123f, -1.55390f, -1.59378f, -1.46493f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.11253f, 2.11253f, 1.81774f, 1.98189f, 1.07687f, 1.15813f, 1.08756f, 1.39743f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.18952f, -1.18952f, -1.18952f, -0.52314f, 0.73935f, 0.92275f, 0.92189f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04299f, 0.07981f, 0.04146f, -0.45402f, -0.18097f, -0.04751f, -0.05058f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.13802f, -0.25614f, -0.38039f, -0.57521f, -0.53532f, -0.21472f, -0.32210f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76551f, -0.85908f, -1.36530f, -1.65063f, -1.54171f, -1.60921f, -1.41746f, -1.58620f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.89300f, 0.77471f, 1.14287f, 1.14594f, 1.03847f, 1.19810f, 0.98027f, 1.40672f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.73014f, 0.33445f, 0.45717f, 0.77164f, 0.71335f, 0.93206f, 0.93206f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.30000f, 2.40000f, 3.40000f, 4.30000f, 5.20000f, 5.90000f, 6.60000f, 7.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.21020f, 0.50626f, 0.05833f, -0.05518f, 0.18872f, 0.03532f, 0.04760f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBackToSitDown()&lt;br /&gt;
        {&lt;br /&gt;
            var bodyPart = NAOBodyParts.Arms.ToString();&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, false);&lt;br /&gt;
&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.02459f, -0.00000f, 0.04138f, 0.00000f, -0.00618f, 0.01376f, 0.02450f, -0.02305f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.80000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.06285f, 0.00000f, 0.51490f, -0.67200f, -0.02152f, 0.19478f, 0.07359f, -0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 2.03865f, 2.08560f, 2.08567f, 1.30846f, 0.90348f, 0.70337f, 0.90195f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.98018f, 0.36652f, 0.34907f, 0.34907f, 0.40143f, 1.17193f, 0.39726f, 0.21625f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.76091f, 0.15708f, 0.12268f, 0.08727f, 0.05978f, -0.95419f, -0.96339f, -0.43877f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.62430f, 0.00000f, -1.54462f, -1.56210f, -0.87441f, -1.03498f, -0.67952f, -1.12285f, -1.23483f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.70568f, -1.78868f, -0.71949f, -0.04760f, 0.05978f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00088f, 0.00133f, 0.00158f, 0.00022f, 0.00524f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 5.90000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 2.08560f, 2.09440f, 1.95283f, 2.08560f, 2.08567f, 1.91908f, 1.03703f, 0.72955f, 0.92504f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -1.07384f, -0.36652f, -0.34907f, -0.34907f, -0.41015f, -0.89897f, -0.74096f, -0.24241f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.76542f, -0.15708f, -0.25775f, -0.08727f, -0.06600f, 1.57691f, 1.06762f, 0.52459f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 3.60000f, 4.40000f, 4.60000f, 5.00000f, 5.60000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.71028f, 0.00000f, 1.54462f, 1.56210f, 0.71384f, 1.05418f, 0.95726f, 1.14594f, 1.27019f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 1.15199f, 1.72571f, 1.11057f, 0.24693f, -0.05680f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 2.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.00000f, 0.00000f, 0.00032f, 0.00005f, 0.00221f, 0.00523f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.47090f, 0.00000f, 0.00771f, -0.00000f, -0.65498f, -0.70407f, -0.61816f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.04453f, 0.00000f, 0.05833f, 0.00000f, -0.06439f, 0.14083f, 0.27923f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.25008f, -0.17453f, 0.37434f, -0.17453f, -1.17807f, -1.57080f, -1.57998f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.09200f, 1.67552f, 2.02024f, 1.67552f, 1.07683f, 1.40161f, 1.39590f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.82525f, 0.24435f, -0.45411f, 0.24435f, 0.67799f, 0.77609f, 0.83599f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.00000f, -0.03371f, 0.00000f, 0.17032f, 0.09083f, -0.00916f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { -0.14876f, 0.00000f, -0.02297f, 0.00000f, 0.06140f, -0.12200f, -0.26841f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.18557f, -0.17453f, 0.28221f, -0.17453f, -1.16435f, -1.57080f, -1.59233f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.19179f, 1.67552f, 2.02645f, 1.67552f, 1.09532f, 1.37682f, 1.40825f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.46638f, 0.24435f, -0.37425f, 0.24435f, 0.71795f, 0.76985f, 0.84988f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.10000f, 3.60000f, 4.40000f, 5.00000f, 6.20000f });&lt;br /&gt;
            keys.Add(new[] { 0.16725f, 0.00000f, -0.03984f, 0.00000f, -0.14415f, -0.11992f, 0.01845f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
            motionProxy.setCollisionProtectionEnabled(bodyPart, true);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromBellyToCrouch()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.17453f, -0.22689f, 0.28623f, 0.29671f, -0.49567f, -0.29671f, 0.05236f, -0.39095f, -0.01745f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.57683f, -0.54768f, 0.10734f, 0.51487f, 0.38048f, 0.37119f, -0.10472f, -0.53387f, 0.00698f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.08433f, -1.51146f, -1.25025f, 0.07206f, 1.27409f, 0.75573f, 0.75049f, 1.29154f, 1.51708f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.55390f, 0.01683f, 0.07666f, 0.07052f, 0.15643f, 0.93899f, 0.67719f, 0.84648f, 0.08433f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -2.07694f, -1.58006f, -1.60461f, -1.78715f, -1.32695f, -1.24791f, -0.97260f, -0.95993f, -0.90203f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00873f, -0.35278f, -0.63810f, -0.85133f, -1.55083f, -0.73304f, -0.73653f, -1.15506f, -1.09984f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { -1.55092f, -1.55092f, -1.51717f, -1.44814f, -1.40519f, -1.40825f, -1.40825f, -0.54454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00102f, 0.00034f, 0.00071f, 0.00095f, 0.00100f, 0.00100f, 0.00096f, 0.00100f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.02757f, -1.51146f, -1.22256f, -0.23619f, 0.21787f, 0.44950f, 0.91431f, 0.96033f, 1.35303f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.53558f, -0.19199f, -0.08288f, -0.08288f, -0.22707f, -0.18259f, -0.00870f, -0.13197f, -0.01385f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 2.07694f, 1.56157f, 1.61373f, 1.68582f, 1.96041f, 1.95121f, 0.66571f, 0.39573f, 0.86667f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.10472f, 0.38201f, 0.63512f, 1.55705f, 0.00870f, 0.00870f, 0.42343f, 0.64926f, 0.83454f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 1.50941f, 1.50941f, 1.49714f, 1.42811f, 1.43578f, 1.44038f, 1.44345f, 1.44038f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f });&lt;br /&gt;
            keys.Add(new[] { 0.00032f, 0.00022f, 0.00046f, 0.00082f, 0.00086f, 0.00084f, 0.00083f, 0.00084f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03371f, 0.03491f, -0.43561f, -0.77923f, -1.04154f, -1.14530f, -1.14530f, -0.56754f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06294f, 0.00004f, 0.00158f, -0.37732f, -0.29755f, -0.29755f, 0.19486f, 0.12736f, -0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.06140f, 0.00004f, -1.56924f, -1.28085f, -1.03694f, -1.15966f, -1.18267f, -1.27011f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.12043f, 1.98968f, 2.11253f, 0.28221f, 0.40493f, 0.35738f, 0.71940f, 2.01409f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92189f, -1.02974f, -1.15054f, 0.21625f, 0.71020f, 0.92275f, 0.82525f, -0.50166f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.00149f, 0.00004f, -0.00149f, -0.45249f, -0.30062f, -0.11808f, -0.04138f, -0.12114f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03142f, 0.00004f, 0.00158f, 0.31144f, 0.25469f, 0.32065f, 0.22707f, -0.07512f, 0.01047f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.07666f, -0.00004f, -1.57699f, -1.66136f, -1.19963f, -1.59847f, -0.32218f, -0.71028f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.07819f, 1.98968f, 2.08628f, 1.74267f, 2.12019f, 2.12019f, 2.12019f, 2.12019f, 2.09440f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92965f, -1.02974f, -1.13819f, -1.18645f, -1.18645f, -0.58901f, -1.18645f, -1.18645f, -1.04720f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 1.00000f, 2.00000f, 3.40000f, 4.50000f, 5.80000f, 6.50000f, 7.60000f, 8.90000f, 10.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.18850f, 0.00004f, 0.00618f, -0.00456f, -0.09813f, -0.01376f, -0.09507f, 0.03532f, 0.00000f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePositionFromSideToBelly()&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; names = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; times = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
            List&amp;lt;float[]&amp;gt; keys = new List&amp;lt;float[]&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.72094f, 0.72094f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;HeadPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.14876f, 0.14876f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.89752f, 1.89752f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.80224f, 0.80224f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.99254f, -0.99254f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.46783f, -0.46783f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.67807f, -0.67807f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00350f, 0.00350f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 1.97891f, 1.97891f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RShoulderRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.77931f, -0.77931f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.92343f, 0.92343f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RElbowRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34059f, 0.34059f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RWristYaw&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.64577f, 0.64577f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHand&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.00256f, 0.00256f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipYawPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -1.14432f, -1.14432f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.25162f, 0.25162f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.03532f, 0.03532f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09208f, -0.09208f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.35585f, 0.35585f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;LAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.34366f, 0.34366f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.03064f, -0.03064f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RHipPitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.41567f, 0.41567f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RKneePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.09200f, -0.09200f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnklePitch&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { 0.52314f, 0.52314f });&lt;br /&gt;
&lt;br /&gt;
            names.Add(&amp;quot;RAnkleRoll&amp;quot;);&lt;br /&gt;
            times.Add(new[] { 0.50000f, 1.00000f });&lt;br /&gt;
            keys.Add(new[] { -0.06745f, -0.06745f });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            ChangePosition(names, times, keys);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private NAOPositions GetPosition()&lt;br /&gt;
        {&lt;br /&gt;
            var curPositionAndTime = (System.Collections.ArrayList)robotPoseProxy.getActualPoseAndTime();&lt;br /&gt;
            string curPositionStr = curPositionAndTime[0].ToString();&lt;br /&gt;
            NAOPositions curPosition;&lt;br /&gt;
            Enum.TryParse&amp;lt;NAOPositions&amp;gt;(curPositionStr, true, out curPosition);&lt;br /&gt;
            return curPosition;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        private void ChangePosition(List&amp;lt;string&amp;gt; names, List&amp;lt;float[]&amp;gt; times, List&amp;lt;float[]&amp;gt; keys)&lt;br /&gt;
        {&lt;br /&gt;
            motionProxy.angleInterpolation(names, keys, times, true);&lt;br /&gt;
        }      &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&amp;quot;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=15165</id>
		<title>Projets IMA5 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=15165"/>
				<updated>2014-12-17T10:43:04Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P1 Modélisation et commande de l'auto-ignition d'un moteur HCCI]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moulé Alexandre / Taché Clément &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Anne-Lise Gehin / Jean-Yves Dieulot &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P5 Filtrage des indicateurs numériques de diagnostic]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; ZIOU Ismaïl / HAMZAOUI Oussama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P6 Gestion des flux thermiques du bâtiment Polytech]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Florian Royer / Zohour Assaieb &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P7 Utilisation d'un Robot Nao pour les enfants autistes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rodriguez Loïc/Ismaïl Tahry&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Projetpfenaomi.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P8 Pilulier]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Mercier / Emile Pinet&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS / Alexandre BOE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P9 Agenda pour personnes non lectrices]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Cédric DESPREZ &amp;amp; Soufiane HADDAOUI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P11 Détecteur d'obstacles pour fauteuils électriques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Geoffrey ROSE / Marjorie TIXIER &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS / Blaise Conrard &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P12 Automatiser à l'aide d'une interface LabView la procédure de mesure de conductivité électrique d'un alternateur à griffes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Hugo FONDU &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Abdelkader Benabou &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P13 Construction d'un support motorisé pour la réalisation des essais de décharges électrostatique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; JEBBARI Zineb / BEKRAOUI Oumaima &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Nathalie Rolland &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:rapportJebbek.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Balise Bluetooth Low Energy]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Kévin CHALONO / Armagan YAMNAZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[ Fichier:ProjetBLE 1 pdf.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P22 Google Glass en logistique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémy Gondry / Vincent Meunier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P24 Robot de surveillance domestique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Sébastien DELTOMBE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P25 SmartMeter]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Ederlé / Sylvain Fossaert&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Guillaume Renault / Xavier Redon / Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportFossaertEderle.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P26 Vehicule Electrique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Smain Labdouni / Adnane Jaoui &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Arnaud Chielens / Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P27 Controle Direct de Puissance d'un Convertisseur Matriciel ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Quentin Pesqueux / Nicolas Alexandre &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Charlotte BRICOUT / Nathan MARTIN &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémie DEQUIDT&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P33 Ligthing contactless / &amp;quot;wireless&amp;quot;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benjamin Lafit &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P37 Creation d'un composant d'audit des accès cache mémoire sur un microprocesseur LEON3 simulé en FPGA ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérôme Vaessen &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Julien Cartigny / Pierrick Buret &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_VAESSEN_presoutenance.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P44 Création d'un systeme domotique sans fil ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benoit MALIAR / Thomas MAURICE&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierrick BURET / Thomas VANTROYS  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P45 Aide à la navigation d'un véhicule autonome]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierre APPERCÉ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Valentin VERGEZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P57 CHRU Lille : Smart Picking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu Bossennec / Florian Caron&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Gwénaëlle Maton / Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P59 Assistance globale pour aide au parking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu GERIER / Céline LY &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=15161</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=15161"/>
				<updated>2014-12-17T10:40:22Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.pdf]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Projetpfenaomi.pdf&amp;diff=15160</id>
		<title>Fichier:Projetpfenaomi.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Projetpfenaomi.pdf&amp;diff=15160"/>
				<updated>2014-12-17T10:39:27Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=15158</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=15158"/>
				<updated>2014-12-17T10:38:09Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.jpg]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=15157</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=15157"/>
				<updated>2014-12-17T10:35:41Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cahier des charges ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
Rapport de soutenance Mi-parcours [[Fichier:[[Fichier:projetpfenaomi.jpg]]]]&lt;br /&gt;
===Caractéristiques du NAO===&lt;br /&gt;
&lt;br /&gt;
'''Hauteur''' 	58 cm&lt;br /&gt;
&lt;br /&gt;
'''Poids''' 	4,8 kg&lt;br /&gt;
&lt;br /&gt;
'''Autonomie''' 	90 min&lt;br /&gt;
&lt;br /&gt;
'''Degrés de liberté''' 	de 14 à 25 selon la version&lt;br /&gt;
&lt;br /&gt;
'''Processeur''' 	Intel ATOM 1,6 GHz (V4) ou AMD Geode 550Mhz (V3.3 ...) selon la version&lt;br /&gt;
&lt;br /&gt;
'''Système d'exploitation intégré''' 	Linux&lt;br /&gt;
&lt;br /&gt;
'''Systèmes d'exploitation compatibles''' 	Windows, Mac OS, Linux&lt;br /&gt;
&lt;br /&gt;
'''Langages de programmation''' 	C++, Python, Java, MATLAB, Urbi, C, .Net&lt;br /&gt;
&lt;br /&gt;
'''Connectivité''' 	Ethernet, Wi-Fi ( b,g,n )&lt;br /&gt;
&lt;br /&gt;
'''Vision''' 	2 caméras 920p, 30ips (localisation, reconnaissance de visages ou d'bojets)&lt;br /&gt;
&lt;br /&gt;
'''Audio''' 	4 Microphones (reconnaissance vocale, localisation de source)&lt;br /&gt;
&lt;br /&gt;
'''Capteurs:'''           &lt;br /&gt;
&lt;br /&gt;
-1 Capteur tactile au niveau de la tête et 1 au niveau de chaque main&lt;br /&gt;
&lt;br /&gt;
-2 bumpers (capteur de contact) au niveau des avant-pieds&lt;br /&gt;
&lt;br /&gt;
-2 sonars utilisant des capteurs ultrason (émetteurs et récepteurs)&lt;br /&gt;
&lt;br /&gt;
-1 accéléromètre 3 axes&lt;br /&gt;
&lt;br /&gt;
-2 gyromètres &lt;br /&gt;
&lt;br /&gt;
-2 LED infrarouges&lt;br /&gt;
&lt;br /&gt;
-2 Haut-parleurs (synthèse vocale)&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Nao_caract.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;br /&gt;
&lt;br /&gt;
===Semaine 4 : 06/10 - 12/10===&lt;br /&gt;
Entretien avec notre professeur encadrant M. Grisoni.&lt;br /&gt;
Différents points ont été abordés, notamment:&lt;br /&gt;
&lt;br /&gt;
-La bonne prise en main du projet et l'élaboration du cahier des charges.&lt;br /&gt;
&lt;br /&gt;
-La faisabilité du projet au regard des capacités techniques du NAO (Technologie embarquée, temps de charge, logiciels,... )&lt;br /&gt;
&lt;br /&gt;
-Le déroulement des séquences de jeux et la prise en compte de chaque détail dans la réalisations de celles ci. &lt;br /&gt;
&lt;br /&gt;
===Semaine 5 : 13/10 - 19/10===&lt;br /&gt;
Rencontre avec les représentants de GAPAS à l'IME la pépinière à Loos, en présence notamment des accompagnateurs des enfants et adolescents atteints d'autisme et de déficience visuelle, ainsi qu'une orthophoniste qui suit régulièrement le progrès de ces derniers.&lt;br /&gt;
&lt;br /&gt;
-Présentation du robot NAO et discussion autour de ces différentes possibilités techniques.&lt;br /&gt;
&lt;br /&gt;
-Débat autour de la faisabilité du projet et de l'influence d'un robot tel que NAO dans le processus d'épanouissement et d'éveil d'enfants atteints d'autisme.&lt;br /&gt;
&lt;br /&gt;
- Discussion autour des différentes possibilités de séquences de jeux entre le robot et les enfants qui favoriseraient le développement dudit processus. Prise en compte des différences entre enfants et adultes (salle Esperenza et salle Argos)&lt;br /&gt;
&lt;br /&gt;
-Dialogue autour de la technologie à utiliser pour que le NAO puisse reconnaitre chaque enfant en sa présence. Utilisation de la technologie RFID par exemple, notamment sous forme de patch à coller sur des vêtements.&lt;br /&gt;
&lt;br /&gt;
-Choix d'une première séquence de jeu avec le robot qui permettrait une approche initiale avec les enfants.&lt;br /&gt;
&lt;br /&gt;
-Visite des locaux et des salle de jeux&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6 : 20/10 - 26/10===&lt;br /&gt;
Suite à la rencontre au sein de l'IME la pépinière, nous avons commencé un brainstorming autour des technologies à utiliser pour la réalisation de séquences de jeux avec le NAO et les enfants. Etant donnée le manque de fiabilité de la reconnaissance faciale ou vocale du NAO, il nous a fallu trouver une solution pour pallier à ce problème afin que le robot puisse reconnaitre et interagir avec les enfants présents lors des séances.&lt;br /&gt;
Des lors, plusieurs solutions nous ont parues réalisables:&lt;br /&gt;
&lt;br /&gt;
-Utilisation de puces BLE (Bluetooth Low Energy)&lt;br /&gt;
&lt;br /&gt;
-Utilisation de la technologie RFID (Radio Frequency IDentification)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons également demandé l'accès au NAO afin que l'on puisse débuter la programmation de la première séquence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 7 : 27/10 - 02/11===&lt;br /&gt;
Vacances de la Toussaint.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 8 : 03/11 - 09/11===&lt;br /&gt;
Discussion via emails avec GAPAS pour définir la technologie à utiliser lors des séquences de jeux. Ici, plusieurs paramètres ont été pris en compte, notamment le prix des composants, leur fiabilité et l'implémentation de la technologie en question.&lt;br /&gt;
&lt;br /&gt;
Robot NAO toujours indisponible pour le début de la programmation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9 : 10/11 - 16/11===&lt;br /&gt;
Récupération du robot NAO et prise en main du logiciel de programmation associé &amp;quot;choregraphe&amp;quot;. Test des différents modes de connexion du robot afin de choisir le plus adapté aux futurs exercices.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10: 17/11 - 23/11===&lt;br /&gt;
Développement de la première séquence sur &amp;quot;choregraphe&amp;quot; qui permettra une première approche entre les enfants et le NAO.&lt;br /&gt;
[[Fichier:Naoprojet.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 11: 24/11 - 30/11===&lt;br /&gt;
Finalisation de la séquence, vérification et test. &lt;br /&gt;
&lt;br /&gt;
Cette séquence sera réalisée de la façon suivante:&lt;br /&gt;
&lt;br /&gt;
-NAO se lève puis, fait quelques pas et se présente en disant &amp;quot;Bonjour je suis NAO et je suis un robot, et toi, comment t'appelles tu ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Un enfant arrive et lui répond. Lorsque c'est chose faite, un éducateur appuie sur la tête du NAO.&lt;br /&gt;
&lt;br /&gt;
-NAO répond alors &amp;quot;Appuie sur ma main&amp;quot; en tendant la main droite.&lt;br /&gt;
&lt;br /&gt;
-NAO attend un contact avec sa main droite puis répond &amp;quot;c'est bien&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
-A ce stade, l'éducateur à deux possibilités: appuyer sur la tête du NAO pour que celui ci demande à un second enfant de se présenter puis d'appuyer sur sa main droite, ou appuyer sur sa main gauche afin que le robot exécute une danse et dise au revoir aux enfants.&lt;br /&gt;
&lt;br /&gt;
Séquence réalisée afin de favoriser un premier contact visuel, tactile et auditif avec les enfants. &lt;br /&gt;
&lt;br /&gt;
Prise de rendez vous avec les représentants de GAPAS afin d'effectuer un premier test avec les enfants.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 01/12 - 07/12===&lt;br /&gt;
&lt;br /&gt;
Amélioration du programme précédent, notamment en ajoutant un bruitage encourageant lorsque l'enfant réussi a appuyer sur la main du robot, et en ajoutant une musique d'introduction lorsque le robot se lève et fait quelques pas.&lt;br /&gt;
&lt;br /&gt;
Ajout de quelques mouvements afin d'accompagner les paroles de NAO.&lt;br /&gt;
&lt;br /&gt;
Confirmation du rendez vous à l'IME pour la semaine suivante.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12: 08/12 - 14/12===&lt;br /&gt;
&lt;br /&gt;
expérience avec les enfants&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14236</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14236"/>
				<updated>2014-10-13T12:47:27Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par les jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions donc le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14194</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14194"/>
				<updated>2014-10-10T15:56:04Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Semaine 3 : 29/09 - 05/10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par nos jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions… le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;br /&gt;
Mise en place d'un cahier des charges et prise de rendez vous avec l'IME la pépinière&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14193</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14193"/>
				<updated>2014-10-10T15:54:03Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par nos jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions… le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode de développement'''&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14192</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14192"/>
				<updated>2014-10-10T15:53:33Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par nos jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions… le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
Méthode de développement&lt;br /&gt;
[[Fichier:Autisme.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Autisme.pdf&amp;diff=14191</id>
		<title>Fichier:Autisme.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Autisme.pdf&amp;diff=14191"/>
				<updated>2014-10-10T15:52:51Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : a téléversé une nouvelle version de « Fichier:Autisme.pdf »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14190</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14190"/>
				<updated>2014-10-10T15:52:06Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Semaine 2 : 22/09 - 28/09 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par nos jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions… le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
Recherche sur les besoins des enfants autiste. Constitution d'un dossier avec des méthodes de développement&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode ABBA'''&lt;br /&gt;
[http://www.abaautisme.org/index.php?option=com_content&amp;amp;view=category&amp;amp;id=3&amp;amp;layout=blog&amp;amp;Itemid=3]&lt;br /&gt;
&lt;br /&gt;
Méthode de développement&lt;br /&gt;
[[Fichier:autisme1.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Méthode TEACCH'''&lt;br /&gt;
[[Fichier:TEACCH.pdf]]&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:TEACCH.pdf&amp;diff=14189</id>
		<title>Fichier:TEACCH.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:TEACCH.pdf&amp;diff=14189"/>
				<updated>2014-10-10T15:51:18Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Autisme.pdf&amp;diff=14188</id>
		<title>Fichier:Autisme.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Autisme.pdf&amp;diff=14188"/>
				<updated>2014-10-10T15:50:17Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14187</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14187"/>
				<updated>2014-10-10T15:43:26Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Semaine 1 : 15/09 - 21/09 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par nos jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions… le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
Prise de contact avec les différents acteurs du projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14186</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14186"/>
				<updated>2014-10-10T15:20:15Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par nos jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions… le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14185</id>
		<title>P7 Utilisation d'un Robot Nao pour les enfants autistes</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P7_Utilisation_d%27un_Robot_Nao_pour_les_enfants_autistes&amp;diff=14185"/>
				<updated>2014-10-10T15:20:00Z</updated>
		
		<summary type="html">&lt;p&gt;Lrodrig1 : /* Objectif */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Présentation du projet ==&lt;br /&gt;
===Contexte===&lt;br /&gt;
De nos jours, la robotique envahi nos foyers de plus en plus. On peut les remarquer dans nos cuisines mais aussi dans nos salons. La société '''Aldebaran Robotics''' est allé plus loin en créant un robot humanoïde du nom de '''NAO'''. Véritable compagnon éléctronique, ce robot est entièrement programmable et autonome et mesure 60 cm et présente des intérêts dans tous les domaines qu'il soit industriel, pédagogique mais aussi sociologique.&lt;br /&gt;
'''GAPAS''' est une associaciation de plusieurs services au personnes handicapées. Parmi ceux-ci, on retrouve l'aide aux ''enfants autistes avec des difficultés visuelles''.&lt;br /&gt;
L'éducation de ces enfants diffère de celle donnée dans les écoles régulières. Il est important de s'adapter à leur(s) déficience(s) et donc de s'adapter à chacun d'eux.&lt;br /&gt;
L'autisme se caractérise par des difficultés cognitves, socio-affectives et motrices. Cela se reflète par des troubles de la communication et'' de mauvaise compréhensions des émotions de leurs interlocuteurs'' et entraîne un repli de l'enfant.&lt;br /&gt;
Le robot Nao par sa voix neutre et son manque d'expression faciale peut aider un enfant atteint de ces difficultés à apprendre et interagir avec le monde&lt;br /&gt;
&lt;br /&gt;
''«  Les enfants autistes ont un besoin d’attention considérable et NAO permet de combler ce vide en proposant des jeux simples, sans jamais se lasser. Le robot et l’enfant autiste partagent un trait commun : une lassitude inexistante. NAO vient les aider en éduquant et en faisant jouer les enfants sans se lasser. » (site internet : robotique TPE)''&lt;br /&gt;
===Objectif===&lt;br /&gt;
Imaginer une collaboration avec la création de séquences de jeux et d’exercices éducatifs spécifiques aux problématiques rencontrées par nos jeunes en utilisant l’aspect ludique et novateur de Nao.&lt;br /&gt;
Il s’agirait de développer, en lien avec les professionnels un programme dédié à l’éducation des enfants souffrants de l’autisme : utiliser un robot Nao dans le cadre de leur accompagnement, pour stimuler les apprentissages. Par l’intermédiaire du Robot, on vise à stimuler les capacités de concentration, la capacité d’écoute, les interactions… le travail sur la reconnaissance et l’expression des émotions. &lt;br /&gt;
&lt;br /&gt;
'''Il s’agirait de développer des applications éducatives ayant toutes un objectif thérapeutique bien précis.'''&lt;br /&gt;
'''''Exemple de collaboration avec NAO'''''&lt;br /&gt;
[ https://www.youtube.com/watch?v=8BiayzQxTQA ]&lt;br /&gt;
&lt;br /&gt;
===Cahier des charges===&lt;br /&gt;
&lt;br /&gt;
==Déroulement du projet==&lt;br /&gt;
===Semaine 1 : 15/09 - 21/09===&lt;br /&gt;
&lt;br /&gt;
===Semaine 2 : 22/09 - 28/09===&lt;br /&gt;
&lt;br /&gt;
===Semaine 3 : 29/09 - 05/10===&lt;/div&gt;</summary>
		<author><name>Lrodrig1</name></author>	</entry>

	</feed>