Sadržaj:

Nao Robot oponaša kretnje pomoću Kinecta: 7 koraka
Nao Robot oponaša kretnje pomoću Kinecta: 7 koraka

Video: Nao Robot oponaša kretnje pomoću Kinecta: 7 koraka

Video: Nao Robot oponaša kretnje pomoću Kinecta: 7 koraka
Video: Открытие души - Могут ли Пророки Новой Эры раскрыть нашу скрытую природу? 2024, Lipanj
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še kretnje 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, trebali biste moći u potpunosti ponovno stvoriti ovaj projekt.

Ovo je projekt 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 o trigonometriji

- Znanje o tome kako postaviti MQTT na pi od maline

Korak 2: Nabava potrebnih materijala

Potrebni materijali za ovaj projekt:

- Malina Pi

- Kinect senzor v1.8 (Xbox 360)

- Nao robot ili virutalni robot (Choregraph)

Korak 3: Kako to radi

Image
Image
Kako radi
Kako radi

Kinect senzor spojen je na računalo koje pokreće aplikaciju WPF. WPF aplikacija šalje podatke u Python aplikaciju (robot) pomoću MQTT -a. Lokalne datoteke spremaju se ako korisnik tako odluči.

Detaljno objašnjenje:

Prije nego počnemo snimati, korisnik mora unijeti ip-adresu posrednika 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. Kad su oba ulaza u redu, aplikacija će početi slati podatke (koordinate x, y & z iz svakog zgloba) sa kostura koji se prati na temu na posredniku MQTT.

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

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

Korak 4: Postavljanje brokera MQTT

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 (računalo na Linuxu na kojem je pokrenut softver mqtt (npr. Mosquitto)) i teme na koju se klijenti mogu pretplatiti (primaju poruku s teme) i objavljivati (objavljuju poruku na tu temu).

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

Korak 5: Instalirajte Kinect SDK V1.8

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

Možete ga preuzeti ovdje:

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

Korak 6: Instaliranje Pythona 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:

Bilješke:

- 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 nužan za rad ovog projekta, samo smo ga omogućili jer bitmapiranje skeletonstream -a u colorstream izgleda glatko!

- U stvarnosti je to zaista skeletni tok koji obavlja posao. Omogućavanje skeletonstream -a 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 mjerača vremena) objavljujemo koordinate x, y & z svakog od zglobova posredniku mqtt.

- Budući da projekt python ima pretplatu na posredniku mqtt, sada možemo pristupiti podacima unutar ovog projekta. Unutar svakog zgloba robota nalaze se dva motora. Tim se motorima ne može jednostavno upravljati izravno pomoću koordinata x, y & z. Dakle, pomoću trigonometrije i malo zdravog razuma pretvorili smo koordinate x, y & z zglobova u kutove razumljive robotima.

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

Preporučeni: