Obsah:

Robot Nao napodobující pohyby pomocí Kinectu: 7 kroků
Robot Nao napodobující pohyby pomocí Kinectu: 7 kroků

Video: Robot Nao napodobující pohyby pomocí Kinectu: 7 kroků

Video: Robot Nao napodobující pohyby pomocí Kinectu: 7 kroků
Video: ISAAC ASIMOV. JÁ, ROBOT. AUDIOKNIHA 2024, Září
Anonim
Robot Nao napodobující pohyby pomocí Kinectu
Robot Nao napodobující pohyby pomocí Kinectu

V tomto pokynu vám vysvětlím, jak jsme nechali robota Nao napodobovat naše pohyby pomocí senzoru kinect. Skutečným cílem projektu je vzdělávací účel: učitel má schopnost zaznamenávat určité soubory pohybů (např. Tanec) a pomocí těchto záznamů může děti ve třídě napodobovat robota. Procházením celého tohoto instrukčního kroku krok za krokem byste měli být schopni tento projekt plně znovu vytvořit.

Toto je školní projekt (NMCT @ Howest, Kortrijk).

Krok 1: Základní znalosti

Chcete -li znovu vytvořit tento projekt, musíte mít některé základní znalosti:

- Základní znalosti pythonu

- Základní znalost C# (WPF)

- Základní znalosti trigonometrie

- Znalosti o tom, jak nastavit MQTT na malinovém pi

Krok 2: Získání nezbytných materiálů

Požadované materiály pro tento projekt:

- Raspberry Pi

- Kinect Sensor v1.8 (Xbox 360)

- robot Nao nebo virutální robot (choreograf)

Krok 3: Jak to funguje

Image
Image
Jak to funguje
Jak to funguje

K počítači s aplikací WPF je připojen snímač kinect. Aplikace WPF odesílá data do aplikace Python (robot) pomocí MQTT. Místní soubory se ukládají, pokud si to uživatel vybere.

Podrobné vysvětlení:

Než začneme nahrávat, musí uživatel zadat IP adresu brokera MQTT. Kromě toho potřebujeme také téma, na které chceme data publikovat. Po stisknutí startu aplikace zkontroluje, zda by bylo možné navázat spojení s brokerem a poskytne nám zpětnou vazbu. Kontrola, zda téma existuje, není možná, takže za toto zodpovídáte plně. Když jsou oba vstupy v pořádku, aplikace začne odesílat data (souřadnice x, y & z každého kloubu) z kostry, která je sledována k tématu na makléři MQTT.

Protože je robot spojen se stejným brokerem MQTT a přihlášen k odběru na stejné téma (toto je třeba zadat také v aplikaci python), aplikace python nyní obdrží data z aplikace WPF. Pomocí trigonometrie a vlastních psaných algoritmů převádíme coördináty na úhly a radiány, které používáme k otáčení motorů uvnitř robota v reálném čase.

Když je záznam uživatele dokončen, stiskne tlačítko stop. Nyní se uživateli zobrazí vyskakovací okno s dotazem, zda chce záznam uložit. Když uživatel zruší, vše se resetuje (data se ztratí) a lze spustit nové nahrávání. Pokud si uživatel přeje uložit záznam, měl by zadat název a kliknout na „uložit“. Když stisknete 'uložit', všechna získaná data se zapíší do místního souboru pomocí zadání názvu jako názvu souboru. Soubor se také přidá do zobrazení seznamu na pravé straně obrazovky. Tímto způsobem je soubor po dvojitém kliknutí na nový záznam v zobrazení seznamu načten a odeslán brokerovi MQTT. V důsledku toho robot přehraje záznam.

Krok 4: Nastavení makléře MQTT

Nastavení makléře MQTT
Nastavení makléře MQTT

Pro komunikaci mezi kinectem (projekt WPF) a robotem (projekt Python) jsme použili MQTT. MQTT se skládá z brokera (linuxový počítač, na kterém běží software mqtt (např. Mosquitto)) a tématu, na které se klienti mohou přihlásit (obdrží zprávu z tématu) a publikovat (zveřejní zprávu na toto téma).

Chcete -li nastavit brokera MQTT, stáhněte si celý tento obrázek jessie. Toto je čistá instalace pro vás Raspberry Pi s makléřem MQTT. Téma je „/Sandro“.

Krok 5: Instalace sady Kinect SDK V1.8

Aby kinect fungoval na vašem počítači, musíte si nainstalovat sadu Microsoft Kinect SDK.

Můžete si jej stáhnout zde:

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

Krok 6: Instalace Pythonu V2.7

Robot pracuje s frameworkem NaoQi, tento framework je k dispozici pouze pro python 2.7 (NOT 3.x), zkontrolujte tedy, jakou verzi pythonu máte nainstalovanou.

Python 2.7 si můžete stáhnout zde:

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

Krok 7: Kódování

Kódování
Kódování
Kódování
Kódování
Kódování
Kódování

Github:

Poznámky:

- Kódování pomocí kinectu: nejprve vyhledejte připojený kinect. Poté, co jsme to uložili do vlastnosti, jsme na kinectu povolili barevný a skeletonstream. Colorstream je živé video, zatímco skeletonstream znamená, že se zobrazí kostra osoby před kamerou. Colorstream není opravdu nutný k tomu, aby tento projekt fungoval, jen jsme jej povolili, protože bitmapový skeletonstream k barevnému proudu vypadá úhledně!

- Ve skutečnosti to opravdu dělá skeletonstream. Povolení skeletonstream znamená, že je sledována kostra osoby. Z této kostry získáte všechny druhy informací, např. kostní orientace, společné informace, … Klíčem našeho projektu byly společné informace. Pomocí souřadnic x-y & z každého z kloubů sledované kostry jsme věděli, že dokážeme robota rozpohybovat. Takže každých 0,8 sekundy (pomocí časovače) zveřejníme souřadnice x, y & z každého z kloubů makléři mqtt.

- Protože projekt python má předplatné na makléře mqtt, můžeme nyní přistupovat k datům uvnitř tohoto projektu. V každém kloubu robota jsou dva motory. Tyto motory nelze řídit pouze přímo pomocí souřadnic x, y & z. Pomocí trigonometrie a nějakého zdravého rozumu jsme tedy převedli souřadnice x, y & z kloubů na úhly nestabilní k robotům.

Takže v podstatě každých 0,8 sekundy projekt WPF publikuje souřadnice x, y & z každého z kloubů. V důsledku toho jsou v projektu pythonu tyto coordiantes převedeny na úhly, které jsou poté odeslány do odpovídajících motorů robota.

Doporučuje: