Kazalo:

Robot Nao, ki posnema premike z uporabo Kinecta: 7 korakov
Robot Nao, ki posnema premike z uporabo Kinecta: 7 korakov

Video: Robot Nao, ki posnema premike z uporabo Kinecta: 7 korakov

Video: Robot Nao, ki posnema premike z uporabo Kinecta: 7 korakov
Video: Наркомания, Травма, Порно, Детокс дофамина | Анна Лембке 2024, Junij
Anonim
Robot Nao, ki posnema premike z uporabo Kinecta
Robot Nao, ki posnema premike z uporabo Kinecta

V tem navodilu vam bom razložil, kako lahko robot Nao posnema naša gibanja s pomočjo kinect senzorja. Dejanski cilj projekta je izobraževalni namen: učitelj lahko posname določene sklope gibov (npr. Ples) in lahko te posnetke pusti otrokom v razredu, da posnemajo robota. Če boste korak za korakom preučili celotno navodilo, bi lahko v celoti poustvarili ta projekt.

To je projekt, povezan s šolo (NMCT @ Howest, Kortrijk).

1. korak: Osnovno znanje

Za ponovno ustvarjanje tega projekta morate imeti nekaj osnovnih znanj:

- Osnovno znanje o pythonu

- Osnovno znanje C# (WPF)

- Osnovno znanje trigonometrije

- Znanje o tem, kako nastaviti MQTT na maline pi

2. korak: Pridobite potrebne materiale

Materiali, potrebni za ta projekt:

- malina Pi

- Kinect Sensor v1.8 (Xbox 360)

- Nao robot ali virutalni robot (Choregraph)

3. korak: Kako deluje

Image
Image
Kako deluje
Kako deluje

Senzor kinect je priključen na računalnik z aplikacijo WPF. Aplikacija WPF pošilja podatke v aplikacijo Python (robot) z uporabo MQTT. Lokalne datoteke se shranijo, če se tako odloči uporabnik.

Podrobna razlaga:

Preden začnemo snemati, mora uporabnik vnesti ip-naslov posrednika MQTT. Poleg tega potrebujemo tudi temo, o kateri želimo objaviti podatke. Po pritisku na start bo aplikacija preverila, ali je mogoče vzpostaviti povezavo s posrednikom, in nam poslala povratne informacije. Preverjanje, ali tema obstaja, ni mogoče, zato ste za to v celoti odgovorni sami. Ko sta oba vnosa v redu, bo aplikacija začela pošiljati podatke (koordinate x, y & z iz vsakega sklepa) z okostja, ki mu sledi, na temo v posredniku MQTT.

Ker je robot povezan z istim posrednikom MQTT in je naročen na isto temo (to je treba vnesti tudi v aplikacijo python), bo aplikacija python zdaj prejemala podatke iz aplikacije WPF. S pomočjo trigonometrije in lastnoročno napisanih algoritmov koordinate pretvorimo v kote in radiane, s katerimi v realnem času vrtimo motorje znotraj robota.

Ko uporabnik konča snemanje, pritisne gumb za zaustavitev. Zdaj uporabnik dobi pojavno okno z vprašanjem, ali želi shraniti posnetek. Ko uporabnik pritisne gumb za preklic, se vse ponastavi (podatki se izgubijo) in lahko se začne novo snemanje. Če želi uporabnik shraniti posnetek, mora vnesti naslov in pritisniti 'shrani'. Ko pritisnete »shrani«, se vsi pridobljeni podatki zapišejo v lokalno datoteko z uporabo vnosa naslova kot imena datoteke. Datoteka je dodana tudi k pogledu seznama na desni strani zaslona. Tako se datoteka po dvojnem kliku na nov vnos v pogledu seznama prebere in pošlje posredniku MQTT. Posledično bo robot predvajal posnetek.

4. korak: Nastavitev posrednika MQTT

Nastavitev posrednika MQTT
Nastavitev posrednika MQTT

Za komunikacijo med kinectom (projekt WPF) in robotom (projekt Python) smo uporabili MQTT. MQTT je sestavljen iz posrednika (računalnik linux, na katerem se izvaja programska oprema mqtt (npr. Mosquitto)) in teme, na katero se lahko naročniki naročijo (prejmejo sporočilo iz teme) in objavijo (objavijo sporočilo o temi).

Če želite nastaviti posrednika MQTT, preprosto prenesite celotno sliko jessie. To je čista namestitev za vas Raspberry Pi z posrednikom MQTT. Tema je "/Sandro".

5. korak: Namestitev Kinect SDK V1.8

Če želite, da kinect deluje v vašem računalniku, morate namestiti Microsoftov paket za razvoj programske opreme Kinect.

Lahko ga prenesete tukaj:

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

6. korak: Namestitev Pythona V2.7

Robot deluje z okvirom NaoQi, ta okvir je na voljo samo za python 2.7 (NE 3.x), zato preverite, katero različico pythona ste namestili.

Python 2.7 lahko prenesete tukaj:

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

7. korak: Kodiranje

Kodiranje
Kodiranje
Kodiranje
Kodiranje
Kodiranje
Kodiranje

Github:

Opombe:

- Kodiranje s kinectom: najprej poiščite povezani kinect. Ko smo to shranili v lastnost, smo na kinektu omogočili barvni in skeletni tok. Colorstream je video v živo, skeletonstream pa pomeni, da bo prikazan okostje osebe pred kamero. Colorstream v resnici ni potreben, da bi ta projekt deloval, le omogočili smo ga, ker je bitna preslikava okostja na barvni tok videti gladka!

- V resnici to res naredi okostnjak. Omogočanje skeletonstream pomeni, da se sledi okostju osebe. Iz tega okostja prejemate vse vrste informacij, npr. kostne usmeritve, skupne informacije, … Ključ do našega projekta so bile skupne informacije. Z uporabo koordinat x-y & z vsakega sklepa iz sledljivega okostja smo vedeli, da lahko robot premaknemo. Tako vsakih 0,8 sekunde (s časovnikom) objavimo koordinate x, y & z vsakega sklepa posredniku mqtt.

- Ker ima projekt python naročnino na posredniku mqtt, lahko zdaj dostopamo do podatkov znotraj tega projekta. V vsakem sklepu robota sta dva motorja. Teh motorjev ni mogoče preprosto krmiliti neposredno s koordinatami x, y & z. Tako smo s pomočjo trigonometrije in nekaj zdrave pameti pretvorili koordinate x, y & z sklepov v kote, razumljive robotom.

Tako v bistvu vsakih 0,8 sekunde projekt WPF objavi koordinate x, y & z vsakega od spojev. Zato se znotraj projekta python ti koordianti pretvorijo v kote, ki jih nato pošljejo v ustrezne motorje robota.

Priporočena: