[Novinky] [Pravidlá] [Roboti] [Poradňa] [Archív]

DAN

Autor: Martin Locker


Základní údaje

Ří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
Zajímavosti:
Domácí stránka robota: http://www.vosrk.cz/robotika

Popis

Tento text popisuje robota DAN, tak jak se zúčastnil loňské soutěže ISTRobot 2003. V současné době připravuji nového robota. DAN se letošní soutěže zúčastní v původní podobě po stránce hardwaru, počítám pouze s novým softwarem, na kterém se pracuje. Jedná se o použití algoritmu FloodFill pro procházení bludištěm.

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ě.

Hlavní charakteristiky robota

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ě.

Schéma zapojení hlavního CPU

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.

Schéma zapojení CPU obsluhy senzorů

Č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

[1] http://www.robotika.sk/contest/archive/2002/RobotKubrt.html

[2] http://www.atmel.com

[3] http://www.hw.cz

[4] Katalogové listy Siemens SFH506.

Obrázky


[Novinky] [Pravidlá] [Roboti] [Poradňa] [Archív]



© 2004 Richard Balogh
Posledná zmena: 10. marca 2004.