Analýza modelu sveta
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ý.
Obsah |
AgentModel.java
obsahuje určovanie pozície hráča a stranu hráča (č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é na internete obsahuje GET na získanie informácii či stojí, je na zemi, leží na chrbáte, leží na bruchu, o natočení a pozícii a SETY na nastavenie pozície a rotácie
AgentPositionCalculator.java
vypočíta aproximáciu aktuálnej pozície agenta na základe zástavy, ktorú vidí. Trieda predpokladá, že rotácie agenta sú správne vypočítané. Výpočet sa vykonáva normalizáciou a odpočtom od pozície zástavy. Keď vnímaná relatívna pozícia je pridaná do známej pozície vlajky, je možné vypočítať správnu aproximáciu našej pozície.
AgentRotationCalculator.java
počíta sa natočenie agenta podľa fixných bodov – dokáže odvodiť natočenie agenta z 3 videných zástav, z 3 zástav si určí, ktoré dve z nich použiť na vytvorenie osi Y , a ktorú použiť ako doplnkový 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.4
FixedObjects.java
tu každá vlajka uchováva informáciu o svojej pozícii – určuje sa tak veľkosť ihriska
KalmanAdjuster.java
nastavuje vnímané súradnice lopty a zástavy na ihrisku použitím kalmanvého filtra, čím sa znižuje chybovosť, vnášaná serverom, pre ďalšie výpočty
Player.java
trieda ktorá definuje agenta ako hráča v hre – nič nie je spravené
WorldModel.java
ukladanie objektov na ihrisku, ukladá ich pozíciu, rýchlosť a priemernú pozorovanú rýchlosť sem treba dorobiť predvídanie tímu a oponentov a učenie kto je z ktorého tímu
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.