czech english

Ferda a Fatima

roboti z Merkuru na Eurobota 2005

Ferda a Fatima je dvojice jednoduchých robotů řízených jednočipem ATmega8. Naším cílem bylo ukázat, že i s jednoduchou elektronikou a mechanikou (stavebnice Merkur) je možné se zúčastnit soutěže Eurobot. Je to zároveň další příklad, jak by mohl vypadat Váš první robot, pokud chcete začít s robotikou.

Motivace

Je to už poměrně dlouho, co jsme se bavili s Ing. Radko Křížem z firmy Cross o možnosti robotické stavebnice z Merkuru. Podle vašich ohlasů by i mnozí z Vás něco podobného uvítali. Dosud však k žádné dohodě nedošlo a cesta k cíli se zdá den ode dne delší…
Ferda s Fatimou jsou tedy prozatímní příklady, jak by to mohlo vypadat. Oba roboti jsou řízeny jednoduchou deskou s čipem ATmega8 (jedná se o stejnou desku, kterou je řízen například chodící robot Faethon). Tu si buď můžete vyrobit sami, nebo nám napište a nějak se dohodneme. Robůtci jsou poháněni pomocí upravených serv (odstraněné zarážky a povolený potenciometr). Zbytek už je stavebnice Merkur - já mám číslo 5 (ještě žije ).

Eurobot 2005

Jak již bylo řečeno, F+F byli stavěni pro soutěž Eurobot 2005. Úkolem Ferdy bylo najít pohyblivý most, přejet ho a, aniž by se vrátil zpět na vlastní pole, náhodně popojíždět a shazovat kuželky. Fatima nakonec dostala řádově jednodušší úlohu (mimochodem prošla mnoha reinkarnacemi, což můžete vidět i na fotografiích — je to jedna z výhod stavebnice, kdy do hodiny lze postavit totálně odlišného robota ). Jejím úkolem bylo bránit vlastní kuželky. Poslední verze programu čekala na vytažení startovacího kabelu, pak si odpočítala 2s než poodjede Ferda a pak 14.4s jela skoro rovně na místo určení, kde zbytek zápasu stála — prostě žádná AI.
Přiznávám to nerad, ale F+F týmu Short Circuits letos moc nezabodovali. Ferdovi rozhodně chyběl nějaký rozbalovací mechanismus, aby úspěšněji shazoval kuželky. Přestože most myslím v každém zápase našel a přejel (?), tak se stalo, že netrefil jedinou kuželku. Bývala by stačila i nějaká pružina na způsob robota z týmu Junior. Fatima nic nepokazila, ale taky skoro nic nedělala.

Mechanika a umístění pohonu

Jednou z dalších motivací pro experimentování bylo vyzkoušení jiného způsobu pohonu než doposud. Snad skoro všichni roboti, které jsme kdy dělali, jsou diferenciálně řízení jako tank. Tedy dvěma motory, kdy jeden pohání pravé kolo/pás a druhý levé. Ferda, i několik prvních verzí Fatimy, měl pouze jedno hnané kolo, se kterým bylo možno zároveň zatáčet. Typově by to asi nejvíce připomínalo vysokozdvižný vozík. Členové týmu MART to komentovali takto: je to zajímavý nápad, ale na Eurobota se to rozhodně nehodí. Nehodí. Zkušenost jsme ale nějakou oba (Jiří Iša stavěl Ferdu, já Fatimu) udělali a třeba se nám bude někdy časem hodit .
Výhodou otáčivého kola je snadné řízení jízdy rovně, případně po oblouku daného poloměru. Nevýhodou, v soutěží zásadní, je špatná manévrovatelnost a menší výkon (místo dvou motorů máte jenom jeden). Ferda zůstal původnímu navrhu věrný (jen se mu prohodil předek a zadek a přijal tvář zajíce). Fatima nakonec metamorfovala do pásáku hnaného pouze jedním servem, ale i tak byla schopna projet příkop a případně shodit nějaké kuželky (pro úkol obranáře jízda rovně bohatě stačila).

Senzory

Pro úkol, který měli Ferda s Fatimou plnit, stačila relativně malá sada senzorů. Vedle aktivního nárazníku vpředu (mikrospínač s gumičkou) měl Ferda několik analogových senzorů CNY70. Ty používal jednak pro detekci příkopu (téměř žádný odraz vyslaného IR) a dále pro detekci bílé čáry. Další dva senzory byly na nehnaném pravém a levém kole, kde zastávaly funkci enkodérů. Nechyběl tedy ani náš oblíbený virtuální bumper, tj. když se hnané kolo točí, ale stav enkodérů se nemění, tak robot nejspíše narazil.

Deska s ATmega8

Oba roboti používali stejnou řídící desku s čipem ATmega8. Ladění probíhalo vždy ve dvou fázích, kdy se nejprve robot ovládal z notebooku pomocí seriové linky (nebo z PC s dlouhým kabelem) a teprve když všechno fungovalo, tak se software flashnul přímo do čipu. Musím přiznat, že jsem za ta léta trošku zhýčkaný a pro příště bych tak hluboko nesestupoval. Přeci jenom s iPAQem má člověk více možností a k dispozici jsou neustále logy všech testů, což o samostatném čipu tvrdit nelze. Na druhou stranu výsledný robůtek je plně samostaný a můžete si jich levně udělat hned několik .
Čip ATmega8 je relativně levný (v GM Elektronics ho prodávají asi za 70kč) a přesto umí většinu toho, co robotik potřebuje. Má modul pro sériovou komunikaci, časovače, 6 analogových vstupů, interní oscilátor do 8MHz, ISP pro snadné programování čipu atd. Čip je asi o něco málo citlivější na chyby operátora než např. AT90S8535, který jsme používali v Daisy a spol., protože se mi (i našim studentům) už podařil odpálit :(.
Deska, kterou jsme si sami navrhli, je v podstatě pouze vyvedení všech pinů čipu plus MAX232 pro sériovou komunikaci a několik LEDek (napájení, heart-beat, serialIn, serialOut). Osm výstupů je organizováno do trojic (zem, externí napájení, signál) pro řízení až osmi serv. Také všechny analogové vstupy jsou vyvedeny s referenčním napětím a zemí pro snadné napojení senzorů nebo např. potenciometru. Dále je zde konektor pro ISP a pár digitálních vstupů.
Snad všechny I/O piny jsou konfigurovatelné jako vstupní nebo výstupní a tak není nutné mít vždy všech 8 výstupu pro serva a 6 analogových vstupů. U robota Faethon jsme např. použili dva „servo výstupy” naopak jako vstupy pro měření signálu z modelářského příjimače. Analogové vstupy 4 a 5 lze použít pro I2C komunikaci, a tím propojit i několik destiček současně. Ale to je spíše vzdálená budoucnost…

Programování

Deska je relativně univerzální, ale se software je to o něco složitější. Stejně jako u starších robotů jsme použili oddělující rozhraní pomocí vstupních a výstupních struktur a tak oddělili závislost na procesoru. To se hodí např. v první fázi, kdy všechny příkazy jsou posílány pomocí sériové linky z PC do čipu a stavy senzorů zase z čipu do PC. Velmi podobný kód co běží na PC si pak můžete zkompilovat pro ATmega8 a používat přímo v čipu (samozřejmě za předpokladu, že kód je dostatečně malý, nepotřebuje operace s desetinou čárkou atd.). Problémy nastávají, když z některých výstupních pinů chcete udělat vstupní, případně na nich počítat délku krátkých pulzů nebo velké počty tiků. V tom případě je třeba změnit „jádro” a možná i rozhraní, což pro začátečníka není úplně triviální.
K programování desky jsme používali paralelní port a jednoduchý programátor s pár odpory. ATmega8 podporuje i boot-loader, tj. přímo programování pomocí sériové linky, ale tuto variantu jsme zatím moc neprozkoumali.

Závěr

Ferda i Fatima jsou relativně jednoduší robůtci. Na podobných základech lze sestavit např. robota, který bude sledovat čáru, hledat cestu v bludišti nebo se vyhýbat překážkám. Pokud jste programátoři a nepotřebujete obrázkový programovací jazyk jako má např. LEGO, tak je to i relativně levná a snadná cesta k robotice. Možná Vás to bude inspirovat i k účasti na dalším ročníku soutěže Eurobot, případně Istrobot v Bratislavě .

Máte-li jakékoli dotazy či připomínky — kontaktujte nás Rádi vám odpovíme.