DAN
robot kategorie MicroMouse
Autonomní robot s diferenciálním řízením DAN byl postaven pro soutěž ISTRobot 2003. Původně měl být schopen absolvovat jak kategorii Path Follower tak MicroMouse. Ovšem po problémech se senzory jsem dal přednost kategorii MicroMouse. Celá konstrukce je podřízena co největší jednoduchosti a co nejnižší ceně.
Základní údaje
- Autor
- Martin Locker
- Řídicí procesor
- Atmel AT90S8515 + Atmel AT90S2313
- Velikost paměti
- 8kB Flash, 512B EEPROM, 512B RAM + 2kB Flash, 128B EEPROM, 128B RAM
- Frekvence
- 8MHz
- Senzory
- 3x IR LED + IR SFH 506
- Pohon
- 2x krokovy motor z FDD 5.25"
- Napájení
- 4x LiON 18650
- Programovací jazyk
- C, asm
Hlavní charakteristiky robota
- Koncepce: Diferenciálně řízený autonomní robot
- Mechanická konstrukce: Dvě desky z novoduru spojené distančními sloupky a dvě bočnice pro uchycení motorů
- Celkové rozměry: délka 130mm, šířka 115mm, vyška 60mm
- Napájení: Akumulátory, 4x LiON Sony 18650, celkem 14,4V
- Pohon: 2x krokový motor z disketových mechanik 5,25"
- Řízení: Hlavní CPU - Atmel AVR AT90S8515 - 8MHz
- Pomocné CPU - Atmel AVR AT90S2313 - 8MHz
- Komunikace: Sériová linka TTL, rychlost 19200bd
- Čidla: Měření vzdáleností stěn - 3 čidla, IR led + SFH506-36
- - vyhodnocování čidel, algoritmus procházení bludištěm, řízení krokových motorů.
- - obsluha čidel, měření vzdálenosti a jejich předávání hlavnímu CPU.
Popis architektury
Koncepce robota je založena na pohonu dvěma krokovými motory,
které kromě pohybu dopředu a dozadu zajišťují i manévrování na diferenciálním principu.
Řídicí systém je rozdělen na dvě hlavní části hlavní CPU a CPU sensorů.
Mechanika robota je vyrobena z novoduru tloušťky 3mm.
Výhodou je, že se dá snadno obrábět. Všechny 4 díly jsou slepeny kyanoakrylátovým lepidlem
a nosné desky jsou navíc spojeny distančními sloupky.
Pohon robota je zajištěn za dvěma krokovými motory z disketových mechanik 5,25".
Zapojení je běžné s budičem ULN2803. Je použito 4-taktní řízení se současným spínáním
dvou fází pro dosažení většího krouticího momentu.
Napájení robota je zajištěno 4-mi LiON akumulátory s kapacitou asi 1500mAh.
Původně bylo použito 7 článků NiCd 900mAh, ovšem jejich napětí nezaručovalo
dostatečný krouticí moment. Zvýšené napětí LiON akumulátorů, při stejné hmotnosti
zajistilo zvýšení maximální rychlosti o 50%.
Hlavní CPU
Deska hlavního CPU je navržena tak, aby co nejlépe využívala dostupný prostor robota.
Srdcem je riscový jednočipový mikropocesor Atmel AVR AT90S8515 na frekvenci 8 MHz.
Dále deska obsahuje stabilizátor napájení 7805, budič pro krokové motory ULN2803,
patici pro EEPROM paměť I2C (není osazena), konektor seriové linky,
konektor ISP s volnými IO piny pro připojení LCD displeje (není použit) a konektory
pro krokové motory.
Dále je deska doplněna o indikační diody LED, které jsou použity pro signalizaci stěn.
Tlačítka mají funkci reset, start robota a mazání vnitřní EEPROM, ve které je ukládána
mapa bludiště.
Systém sensorů - čidla stěn
Pro zjednodušení stavby řídicího programu s ohledem na časování, byla zvolena
koncepce samostatného modulů senzorů s vlastním procesorem.
Jako řidicí procesor je použit Atmel AVR AT90S2313 s krystalem 8 MHz.
Deska dále obsahuje tři čidla stěn a indikační LED diody (pro seřizování citlivosti senzorů).
Komunikace s hlavním CPU je zajištěna seriovou linkou v úrovních TTL s rychlostí 19200 Bd.
Čidla zajišťují detekci stěn a měření jejich vzdálenosti. 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 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. Prvek nereaguje na nemodulovaný paprsek avšak jeho citlivost
je okolním světlem ovlivněna.
Pásmové propusti v prvku a tím pádem jeho proměnné kmitočtové charakteristiky se 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 či
vyšším kmitočtem jeho citlivost klesá snímač "vidí" na menší vzdálenost.
Ke generování modulačního signálu pro IR LED je s výhodou použito PWM výstupu procesoru,
který zajišťuje přesné časování nezávisle na programu. Program vyhodnocování čidel běží
v nekonečné smyčce. Pro měření vzdálenosti vždy nastaví frekvenci modulačního signálu
IR LED a pak postupně zjistí stav snímačů, uloží hodnoty. Změní frekvenci a opět zjistí stav
snímačů. Toto opakuje 8 krát a tím je zjistěna vzdálenost s rozlišením 8 úrovní.
Optimálni citlivost snímačů s ohledem na okolní prostředí a odrazivost stěn je možné
nastavit změnou proudu do IR LED. Po delším ladění bylo dosaženo stavu,
kdy boční senzory stěn měří vzdálenost v rozsahu 1-8cm, přední senzor v rozsahu 2-20cm,
přibližně lineárně. Pokud je stěna blíž než dolní mez rozsahu, je stěna registrována,
ale je chybně určena vzdálenost. Zjištěné hodnoty vzdáleností jsou ihned poslany do hlavního CPU,
přibližně s frekvencí 20Hz. Rychlost měření nelze již zvýšit, důvodem je nutnost dostatečné
doby zotavení čidel po měření, snímače SFH506 obsahují obvod automatického nastavování
citlivosti a při rychlejším opakování měření dochází k jejich zahlcení a chybné funkci.
Programové vybavení
Program hlavního procesoru se skládá ze čtyř základních procesů. Na pozadí beží řízení
krokových motorů. Tento proces je vyvoláván přerušením od časovače s frekvencí 1kHz.
Pro každý motor je možno nastavit samostatně požadovanou rychlost, zrychlení a počet kroků,
které má vykonat. Kromě krokování provádí i výpočty akcelerace a brzdění s konstantním zrychlením.
Tato část programu je psána v asembleru zdůvodu rychlosti a optimalizace poměrně náročných
výpočtů. Realizací plynulého rozběhu a brzdění motorů bylo dosaženo maximální krokovací
frekvence 400 Hz. Pro základní pohyb robota je použito průměrné rychlosti 200 kroků/s
(s ohledem na rezervu pro regulaci), což dává výslednou rychlost 180mm/s.
Zbytek programu je již v C, s použitím překladače AVRGCC.
Druhým procesem je regulace pohonů v závislosti na vzdálenostech od bočních stěn, získaných
ze senzorů. Vyvoláván je procesem řízení motorů v případě, že jsou k dispozici nové hodnoty
vzdálenosti. Po zkouškách různých regulátorů, byl nakonec použit pouze proporcionální regulátor
s omezením. Derivační složka zdůvodu malého rozlišení senzorů výsledky spíše zhoršovala.
Třetím procesem je příjem dat z modulu senzorů vzdálenosti. Ten zajišťuje v přerušení příjem
po sériové lince a po přijetí aktuálních hodnot vzdáleností ze všech tří snímačů, nastaví
příznak aktuálních dat. Ty jsou využívány regulátorem a procesem řídícím vlastní pohyb robota.
Nejvyšším procesem je algoritmus procházení bludištěm. Pro určování aktuální pozice robota
je použito odometrie, tj. podle počtu kroků motorů. Při prvním průchodu bludištěm je využit
algoritmus sledování levé zdi (tzv. pravidlo levé ruky). Při tomto průchodu je zaznamenávána
do vnitřní EEPROM mapa bludiště. Po návratu robota na startovní pole je v dosud zmapované části
bludiště nalezena nejkratší cesta. Podruhé prochází robot již touto cestou stejnou rychlostí
jako při mapování. Třetí pokus je stejný ovšem rychlostí zvýšenou o 50%, tj. 300 kroků/s.
Při této rychlosti ovšem již není příliš vysoká úspěšnost, protože se projevuje nízká rychlost
použitých čidel a regulace směru již není dostatečně kvalitní. Tento algoritmus byl zvolen
hlavně z důvodu jednoduchosti, do budoucna počítám s použitím lepších algoritmů.
Závěr
Tento první pokus ukázal, že zvolená koncepce robota je dobrá. Po zkušenostech v kategorii
MicroMouse se ukázalo,že by byly vhodnější o něco menší rozměry. Dalším problémem jsou zvolená
čidla stěn. Kromě poměrně dlouhé doby měření, je nevýhodou minimální dosah, který je asi 1 cm.
Proto, když se robot dostal příliš blízko stěny, nebyl již schopen správně změřit svoji
vzdálenost od stěny. Toto je možné vyřešit umístěním čidel ve větší vzdálenosti od vnějšího
okraje robota.
Závěrem bych chtěl poděkovat Karlu Kotrbovi za inspiraci a pomoc při realizaci senzorů
vzdálenosti.
Použitá literatura a odkazy na internetu
[2] www.atmel.com
[3] www.hw.cz
[4] Katalogové listy Siemens SFH506