Plánovanie trajektórie

Z RoboCupTP wiki

Prejsť na: navigácia, hľadanie

Cieľom tejto úlohy je umožniť agentovi plánovanie trajektórie pohybu z bodu A (reprezentovaného súradnicami ihriska a natočením vzhľadom na osi ihriska) do bodu B na základe dostupných anotácií k pohybom.

Obsah

Výpočet trajektórie

Agent plánuje trajektóriu v troch fázach. V prvej fáze vypočíta uhol medzi pôvodným smerom natočenia a vektorom k bodu B. Z dostupných anotácií vytvorí rad pohybov, po ktorých vykonaní sa otočí o požadovaný uhol pričom sa vždy snaží otočiť o čo najväčší možný uhol. V druhej fáze naplánuje agent presun z bodu A do bodu B. Na presun na dlhšie vzdialenosti je určený jeden pohyb, ktorý je najefektívnejší z pohľadu rýchlosti presunu a minimálnej odchýlky (je potrebné, aby bol priamočiary). Keď sa agent priblíži k bodu B tak, že vzdialenosť medzi ním a bodom B bude menšia a ako dĺžka kroku pohyb určeného na presun, tak sa z dostupných anotácií vytvorí rad pohybov tak , aby sa agent dostal presne do bodu B. Tretia fáza pohybu je rovnaká ako prvá, pričom sa vypočíta uhol medzi vektorom pohybu a požadovaným koncovým natočením. Pri výpočtoch trajektórie je určená povolená odchýlka, aby sa zabránilo vykonávaniu príliš veľkého počtu pohybov, ak by chcel agent dosiahnuť presných súradníc alebo natočenia. Aby sa dosiahlo čo najefektívnejšej trajektórie z pohľadu rýchlosti jej vykonania, tak je týchto povolených odchýlok zavedených viacero. Trajektória sa pritom vypočíta pre každú odchýlku zvlášť a vyberie sa tá, ktorej súčet dôb vykonania pohybov je najkratší. Pri akejkoľvek odchýlke sa v rámci priamočiareho pohybu v pravidelných vzdialenostných intervaloch upravuje rotácia agenta tak, aby smeroval k bodu B.

Obchádzanie prekážky

Pokiaľ sa zistí, že sa na trajektórii nachádza prekážka (v podobe hráča), tak bude táto trajektória prepočítaná. Vypočíta sa bod obchádzania, ktorý sa bude z hráčovho pohľadu nachádzať naľavo od prekážky a vypočíta sa trajektória prechádzajúca týmto bodom. Pokiaľ sa bude aj na tejto trajektórii nachádzať prekážka, tak sa vypočíta bod obchádzania napravo od pôvodnej prekážky a k nemu príslušná trajektória. Ak sa aj na tejto trajektórii nachádza prekážka, tak sa rovnakým spôsobom vypočítavajú body obchádzania pre ďalšie zistené prekážky dovtedy, kým sa nenájde voľná trajektória. Bod obchádzania taktiež nesmie ležať mimo ihriska. Bod obchádzania sa vypočíta pomocou vektora kolmého na vektor trajektórie so začiatkom v súradniciach prekážky o dĺžke 0,5 metra, čo je vzdialenosť dva a pol násobku polomeru priemetu robota na hraciu plochu. Táto vzdialenosť by mala byť postačujúca na obídenie hráča.

High skill

Bol vytvorený súbor trajectory.rb predstavujúci high skill pre tvorbu trajektórie. Obsahuje triedu Trajectory, ktorej konštruktor obsahuje cieľové súradnice a natočenie. Po zavolaní tohto high skillu sa vytvorí inštancia Java triedy TrajectoryRealTime s argumentmi prenesenými z konštruktora. Následne sa v cykle získavajú názvy pohybov zo zásobníka predstavujúceho trajektóriu. Trieda TrajectoryRealTime získava informácie pre výpočet trajektórie priamo z modelu agenta a modelu sveta. Konkrétne sú to aktuálne súradnice pozície hráča a aktuálne natočenie hráča, ktoré slúžia ako začiatok trajektórie a pozície všetkých hráčov na ihrisku, ktoré slúžia ako prekážky v trajektórii.

Zhodnotenie

Plánovanie trajektórie je do veľkej miery závislé od presnosti anotácií k pohybom a od presnosti samotných pohybov. V súčasnom stave je plánovanie trajektórie pomerne nepresné (agent sa po vykonaní pohybov trajektórie väčšinou nenachádza v akceptovateľnej odchýlke od požadovanej pozície), takže môže slúžiť na hrubé priblíženie sa k požadovaným súradniciam. Vytvorený high skill má potenciál byť v budúcnosti využitý inými high skillmi, napríklad na presunutie agenta do takticky výhodnej pozície. Rozhodne však nie je vhodný pre plánovanie trajektórie vyžadujúcej veľkú presnosť (napríklad nastavenie sa k lopte pred kopom). V budúcnosti bude vhodné spresniť obchádzanie prekážky s využitím konvexného obalu prekážky.

Osobné nástroje