Sadržaj:

Nao Robot oponaša pokrete koristeći Kinect: 7 koraka
Nao Robot oponaša pokrete koristeći Kinect: 7 koraka

Video: Nao Robot oponaša pokrete koristeći Kinect: 7 koraka

Video: Nao Robot oponaša pokrete koristeći Kinect: 7 koraka
Video: Leap Motion SDK 2024, Septembar
Anonim
Nao Robot oponaša kretnje pomoću Kinecta
Nao Robot oponaša kretnje pomoću Kinecta

U ovom uputstvu ću vam objasniti kako smo dopustili Nao robotu da oponaša naša kretanja pomoću kinect senzora. Stvarni cilj projekta je obrazovna svrha: učitelj ima sposobnost snimanja određenih setova pokreta (npr. Ples) i može koristiti te snimke kako bi djeca u učionici imitirala robota. Prolazeći kroz cijeli ovaj korak po korak instrukcije, trebali biste biti u mogućnosti ponovno stvoriti ovaj projekt.

Ovo je projekat povezan sa školom (NMCT @ Howest, Kortrijk).

Korak 1: Osnovno znanje

Za ponovno stvaranje ovog projekta morate posjedovati osnovno znanje:

- Osnovno znanje o pythonu

- Osnovno znanje C# (WPF)

- Osnovno znanje trigonometrije

- Znanje o tome kako postaviti MQTT na pi od maline

Korak 2: Nabavka potrebnih materijala

Potrebni materijali za ovaj projekat:

- Raspberry Pi

- Kinect Sensor v1.8 (Xbox 360)

- Nao robot ili virutalni robot (Choregraph)

Korak 3: Kako to funkcionira

Image
Image
Kako radi
Kako radi

Kinect senzor je povezan sa računarom na kojem radi aplikacija WPF. WPF aplikacija šalje podatke Python aplikaciji (robotu) koristeći MQTT. Lokalne datoteke se spremaju ako korisnik tako odluči.

Detaljno objašnjenje:

Prije nego započnemo snimanje, korisnik mora unijeti ip-adresu brokera MQTT. Osim toga, potrebna nam je i tema o kojoj želimo objaviti podatke. Nakon pritiska na start, aplikacija će provjeriti može li se uspostaviti veza s posrednikom i dat će nam povratne informacije. Nije moguće provjeriti postoji li tema, pa ste za nju u potpunosti odgovorni. Kada su oba ulaza u redu, aplikacija će početi slati podatke (koordinate x, y & z iz svakog zgloba) sa kostura koji se prati do teme na MQTT brokeru.

Budući da je robot povezan s istim MQTT posrednikom i pretplaćen na istu temu (ovo se mora unijeti i u aplikaciju python), aplikacija python će sada primati podatke iz aplikacije WPF. Koristeći trigonometriju i samostalno napisane algoritme, koordinate pretvaramo u kutove i radijane, koje koristimo za rotiranje motora unutar robota u stvarnom vremenu.

Kada korisnik završi snimanje, on pritisne dugme za zaustavljanje. Sada korisnik dobiva skočni prozor s pitanjem želi li sačuvati snimak. Kada korisnik pritisne dugme za otkazivanje, sve se resetira (podaci se gube) i može se započeti novo snimanje. Ako korisnik želi spremiti snimak, trebao bi unijeti naslov i pritisnuti 'spremi'. Kada pritisnete 'spremi', svi prikupljeni podaci se upisuju u lokalnu datoteku koristeći naslov kao naziv datoteke. Datoteka se takođe dodaje u prikaz liste sa desne strane ekrana. Na ovaj način, nakon dvostrukog klika na novi unos u prikazu liste, datoteka se čita i šalje MQTT brokeru. Posljedično, robot će reproducirati snimak.

Korak 4: Postavljanje MQTT brokera

Postavljanje brokera MQTT
Postavljanje brokera MQTT

Za komunikaciju između kinecta (WPF projekt) i robota (Python projekt) koristili smo MQTT. MQTT se sastoji od posrednika (linux računara na kojem je pokrenut softver mqtt (npr. Mosquitto)) i teme na koju se klijenti mogu pretplatiti (dobiju poruku s teme) i objaviti (objave poruku na tu temu).

Za postavljanje MQTT brokera samo preuzmite cijelu ovu sliku jessie. Ovo je čista instalacija za vas Raspberry Pi sa MQTT posrednikom na njoj. Tema je "/Sandro".

Korak 5: Instaliranje Kinect SDK V1.8

Da bi kinect radio na vašem računaru, morate instalirati Microsoft Kinect SDK.

Možete ga preuzeti ovdje:

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

Korak 6: Instaliranje Python V2.7

Robot radi s okvirom NaoQi, ovaj okvir je dostupan samo za python 2.7 (NE 3.x), pa provjerite koju ste verziju pythona instalirali.

Python 2.7 možete preuzeti ovdje:

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

Korak 7: Kodiranje

Kodiranje
Kodiranje
Kodiranje
Kodiranje
Kodiranje
Kodiranje

Github:

Napomene:

- Kodiranje pomoću kinecta: prvo potražite povezani kinect. Nakon što smo ovo spremili unutar svojstva, omogućili smo tok boja i skeleta na kinektu. Colorstream je video zapis uživo, dok skeletonstream znači da će biti prikazan kostur osobe ispred kamere. Colorstream zapravo nije neophodan za uspješan rad ovog projekta, samo smo ga omogućili jer bitmapiranje skeletnog toka u tok boja izgleda glatko!

- U stvarnosti, to je skelet koji obavlja posao. Omogućavanje skeletnog toka znači da se prati kostur osobe. Iz ovog kostura primate sve vrste informacija, npr. orijentacije kostiju, zajedničke informacije,… Ključ našeg projekta bile su zajedničke informacije. Koristeći x-y & z koordinate svakog od zglobova iz praćenog kostura, znali smo da možemo pokrenuti robota. Dakle, svakih 0,8 sekundi (pomoću tajmera) objavljujemo x, y & z koordinate svakog od zglobova u mqtt brokeru.

- Budući da python projekt ima pretplatu na mqtt brokeru, sada možemo pristupiti podacima unutar ovog projekta. Unutar svakog zgloba robota nalaze se dva motora. Ovim motorima se ne može upravljati samo pomoću koordinata x, y & z. Dakle, koristeći trigonometriju i neki zdrav razum, pretvorili smo x, y & z koordinate zglobova u kutove razumljive robotima.

Dakle, u osnovi svakih 0,8 sekundi WPF projekt objavljuje x, y & z koordinate svakog od spojeva. Shodno tome, unutar python projekta ti se koordinatni kordanti pretvaraju u kutove, koji se zatim šalju odgovarajućim motorima robota.

Preporučuje se: