Alena
diferenčně řízený robot s krokovými motory a počítačem Palm, 2001
Alena byl náš první pokus o proniknutí do světa robotiky. Je to diferenčné řízený robot s pohonem realizovaným pomocí krokových motorů. Nadstandardním vybavením byla manipulační ruka poháněná modelářskými servy. Mozkem Aleny můře být jakýkoliv počítač vybavený sériovým portem — od kapesního, který lze vzít „na palubu” až po superpočítač. Robot se úspěšně kvalifikoval do soutěže Eurobot 2001 a skončil na krásném dvanáctém místě.
Rozměr | Hodnota | Poznámka |
---|---|---|
Délka | 37/29 cm | s/bez držáku vlajek |
Šířka | 29/42 cm | ruka přímo/do strany |
Výška | 24/40 cm | ruka v základní/horní poloze |
Hmotnost | asi 3 kg | |
Mimimální operační prostor | asi 50 cm | minimální průměr plochy, na které se robot otočí |
Průměr kol | 8 cm | |
Rozteč kol | 19,5 cm | |
Maximální rychlost | 25 cm/s |
Mechanická konstrukce
Samonosný rám robota je ohnut z ocelového plechu. Rám plní několik funkcí –
jednak jsou k němu připevněny jednotlivé komponenty, druhak slouží jako
chladič pro krokové motory a silovou elektroniku. Obě hnaná kola jsou upevněna
přímo na hřídelích motorů (bez převodovek). Třetí (podpůrné) kolečko zajišťuje
stabilitu robota.
Na přední straně je připevněn nárazník se dvěma mikrospínači. Zadní stranu
tvoří obloukový držák vlajek vyrobený z hliníkového plechu. Před ním si můžete
všimnout plexisklového krytu pro počítač Palm.
Z druhého obrázku je na první pohled vidět, že Slunce je výrazně vyšší než
ostatní planety. Proto jsme pro umístění vlajky na něj byli donuceni použít
menší trik. Vlajku na Slunce jsme umisťovali vždy jako první. Proto byla
připravena do kleští ruky předem a navíc vzhůru nohama. To umožnilo pokládat
vlajku horem místo do strany.
Řídící deska s mikrokontrolérem AVR |
Třetí obrázek ukazuje řídící desku s mikrokontrolérem AVR. Ten funguje jako
rozhraní mezi hardwarovou částí (senzory, ruka, motory) a řídícím počítačem,
na kterém se řešilo „strategické” rozhodování.
Zdroj energie
Robot byl napájen sadou osmi tužkových akumulátorů. Použili jsme NiCd
akumulátory s kapacitou 700 mAh. motory byly napájeny přímo, pro
napájení řídící elektroniky a serv byly použity lineární regulátory 7805.
Nabíjení baterií na reflexní nabíječce trvalo asi hodinu. Poté byl robot
schopen jezdit cca 20 až 40 minut v závislosti na četnosti používání ruky.
Detail ruky |
Senzory
Náš první robot byl poměrně chudý na senzory. Pro detekci překážek sloužil
přední nárazník. Dále robot mohl sledovat čáru za pomoci infračervených
senzorů (CNY-70) umístěných na spodku robota. AVR dále počítalo kroky motorů,
takže k dispozici byla i (nespolehlivá) odometrie.
Ruka
Hybným mechanizmem ruky jsou tři modelářská serva - ta nastavují rotaci,
výšku a řídí kleště robota (otevřeno/zavřeno). Serva ruky jsou řízena vlastním
mikrokontrolérem (Atmel), který je řízen z mikrokontroléru AVR pomocí sběrnice
podobné I2C (synchronní s otevřeným kolektorem). Rychlost komunikace je asi
1kbps.
Hlavní obrazovka programu |
Programové vybavení
Programové vybavení se skládá ze tří základních částí:
- program na řídícím počítači
- program mikrokontroléru AVR
- program mikrokontroléru Atmel
Každá z těchto komponent je podrobněji popsána níže. Mimo nich byla
naprogramována sada podpůrných aplikací pro simulaci a vizualizaci.
Komunikace mezi řídícím počítačem a mikrokontrolérem AVR je asynchronní
(stantardní UART sériová linka na 19200 bps), komunikace mezi mikrokontroléry
AVR a Atmel je synchronní (podobná protokolu I2C). Rovněž použité protokoly
jsou popsány níže.
Program řídícího počítače
Obrazovka manuálního řízení ruky |
Řídící počítač je základním kamenem celého systému. Původní (plná) verze
byla naprogramována v jazyce C++ (většinou nezávisle na platformě), finální
(odlehčená) verze pro počítač Palm je napsána v jazyce C a přeložena pomocí
překladače GCC a vývojového řetězce PRC-Tools a PalmOS SDK. Tato část určuje
chování robota. Odlehčená verze je v zásadě řízena stavovým automatem
navrženým speciálně pro soutěž Eurobot. V plné verzi je systém o poznání
komplikovanější. Jednotlivé komponenty systému (mapa světa, plánovač cesty…)
spolu komunikují prostřednictvím sofistikovaného systému zpráv a určují
výsledné chování robota. Společnou částí pro obě verze je řízení komunikace po
sériové lince a obsluha zpráv po ní putujících.
Program mikrokontroléru AVR (AT90S8535)
Program obsluhuje komunikaci po sériové lince s řídícím počítačem a po
synchronní sběrnici s mikrokontrolérem Atmel ovládajícím serva ruky. Jeho
dalším úkolem je řízení motorů a zpracování dat ze senzorů. Pro vývoj byla
použita modifikace překladače GCC pro mikrokontroléry AVR – AVR-GCC.
Obrazovka manuálního řízení pohonu |
Program mikrokontroléru AVR řeší následující funkce:
- komunikace s řídícím počíačem po sériové lince
- synchronní komunikace s mikrokontrolérem Atmel ovládajícím serva ruky
- generování a parsování zpráv
- řízení krokových motorů
- zpracování dat ze senzorů
- odesílání dat ze senzorů
- sledování čáry
- nouzové zasavení
- výstup na alfanumerický LCD displej
Program mikrokontroléru Atmel (AT89C51)
Program mikrokontroléru Atmel generuje signály pro řízení serv. Program je
napsán v asembleru. Mikrokontrolér je řízen po synchronní sériové sběrnici
typu I2C.
Asynchronní komunikace řídící počítač ↔ AVR
Asynchronní komunikace mezi řídícím počítačem a mikrokontrolérem AVR je
strukturována do zpráv. Každá zpráva obsahuje odesílatele, příjemce (pro
budoucí rozšíření byla implementována možnost zpráv pro více příjemců),
pořadové číslo zprávy, kód příkazu a případné parametry. Každá zpráva je
ohraničena dvoubytovým úvodním a koncovým blokem. Korektnost zprávy zaručuje
kontrolní součet založený na dvojkovém doplňku.
Synchronní protokol AVR ↔ ruka
Synchronní protokol pro řízení ruky je blokově orientovaný. Blok má pevnou
délku (4 byty). Každý blok obsahuje hlavičku (adresu - 21h) a tři byty
udávající novou pozici (natočení, zvednutí, stav kleští) ruky. Pro
jednoduchost zde nebyl implementován kontrolní součet, ani potvrzení o přijetí
celého bloku. Každý byte je „potvrzován” pomocí start a stop bitu.
Členové týmu
Martin Dlouhý | vedoucí týmu, ideje, jádro systému |
Zbyněk Winkler | systém zpráv, vývoj programového vybavení, koordinace |
Kamil Řezáč | řídící elektronika, AVR, PalmOS |
Jaroslav Sládek | program řídícího počítače, PalmOS, mapa světa |
Vítězslav Hola | mechanika, elektronika, Atmel řídící serva |
Bogdan Pilch | programové vybavení, přenos podpůrných programů pod Linux |
V případě dalšího zájmu o tento projekt, případně pokud máte nějaké
připomínky, kontaktujte nás prosím pomocí
tohoto formuláře.