IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
NAONECTContrôler un robot humanoïde par des gestes en temps réel
Rouneau Anthony
sous la direction de Tom Mens
1 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Objectifs (de manière générale)
Donner goût à la recherche scienti�que, approcher
l'éventualité d'une thèse de doctorat.
Se familiariser avec les domaines de recherche de la robotique
et l'interaction homme-machine.
2 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Objectifs (de manière concrète)
Programmer un robot humanoide
(NAO) pour reproduire en temps
réel les gestes e�ectuées par un
humain.
Les gestes seront détectées et
analysées à l'aide d'une camera 3D
(Kinect)
3 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Aldebaran NAO
Corps version H25, tête version V5.
c©Aldebaran
ATOM Z530 1.6 GHz
CPU, 1GB Ram, 2Gb
mémoire �ash.
25 degrés de liberté
Mains préhensiles, tête
amovible.
2 caméras, 2 sonars,
capteurs tactiles,
2 bumpers, 2 micros,
2 haut-parleurs, ...
4 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Microsoft Kinect V2
Une camera couleur en Full-HD a 30FPS
Une caméra de profondeur en 512 x 424 à 30FPS.
5 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Contrôler NAO � Simulateur Choregraphe
6 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Contrôler NAO � Contrôle des jointures
7 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Contrôler NAO � Modèle Choregraphe
8 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Contrôler NAO � Script Choregraphe
9 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Contrôler NAO � Script Python
10 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
SDK � NAO
SDK Python fournit par Aldebaran.
Préféré au SDK C++ par connaissance du langage.
NAOqi 2.1 for Python 2.7
11 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Driver/SDK � Kinect V2
Pas de driver open source stable pour le moment...
Wrapper Python du SDK o�ciel du Kinect V2.
PyKinect2 : mapping d'une partie du SDK 2.0 o�ciel.
C++ =⇒ Python.
Quelques limitations : ne pas pouvoir suivre les mouvements de la
tête, alors que le SDK C++ le permet.
12 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Skeleton
Skeleton détecté par Kinect V2.
13 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Quaternion de rotation
vecteurs 4D de rotation :
(a, b, c , d)→ a + bi + cj + dk
Axes de rotation pour jointure humaine :
14 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Quaternion de rotation � Problème
Maintenant voyons l'épaule de NAO par exemple :
15 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Système d'axe de NAO
Idée : partir du système d'axes de Kinect vers un nouveau.
=> Multiplication par une matrice de transformation A
16 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Calcul d'angle
Exemple : Pitch de l'épaule droite
Transformer toutes les coordonnées par la matrice A.
Translater la jointure "Spine_Mid" pour qu'elle se situe en
dessous de l'épaule. => modi�edJoint
Prendre le vecteur entre la jointure "Right_Shoulder" et
"Spine_Shoulder". => joint8, 20
La base de comparaison (angle 0) sera le produit vectoriel
entre modi�edJoint et joint8, 20. => basis
On abandonne la composante "x" dans nos vecteurs, et notre
angle est le cos−1 du produit scalaire du vecteur épaule-coude
et de basis.
(Tous les vecteurs sont normalisés à chaque étape)
17 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Filtrage des données venant de la Kinect
18 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Filtrage des données venant de la Kinect
19 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Filtrage des données venant de la Kinect
Filtre à prédiction de données : Holt-Winters
20 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Filtrage de l'ouverture de la main
Théoriquement : 0 = Fermé, 1 = Ouvert
〈0, 0, 1, 0, 0, 1, 0〉 = Ferme
〈1, 1, 1, 0, 1, 1, 0〉 = Ouvert
21 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Que le haut du corps ?
Module équilibre de NAO : OFFLINE...
→ Besoin d'un module d'équilibre ONLINE
22 / 24 Rouneau Anthony NAONECT
IntroductionMatériel et logiciels utilisés
Utilisation des donnéesTravaux futursDémonstration
Travaux Futurs � Contrôle total
Améliorer la précision de l'orientation de la main
Contrôler le clignement des yeux
Contrôler par la voix
Contrôler l'orientation du regard
...
23 / 24 Rouneau Anthony NAONECT