Tento dokument popisuje autonomní robot s diferenciálním řízením Kubrt. Zabývá se popisem jednotlivých hlavních bloků, popisuje programové vybavení a jeho činnost. Hlavním účelem robota bylo ověření principů a naprogramování pro účast na soutěži ve sledování čáry Path Follower. Jako vedlejší aplikace je robot využíván s různými obslužnými programy a jinými čidly jako hračka. Tento popis se věnuje variantě Path Follower.
Hlavní CPU: Vyhodnocování čidel, algoritmus sledování čáry a objíždění překážek. Obsluha motorů.
Pomocné CPU: Obsluha čidel, měření čáry, překážek, sběr údajů a jejich předávání hlavnímu CPU.
Blokové schéma robota je na obr. 1. Koncepce robota je založena na pohonu dvěma servomotory, které kromě pohybu dopředu a dozadu zajišťují i manévrování na diferenciálním principu. Třetí, podpěrné kolo je pouze vlečené. Řídící systém je rozdělen na dvě hlavní části hlavní CPU a CPU sensorů.
Mechanika robota je vyrobena z tvrzeného polystyrenu. Tato hmota je v malych plochách dostatečně pevná a přitom je lehká. Nespornou výhodou je, že se dá snadno obrábět v amatérských podmínkách. Celé šasi je pak lepeno kyanoakrylátovým lepidlem. Je přitom použito metody chemického sváru, kdy je spoj zalit lepidlem a je použito křemičité plnidlo, které spoj zpevní.
Pohon robota je zajištěn za pomoci dvou modelářských servomotorů Futaba S3003. Tato serva jsou modifikována pro kontinuální pohyb a to odstraněním dorazů a náhradou zpětnovazebního potenciometru pevným odporovým děličem. Elektronika serva zůstává zachována a servo je ovládáno impulsně. Postup úpravy serva, jeho kalibrace a ovládání jsou natolik notoricky známé, že se zde jimi nezabývám. (blíže např. viz odkazy)
Hlavní CPU, Basic Stamp 2 je umístěn na universální desce. Na této desce je dále umístěn konektor pro komunikaci (programování) s PC, startovací tlačítko, indikační LED diody a piezo reproduktor pro akustickou indikaci. Servomotory jsou připojeny k této desce. Dále deska obsahuje obvody resetu a stabilizace napájení pro celého robota.
Pomocné CPU, Atmel 89c2051 je umístěno na oddělené, druhé desce. Na ní je dále potenciometr pro nastavení analogového komparátoru, obvody spínání napájení čidel a potřebné konektory pro rozhraní a čidla. Deska nemá vlastní stabilizátor napájení, je napájena z hlavního CPU.
Robot má dva druhy čidel. Čidlo sledování čáry a tři čidla pro detekci překážek. Bližší popis čidel a jejich funkce je v příslušné kapitole.
Napájení robota je zajištěno NiCd akumulátory, původně určenými pro modelářské aplikace. Celkem je použito 6 článků. Napětí baterie je tak 7,2 V. Kapacita článků je 500 mAh a stačí na cca. 40 min. nepřetržitého provozu. Detekce poklesu napětí baterie je zajištěna programově, hlavním CPU a je signalizována akusticky.
Deska hlavního CPU je vyrobena z universální desky, tzv. evaluation kitu, který je nabízen spolu s obvodem Basic Stamp společností MiTe. Původně deska obsahovala pouze konektor pro napájení, konektor DB9 a objímku pro procesor. Konstrukce byla doplněna nejprve o stabilizátor napájení. Místo obvodu řady 7805 v první versi bylo třeba později použít stabilizátor s nízkým úbytkem napětí LM2940C. Důvodem je celkové napájecí napětí, které je jen o 2.2V vyšší než 5V.
Na desce jsou nainstalovány konektory pro připojení servomotorů, seriová sběrnice a samostatné konektory pro pokusná čidla. (Kubrt je v jedné ze svých modifikací - jako hračka například schopen ovládání pomocí IR dálkového ovladače od televizoru a tato čidla jsou připojena přímo na hlavní CPU).
Dále byla deska doplněna o indikační diody LED. Celkem 3 diody slouží jednak k indikaci napájení (zelená) a další dvě (žlutá a červená) jsou ovládány programově. Tlačítko je připojeno na vstupní pin procesoru. V aplikaci Path Follower indikují LED diody jednotlivé fáze objíždění překážky a tlačítko je použito jako startovací. Instalovaný piezo element slouží k indikaci poklesu napájení a díky programovému ovládání je možno jej použít pro další aplikace. Na desce je umístěna seriová paměť EEPROM se sběrnicí I2C a s kapacitou 2Kbyte. Důvodem je potřeba externího čipu pro ukládání často se měnících dat, aby nedocházelo ke snižování životnosti paměti procesoru. Tato externí paměť může sloužit pro záznam dat o jízdě robota, záznam údajů o měření dráhy, apod. V aplikaci Path Follower není využita.
Tento systém je umístěn na zvláštní desce. Pracuje na bázi procesoru Atmel 89c2051. Procesor je programován v asembleru z důvodu rychlosti vykonávání instrukcí a z důvodů potřeby přesného časování. Procesor je taktován krystalem 11.0592 MHz. Na desce je dále umístěn trimr pro nastavení referenčního napětí analogového komparátoru. Ten se používá pro vyhodnocení čidla sledování čáry.
Protože je k dispozici omezené množství vstupních a výstupních portů, jsou piny procesoru společné pro rozsvěcení IR LED diod obou čidel (čidla čáry i IR čidel překážek). Proto je třeba jedním pinem ovládat celkové napájení buď jednoho či druhého čidla. K tomu je na desce obvod se dvěma tranzistory. Třetí tranzistor invertuje signál pro HW handshake z nadřízeného CPU tak, aby vyvolal vnější přerušení procesoru.
Pro vyhodnocení čidla čáry se používá interního komparátoru v procesoru. Detailní popis metody je popsán v kapitole o čidlech a v sekci popisující programové vybavení.
Systém je konstruován na universální desce a spoje jsou provedeny drátem ze spodní strany. Napájení je zajištěno z nadřízeného CPU, deska obsahuje pouze filtrační kondenzátor. Rychlost seriové komunikace je 9600 Bd a protože délka kabeláže je řádově několik cm, není použit převodník na RS-232 a sběrnice komunikuje v TTL napěťových úrovních.
Deska má celkem tři konektory. Jeden pro spojení s hlavním procesorem, jeden pro čidlo čáry a jeden pro IR čidla překážek.
Toto čidlo je umístěno v přední části robota, ve výšce cca. 5-7 mm nad povrchem dráhy. Princip čidla je založen na porovnání intenzity odrazu světla od dráhy a od čáry. Čidlo má pět dvojic IR LED diod a IR fototranzistorů. Jednotlivé dvojice jsou umístěny vedle sebe tak, že lze vyhodnotit zda je robot přesně na čáře, mírně vlevo či vpravo anebo zda je velmi odchýlen vlevo nebo vpravo. Mechanicky je čidlo provedeno na universální desce. Jednotlivé diody a fototranzistory jsou odstíněny navzájem tím, že jsou upevněny do pásku silnějšího plastu tak, že z něj nevyčnívají. Princip fungování čidla je vidět za schématu jedné dvojice.
Světlo emitované diodou je odráženo zpět od povrchu dráhy na fototranzistor. Ten se podle intenzity světla otevře více pokud je odraženého světla více, nebo méně pokud je intenzita odrazu menší. V závislosti na otevření tranzistoru se mění úbytek napětí na odporu R2 a tím i napětí v bodě A. Toto napětí je porovnáno s prahovou hodnotou referenčního napětí v komparátoru v procesoru. Vhodným nastavením referenčního napětí je pak možno rozpoznat, zda se pod příslušnou dvojicí nachází tmavý pruh nebo světlá dráha.
Trimr pro nastavení referenčního napětí je použit proto, aby bylo možno nastavit citlivost čidla pro různé druhy povrchů. Protože v čidle je pět sesorů a komparátor je jen jeden, jsou body "A" u všech sensorů spojeny a rozlišení čidel se provádí programově postupným spínáním diod. Diody jsou spínány tak, že je nejprve programově sepnuto napájení čidla čáry a potom je, opět programově, převedením do log. 0, rozsvícena příslušná LED dioda. V každou chvíli je rozsvícena jen jedna dioda u jednoho sensoru. Tím je zajištěno, že v danou chvíli je snímána hodnota jednoho sensoru.
Tato čidla zajišťují detekci překážek a hrubé měření vzdálenosti k překážce. Pracují na principu snímání odraženého IR paprsku. Každé čidlo obsahuje jednu IR LED diodu a jeden snímač IR. Snímač SFH506 je součástka původně navržená pro IR dálkové ovládání. Obsahuje detekční prvek, zesilovač, pásmovou propust a tvarovač. Výhodou prvku je to, že jeho citlovost je nejvyšší pro určitou frekvenci modulace paprsku v robotu je použita varianta prvku pracující na 36 kHz. Prvek nereaguje na nemodulovaný paprsek avšak tento ovlivňuje jeho citlivost.
Pásmové propusti v prvku a tím pádem jeho proměnné kmitočtové charakteristiky se rovněž využívá k měření vzdálenosti. Citlivost prvku totiž s odchylkou od jeho nominální frekvence klesá. Proto je možno různými kmitočty modulace světla dosáhnout toho, že prvek má různou citlivost. Při tom se předpokládá, že vyzařování diody je na všech kmitočtech stejně intenzivní. Se jmenovitým kmitočtem modulace paprsku je citlivost snímače nejvyšší, s nižším kmitočtem jeho citlivost klesá snímač "vidí" na menší vzdálenost.
Při kmitočtu 36 kHz je citlivost tak velká, že bylo nutno experimentálně zvyšovat velikost R1 z původních 220 ohmů až na 1k5. Vlastní čidlo obsahuje pouze IR diodu, sensor a seriový odpor k diodě. Veškerá obsluha a měření vzdálenosti je prováděno programově. Deska sensorů umožňuje připojení až 4 čidel. V aplikaci Path Follower jsou použita čidla 3. Protože jednotlivé I/O linky portu pro spínání diod se používají polečně pro obě čidla, je napájení opět řízeno programově.
Tento program je napsán v jazyce Basic (resp. v jeho dialektu pro Basic Stamp) a má na starosti obsluhu pohybu robota po čáře a vyhýbání se překážkám. Při tom používá údaje z desky sensorů. Po spuštění program provede inicializaci HW a čeká na stisk startovacího tlačítka. Po stratu se robot vydá vpřed do chvíle, než narazí na čáru. Sleduje čáru podle údajů čidla a pokud objeví jakoukoliv překážku, zpomalí. Při tom stále sleduje čáru.
Pokud překážka zmizí, robot opět zrychlí. Tento prvek je v programu zařazen proto, že např. zatáčka v příjezdu k úzkém tunelu běžně aktivuje čidlo IR na nejvyšší rozsah a přitom se nejedná o překážku které je třeba se vyhýbat. Je naopak žádoucí dále sledovat čáru. Při tom při příjezdu není možno ověřit stranovými čidly, že jde o tunel. Ještě v něm nejsme a už ho vidíme. Bohužel, odezva čidel je pomalá (řádově stovky ms) a tak při nejvyšší dosažitelné rychlosti robot na některé méně odrazné překážky narážel, neboť nestihl zastavit. Pokud se překážka přiblíží natolik, že není pochyb o tom, že před robotem je předmět (tzn. pokud překážka nezmizí a naopak se při jednotlivých měřeních přibližuje), program přejde do chování "objíždění". Algoritmus je patrný z obrázku a není třeba jej rozvádět. Při tom je předmět měřen tak, aby byl objížděcí algoritmus upraven podle tvaru a rozměrů konkrétního předmětu. Robot předpokládá, že překážka je přibližně pravoúhlá. V algoritmu jsou pojistky pro případ, že čára nevychází z protilehlé stěny překážky ("cihla v zatáčce") a pro případ, že je překážka velmi plochá (hloubka překážky je tak malá, že ji čidlo nezměří například překážka ve tvaru svislého listu papíru). Naopak je zde zjednodušení, které předpokládá, že v objížďce není další předmět v cestě.
Po ukončení objížďky se robot vrací na čáru, kterou najde čidlem a srovná se podle jejího tvaru. Program dále řeší problematiku přerušené čáry. Program neřeší otázku jak zastavit na konci dráhy. Dúvodem je to, že v pravidlech soutěže není určeno jak dráha končí, resp. jak maximálně dlouhé přerušení dráhy lze očekávat. Pokud by některá z těchto informací byla k dispozici, bylo by možno naprogramovat algoritmus zastavení na konci soutěžní dráhy.
Zajišťuje periodické čtení stavu všech čidel a ukládání informací do bufferu v paměti RAM procesoru. Hlavní proces je prováděn ve dvou vnořených nekonečných smyčkách, které jsou prováděny v nekonečném cyklu. Program nejprve přečte postupně informace ze všech IR čidel pro jednu danou vzdálenost a tato měření opakuje postupně pro všechny vzdálenosti. Po změření každého dálkového rozsahu se ještě čte informace z čidla čáry. Po ukončení jednoho takového cyklu je pak testován příznak odeslání výsledku do nadřízeného CPU a pokud je nastaven, vykoná se. Informace z čidel je ukládána nezávisle na tom, zda je vyžadována z nadřízeného procesoru nebo ne.
Příjmací část seriového kanálu procesoru 2051 je nastavena tak, aby způsobila přerušení. Pokud k němu dojde, je vyhodnocen znak přijatý z nadřízeného systému a podle příkazu je vrácena příslušná hodnota, která je pro to které čidlo uložena v paměti. V průběhu měření je dále přepínáno napájení čidel, neboť, jak bylo zmíněno jsou piny portů společné pro obě čidla.
V průběhu experimentů s první versí čidel bylo nutno do algoritmu doplnit SW průměrování, resp. integrační komparátor. Pokud dojde ke změření alespoň 4 stejných údajů z 5 měření, je tento výsledek označen za platný.
Čidla vzdálenosti a překážek pracují s různými kmitočty. Původní výpočet, ověřený pokusy se ukázal jako nepřesný a tak po konstrukci definitivní varianty čidel bylo nutno kmitočty stanovit experimentálně. Součástí nastavení je i stanovení velikosti seriového odporu u IR LED diod. Celkově se dá tato konstrukce, založená na prvku SFH506 označit jako vyhovující pro tyto méně náročné konstrukce. Velmi záleží na mechanice čidel (jak vypadá stínění LED diod), seriovém odporu a kmitočtech měření. Tento systém je třeba experimentálně nastavit. V další versi desky čidel proto bude procesor umožňovat download konstant určujících průměrování a frekvence. Dále by bylo žádoucí mít možnost program zastavit, aby zbytečným měřením nevybíjel baterie.
Deska je ovšem dostatečně universální a v procesoru je dostatek paměti pro to, aby byl SW doplněn o speciální čidla pro kategorii MicroMouse.
[1] http://www.parallaxinc.com/
[2] http://www.stampsinclass.com
[3] http://www.dai.ed.ac.uk/groups/mrg/MRG.html
[5] http://www.hw.cz
[6] Katalogové listy Siemens SFH506.
[7] Katalogové listy IR komponentů Osram.
© Karel Kotrba 03/2002, karel.kotrba@volny.cz
Tato publikace nebo její části mohou být používány a šířeny za podmínky, že je uveden jejich zdroj a autor.
Karel Kotrba
© 2002 Richard Balogh
Posledná zmena: 19. septembra 2001.