Obsah

RoboKopy

Tím RoboKopy je univerzitný tím z Fakulty informatiky a informačných technológií, ktorý vznikol v roku 2009 vďaka predmetu Tímový projekt. Pri práci na projekte vychádzali najmä z výstupov tímu Agenty007, ktorý v roku 2009 vyhral TP Cup.

Tvorba základných a špeciálnych pohybov

Jednou z hlavných úloh tímu bolo vytvorenie základných pohybov robota, ako napríklad chôdza, otáčanie, vstávanie a kopnutie do lopty. Vo všeobecnosti vychádzali najmä z reálnych pohybov človeka a väčší dôraz bol kladený na stabilitu hráča pri vykonávaní pohybov ako na rýchlosť ich vykonania. Najmä preto, že vo vtedajšej verzii hráča nebola implementovaná fyzická stabilizácia. Vo veľkej miere bol použitý editor pohybov, ktorý vytvoril tím Agenty007.

Pri realizácii chôdze bolo nutné zapojiť množstvo kĺbov z dolnej časti hráča. Pre zabezpečenie vyššej stability boli zapojené aj pohyby rúk. Pri testovaní sa zistilo, že agent zvláda chôdzu lepšie na počítačoch s vyššou konfiguráciou. Na nasledujúcom obrázku (Obrázok 7) je znázornené vykročenie ľavou nohou.

Pohyb kopu do lopty vychádza zo samotného pohybu chôdze upraveného tak, aby bola lopta zasiahnutá s čo najväčšou hybnosťou. Vytvorený pohyb fungoval podľa očakávaní, avšak obsahoval citeľné nedostatky v podobe rýchlosti vykonania pohybu a veľkosti hybnej sily.

Taktiež boli vytvorené špeciálne pohyby, ktoré slúžia iba exhibičné účely. Pohyb v bok a kývanie rukami boli značne jednoduché. Väčšia pozornosť sa venovala klikom, ktoré pozostávali z viacerých pohybov.

Úprava kódu prevzatého projektu

Po analýze zdrojového kódu predošlého tímu sa členovia tímu rozhodli, že poopravujú viaceré chyby a niektoré časti projektu prepíšu do flexibilnejšej podoby. Pozmenené bolo logovacie API, testovacie API a matematické API. Ďalšie úpravy sa týkali opravy chýb v kóde a nevhodných použití programátorských techník. Taktiež došlo k zmenám pri používaní niektorých knižníc.

Stredná logika hráča

Nevyhnutnou schopnosťou hráčov pri hre je skladanie elementárnych pohybov tak, aby bolo možné uplatňovať takzvanú strednú logiku. Tá je reprezentovaná abstraktným stavovým automatom. Rozhodovanie sa následne riadi zisťovaním aktuálneho stavu, prechod do iného stavu a pohybov, ktoré sa v nich majú vykonať. Prechod medzi stavmi vyžaduje aj prechodovú funkciu, ktorá je realizovaná pomocou rozhodovacieho stromu. Pre potreby strednej logiky boli tiež z elementárnych pohybov vytvorených niekoľko zložených pohybov. V ďalších fázach projektu bol napríklad vytvorený pohyb chôdze s postavením. To umožnilo plynulú sekvenciu pohybov, pretože ak hráč pri niektorom z nich spadol, jednoducho sa postavil a pokračoval.

Tak ako elementárne pohyby, aj stredná logika sa nachádza v textovom súbore. Jej tvorba alebo úprava bola teda prácna a neefektívna. Tím sa preto rozhodol doplniť editor pohybov o editor strednej logiky. Editor umožňuje vytvárať strednú logiku hráča alebo upravovať už existujúcu logiku.

Taktiež boli vytvorené vyhodnocovacie funkcie, ktoré poskytujú modulu strednej logiky podporné prostriedky pre rozhodovanie. Agent totiž potrebuje vedieť údaje o svete, ktoré mu tieto funkcie poskytovali. Využívajú tiež vnútornú reprezentáciu agenta o stave na ihrisku a všetky informácie z perceptorov. Dokážu preto poskytovať informácie o vzdialenosti od bránok, stabilite a polohe hráča, či informácii o možnosti streľby na bránu.

Ďalšou dôležitou funkciou bolo umožnenie výpočtu hodnôt nezávisle od hráčovej domácej polovici ihriska. Výpočty boli totiž realizované za predpokladu, že domáca polovica sa vždy nachádza naľavo. Nová funkcia indikovala, ktorá polovica hracej plochy je domáca a ktorá súperova.

Elementárna logika

Jednou z ďalších úloh tohto tímu bol návrh elementárnej logiky hráča, ktorá je dôležitým krokom k samotnej hre futbalu. Stavový automat bol týmto návrhom doplnený o subautomaty, ktoré sa nachádzali v jednotlivých stavoch. Umožní to v akomkoľvek stave vykonať nielen jeden pohyb ale celú skupinu pohybov. Medzi stavmi v subautomate sú taktiež definované prechodové funkcie. Takáto elementárna logika umožňuje hráčovi prísť k lopte, viesť ju smerom k bráne a vystreliť. Boli vytvorené jednotlivé rozhodovacie stromy.

Úprava hráča pre komunikáciu so serverom verzie 0.6.3

V priebehu projektu bola vydaná nová verzia simulačného servera, ktorá v sebe prinášala niekoľko zmien oproti predchádzajúcej verzii. Pribudol napríklad nový preceptor akcelerometer, možnosť posielať dlhšie správy efektorom Say, väčšie ihrisko a optimalizácia pre hru viacerých hráčov.