Differences
This shows you the differences between two versions of the page.
tag:stage_d_ete_2017_poppyimitateskinect [2017/08/30 09:35] s4poppy2017 |
tag:stage_d_ete_2017_poppyimitateskinect [2019/04/25 14:08] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{tag>Poppy Project poppy-kine Kinect}} | ||
- | ====== Poppy-Kine : Stage d'été 2017 PoppyImitatesKinect ====== | ||
- | ===== Introduction ===== | ||
- | |||
- | Les objectifs principaux est travail portera sur la conversion et l’imitation de mouvements humains capturés à l’aide d’une Kinect en mouvements robots joués par Poppy. | ||
- | \\ - Conversion de l’orientation et la position des jointures en angles moteur de Poppy | ||
- | \\ - Simulation sur // Vrep // | ||
- | |||
- | ---- | ||
- | ===== Comment l'utiliser ===== | ||
- | - : Installation de // V-rep // | ||
- | - : Voir [[poppy-kine:poppy-kine-2015-s5|Poppy-Kine : S5 project 2015-2016]] | ||
- | - : Capture les données via Kinect en utilisant l'outil de Poppy-Kine-S5 project 2015-2016 | ||
- | - : faire la conversion | ||
- | - : Simulation sur // V-rep // | ||
- | |||
- | |||
- | ==== Première étape: obtenir les données de quaternion==== | ||
- | {{:tag:ic584403.png?200|}} | ||
- | * Connectez le Kinect | ||
- | * Capture les données via Kinect en utilisant l'outil de Poppy-Kine-S5 project 2015-2016 | ||
- | <hidden> | ||
- | \\ Cliquez **save.bat** | ||
- | \\ Entrez le //nom d'exercice// dans le shell. | ||
- | \\ Une nouvelle fenêtre, avec la vidéo capturé par le Kinect caméra et le squelette de la personne. | ||
- | \\ Les mouvements sont séparés par des pressions sur // espace //. | ||
- | \\ | ||
- | \\ Par exemple: | ||
- | * //espace// : Commence la capture du premier mouvement, | ||
- | * Faire le mouvement... | ||
- | * //espace// : Arrête la capture du premier mouvement, | ||
- | * //espace// : Commence la capture du second mouvement, | ||
- | * etc | ||
- | Les mouvements sont sauvegardés dans **⁄exercices⁄<name_of_the_exercise>/** dossier, <name_of_the_exercise_x>.txt fichier. | ||
- | \\ x commence à zéro (Premier mouvement. | ||
- | \\ Pour finir de capturer les mouvements, fermez la fenêtre. | ||
- | </hidden> | ||
- | * Enregistrez le fichier sur le dossier // mouvement_kinect // et le mettez json fichier. | ||
- | ==== Deuxième étape: obtenir la position en angles moteur et la simuler==== | ||
- | Le code est sur git https://redmine.telecom-bretagne.eu/projects/poppyimitateskinect | ||
- | - : ouvrir le // V-rep // | ||
- | - : lancer la prgrammation // Main.py // et entrer le // nom de fichier // de quaternion dans le terminal. | ||
- | Entrer // python Main.py nom_fichier // | ||
- | \\ Par exemple : | ||
- | \\ // python Main.py 20170825_0 // | ||
- | \\ | ||
- | \\ L'éntré : Le fichier de quaternion capturé par Kinect doit être enregistré dans le dossier // mouvement_kinect //. | ||
- | \\ Lorsque la programmation est lancé, nous obtenons deux fichiers json: | ||
- | \\ | ||
- | \\ Le dossier // mouvement_filtre // enregitre les données de quaternion filtrés par un filtre de Butterworth. | ||
- | \\ Le dossier // mouvement_poppy // enregitre les données de angle de moteur de Poppy. | ||
- | |||
- | \\ __**NB : **__ | ||
- | * Lorsque la programe est lancé, la figure de la réponse du filtre et les figures des résultats sont affichées. | ||
- | * Il faut fermer les fenêtres de figure pour que la progrme avance. | ||
- | * La Simulation est dans le logiciel // V-rep //. | ||
- | ==== Fonction de Code ==== | ||
- | \\ // butterworth.py et filtre.py // est le filtre de butterworth. | ||
- | \\ Les fonctions de // Main.py // : | ||
- | \\ // creatPoppyData(ex) : // Conversion de quaternion à l'angle. // ex // est le nom d'exercice. | ||
- | \\ // runSimu(PoppyData) : // Exécuter la simulation sur V-rep. // PoppyData // est les données des angles qui sont enregistré sur le dossier // mouvement_poppy // . | ||
- | |||
- | ---- | ||
- | ===== Comment avancer ===== | ||
- | {{:tag:conversion-quaternion-agnle.png?650|}} | ||
- | ==== filtrer les quaternion capturé par le Kinect ==== | ||
- | Nous utilisons le filtre // Butterworth // pour filtrer les quaternions. | ||
- | \\ // Filtre passe-bas | ||
- | \\ Ordre : 5 | ||
- | \\ fs : 30Hz | ||
- | \\ cutoff : 0.2 // | ||
- | \\ {{:tag:freq_reponse.png?500|}} | ||
- | ==== Conversion de quaternion à l'angle de moteur ==== | ||
- | La structure de json fichie dans le dossier // mouvement_poppy // | ||
- | <code> | ||
- | { | ||
- | "positions": { "<time1>": { "<moteur1>": [angle,0], "<moteur2>": [angle,0] }, "<time2>": { "<moteur1>": [angle,0], "<moteur2>": [angle,0] } } | ||
- | } | ||
- | </code> | ||
- | ==== filtrer les angles ==== | ||
- | \\ Parceque il y a les points discontinu sur les angles. Nous ajoutons un filtre pour assurer que les angles sont lissés. | ||
- | \\ Le filtre est la même que le dernier. C'est le résultat(angles filtrés) | ||
- | \\ {{:tag:angle_filtre.png?500|}} | ||
- | \\ | ||
- | |||
- | ===== Amélioration ===== | ||
- | \\ Les angles obtenu ne sont par très précis. | ||
- | \\ Nous n'avons pas détecter la faisabilité de mouvment. Il y a les cas où le poppy ne peut pas faire le mouvment humaines. | ||
- | \\ De plus, c'est mieux d'ajouter la gestion de l'équilibre |