Cuprins:

Mișcări de imitare a robotului Nao folosind Kinect: 7 pași
Mișcări de imitare a robotului Nao folosind Kinect: 7 pași

Video: Mișcări de imitare a robotului Nao folosind Kinect: 7 pași

Video: Mișcări de imitare a robotului Nao folosind Kinect: 7 pași
Video: Robotul dansator 2024, Iunie
Anonim
Nao Robot care mimează mișcările folosind Kinect
Nao Robot care mimează mișcările folosind Kinect

În acest instructiv vă voi explica cum lăsăm un robot Nao să imite mișcările noastre folosind un senzor kinect. Scopul real al proiectului este un scop educațional: un profesor are capacitatea de a înregistra anumite seturi de mișcări (de exemplu, un dans) și poate folosi aceste înregistrări pentru a permite copiilor din sala de clasă să imite robotul. Trecând prin întregul pas instructiv, ar trebui să puteți recrea pe deplin acest proiect.

Acesta este un proiect legat de școală (NMCT @ Howest, Kortrijk).

Pasul 1: cunoștințe de bază

Pentru a recrea acest proiect trebuie să dețineți câteva cunoștințe de bază:

- Cunoștințe de bază despre python

- Cunoștințe de bază C # (WPF)

- Cunoștințe de bază despre trigonometrie

- Cunoștințe despre cum să configurați MQTT pe un pi zmeură

Pasul 2: Achiziționarea materialelor necesare

Materiale necesare pentru acest proiect:

- Raspberry Pi

- Senzor Kinect v1.8 (Xbox 360)

- robot Nao sau robot virutal (Choregraph)

Pasul 3: Cum funcționează

Image
Image
Cum functioneaza
Cum functioneaza

Un senzor kinect este conectat la un computer care rulează aplicația WPF. Aplicația WPF trimite date către aplicația Python (robot) folosind MQTT. Fișierele locale sunt salvate dacă utilizatorul alege acest lucru.

Explicatie detaliata:

Înainte de a începe înregistrarea, utilizatorul trebuie să introducă adresa IP a brokerului MQTT. Pe lângă asta, avem nevoie și de subiectul pe care vrem să publicăm datele. După apăsarea Start, aplicația va verifica dacă s-ar putea stabili o conexiune cu brokerul și ne va oferi feedback. Verificarea dacă există un subiect nu este posibilă, deci sunteți pe deplin responsabil pentru acesta. Când ambele intrări sunt OK, aplicația va începe să trimită date (coordonatele x, y și z din fiecare articulație) din scheletul urmărit către subiectul brokerului MQTT.

Deoarece robotul este conectat cu același broker MQTT și este abonat la același subiect (acesta trebuie introdus și în aplicația python), aplicația python va primi acum datele de la aplicația WPF. Folosind trigonometrie și algoritmi de auto-scriere, convertim coordonatele în unghiuri și radiani, pe care le folosim pentru a roti motoarele din interiorul robotului în timp real.

Când utilizatorul termină înregistrarea, apasă butonul de oprire. Acum utilizatorul primește o fereastră pop-up care întreabă dacă dorește să salveze înregistrarea. Când utilizatorul dă clic pe anulare, totul este resetat (datele se pierd) și se poate începe o nouă înregistrare. Dacă utilizatorul dorește să salveze înregistrarea, ar trebui să introducă un titlu și să apese „Salvare”. Când apăsați „salvați” toate datele achiziționate sunt scrise într-un fișier local folosind titlul de intrare ca nume de fișier. Fișierul este, de asemenea, adăugat la listview din partea dreaptă a ecranului. În acest fel, după dublu clic pe noua intrare din listview, fișierul este citit și trimis brokerului MQTT. În consecință, robotul va reda înregistrarea.

Pasul 4: Configurarea brokerului MQTT

Configurarea brokerului MQTT
Configurarea brokerului MQTT

Pentru comunicarea dintre kinect (proiectul WPF) și robot (proiectul Python) am folosit MQTT. MQTT constă dintr-un broker (un computer Linux pe care rulează software-ul mqtt (de ex. Mosquitto)) și un subiect la care clienții se pot abona (primesc un mesaj din subiect) și pot publica (postează un mesaj pe subiect).

Pentru a configura brokerul MQTT, trebuie doar să descărcați întreaga imagine jessie. Aceasta este o instalare curată pentru dvs. Raspberry Pi cu un broker MQTT pe ea. Subiectul este „/ Sandro”.

Pasul 5: Instalarea Kinect SDK V1.8

Pentru ca kinect să funcționeze pe computer, trebuie să instalați Microsoft Kinect SDK.

O puteți descărca de aici:

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

Pasul 6: Instalarea Python V2.7

Robotul funcționează cu cadrul NaoQi, acest cadru este disponibil numai pentru python 2.7 (NU 3.x), deci verificați ce versiune de python ați instalat.

Puteți descărca Python 2.7 aici:

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

Pasul 7: Codificare

Codificare
Codificare
Codificare
Codificare
Codificare
Codificare

Github:

Note:

- Codificare cu kinect: mai întâi căutați kinectul conectat. După ce am salvat acest lucru în interiorul unei proprietăți, am activat culoarea și scheletul pe kinect. Colorstream este videoclipul live, în timp ce scheletonstream înseamnă că va fi afișat un schelet al persoanei din fața camerei. Colorstream nu este cu adevărat necesar pentru ca acest proiect să funcționeze, doar l-am activat, deoarece bitmap-ul scheletului în fluxul de culori pare slab!

- În realitate, este într-adevăr scheletul care face treaba. Activarea scheletului înseamnă că scheletul persoanei este urmărit. Din acest schelet primiți tot felul de informații, de ex. orientări osoase, informații comune, … Cheia proiectului nostru a fost informația comună. Folosind coordonatele x-y & z ale fiecărei articulații din scheletul urmărit, am știut că putem face robotul să se miște. Deci, la fiecare.8 secunde (folosind un cronometru) publicăm coordonatele x, y & z ale fiecărei articulații către brokerul mqtt.

- Deoarece proiectul python are o subsecțiune pe brokerul mqtt, putem accesa acum datele din acest proiect. În interiorul fiecărei articulații a robotului sunt două motoare. Aceste motoare nu pot fi direcționate doar folosind coordonatele x, y & z direct. Deci, folosind trigonometria și ceva bun simț, am convertit coordonatele x, y & z ale articulațiilor în unghiuri subestabile în roboți.

Deci, la fiecare 0,8 secunde, proiectul WPF publică coordonatele x, y & z ale fiecărei articulații. În consecință, în interiorul proiectului python aceste coordonatoare sunt convertite în unghiuri, care sunt apoi trimise către motoarele corespunzătoare ale robotului.

Recomandat: