Hviezdna Jedenástka

Z RoboCupTP wiki

Revízia z 00:19, 26. február 2012; Admin (Diskusia | príspevky)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Prejsť na: navigácia, hľadanie

Úvod

Tím Hviezdna Jedenástka pôsobil na Fakulte informatiky a informačných technológií v ročníku 2007 / 2008. Tento tím sa ako prvý na fakulte zaoberal 3D futbalom humanoidného typu, hoci v tej dobe nemali ani oficiálnu dokumentáciu. Hlavnou príčinou tohto výberu bolo pravdepodobné ukončenie vývoja iných typov k dohľadnej budúcnosti.

Použité technológie

Tím použil pre implementáciu hráča jazyk C++. Svoje rozhodnutie odôvodnil tým, že je v ňom jednak napísaný kód simulačného servera, jednak všetky analyzované tímy.

Jednotliví členovia tímu boli zvyknutí pracovať v rôznych vývojových prostrediach, pod rôznymi operačnými systémami. Vytvárali preto svoj projekt pre čo najväčšiu prenositeľnosť – oddelili zdrojové kódy od súborov súvisiacich s vývojovým prostredím a používali iba štandardné knižnice dostupné pre všetky operačné systémy.

Z dôvodu prenositeľnosti boli použité pre paralelizáciu vlákna POSIX Threads, ktoré sú štandardizované pre všetky bežné operačné systémy.

Architektúra hráča

Ako je vidieť na obrázku, architektúra hráča sa skladá z viacerých modulov:

Hviezdna jedenastka architektura.PNG

-Hlavný cyklus: Agent

-Model hráča – informácie o hráčovi: PlayerModel

-Model sveta – informácie o okolitých objektoch: WorldModel

-Správanie a schopnosti agenta: HighSkill, MiddleSkill, LowSkill

-Posielanie a získavanie informácií zo sprav posielaných serverom: Communication, Parser

Agent

Obsahuje hlavný cyklus (v 20ms intervale): čítanie správ -> aktualizácia modelu sveta -> rozhodovanie -> posielanie správ späť na server.

PlayerModel

Obsahuje čas simulácie, informácie o hráčovi, jeho kĺboch, gyroskope a sile pôsobiacej na chodidlá. Vychádza z modelu soccerbot056, ktorý má 14 kĺbov, z ktorých sú dva typy:

-Hinge s jednuou osou otáčania

-Universal s dvomi osami otáčania

Každý kĺb má dve metódy na otočenie:

-metóda moveTo – posunúť kĺb na daný uhol

-metóda moveBy – relatívne posunutie kĺbu o daný uhol

A dva spôsoby otáčania

-CONSTANT – kĺb sa počas celého pohybu otáča konštantnou rýchlosťou

-APPROXIMATING – kĺb spomaľuje rýchlosť otáčania s približovaním sa ku koncovému uhlu

WorldModel

Táto trieda uchováva informácie o všetkých objektoch, ktoré je hráč schopný vidieť a pomocou ktorých by sa mal vedieť rozhodovať - informácie o hracej lopte, o pozícií rohových zástavok a bránok na ihrisku, simulačný čas, čas hry (od výkopu) a mód hry (voľná hra, štandardná situácia, atď). Každý objekt má určenú polohu a čas, kedy bol videný naposledy. Dynamické objekty (napr. lopta) majú aj atribúty zrýchlenia, hmotnosti a rýchlosti – pre budúce možnosti predikcie situácií.

Zaujímavosťami bolo, že bránky boli reprezentované iba dvomi tyčkami (horná žrď nebola braná v úvahu) reprezentácia polohy objektov bola udávaná dvomi spôsobmi:

-sférickými súradnicami – (dva uhly a jedna vzdialenosť dvoch bodov)

-karteziánskymi súradnicami (tri usporiadané body)

Skills

Zručnosti hráča sú obsiahnuté v troch úrovniach:

-low skill – kop do lopty, otočenie sa, krok, ...

-middle skill – chôdza, beh, otočenie sa k lopte, ...

-high skill – útočenie, …

Vyššie zručnosti sú zložené z nižších zručností. Ich plánovanie je prioritizované podľa daných úrovní – zručnosť vyššej úrovne čaká, kým je ukončená zručnosť nižšej úrovne.

Impelementované boli nasledovné zručnosti:

-vstávanie zo zeme

-chôdza

-otáčanie sa na mieste

Communication

Tento modul má na starosti komunikáciu so serverom, teda prijímanie a odosielanie správ obsahujúcich s-výrazy. V rámci tohto modulu boli implementované dva spôsoby komunikácie – TCP z dôvodu požiadavky na stabilitu komunikácie a UDP z dôvodu rýchlosti komunikácie. Samotný výber spôsobu komunikácie je tak na používateľovi.

Parser

Slúži na parsovanie prijatej správy od servera. Pri vytváraní tohto modulu bol použitý open-source program s názvom APG – ten je schopný na základe vloženej gramatiky vygenerovať parser – syntaktický strom s definovanými akciami.

Zhodnotenie

Vzhľadom na to, že sa jednalo o prvý projekt na fakulte zaoberajúci sa humanoidným typom 3D Robocupu, významná časť práce bola venovaná analýze. Vo výsledku sa podarilo naprogramovať hráča menom Sirius.

Keďže tím začínal úplne od začiatku, ťažiskom práce bol návrh dobrej architektúry, obsiahnutie všetkých jej základných modulov v implementácii, jej prenositeľnosť a vytvorenie základných pohybov ako overenie funkčnosti hráča.

Samotná hra pomocou tohto hráča nebola možná, keď ten nemal implementované mnohé základné pohyby, vnímanie iných hráčov a pod. Z pochopiteľných dôvodov ďalšími neriešenými problémami boli dynamické pohyby, podporné prostriedky, strojové učenie, rozhodovanie na vyššej úrovni.

Je pomerne tažké určiť prínosy tejto práce vzhľadom na náš projekt, keďže ten vychádza z pokročilejšieho hráča v inom programovacom jazyku. Problémami vyriešenými týmto tímom sa už nie je potrebné ďalej zaoberať, neriešené sú často práve tie, na ktorých budeme v priebehu semestrov pracovať. Dokumentácia projektu je však celkom zrozumiteľne popísaná a tak môže pomôcť pri počiatočnej analýze problematiky a pochopeniu základnej idei architektúry hráča.

Osobné nástroje