Micromouse with Mindstorms
Contents
Micromouse competition task / súťažná úloha Myš v bludisku
Myš v bludisku je robotická súťažná úloha zo slovenskej súťaže Istrobot. Cieľom tejto súťaže je, aby robot autonómne prešiel zo štartu do cieľa v čo najkratšom čase.
Pravidlá súťažnej úlohy
Bludisko pozostáva zo siete (max. 16 × 16) základných štvorcov s rozmermi 18 × 18 cm. Steny bludiska sú 5 cm vysoké a 1,2 cm hrubé (nepresnosti sú zanedbateľné). Chodbičky sú teda široké 16,8 cm.
Steny bludiska sú zboku biele, horná strana steny je červená. Podlaha bludiska bude z dreva alebo podobného materiálu, natretá čiernou matnou farbou. Povrch hornej a bočných stien bludiska by mal odrážať infračervené svetlo a povrch podlahy by ho mal pohlcovať.
Na súťaži býva použité len bludisko 9×9. Štart bude v ľavom spodnom rohu, cieľ v pravých horných štyroch štvorcoch. Vchod do cieľa je len jeden. Je možné, že do cieľa povedie viac ako jedna cesta, a treba s tým počítať.
Rohy jednotkového štvorčeka tvoria tzv. mrežové body. Bludisko bude vytvorené tak, že s výnimkou cieľa bude z každého mrežového bodu vychádzať aspoň jedna stena.
V bludisku sa dá použiť pravidlo pravej (alebo ľavej) ruky. Oba smery nemusia byť (a zrejme ani nebudú) rovnocenné. Určite to však nebude najkratšia cesta do cieľa. Zámerom tohoto zjednodušenia je umožniť účasť aj začiatočníkom, ktorí obvykle potrebujú sústrediť pozornosť viac na konštrukciu robota ako na algoritmus.
Myš musí byť autonómna. Nesmie používať zdroj energie využívajúci spaľovací proces. Dĺžka a šírka myši nesmie prekročiť 25 cm. Ak myš mení počas činnosti svoje rozmery, v žiadnom okamihu nesmie prekročiť 25×25 cm. Výška nie je obmedzená. Uvedomte si aj rozmery bludiska a miesto potrebné na otáčanie.
Myš nesmie počas cesty bludiskom nikde nič odložiť ani stratiť. Myš nesmie skákať, prekračovať alebo loziť po stenách, ryť alebo kresliť, poškodiť alebo zničiť bludisko.
Základnou úlohou je prejsť zo štartovacieho štvorčeka do cieľového. Takúto cestu nazveme 'pokus' a čas, ktorý zaberie, nazveme 'čas pokusu'. Cesta späť z cieľového štvorca do štartovacieho sa nepovažuje za pokus. Meria sa aj celkový čas strávený v bludisku, ktorý je pre každého súťažiaceho obmedzený na 5 minút.
Medzi dokončeným pokusom a štartom ďalšieho pokusu musí myš ostať aspoň 1 sekundu na štartovacom poli. Počas tejto sekundy nesmie zakrývať infrasenzor časomiery.
stavebnica LEGO Mindstorms NXT2.0
Stavebnica LEGO dáva priestor postaviť takmer všetko, je teda menej limitovaná z hľadiska prispôsobivosti prostrediu, ako sú predstavané roboty. NXT kocka(hlavná riadiaca jednotka, vstupno/výstupné zariadenie a napájanie) je 32-bitový ARM7 mikroprocesor, s možnosťou bluetooth komunikácie, napojením do počítača cez USB2.0 port, je napájaná 6xAA batériami, obsahuje 4 vstupy a 3 výstupy pre senzory a motory. LEGO Mindstorms NXT2.0 obsahuje 3 servomotory, 1 ultrazvukový senzor, 1 farebný senzor a 2 dotykové senzory.
Priamo k stavebnici je pribalený ikonografický programovací jazyk, avšak neobsahuje podporu pre polia a zložitejšie programy s veľa vetvami sú neprehľadné. Preto bol použité opensource textovo-orientované programovacie prostredie BricxCC s využitím jazyka NXC(Not Exactly C). Stiahnuteľné prostredie, materiály a online help.
konštrukcia robota
verzia 1
Náš prvý pokus ako by mal robot vyzerať. Zvolili sme ultrazvukové senzory na zisťovanie vzdialenosti od pravej, ľavej a prednej steny. Ako kolesá mali byť použité 2 RCX kolesá a vyváženie robota ešte aj tretie "koleso" vo forme plastovej gule zo stavebnice LEGO Mindstorms NXT1.0 prichytené špeciálnou konštrukciou(tzv. ball caster). Servomotory boli pripevnené diagonálne, aby NXT kocka mohla byť pripojená.
Bohužiaľ po zostavení sme zistili, že senzor pre zistenie vzdialenosti k prednej stene je nad úrovňou steny a preto musela vzniknúť verzia 2.
verzia 2
Druhý pokus zmenil usporiadanie zvukových senzorov na zistenie vzdialenosti od stien. Bolo veľmi náročné usporiadať tieto senzory, tak aby nezachytávali falošné hodnoty detekovaním vzdialenosti nie od steny, ale od iného senzora a zároveň, aby zaberali čo najmenší priestor. Podarilo sa to za cenu zníženej stability senzorického aparátu, avšak náraz dokázal prekonať bez ujmy. Keďže vlastnosťou dvoch ultrazvukových vĺn rovnakej frekvencie je interferovať bolo naprogramované riešenie, ktoré zmenilo prirodzené nastavenie týchto senzorov z aktívneho na rotujúco-aktívne. Senzory boli vypnuté a keď sa z nich brala hodnota podprogram ich postupne jeden po druhom zapol, vyslal zvukovú vlnu, počkal na jeho prijatie a zase senzor vypol.
Bohužiaľ po otestovaní funkčnosti ultrazvukových senzorov sme zistili, že sú veľmi nepresné a nikdy nenadobúdajú malé hodnoty. Hodia sa preto na zisťovanie väčších vzdialeností(20-254cm) s malou presnosťou. Naviac robot bol priveľký na to, aby sa dokázal v každom bode bludiska otočiť. Preto muselo byť navrhnuté riešenie za pomoci inej kombinácie senzorov.
verzia 3
Tretí pokus odstúpil od zisťovania vzdialenosti od stien pomocou ultrazvukových senzorov a použil ich na zisťovanie absencie stien, čiže zisťovanie prítomnosti križovatiek a zatáčiek. Predný ultrazvukový senzor bol nahradený farebným senzorom umiestneným kolmo na podlahu, aby zisťoval prítomnosť červenej farby na vrchnej strane stien. Pridaný bol ešte bočný dotykový senzor s odpruženým kolieskom, ktorý slúžil ako nárazník so zníženým odporom.
S touto verziou robota sme sa zúčastnili súťaže Istrobot, ale z technických príčin sme nemohli súťažiť. Nefungoval nám správane bočný senzor, buď sa pružina nestlačila dostatočne, alebo keď sme ju povolili, nevrátila sa naspäť na pôvodnú polohu. Naviac robot sa po povrchu bludiska nedokázal pohybovať súvisle, ale pohybom podobnému húpaniu, čo bolo pravdepodobne spôsobené kombináciou príliš silného zovretia guličky a zle umiestneného ťažiska.
stiahnuteľný program
verzia 4
Posledná verzia robota zmenila predný senzor na farby za dotykový senzor, aby návrh bol kompatibilný s NXT Mindstorms1.0, pretože tá verzia neobsahuje dotyčný farebný senzor. Ďalej bol upravený bočný senzorický aparátus, tak aby bol priamo napojený na dotykový senzor a nevyžadoval si tak prítomnosť pružiny z LEGO Technic. Kostra robota bola prestavaná, aby zaberala čo najmenej priestoru. Tretie koleso na vyvažovanie vo forme guličky bolo nahradené za koleso bez gumy.
program
Bolo použité pravidlo ľavej/pravej ruky pre prvý prechod bludiska. Robot sa najprv pritisol na ľavú/pravú stenu a ultrazvukovými senzormi zisťoval prítomnosť križovatiek a zákrut. Robot mal zmapovať bludisko do grafu s odpovedajúcimi vzdialenosťami a algoritmom A* nájsť najkratšiu cestu.
Záver
Použitie stavebnice LEGO NXT Mindstorms nie je najvhodnejšie pre danú úlohu. Stavebnica má komponenty veľkých rozmerov, ale tento nedostatok sa dal prekonať. Základné senzory sú však nedostatočné pre rýchle vyriešenie úlohy a určite by pomohli drahé zariadenia od tretích strán ako napríklad omnidirectional koleso namiesto zadného vyvažovacieho, SHARP infračervené senzory na presné určenie vzdialenosti od stien a kompas pre určenie smeru.