Ardubot (3.díl)

Potřetí a prozatím naposled se vracím k Ardubotovi. Stručně připomenu, že jeho první verzi jsme postavili jako jednoduchého robota vhodného i pro začátečníky a jako mozek jsme použili Arduino Duemilanove. Minule jsme ho vylepšili o palubu s pohyblivou kamerou a vetší displej. K dokončení už příliš nechybí, a proto bych rád tímto článkem celý projekt uzavřel.

Úpravy hardwaru

Ardubot se od minulého článku dočkal pouze kosmetických úprav. Na pin Arduina číslo 13 jsem připojil 3 mm žlutou LED a namontoval ji pomocí objímky do vrchní paluby. Tato dioda indikuje funkci bootloaderu a zabliká vždy, když do Arduina začneme nahrávat nový program. Vedle ní je stejným způsobem umístěna 3 mm modrá LED, která funguje jako kontrolka bluetooth modulu. Počet přepínačů v zadní části paluby vzrostl na tři, a proto nebude na škodu vysvětlit si jejich funkci. První zleva (pohled zezadu) je připojen k pinu Arduina číslo 10 a pracovali jsme s ním už dříve, pouze jsem ho přemístil ze středu na kraj. Ve zdrojovém kódu programu je zastoupen konstantou TLAC. Prostřední přepínač propojuje piny UART-Rx a UART-Tx bluetooth modulu s piny Rx a Tx Arduina. Pravým přepínačem lze 5V pin Arduina izolovat od palubního napájení. K čemu je to dobré, jsme si vysvětlili minule. Nakonec jsem ještě vyměnil IR senzor Sharp GP2Y0A21 s rozsahem měření 10 až 80 cm za verzi GP2D120, která detekuje překážky na vzdálenost 4 až 30 cm.

Ardubot Přepínače na zádi Ardubota

Finální program

Pro Ardubota je možné napsat velké množství programů s různou funkcí a s některými jsme se seznámili v minulých článcích. Nicméně bylo by velmi nepraktické pokaždé nahrávat do Ardubota program podle toho, zda chceme, aby se pohyboval sám nebo naopak aby například poslouchal naše instrukce z PC. Arduino disponuje poměrně velkou pamětí a proto jednotlivé programy můžeme skloubit do jednoho a při startu vybrat, který se spustí. Vzhledem k tomu, že jsme minule vylepšili Ardubota o dostatečně velký displej, použijeme ho k zobrazení jednoduchého menu. Pro přecházení mezi položkami můžeme zase šikovně využít nárazníky jako tlačítka. Každé položce menu odpovídá podprogram nebo chcete-li funkce, například autonomní mód, řízení z PC atd. Spuštění požadované položky menu provedeme přesunutím levého přepínače do přední polohy. Každý podprogram pak běží až do přesunutí přepínače do zadní polohy, kdy dojde k návratu do menu. Celý zdrojový kód se všemi podprogramy je už poměrně dlouhý, a proto jsem ho nevkládal přímo do stránky, ale můžete si jej stáhnout. Nyní si vysvětlíme jednotlivé položky menu:

  • Řízení z PC – oproti minulé verzi jsem ovládání zcela předělal. Zavrhl jsem použití leteckého joysticku, který k pásovému podvozku až tak úplně nepasuje a rozhodl jsem se použít USB gamepad Logitech dual action, který nabízí joysticky rovnou dva. Umožňuje tak naprosto nezávisle ovládat levý i pravý motor - každý jedním joystickem. Toto tankové ovládání je daleko intuitivnější, pohodlnější a umožňuje lepší manévrování. Plovoucí ovladač D-pad slouží k pohybu kamerou a zbylým tlačítkům by v případě nutnosti šlo přiřadit další funkce. Novinkou je i zpětný přenos dat z Ardubota do PC, takže na obrazovce máme k dispozici informace ze senzorů. Jako už tradičně jsem použil programovací jazyk Processing, pod odstavcem najdete printscreen ze spuštěného skeče Ardubot Control 2, který slouží k řízení Ardubota.
  • Autonomní mód – nenechte se zmást novým názvem, rovněž se jedná o program z prvního článku. Po spuštění se Ardubot samostatně pohybuje a vyhýbá překážkám.
  • Řízení z mobilu – v tomto režimu reaguje Ardubot na příchozí instrukce základními pohyby, jízda vpřed, vzad, otáčení, pohyb věží, vše bez možnosti proporcionálního řízení. Při prostudování zdrojového kódu odhalíte, že příchozími instrukcemi jsou čísla 0 až 9 a znaky * a #, což odpovídá klávesnici mobilního telefonu. Java aplikaci pro odesílání instrukcí nabízím rovněž ke stažení. Jedná se o pouze mírně upravenou aplikaci Adama Heinricha, kterému bych touto cestou rád poděkoval. Řízení pomocí mobilu je ovšem nutné brát spíše jen jako zajímavou „vychytávku“, v praxi to totiž není příliš pohodlné.
  • Test senzoru – zobrazí na displeji hodnoty naměřené IR senzorem. Po přidání dalších senzorů lze samozřejmě zobrazit i údaje z nich.
  • Test bluetooth komunikace – protože je občas nutné ověřit, že komunikace funguje bez problémů, Ardubot v tomto režimu přijme data přes bluetooth, zobrazí je na displeji a přepošle zpět.
  • Test nového programu – sem je možné vložit jakýkoliv kousek kódu, jehož funkci potřebujeme otestovat.

K objasnění struktury celého programu by měl pomoci i vývojový diagram. Je samozřejmě velmi zjednodušený, protože při snaze obsáhnout v něm kompletní stavbu programu by došlo nejenom ke ztrátě přehlednosti, ale zabíral by také neúnosně mnoho místa. Záměrně jsem proto některé konstrukce vynechal a uvádím pouze základní kostru.

Tímto je jak hardware, tak programové vybavení Ardubota hotové. Nicméně dalším vylepšením samozřejmě nic nebrání, protože zůstal dostatek volných analogových vstupů pro jiné senzory. Nabízí se například ultrazvukový dálkoměr. Otázkou zůstává, zda se dá u robota této velikosti plně využít. Každopádně vybavit si robota sonarem je určitě zajímavé. Navíc by oba senzory pro detekci překážek (IR i ultrazvukový) nemusely být umístěny nutně oba vepředu, ale IR senzor by určitě bylo vhodné přemístit do zadní části. Šlo by tak předejít zejména krizovým situacím ve velmi stísněném prostoru. Bez čidla vzadu se totiž může stát, že robot při snaze vyhnout se překážce před ním, nabourá během otáčení a couvání do překážky jiné.

Zároveň bych rád upozornil na možnost použít místo Arduina klasické velikosti (Duemilanove nebo novější Uno) desku výrazně menší, která se prodává pod názvem Arduino Nano. Při rozměrech 45 x 18 mm nabízí tytéž funkce jako jeho větší sourozenci a může na palubě robota výrazně ušetřit místo. Nevýhodou je bohužel vyšší cena. Článek bych rád podpořil přibližně dvou a půl minutovým videem, na kterém je v krátkosti předvedeno, co vlastně Ardubot umí. Pro umístění videa jsem zvolil server YouTube. Doufám, že malá série článků o Ardubotovi byla alespoň trochu přínosná a všem zájemcům o stavbu přeji hodně zdaru. V případě dotazů mě neváhejte kontaktovat.

- Stránka vytvořena 21. února 2011 -
- Článek vyšel v časopisu Robot Revue 12/2010 (upraveno) -