Obsah

Analýza modelu sveta

Model sveta je obsiahnutý v komponente Models. Kde sa nachádzajú 3 časti, a to AgentModel, EnvironmentModel a WorldModel. V triede AgentModel sa počítajú pozície a rotácie kĺbov, v triede WorldModel sa počítajú pozície ostatných hráčov a lopty a v triede EnvironmentModel sa ukladá mód hry, čas a verzia servera. Na analýzu bola nutná prehliadka zdrojového kódu, ktorý nebol vhodne okomentovaný.

AgentModel.java

Trieda, ktorá obsahuje určovanie súčasný stav agenta a to z pohľadu jeho pozície kĺbov, globálnej polohy a rotácie vzhľadom na globálnu os. Ďalej určuje pozíciu hráča, teda na ktorej strane hráč je (člen tímu, súper) metódu na výpočet pohybu vektora okolo vektorov a osí. Výpočty sú vykonávané podľa teórie vektorových pohyb nájdených na internete. Táto trieda spolupracuje s akcelometrom a práve pomocou stavu agenta dokáže identifikovať, či agent stojí alebo leží na zemi. Obsahuje GETY na získanie informácii o tom či hráč stojí, je na zemi, leží na chrbte, leží na bruchu, ďalej o natočení a pozícii samotného hráča. Obsahuje SETY na nastavenie pozície a rotácie kĺbov.

AgentPositionCalculator.java

Trieda, ktorá vypočítava aproximáciu aktuálnej polohy hráča na základe vlajok, ktoré vidí. Na základe zistení vytvára logy. Predpokladá, že rotácie hráča sú vypočítané správne. Výpočet je vykonávaný normalizáciou a odpočtom od pozície zástavy. Keď vnímaná relatívna pozícia je pridaná k známej pozícii vlajky, je možné vypočítať správnu aproximáciu pozície hráča.

AgentRotationCalculator.java

Trieda, ktorá vypočítava natočenia hráča na základe vlajok. Dokáže určiť natočenie agenta z 3 videných vlajok. Určí, ktoré dve z troch použije na vytvorenie osi Y , a ktorú doplní bod na vytvorenie osi Z, kolmej na os Y.

DynamicObject.java

Trieda určuje polohu dynamických objektov, zvyčajne lopty, chýba tu vypočítanie pozície súperov

EnvironmentData.java

Ukladá statické informácie o stave súčasného sveta okolo agenta – herný čas, simulačné časy, režim prehrávania a verziu servera. Verzia servera je stanovená v ./scripts/config/settings.rb – momentálne 0.6.7

FixedObjects.java

Trieda obsahujúca vlajky videné perceptorom SEE robota. Každá vlajka uchováva informáciu o svojej pozícii. Určuje sa tak veľkosť ihriska.

KalmanAdjuster.java

​​​​​​​Trieda, ktorá nastavuje vnímané súradnice lopty a vlajky na ihrisku použitím kalmanovho filtra, čím sa znižuje chybovosť pre ďalšie výpočty.

Player.java

​​​​​​​Trieda, ktorá definuje druhého hráča a jeho rolu v hre (druhého hráča, ktorého vidí).

WorldModel.java

​​​​​​​Trieda, v ktorej sa ukladajú objekty na ihrisku, teda ich pozícia, rýchlosť a priemernú pozorovanú rýchlosť. Počíta pozície ostatných hráčov a lopty.

Prophecy.java

Uchováva pravdepodobný stav v danom čase v budúcnosti

Prophet.java

Výpočet najpravdepodobnejšej udalosti v danom čase, treba tu dorobiť predpovedací modul, momentálne je to iba v stave experimentu a na konci projektu si neboli istý, či to funguje správne.

TacticalInfo.java

Trieda, ktorá obsahuje informácie o herných situáciách (útočíme, bránime…) a tiež metódy pre vytvorenie hernej formácie. Team A55 kickers pridal do triedy videnie úspešnosti prihrávky a šancu získania lopty hráčom a najbližším spoluhráčom. Podrobnosti v dokumentácii k dielu A55 Kickers.