Pohyb holonomního robota bludištěm Hlavní charakteristiky robota : Koncepce: holonomní robot řízený třemi DC motory Celkové rozměry : výška 200 mm, průměr 350 mm Napájení: Akumulátory, 6x LiON Sony 18650, celkem 21,6V Pohon: 3x DC motor Řízení: Hlavní CPU - Atmel AVR AT90S8515-8MHz - vyhodnocování čidel, algoritmus procházení bludištěm, řízení motorů. Pomocné CPU - Atmel AVR AT90S2313-8MHz - obsluha čidel, měření vzdálenosti a jejich předávání hlavnímu CPU. Komunikace: Sériová linka TTL, rychlost 19200bd Čidla: Měření vzdáleností stěn - 3 čidla, IR led + SFH506-36 Měření pootočení kola - 3 čidla, IR led + SFH506-36 Měření barvy podkladu 1 čidlo Tento robot je navržen pro kategorie MicroMouse (hledání cesty bludištěm) i Pathfollower (projet dráhu vyznačenou černou čárou na bílém podkladě). Pro vyhodnocování ujeté vzdálenosti slouží tři senzory pro měření pootočení kola. To je řešeno speciálním kotoučkem nasazeným na hřídeli, z kterého je vždy po 60 stupních vyřízlý otvor který odpovídá posunutí 30 stupňů. Ze strany proti senzoru je opatřen reflexní folií, která odráží paprsek zpět do čidla a tím vyhodnocuje pootočení kola. Poloha hřídele motoru je zjišťována elektricky pomocí snímače. Signál snímače polohy je přiveden pomocí zpětné vazby na regulátor, který porovnává skutečnou polohu motoru s žádanou polohou. Na základě rozdílu žádané a skutečné polohy regulátor řídí měnič a tak nastavuje motor na žádanou polohu. Dále má robot tři čidla na detekci překážek, na principu led dioda přijímač. Data z čidla jsou posílána přes A/D převodník do pomocného CPU které data vyhodnocuje. Řešení pohybu robota : Pří konstrukci robota jsem vycházel z předpokladu jeho všesměrového pohybu. Řešením je holonomní princip pohybu, kdy robot může měnit svoji rychlost nezávisle ve všech směrech (nic ho neomezuje ani při pohybu do stran). Všesměrový podvozek je tedy vlastně speciálním případem obecnějšího konceptu holonomicity. Diferenciálně řízení roboti se sice mohou otáčet na místě, ale stále se mohou pohybovat pouze směrem kolmým k ose kol. Když nahradím obyčejná kola speciálními které umožňují pohyb do strany, pohybu již nebude nic bránit. Tyto kola mají po svém obvodu kolečka která umožňují pohyb do stran (axiálním směrem vůči ose otáčení velkého kola). Varianta všesměrového podvozku se třemi koly je na obrázku. Osy rotace kol, budou vůči sobě posunuté o 120 stupňů. Informace potřebné k výpočtu změny pozice zahrnují jednotlivé enkodéry d1, d2, d3 a vzdálenost kol od středu robota b.
d1 = dx + θ b d2 = -0.5 dx + 0.867 dy + θ b d3 = -0.5 dx - 0.867 dy + θ b Zjednodušením situace kdy nepočítám s různými pohyby po kružnici a podobně, můžu novou pozici odhadnout. Označím-li (x, y, φ) pozici robota, pak odhad nové pozice bude: x = x + dx y = y + dy φ = φ + θ V případě holonomních robotů se do globálních souřadnic promítnou oba lokální posuny: dx = dx*cos(φ) - dy*sin(φ) dy = dx*sin(φ) + dy*cos(φ) Tímto způsobem se pohyb odhaduje vždy pohybem po úsečce s následnou změnou orientace. Tento odhad typicky stačí, protože akumulování změn pozice stejně nelze použít dlouhodobě. Pokud 8x střídavě robot popojede metr a otočí se 45 stupňů, tak to bohužel v realitě neznamená, že se dostane zpět na startovní místo. Když robot dlouho pojede pouze pomocí výpočtu relativních změn pozice, tak součty chyb vždy překročí libovolnou hranici. Řešením je použití nějaké vnější reference, která udrží akumulaci chyby na přijatelné hodnotě. Řešením tohoto problému je použití Monte Carlo lokalizace.: MCL, je způsob jak kombinovat nepřesná relativní a absolutní měření za účelem odhadu pozice robota. Chrakteristickou vlastností této metody je způsob reprezentace hustoty pravděpodobnosti popisující odhad pozice robota. Tato metoda využívá množinu tzv. vzorků. Jejich váhy a rozložení ve stavovém prostoru určuje, jak je která pozice pravděpodobná. Výhodou reprezentace pomocí vzorků je zejména to, že neklademe žádná omezení na tvar hustoty pravděpodobnosti a jsme tedy bez problémů schopni reprezentovat i multimodální hustoty pravděpodobnosti, tedy takové, které mají více než jeden vrchol (nejpravděpodobnější pozici).
Vlastní algoritmus MCL má dvě základní fáze: Predikce -posun všech vzorků na základě informací o změně pozice robota z odometrie Korekce - úprava vah jednotlivých vzorků na základě shody či neshody naměřených dat s očekáváními, která by odpovídala pozici reprezentované příslušným vzorkem Tyto fáze se opakují pro každé měření, které chceme využít k odhadu pozice. Neustálým opakováním korekčního kroku, ale časem dojde k určité degeneraci množiny vzorků. Většina vzorků bude mít zanedbatelné váhy a několik málo naopak váhy obrovské. Toto rozložení vah není optimální z hlediska rozložení výpočetní síly. Vzorky s malou vahou odpovídají pozicím, kde se robot pravděpodobně nevyskytuje, a proto je zbytečné se jimi zabývat. Naopak pozice s vzorky s vysokou vahou jsou více pravděpodobné, a proto bychom tam chtěli soustředit většinu pozornosti. Proto se využije fáze třetí převzorkování. Účelem převzorkování je v podstatě zahodit vzorky s hodně malou vahou a vzorky s vahou velkou naopak rozdělit na vzorků několik. Je vhodné, aby se hustota pravděpodobnosti tímto krokem změnila co nejméně, protože se na převzorkování můžeme dívat pouze jako na implementační detail, který do celého výpočtu jen vnáší určitý šum. Hledání cesty robota bludištěm : Pro řešení tohoto problému jsem zvolil algoritmus Visbug, který vychází z algoritmu Bug2. Popis algoritmu bug 2 je následující : 1. vydej se směrem k cíli 2. pokud jsi v cíli KONEC - cesta nalezena 3. pokud narazíš na překážku označ si tento bod H (hit point) a obcházej překážku zvoleným směrem 4. pokud narazíš na úsečku start-cíl, kde je vzdálenost menší než od bodu H a cíl vede směrem od překážky GOTO 1 5. po návratu do H KONEC - cíl je nedosažitelný Problémy mohou nastat u složitějších překážek, které úsečka start-cíl protne mnohokrát. Podmínka v bodě 4 musí nutně kontrolovat i vzdálenost k cíli, jinak pokud bychom poprvé zvolili směr vpravo a pak vždy vlevo, tak by automat skončil v nekonečné smyčce v první zákrutě. Další rozšíření Bug algoritmů je přidání lepšího senzoru, který vidí do vzdálenosti r. Jako základ se použije Bug2, ale jeho činnost se bude pouze simulovat do okamžiku, kdy se nám ztratí z dohledu a teprve pak se daným směrem vydá. Tento přístup zkrátí různé nájezdy a sjezdy a v praxi už je běžně použitelný.
Programové vybavení : Program hlavního procesoru se skládá ze čtyř základních procesů. Na pozadí beží řízení 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í. Kromě toho provádí i výpočty akcelerace a brzdění s konstantním zrychlením.
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. Zvolen byl proporcionální regulátor s omezením. 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. Zdroje : www.robotika.cz http://www.cs.technion.ac.il/labs/isl/project/projects_done/robot_navigation/ www.robotika.sk