Vysoký výkon, obrovské množství hardwarových periferií, zpracování 2D i 3D obrazu, práce s HD videem, grafické rozhraní a mnoho dalšího najdeme u desky SABRE SD s aplikačním procesorem Freescale i.MX6Quad (obr. 1).
Vysoký výkon zaručují čtyři jádra ARM® Cortex®-A9 a paměť DDR3 SDRAM o velikosti 1 GB. Deska disponuje až čtyřmi způsoby připojení displeje a umožňuje i připojení několika displejů současně. Mnoho z těchto výhod bylo použito právě pro projekt ovládání robotické ruky.
Základní vlastnosti desky SABRE SD
- Procesor Freescale i.MX6Quad 1 GHz ARM Cortex-A9
- 1 GB DDR3 SDRAM
- 8 GB eMMC Flash
- 2x LVDS pro připojení displejů
- HDMI konektor
- Paralelní připojení LCD displeje
- MIPI DSI pro připojení displeje
- Audio kodeky
- 2x digitální mikrofon
- 2x 3,5 mm audio jack
- mPCIe konektor
- 2x SD/MMC slot na kartu
- SATA konektor
- 10/100/1000 Ethernet
- USB 2.0 OTG (micro USB)
- JTAG konektor
- USB 2.0 debugovací port
- Akcelerometr
Robotická ruka
Robotická ruka byla zakoupena od společnosti Lynxmotion a ovládá se přes sériový port jednoduchými příkazy, které se skládají z čísla serva, nastavení pozice serva a dobou nastavení serva do dané pozice. Těchto příkazů je možné poslat několik za sebou nebo je kombinovat tak, aby se nastavovalo několik serv současně.
Vlastní projekt
Z pohledu hardwaru bude deska SABRE SD propojena s robotickou rukou pomocí převodníku z USB na sériový port. Dále je k desce připojena webová kamera podporující standard UVC (Universal Video Class), myš, klávesnice a dva video výstupy. Jedním je LVDS, ke kterému je připojen 10“ dotykový displej a druhý je HDMI, kam je připojen monitor. Vše je naznačeno blokově na obr. 2.
Obr. 2: Blokové schéma zapojení všech součástí
Celé zařízení je ovládáno programem, který je uložený na SD kartě. Spolu s ním je na kartě uložený i celý operační systém a zavaděč systému. Deska běžně podporuje dva operační systémy – Linux a Android.
V tomto projektu byl zvolen OS Linux Yocto, který byl zkompilován přesně pro tuto desku i s přidanými ovladači pro USB převodník a webovou kameru. Navíc byly přidány balíčky pro Qt4 a OpenCV. Zároveň byl použit zavaděč U-Boot pro spuštění systému, kde bylo nutné nastavit použití dvou zobrazovacích jednotek.
Program
Program je napsaný v jazyce C++ a byly použity knihovny pro grafické zobrazení Qt4 a pro práci s obrazem OpenCV. V programu se lze přepínat mezi několika režimy řízení robotické ruky. Prvním je manuální režim, který umožňuje nastavení každého serva zvlášť posuvníkem, jak je naznačeno na obr. 3.
Obr. 3: Manuální režim
Obr. 4 zobrazuje režim nastavení pozice. Na dotykovém displeji volíme pozici úchopu robotické ruky – na obrázku naznačeno červenou tečkou. Program přepočítá pozici úchopu na úhly jednotlivých serv. Takto je možné robotickou ruku ovládat mnohem snadněji.
Obr. 4: Režim nastavení pozice
Poslední režim ovládání je hra podobná „Člověče, nezlob se!“. Hodí se kostkou a robotická ruka přesune figurku o hozený počet polí. Je možné házet dvěma způsoby. Prvním způsobem je elektronická kostka, která umožňuje i autonomní hru, kdy si program háže kostkou pomocí generátoru náhodných čísel stále dokola. Druhým způsobem je fyzická kostka, kterou sleduje webová kamera a pomocí jednoduchých funkcí z OpenCV spočítá počet teček na kostce. Posun figurky můžeme rovněž ovládat kliknutím na určité políčko na displeji (obr. 5).
Obr. 5: Hra „Člověče, nezlob se!“
Při ovládání robotické ruky můžeme zároveň přehrávat video na monitoru a to buď z kamery, nebo ze souboru, popřípadě datového toku.
Závěr
Byla vytvořena aplikace, která ukazuje výkon procesoru i.MX6Quad a desky SABRE SD. Aplikace zvládá ve stejném čase snímat obraz z kamery, zpracovávat jej a reagovat na něj.
Obr. 6: Sestava hrající „Člověče, nezlob se!“
Mezitím dále po sériové lince ovládá robotickou ruku a kromě toho ještě přehrává video z SD karty na monitoru připojeném přes HDMI. Během toho všeho je možné aplikaci ovládat na dotykovém displeji a tím měnit chování nejen robotické ruky, ale i celé aplikace. Finální podoba demonstrační aplikace je zachycena na obr. 6 a 7.
Obr. 7: Pohled na řídicí desku
Zdroje
- http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=RDIMX6SABREBRD
- http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q
- http://www.lynxmotion.com/
Freescale a logo Freescale jsou ochranné známky společnosti Freescale Semiconductor, Inc., Reg. U.S. Pat. & Tm. Off. Všechny ostatní názvy jsou majetkem jejich vlastníků. ARM a Cortex jsou ochranné známky společnosti ARM Ltd. © 2014 Freescale Semiconductor, Inc