340 likes | 555 Views
RoboCup 3D. Michal Bartal, Michal Bebjak, Michal Homola, Juraj Majer, Andrej Neczli, Ondrej Pok, Zoltán Pulai. 6 th Sense. Obsah prezentácie. Model sveta Prediktor Z ákladné správania Kopanie Beh hráča Brankár P ozeranie A rchitekt ú ra vy šší ch spr á van í Vyšš ie spr á vania
E N D
RoboCup 3D Michal Bartal, Michal Bebjak, Michal Homola, Juraj Majer, Andrej Neczli, Ondrej Pok, Zoltán Pulai 6th Sense
Obsah prezentácie • Model sveta • Prediktor • Základné správania • Kopanie • Beh hráča • Brankár • Pozeranie • Architektúra vyšších správaní • Vyššie správania • Formácie
Information Storage (IS) • WorldModel • Predictor • Action • Moduly PositionHistory, ActionHistory a StatsHistory sme oproti prototypu zrušili a ich funkciu plnia moduly WorldModel a Action
IS - WorldModel • Každý objekt na hracej ploche je reprezentovaný dátovou štruktúrou zdedenou od triedy GameObject • Máme teda objekty s názvami Agent, Ball, SelfPlayer a NonMovableObject • Na podobnom princípe fungujú aj objekty Hearings a Stats
IS - WorldModel • História stavov pre každý objekt je zaznamenávaná pomocou zásobníka GameObject-ov (trieda ObjectStack) • Každý objekt hracej plochy má vo WM 2 premenné typu ObjectStack – jednu pre raw data zo servera a druhú pre dáta, ktoré sú zlúčením raw dát a predikovaných dát
IS - WorldModel class GameObject { public: // karteziánske súradnice vzhladom na stred ihriska Vector3f classicCoords; // polarne suradnice vzhladom na mna PolarCoords relativePolarCoords; // karteziánske súradnice vzhladom na mna Vector3f relativeClassicCoords; // rychlosť Vector3f velocity; // zrýchlenie Vector3f acceleration; ... };
Prediktor • Predikcia a vykrytie výpadkov • Špecializované prediktory pre • hráčov • loptu
Prediktor • Predikcia na základe fyzikálneho modelu • Výpočet rýchlosti • Normalizácia rýchlosti • Výpočet predikovanej polohy • Ošetrenie špeciálnych stavov • Prediktor lopty počíta so spomalením lopty, ktoré bolo experimentálne určené
Akcie • Dva typy akcii
Architektúra základnýchsprávaní • rozdelenie do vrstiev • viac jednoduchých správaní • vyššie správania využívajú nižšie
Kopanie - model • algoritmy vychádzajú z fyzikálneho modelu šikmého vrhu
Kopanie - nižšie moduly • Základné 4 moduly : • KickToPlace • double aDistance • double aVerticalKickAngle • KickToEvent • double aDistance • double aTimeToEvent • double aVerticalKickAngle • KickToPlaceWithVelocity • double aDistance • double aFinalVelocity • KickToEventWithVelocity • double aDistance • double aTimeToEvent • double aFinalVelocity
Kopanie - vyššie moduly • KickToPosition • Vector3f& aFinalPlace • double aVerticalKickAngle • double aErrorLimitKickDirAngle • bool kickingToGoal • DribbleToPlace • const Vector3f& aFinalPlace • double aErrorLimitKickDirAngle • double aDribbleKickDistance • PassToPlayer • Obj aIdPlayer • double aVerticalKickAngle • double aErrorLimitKickDirAngle • const Vector3f& aPassOffset)
Kopanie – zlepšenia • vytvoriť matematický model odporu prostredia • uvažovať viacnásobný odraz lopty • zohľadniť rýchlosť lopty pri odkope • optimalizovať pomer presnosti kopu a času na nastavenie sa do smeru kopu • implementovať funkciu na výpočet pozície lopty po odkope
Behanie • 4 druhy • dobehnutie na miesto • priamo (RunToPlace) • zo zadaného smeru (RunAroundPlace) • dobehnutie k objektu (podľa predikcie) • priamo (RunToObject) • zo zadaného smeru (RunAroundObject)
RunAroundPlace • model potenciálových polí • príťažlivá sila: • smerom DO cieľového bodu • konštantné veľkosť • odpudivá sila: • umelá bariéra • klesá kvadraticky so vzdialenosťou • smer pohybu sa nastaví podľa výslednej sily
Brankár • Modul správania brankára: CatchBehaviour • Správanie je parametrizovateľné pomocou konštánt • Tri základné funkcie: • Vykrývanie streleckého uhlu útočníka • Dobehnutie za loptou s jej následným chytením • Vykopnutie lopty dopredu
Brankár • Vykrývanie streleckého uhlu útočníka • Aktivuje sa pri prekročení vzdialenosti brankára od lopty, udanej konštantou KickBallCoverMargin • Upravuje svoju poziciu tak, aby sa nachádzal na spojnici stredu bránkovej čiary a momentálnej pozície lopty
Brankár • Dobehnutie za loptou s jej následným chytením • Aktivuje sa pri prekročnení vzdialenosti brankára od lopty, udanej konštantou DriveAndCatchMargin • Chytenie lopty sa aktivuje pri priblížení sa brankára k lopte na vzdialenosť menšiu, než udáva konštanta CatchBallMargin • Vykopnutie lopty dopredu • Nasleduje hneď po chytení lopty • Brankár kope smerom vpred maximálnou silou a pod uhlom 45 stupňov
Zmenapohľadu • Od verzie server 0.5.2 má hráč obmedzený uhol pohľadu – potreba zmeny pohľadu hráča • 4 moduly • ScanBehaviour • LookAtPlaceBehaviour • LookAtObjectBehaviour • FindObjectBehaviour
Rozhodovanie - princíp Nižšie moduly správania slúžia na vykonanie konkrétnych akcií hráča – kopanie, beh, ... Bolo potrebné implementovať rozhodovaciu časť, ktorá by používala tieto moduly Architektúra podobná ako pri nižších moduloch správania
GlobalStrategyBehaviour Základný rozhodovací modul na najvyššej úrovni Vstupný bod pre proces rozhodovania v každom cykle Slúži na výber a zavolanie vhodného modulu správania nižšej úrovne
Defence Stategy Behaviour • Súperovi hráči sa pri útoku väčšinou snažia pribehnúť k lopte z nejakého smeru, čo im dlho trvá • V tomto module hráč práve naopak iba jednoducho pribehne k lopte a odkopne ju preč • Modul sa vyhodnocuje ako potrebný, iba ak je lopta 5 metrov a hlbšie na našej polovici a hráč može odkopnúť loptu preč od svojej brány
Defence Stategy Behaviour • Účinnosť závisí aj od vzdialenosti najbližšieho súperovho hráča od lopty. • Tento modul sa môže použiť aj v prípade, že hráč nie je najbližšie od lopty, čím sa modul odlišuje od ostatných stategických modulov ako Dribble, Kick_To_Goal a Passing
Kick To Goal Strategy Behaviour • Ak hráč kope po zemi, dokopne na vzdialenosť približne 19 m • Modul pomocou funkcie ballDistanceFromGoal(float &dist)zistí vzdialenosť lopty od súperovej bránky a ak je táto vzdialenosť menšia ako 19m, vyhodnotí situáciu ako správnu na kopnutie a kopne do stredu brány
Kick To Goal Strategy Behaviour • Zlepšenia: • Vo vyhodnotení sa musí brať ohľad aj na pozíciu súperových hráčov a brankára, nielen na vzdialenosť lopty od brány • Treba urobiť funkciu na umiestňovanie lopty, teda výpočet, kam chceme do brány kopnúť • Experimentovali sme aj s určovaním vertikálneho uhlu kopu, ale stávalo sa, že hráč bránku na menšie vzdialenosti prekopol, preto sa zatiaľ kope pod 0 stupňovým uhlom
Formations • Tento modul bol prebratý z 2D futbalu z tímu Deravá kopačka a bol prerobený na podmienky 3D futbalu • Slúži na určenie najvhodnejšej polohy daného hráča vo formácii • Modul obsahuje 27 formáciía ich vzájomným váhovaním s ohľadom na ich rating sa určí ideálna pozícia hráča vo formácii
Záver • model sveta a predikcia • hráč dokáže behať, prihrávať, kopať na bránu • máme špecializovaného brankára • modulárna vrstvená architektúra správaní • pre jednotlivé správania sa rozhoduje podľa ohodnotenia vhodnosti pre danú situáciu
Ďakujeme za pozornosťhttp://www2.dcs.elf.stuba.sk/~team06/team06@googlegroups.com