Table des matières:

Nao Robot imitant les mouvements à l'aide de Kinect : 7 étapes
Nao Robot imitant les mouvements à l'aide de Kinect : 7 étapes

Vidéo: Nao Robot imitant les mouvements à l'aide de Kinect : 7 étapes

Vidéo: Nao Robot imitant les mouvements à l'aide de Kinect : 7 étapes
Vidéo: Conférence "La robotique adaptée au handicap" par Philippe Garrec le 16 mai 2013 2024, Juin
Anonim
Nao Robot imitant les mouvements à l'aide de Kinect
Nao Robot imitant les mouvements à l'aide de Kinect

Dans ce instructable, je vais vous expliquer comment nous laissons un robot Nao imiter nos mouvements à l'aide d'un capteur kinect. L'objectif réel du projet est un objectif pédagogique: un enseignant a la possibilité d'enregistrer certains ensembles de mouvements (par exemple une danse) et peut utiliser ces enregistrements pour permettre aux enfants de la classe d'imiter le robot. En parcourant toute cette instructable étape par étape, vous devriez être en mesure de recréer entièrement ce projet.

Il s'agit d'un projet lié à l'école (NMCT @ Howest, Courtrai).

Étape 1: Connaissances de base

Pour recréer ce projet, vous devez posséder quelques connaissances de base:

- Connaissances de base en Python

- Connaissances de base en C# (WPF)

- Connaissances de base en trigonométrie

- Connaissances sur la façon de configurer MQTT sur un Raspberry Pi

Étape 2: Acquisition du matériel nécessaire

Matériel requis pour ce projet:

- Tarte aux framboises

- Capteur Kinect v1.8 (Xbox 360)

- Robot Nao ou robot virtuel (Chorégraphe)

Étape 3: Comment ça marche

Image
Image
Comment ça fonctionne
Comment ça fonctionne

Un capteur kinect est connecté à un ordinateur exécutant l'application WPF. L'application WPF envoie des données à l'application Python (robot) à l'aide de MQTT. Les fichiers locaux sont enregistrés si l'utilisateur le souhaite.

Explication détaillée:

Avant de commencer l'enregistrement, l'utilisateur doit entrer l'adresse IP du courtier MQTT. En plus de cela, nous avons également besoin du sujet sur lequel nous voulons publier les données. Après avoir appuyé sur Démarrer, l'application vérifiera si une connexion a pu être établie avec le courtier et nous donnera un retour. Vérifier si un sujet existe n'est pas possible, vous êtes donc entièrement responsable de celui-ci. Lorsque les deux entrées sont correctes, l'application commence à envoyer des données (les coordonnées x, y et z forment chaque joint) du squelette qui est suivi vers le sujet sur le courtier MQTT.

Étant donné que le robot est connecté au même courtier MQTT et abonné au même sujet (cela doit également être entré dans l'application python), l'application python recevra désormais les données de l'application WPF. En utilisant la trigonométrie et des algorithmes auto-écrits, nous convertissons les coordonnées en angles et en radians, que nous utilisons pour faire tourner les moteurs à l'intérieur du robot en temps réel.

Lorsque l'utilisateur a terminé l'enregistrement, il appuie sur le bouton d'arrêt. Maintenant, l'utilisateur obtient une fenêtre contextuelle lui demandant s'il souhaite enregistrer l'enregistrement. Lorsque l'utilisateur clique sur Annuler, tout est réinitialisé (les données sont perdues) et un nouvel enregistrement peut être lancé. Si l'utilisateur souhaite sauvegarder l'enregistrement, il doit saisir un titre et cliquer sur « enregistrer ». Lorsque vous appuyez sur « enregistrer », toutes les données acquises sont écrites dans un fichier local en utilisant le titre saisi comme nom de fichier. Le fichier est également ajouté à la liste sur le côté droit de l'écran. De cette façon, après avoir double-cliqué sur la nouvelle entrée dans la liste, le fichier est lu et envoyé au courtier MQTT. Par conséquent, le robot jouera l'enregistrement.

Étape 4: Configuration du courtier MQTT

Configuration du courtier MQTT
Configuration du courtier MQTT

Pour la communication entre le kinect (projet WPF) et le robot (projet Python) nous avons utilisé MQTT. MQTT se compose d'un courtier (un ordinateur Linux sur lequel le logiciel mqtt (par exemple Mosquitto)) s'exécute et d'un sujet sur lequel les clients peuvent s'abonner (ils reçoivent un message du sujet) et publier (ils publient un message sur le sujet).

Pour configurer le courtier MQTT, téléchargez simplement cette image jessie entière. Il s'agit d'une installation propre pour votre Raspberry Pi avec un courtier MQTT dessus. Le sujet est "/Sandro".

Étape 5: Installation du kit de développement logiciel Kinect V1.8

Pour que kinect fonctionne sur votre ordinateur, vous devez installer le kit de développement logiciel Microsoft Kinect.

Vous pouvez le télécharger ici:

www.microsoft.com/en-us/download/details.a…

Étape 6: Installation de Python V2.7

Le robot fonctionne avec le framework NaoQi, ce framework n'est disponible que pour python 2.7 (PAS 3.x), alors vérifiez quelle version de python vous avez installée.

Vous pouvez télécharger python 2.7 ici:

www.python.org/downloads/release/python-27…

Étape 7: Codage

Codage
Codage
Codage
Codage
Codage
Codage

Github:

Remarques:

- Codage avec le kinect: vous cherchez d'abord le kinect connecté. Après avoir enregistré cela dans une propriété, nous avons activé color- et skeletonstream sur le kinect. Colorstream est la vidéo en direct, tandis que skeletonstream signifie qu'un squelette de la personne devant la caméra sera affiché. Colorstream n'est pas vraiment nécessaire pour que ce projet fonctionne, nous l'avons simplement activé parce que le bitmapping du skeletonstream au colorstream semble fluide !

- En réalité c'est vraiment le squelette qui fait le boulot. L'activation de skeletonstream signifie que le squelette de la personne est suivi. De ce squelette, vous recevez toutes sortes d'informations, par exemple. orientations osseuses, informations articulaires, … La clé de notre projet était l'information articulaire. En utilisant les coordonnées x-y et z de chacune des articulations du squelette suivi, nous savions que nous pouvions faire bouger le robot. Ainsi, toutes les 0,8 secondes (à l'aide d'une minuterie), nous publions les coordonnées x, y et z de chacune des articulations sur le courtier mqtt.

- Étant donné que le projet python a un abonnement sur le courtier mqtt, nous pouvons désormais accéder aux données à l'intérieur de ce projet. A l'intérieur de chaque articulation du robot se trouvent deux moteurs. Ces moteurs ne peuvent pas simplement être dirigés en utilisant directement les coordonnées x, y et z. Ainsi, en utilisant la trigonométrie et un peu de bon sens, nous avons converti les coordonnées x, y et z des articulations en angles sous-stables pour les robots.

Donc, toutes les 0,8 secondes, le projet WPF publie les coordonnées x, y et z de chacune des articulations. Par conséquent, à l'intérieur du projet python, ces coordonnées sont converties en angles, qui sont ensuite envoyés aux moteurs correspondants du robot.

Conseillé: