czech english

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élka37/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
Ří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
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
Hlavní obrazovka programu

Programové vybavení

Programové vybavení se skládá ze tří základních částí:
  1. program na řídícím počítači
  2. program mikrokontroléru AVR
  3. 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
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
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 Winklersystém zpráv, vývoj programového vybavení, koordinace
Kamil Řezáčřídící elektronika, AVR, PalmOS
Jaroslav Sládekprogram řídícího počítače, PalmOS, mapa světa
Vítězslav Holamechanika, elektronika, Atmel řídící serva
Bogdan Pilchprogramové 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.