Obsah:

Robot Nao napodobňujúci pohyby pomocou Kinectu: 7 krokov
Robot Nao napodobňujúci pohyby pomocou Kinectu: 7 krokov

Video: Robot Nao napodobňujúci pohyby pomocou Kinectu: 7 krokov

Video: Robot Nao napodobňujúci pohyby pomocou Kinectu: 7 krokov
Video: Leap Motion SDK 2024, November
Anonim
Nao robot napodobňujúci pohyby pomocou Kinectu
Nao robot napodobňujúci pohyby pomocou Kinectu

V tomto návode vám vysvetlím, ako sme nechali robota Nao napodobňovať naše pohyby pomocou senzora kinect. Skutočný cieľ projektu je vzdelávací účel: učiteľ má schopnosť zaznamenávať určité pohyby (napr. Tanec) a pomocou týchto záznamov môže deti v triede napodobňovať robota. Tým, že prejdete celým týmto návodom krok za krokom, by ste mali byť schopní tento projekt znova vytvoriť.

Toto je školský projekt (NMCT @ Howest, Kortrijk).

Krok 1: Základné znalosti

Na obnovu tohto projektu musíte mať niekoľko základných znalostí:

- Základné znalosti pythonu

- Základné znalosti C# (WPF)

- Základné znalosti trigonometrie

- Vedomosti o tom, ako nastaviť MQTT na malinovom pi

Krok 2: Získanie potrebných materiálov

Potrebné materiály pre tento projekt:

- Malinový koláč

- Kinect Sensor v1.8 (Xbox 360)

- robot Nao alebo virutálny robot (choreograf)

Krok 3: Ako to funguje

Image
Image
Ako to funguje
Ako to funguje

K počítaču s aplikáciou WPF je pripojený snímač kinect. Aplikácia WPF odosiela údaje do aplikácie Python (robot) pomocou MQTT. Miestne súbory sa uložia, ak si to používateľ zvolí.

Podrobné vysvetlenie:

Predtým, ako začneme nahrávať, musí užívateľ zadať IP adresu brokera MQTT. Okrem toho potrebujeme aj tému, na ktorú chceme údaje publikovať. Po stlačení štartu aplikácia skontroluje, či by bolo možné nadviazať spojenie s maklérom a poskytne nám spätnú väzbu. Kontrola, či téma existuje, nie je možná, takže za túto tému nesiete plnú zodpovednosť. Keď sú oba vstupy v poriadku, aplikácia začne odosielať údaje (súradnice x, y & z z každého kĺbu) z kostry, ktorá sa sleduje k téme na maklérovi MQTT.

Pretože je robot spojený s rovnakým maklérom MQTT a prihlásený na rovnakú tému (musí byť zadaný aj v aplikácii python), aplikácia python teraz bude dostávať údaje z aplikácie WPF. Pomocou trigonometrie a algoritmov, ktoré sme napísali sami, prevádzame súradnice na uhly a radiány, ktoré používame na otáčanie motorov vo vnútri robota v reálnom čase.

Keď je používateľ s nahrávaním hotový, stlačí tlačidlo stop. Teraz sa používateľovi zobrazí vyskakovacie okno s otázkou, či chce záznam uložiť. Akonáhle používateľ klikne na položku Zrušiť, všetko sa vynuluje (údaje sa stratia) a bude možné začať nové nahrávanie. Ak si užívateľ želá uložiť záznam, mal by zadať názov a kliknúť na „uložiť“. Keď kliknete na „uložiť“, všetky získané údaje sa zapíšu do lokálneho súboru pomocou zadania názvu ako názvu súboru. Súbor sa pridá aj do zobrazenia zoznamu na pravej strane obrazovky. Týmto spôsobom sa súbor po dvojitom kliknutí na nový záznam v zobrazení zoznamu načíta a odošle maklérovi MQTT. V dôsledku toho robot prehrá záznam.

Krok 4: Nastavenie makléra MQTT

Nastavenie makléra MQTT
Nastavenie makléra MQTT

Na komunikáciu medzi kinectom (projekt WPF) a robotom (projekt Python) sme použili MQTT. MQTT pozostáva z makléra (linuxový počítač, na ktorom je spustený softvér mqtt (napr. Mosquitto)) a témy, na ktorú sa môžu klienti prihlásiť (dostanú správu z témy) a publikovať (uverejnia správu na tému).

Ak chcete nastaviť makléra MQTT, stačí stiahnuť celý tento obrázok jessie. Toto je čistá inštalácia pre vás Raspberry Pi s maklérom MQTT. Téma je „/Sandro“.

Krok 5: Inštalácia súpravy Kinect SDK V1.8

Aby kinect fungoval na vašom počítači, musíte si nainštalovať súpravu Microsoft Kinect SDK.

Môžete si ho stiahnuť tu:

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

Krok 6: Inštalácia Pythonu V2.7

Robot pracuje s rámcom NaoQi, tento rámec je k dispozícii iba pre python 2.7 (NOT 3.x), preto skontrolujte, akú verziu pythonu máte nainštalovanú.

Python 2.7 si môžete stiahnuť tu:

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

Krok 7: Kódovanie

Kódovanie
Kódovanie
Kódovanie
Kódovanie
Kódovanie
Kódovanie

Github:

Poznámky:

- Kódovanie pomocou kinectu: v prvom rade hľadáte prepojený kinect. Keď sme to uložili do vlastníctva, povolili sme na kinecte farebný a skeletonstream. Colorstream je živé video, zatiaľ čo skeletonstream znamená, že sa zobrazí kostra osoby pred kamerou. Colorstream nie je v skutočnosti potrebný na to, aby tento projekt fungoval, len sme ho povolili, pretože bitmapový tok skeletu na farebný prúd vyzerá jednoducho!

- V skutočnosti to robí skutočne skeletonstream. Povolenie skeletonstream znamená, že sa sleduje kostra osoby. Z tejto kostry získate všetky druhy informácií, napr. kostná orientácia, spoločné informácie, … Kľúčom k nášmu projektu boli spoločné informácie. Pomocou súradníc x-y & z každého z kĺbov sledovanej kostry sme vedeli, že dokážeme robot rozhýbať. Takže každých 0,8 sekundy (pomocou časovača) zverejníme súradnice x, y & z každého z kĺbov maklérovi mqtt.

- Pretože projekt python má predplatné na makléra mqtt, môžeme teraz pristupovať k údajom vnútri tohto projektu. Vnútri každého kĺbu robota sú dva motory. Tieto motory nemožno ovládať iba priamo pomocou súradníc x, y & z. Pomocou trigonometrie a zdravého rozumu sme teda súradnice x, y & z kĺbov previedli na uhly nestabilné pre roboty.

V zásade teda každých 0,8 sekundy projekt WPF zverejní súradnice x, y & z každého z kĺbov. Následne sa v projekte python tieto súradnice prevedú na uhly, ktoré sa potom odošlú do zodpovedajúcich motorov robota.

Odporúča: