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ě .
Kolize |
Fatima ver2 |
Ferda |
Jirka s robotem Ferda |
Detekce příkopu |
Detekce příkopu - detail |
Konečná verze Fatimy |
Fatima - pohled ze spodu |
Fatima - vnitřek |
Ferda a Fatima na startu |
Ferda v akci |
Roboti na Eurobotu |
Short Circuits 2005 |
Ferda v převleku |
Jirkův poster |
Máte-li jakékoli dotazy či připomínky —
kontaktujte nás Rádi vám odpovíme.