INHOUDSOPGAWE:

Nao -robot wat bewegings naboots met Kinect: 7 stappe
Nao -robot wat bewegings naboots met Kinect: 7 stappe

Video: Nao -robot wat bewegings naboots met Kinect: 7 stappe

Video: Nao -robot wat bewegings naboots met Kinect: 7 stappe
Video: SCP-093 Красное море Объект (Все тесты и вторичного сырья Журналы) 2024, Junie
Anonim
Nao -robot wat bewegings naboots met Kinect
Nao -robot wat bewegings naboots met Kinect

In hierdie instruksies sal ek vir u verduidelik hoe ons 'n Nao -robot ons bewegings kan laat naboots met 'n kinektsensor. Die werklike doel van die projek is 'n opvoedkundige doel: 'n onderwyser het die vermoë om sekere stelle bewegings op te neem (bv. 'N dans) en kan hierdie opnames gebruik om die kinders in die klaskamer die robot na te boots. Deur hierdie hele instruksies stap vir stap deur te gaan, behoort u hierdie projek volledig te kan herskep.

Dit is 'n skoolverwante projek (NMCT @ Howest, Kortrijk).

Stap 1: Basiese kennis

Om hierdie projek te herskep, moet u oor basiese kennis beskik:

- Basiese kennis van luislang

- Basiese C# kennis (WPF)

- Basiese kennis van trigonometrie

- Kennis oor hoe om MQTT op te stel op 'n framboos pi

Stap 2: Verkry die nodige materiaal

Vereiste materiaal vir hierdie projek:

- Framboos Pi

- Kinect Sensor v1.8 (Xbox 360)

- Nao -robot of virutale robot (Choregraph)

Stap 3: Hoe dit werk

Image
Image
Hoe dit werk
Hoe dit werk

'N Kinect -sensor is gekoppel aan 'n rekenaar met die WPF -toepassing. Die WPF -toepassing stuur data na die Python -toepassing (robot) met behulp van MQTT. Plaaslike lêers word gestoor as die gebruiker dit verkies.

Gedetailleerde verduideliking:

Voordat ons begin opneem, moet die gebruiker die ip-adres van die MQTT-makelaar invoer. Verder het ons ook die onderwerp nodig waarop ons die data wil publiseer. Nadat u op start gedruk het, sal die aansoek kyk of daar 'n verbinding met die makelaar kan ontstaan, en dit sal ons terugvoer gee. Dit is nie moontlik om na te gaan of daar 'n onderwerp bestaan nie, dus u is ten volle verantwoordelik daarvoor. As beide insette in orde is, begin die aansoek data (x, y & z -koördinate van elke gewrig) stuur vanaf die skelet wat na die onderwerp op die MQTT -makelaar gevolg word.

Omdat die robot met dieselfde MQTT -makelaar verbind is en op dieselfde onderwerp ingeteken is (dit moet ook in die luislang -toepassing ingevoer word), ontvang die luislangtoepassing nou die data van die WPF -toepassing. Deur trigonometrie en selfgeskrewe algoritmes om te skakel, skakel ons die koördinate om in hoeke en radiale, wat ons gebruik om die motors in die robot intyds te draai.

As die gebruiker klaar is met opneem, druk hy op die stopknoppie. Nou kry die gebruiker 'n pop-up waarin hy vra of hy die opname wil stoor. As die gebruiker die kansellasie druk, word alles herstel (data gaan verlore) en kan 'n nuwe opname begin word. As die gebruiker die opname wil stoor, moet hy 'n titel invoer en 'stoor' druk. As u op 'stoor' klik, word alle verworwe data na 'n plaaslike lêer geskryf met die titelinvoer as die lêernaam. Die lêer word ook bygevoeg tot die lysweergawe aan die regterkant van die skerm. Op hierdie manier word die lêer gelees en na die MQTT -makelaar gestuur nadat u op die nuwe inskrywing in die lysweergawe dubbelklik. Gevolglik speel die robot die opname.

Stap 4: Die opstel van die MQTT -makelaar

Die oprigting van die MQTT -makelaar
Die oprigting van die MQTT -makelaar

Vir die kommunikasie tussen die kinect (WPF -projek) en die robot (Python -projek) het ons MQTT gebruik. MQTT bestaan uit 'n makelaar ('n Linux -rekenaar waarop die mqtt -sagteware (bv. Mosquitto)) werk en 'n onderwerp waarop kliënte kan inteken (hulle ontvang 'n boodskap van die onderwerp) en publiseer (hulle plaas 'n boodskap oor die onderwerp).

Laai hierdie hele jessie -prent af om die MQTT -makelaar op te stel. Dit is 'n skoon installasie vir u Raspberry Pi met 'n MQTT -makelaar daarop. Die onderwerp is "/Sandro".

Stap 5: Installeer die Kinect SDK V1.8

Om die kinect op u rekenaar te laat werk, moet u die Microsoft Kinect SDK installeer.

U kan dit hier aflaai:

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

Stap 6: Installeer Python V2.7

Die robot werk met die NaoQi -raamwerk; hierdie raamwerk is slegs beskikbaar vir python 2.7 (NIE 3.x nie), dus kyk watter weergawe van python u geïnstalleer het.

U kan python 2.7 hier aflaai:

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

Stap 7: Kodering

Kodering
Kodering
Kodering
Kodering
Kodering
Kodering

Github:

Notas:

- Kodering met die kinect: eers soek u die gekoppelde kinect. Nadat ons dit in 'n eiendom gered het, het ons kleur- en skeletstroom op die kinect moontlik gemaak. Colorstream is die lewendige video, terwyl skeletonstream beteken dat 'n skelet van die persoon voor die kamera vertoon word. Colorstream is nie regtig nodig om hierdie projek aan die gang te kry nie; ons het dit net moontlik gemaak omdat die skeletstroom na die kleurstroom bitmapping lyk!

- In werklikheid is dit eintlik die skeletstroom wat die werk doen. Deur skeletstroom moontlik te maak, word daar gesê dat die skelet van die persoon opgespoor word. Uit hierdie skelet kry u allerhande inligting, bv. beenoriëntering, gesamentlike inligting, … Die sleutel tot ons projek was die gesamentlike inligting. Deur die xy & z-koördinate van elk van die gewrigte van die geteelde skelet te gebruik, het ons geweet dat ons die robot kan laat beweeg. Elke 8 sekondes (met behulp van 'n timer) publiseer ons dus die x, y & z -koördinate van elk van die gewrigte aan die mqtt -makelaar.

- Aangesien die python -projek 'n subskripsie op die mqtt -makelaar het, kan ons nou toegang tot die data in hierdie projek verkry. Binne elke gewrig van die robot is twee motors. Hierdie motors kan nie net gestuur word met behulp van die x, y & z koördinate direk nie. Dus, met behulp van trigonometrie en 'n paar gesonde verstand, het ons die x-, y & z -koördinate van die gewrigte omgeskakel na hoeke wat onderskatbaar is na robotte.

Dus, elke.8 sekondes publiseer die WPF -projek x, y & z -koördinate van elk van die gewrigte. Gevolglik word hierdie koordiante binne die luislangprojek in hoeke omgeskakel, wat dan na die ooreenstemmende motors van die robot gestuur word.

Aanbeveel: