Inhoudsopgave:

Nao-robot die bewegingen nabootst met Kinect - Ajarnpa
Nao-robot die bewegingen nabootst met Kinect - Ajarnpa

Video: Nao-robot die bewegingen nabootst met Kinect - Ajarnpa

Video: Nao-robot die bewegingen nabootst met Kinect - Ajarnpa
Video: Jogos que NÃO deveriam ter sido lançados, mas FORAM | com @kombatklub 2024, November
Anonim
Nao Robot bootst bewegingen na met Kinect
Nao Robot bootst bewegingen na met Kinect

In deze instructable zal ik je uitleggen hoe we een Nao-robot onze bewegingen laten nabootsen met behulp van een kinect-sensor. Het eigenlijke doel van het project is een educatief doel: een leraar heeft de mogelijkheid om bepaalde bewegingen (bijvoorbeeld een dans) op te nemen en kan deze opnames gebruiken om de kinderen in de klas de robot te laten nabootsen. Door dit hele instructable stap voor stap door te nemen, zou je dit project volledig moeten kunnen recreëren.

Dit is een schoolgerelateerd project (NMCT @ Howest, Kortrijk).

Stap 1: Basiskennis

Om dit project opnieuw te maken, moet u over enige basiskennis beschikken:

- Basiskennis van python

- Basis C# kennis (WPF)

- Basiskennis trigonometrie

- Kennis over het instellen van MQTT op een Raspberry Pi

Stap 2: De benodigde materialen aanschaffen

Benodigde materialen voor dit project:

- Raspberry Pi

- Kinect-sensor v1.8 (Xbox 360)

- Nao-robot of virtuele robot (Choregraph)

Stap 3: Hoe het werkt

Image
Image
Hoe het werkt
Hoe het werkt

Een kinect-sensor is aangesloten op een computer waarop de WPF-toepassing wordt uitgevoerd. De WPF-applicatie stuurt gegevens naar de Python-applicatie (robot) met behulp van MQTT. Lokale bestanden worden opgeslagen als de gebruiker daarvoor kiest.

Gedetailleerde uitleg:

Voordat we beginnen met opnemen, moet de gebruiker het ip-adres van de MQTT-makelaar invoeren. Daarnaast hebben we ook het onderwerp nodig waarover we de gegevens willen publiceren. Nadat u op start heeft gedrukt, controleert de applicatie of er een verbinding tot stand kan worden gebracht met de makelaar en geeft deze ons feedback. Controleren of een onderwerp bestaat is niet mogelijk, dus je bent hier volledig verantwoordelijk voor. Wanneer beide ingangen in orde zijn, begint de applicatie met het verzenden van gegevens (x-, y- en z-coördinaten van elk gewricht) van het skelet dat wordt gevolgd naar het onderwerp op de MQTT-broker.

Omdat de robot met dezelfde MQTT-broker is verbonden en op hetzelfde onderwerp is geabonneerd (dit moet ook in de python-applicatie worden ingevoerd) zal de python-applicatie nu de gegevens van de WPF-applicatie ontvangen. Met behulp van trigonometrie en zelfgeschreven algoritmen zetten we de coördinaten om in hoeken en radialen, die we gebruiken om de motoren in de robot in realtime te laten draaien.

Wanneer de gebruiker klaar is met opnemen, drukt hij op de stopknop. Nu krijgt de gebruiker een pop-up met de vraag of hij de opname wil opslaan. Wanneer de gebruiker op annuleren drukt, wordt alles gereset (gegevens gaan verloren) en kan een nieuwe opname worden gestart. Als de gebruiker de opname wil opslaan, moet hij een titel invoeren en op 'opslaan' drukken. Als u op 'opslaan' drukt, worden alle verkregen gegevens naar een lokaal bestand geschreven met de titelinvoer als bestandsnaam. Het bestand wordt ook toegevoegd aan de lijstweergave aan de rechterkant van het scherm. Op deze manier wordt het bestand na dubbelklikken op het nieuwe item in de lijstweergave gelezen en verzonden naar MQTT-broker. Bijgevolg zal de robot de opname afspelen.

Stap 4: De MQTT-makelaar instellen

De MQTT-makelaar instellen
De MQTT-makelaar instellen

Voor de communicatie tussen de kinect (WPF-project) en de robot (Python-project) gebruikten we MQTT. MQTT bestaat uit een broker (een linux-computer waarop de mqtt-software (bijv. Mosquitto)) draait en een onderwerp waarop klanten zich kunnen abonneren (ze ontvangen een bericht van het onderwerp) en publiceren (ze plaatsen een bericht over het onderwerp).

Download deze hele jessie-afbeelding om de MQTT-makelaar in te stellen. Dit is een schone installatie voor je Raspberry Pi met een MQTT-broker erop. Het onderwerp is "/Sandro".

Stap 5: De Kinect SDK V1.8 installeren

Om de kinect op uw computer te laten werken, moet u de Microsoft Kinect SDK installeren.

Je kunt het hier downloaden:

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

Stap 6: Python V2.7 installeren

De robot werkt met het NaoQi-framework, dit framework is alleen beschikbaar voor python 2.7 (NIET 3.x), dus controleer welke versie van python je hebt geïnstalleerd.

U kunt python 2.7 hier downloaden:

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

Stap 7: Coderen

codering
codering
codering
codering
codering
codering

Github:

Opmerkingen:

- Coderen met de kinect: eerst ga je op zoek naar de aangesloten kinect. Nadat we dit in een eigenschap hadden opgeslagen, hebben we color- en skeletonstream op de kinect ingeschakeld. Colorstream is de live video, terwijl skeletonstream betekent dat een skelet van de persoon voor de camera wordt weergegeven. Colorstream is niet echt nodig om dit project te laten werken, we hebben het gewoon ingeschakeld omdat bitmapping van de skeletonstream naar de colorstream er gelikt uitziet!

- In werkelijkheid is het echt de skeletonstream die het werk doet. Het inschakelen van skeletonstream betekent dat het skelet van de persoon wordt gevolgd. Van dit skelet krijg je allerlei informatie bv. botoriëntaties, gewrichtsinformatie, … De sleutel tot ons project was de gewrichtsinformatie. Met behulp van de x-y & z-coördinaten van elk van de gewrichten van het gevolgde skelet, wisten we dat we de robot konden laten bewegen. Dus elke 0,8 seconden (met behulp van een timer) publiceren we de x-, y- en z-coördinaten van elk van de verbindingen naar de mqtt-makelaar.

- Aangezien het python-project een abonnement heeft op de mqtt-broker, hebben we nu toegang tot de gegevens in dit project. Binnen elk gewricht van de robot bevinden zich twee motoren. Deze motoren kunnen niet zomaar rechtstreeks met de x-, y- en z-coördinaten worden bestuurd. Dus, met behulp van trigonometrie en wat gezond verstand, hebben we de x-, y- en z-coördinaten van de gewrichten omgezet in onderstabiele hoeken voor robots.

Dus eigenlijk publiceert het WPF-project elke 0,8 seconden x-, y- en z-coördinaten van elk van de gewrichten. Bijgevolg worden deze coördinaten binnen het pythonproject omgezet in hoeken, die vervolgens naar de overeenkomstige motoren van de robot worden gestuurd.

Aanbevolen: