Pohyby
Z RoboCupTP wiki
Chôdza dozadu
Táto chôdza dozadu je výraznejšie rýchlejšia a stabilnejšia ako chôdze vytvorené tímom Androids v minulom roku. Jej začiatočná fáza vznikla z prvej fáze chôdze dopredu. Vzhľadom na to že tento pohyb je pomerne rýchly a stabilný je vhodný na prekonávanie väčších vzdialeností. Robot je pri tejto chôdzi celý čas mierne prikrčený. Samotný krok pozostáva zo 6 fáz a je zobrazený na obrázku.
- robot sa prikrčí
- vykroči pravou nohou dozadu
- pravú nohu mierne vystrie a pohyb pokračuje symetricky pre ľavú nohu
Overenie
Pohyb pri niekoľko násobnom testovaní bol stabilný a jeho dráha priama. Ak vznikli odchýlky tak len veľmi minimálne a to pravdepodobne kvôli chybám zo servera. Celý pohyb trvá 2400 ms, čo znamená že krok jednou nohou polovicu tohto času. Pri pokuse o zrýchlenie jednotlivých fáz agent dokázal udržať stabilitu, avšak pri tomto zrýchľovaní sa agent viac vychyľuje z dráhy.
walkback_slow Pomalší pohyb dozadu. Vytvorený bol z pohybu walkback3, ktorý je síce výborný, ale hráč vykonáva veľmi veľké kroky dozadu. Bolo nutné vytvoriť pohyb, ktorý bude vykonávať menšie kroky, najmä kvôli pohybom hráča okolo lopty. Výborná stabilita pohybu zostala zachovaná.
Optimalizácia chôdze
V tejto kapitole sme sa venovali optimalizácii chôdze, ktorá bola veľmi neefektívna, až zlá. Tento dojem sme nadobudli po zhliadnutí jednotlivých typov chôdze. Po odovzdaní tejto časti dokumentácie sme však prišli na to, že uvedené pohyby nie sú vlastne tie, ktoré tím Androids implementoval v minulom roku a použil v súťaži Robocup na FIIT, resp. tieto pohyby obsahovali isté časti kódu, ktorých vplyv na vykonávanie cyklických pohybov bol markantný a tieto sa vykonávali nielen oveľa pomalšie, ale aj nesprávne. Preto sme v ďalšom šprinte kontaktovali tím Androids a tento problém riešili. Išlo o to, že v každom cyklickom pohybe boli vykonané zmeny, ktoré neboli premietnuté do poslednej verzie v SVN, ktorú sme využili ako základ nášho projektu. Zo zistených skutočností sme vykonali v implementácii pohybov zmeny, ktoré napravili nesprávne vykonávanie pohybov, a tak sme museli aj znovu implementovať optimalizáciu pohybov.
Chôdza vpred walk_fine_fast2
Ako prvú sme sa snažili optimalizovať chôdzu, ktorú tím Androids implementoval naposledy, a ktorá bola aj použitá v súťaži. Táto chôdza je veľmi stabilná a dosahuje aj dobré výsledky, čo sa týka smeru chôdze. Vzhľadom na tieto vlastnosti chôdze bolo dosť náročné implementovať nejaké optimalizačné zmeny, ktoré by vylepšili tento pohyb. Kedže bol priamy, týmto smerom sme sa nevydali a sústredili sme sa na rýchlosť pohybu. Túto rýchlosť sme sa snažili zlepšiť hlavne skrátením vykonávania jednotlivých fáz. Nasledujúca tabuľka je vyhodnotením spúšťania tohto pohybu v pôvodnej podobe, pričom výsledky boli takmer identické, a teda možno konštatovať, že tento pohyb je skutočne veľmi dobre spracovaný a je mimoriadne stabilný. Výsledky prezentované v tabuľkách nižšie predstavujú čas, za ktorý sa dostal agent z počiatočnej polohy do polovice ihriska(aj v prípade, že šiel šikmo).
Výsledky spúšťania chôdze walk_fine_fast2
Výsledný čas[s] 66 63 63 63 64
Priemerný čas, za ktorý tento pohyb bol vykonaný, bol 63,8 s.
Pri implementácii optimalizačných zmien sme sa teda zamerali na zrýchlenie pohybu. Po vykonaní zmien v kóde sa tieto zmeny prejavili veľmi pozitívne, čo sa týka zrýchlenia pohybu, avšak vzhľadom na zrýchlenie sa dostavili aj nežiadúce účinky v podobe odchýlenia smeru, v niektorých prípadoch dokonca k strate stability a občasného pádu. Pád sa vyskytoval približne pri 17% spustení pohybu. Výsledky sú prezentované v nasledovnej tabuľke, koncipovanej podobne, ako predchádzajúca.
Výsledky spúšťania po optimalizácii chôdze walk_fine_fast2
Výsledný čas[s] 49 48 50 48 pád 47 49 pád 50 51 49
Priemerný čas, za ktorý sa tento pohyb vykonal(odhliadnuc od pádov), bol 49 s. Ako je vidieť, rýchlosť pohybu sa podarilo dosť dobre vylepšiť, avšak stabilita sa zhoršila. Rovnako sa zhoršila aj priamočiarosť pohybu, čo je znázornené na nasledujúcom slede obrázkov.
Na základe týchto zistení je možné skonštatovať, že tento pohyb by sa dal využiťhlavne na prekonávanie kratších vzdialeností, pričom by občas bolo potrebné skorigovať smer agenta. Je tu ale takisto priestor na ďalšie vylepšenie udržania priamočiareho smeru, čím by optimalizácia predstavovala na dĺžku ihriska zrýchlenie oproti predchádzajúcej implementácii približne o 13 sekúnd.
walk_fine_fast2_optimized2
Chôdza walk_fine_fast2_optimized, z ktorej tento pohyb vychádza bola nestabilná. Hráč v mnohých prípadoch nedokázal prejsť väščí úsek naraz a spadol na chrbát. Taktiež skoro vôbec nevyužíval kĺby hráča a ťažil z rýchleho mihania nohami. Nový pohyb bol prerobený do ľudskejšej formy, kedy hráč do istej miery imituje chôdzu človeka. To mu dalo potrebnú stabilitu a bez problémov dokáže prejsť aj celé ihrisko porovnateľnou rýchlosťou ako predošlý pohyb.
Chôdza vpred walk_fine_fast1
Druhou chôdzou, ktorú sme skúšali optimalizovať bola chôdza, z ktorej vychádzala predchádzajúca. Preto sme očakávali, že tu taký priestor na vylepšenie nenájdeme, avšak opak sa stal pravdou a po vhodnej optimalizácii sme dosiahli lepšie výsledky ako v predchádzajúcom prípade. V tomto prípade bol pohyb pri spustení veľmi nestabilný, čo sa týka priamočiarosti a rýchlosť tohto pohybu bola taktiež veľmi nevyhovujúca. Po spustení sa robot začal nekoordinovane točiť na jednu či druhú stranu a iba vo veľmi zriedkavých prípadoch sa dostal až do polovice ihriska, ktorá bola métou pre testovanie našich pohybov. Keď sa tam už agent dostal, trvalo mu to približne 102 sekúnd. Po optimalizácii tohto pohybu sa dosiahlo výrazné zlepšenie nielen priamočiarosti kráčania, ale aj v rýchlosti pohybu, čo sa prejavilo zlepšením času prechodu do testovanej oblasti, teda polovice ihriska. Výsledky sú obsiahnuté v nasledujúcej tabuľke a takisto aj v nasledujúcom obrázku, ktorý ilustruje aj približnú odchýlku od požadovaného smeru chôdze.
Výsledky spúšťania po optimalizácii chôdze walk_fine_fast1
Výsledný čas[s] 43 42 44 42 44 43 42 43 44 43 44
Priemerný čas, za ktorý tento pohyb bol vykonaný, bol 43, 09 s.
Vylepšenie v oblasti rýchlosti je oproti chôdzi walk_fine_fast2 v pôvodnej verzii o cca 20 sekúnd, pričom dosahujeme prijateľnú priamočiarosť pohybu, čím sa tento pohyb stáva veľmi dobre použiteľným na prekonávanie dlhých vzdialeností pri potrebe prejsť ich čo najrýchlejšie. Navyše pri testovaní bola dosiahnutá 100%-ná stabilita, čo sa týka udržania agenta v polohe stoja, resp. chôdze, teda agent ani raz pri testovaní nespadol.
Kopnutie
kick_left_normal
Jedná sa o kopnutie dopredu špičkou ľavej nohy. Tento pohyb sa od jeho predchodcu Kick_left líši iba minimálne, boli tam vykonané určité zmeny v rýchlosti pohybu.
kick_left_fast
Kopnutie dopredu špičkou ľavej nohy. Kopajúca noha však vykoná väščí náprah a rýchlejší švih nohou. To vyústi do dlhšieho kopu.
kick_left_slow
Kopnutie dopredu špičkou ľavej nohy. Kopajúca noha však vykoná menší náprah a pomalší švih nohou. To vyústi do kratšieho kopu.
kick_right_normal
Jedná sa o kopnutie dopredu špičkou pravej nohy. Tento pohyb sa od jeho predchodcu Kick_right líši iba minimálne, boli tam vykonané určité zmeny v rýchlosti pohybu.
kick_right_fast
Kopnutie dopredu špičkou pravej nohy. Kopajúca noha však vykoná väščí náprah a rýchlejší švih nohou. To vyústi do dlhšieho kopu.
kick_right_slow
Kopnutie dopredu špičkou pravej nohy. Kopajúca noha však vykoná menší náprah a pomalší švih nohou. To vyústi do kratšieho kopu.
kick_straight_edge_l2
Tento pohyb vychádza z pohybu kick_straight_edge_l, ktorý vykoná kopnutie dopredu vnútornou časťou ľavého chodidla hráča. Pohyb musel byť od základov prerobený, pretože predošlý pohyb potreboval mať loptu tesne pred hráčovou nohou a aj v takom prípade ju ledva trafil. Nový pohyb bol tiež spravený aby sa viac podobal na ľudský pohyb, čiže hráč pracuje s ťažiskom pomocou krčenia kolien a členkov. To vyústi v oveľa väščí náklon robota a tým pádom nie je problém trafiť sa do lopty.
kick_straight_edge_r2
Tento pohyb vychádza z pohybu kick_straight_edge_r, ktorý vykoná kopnutie dopredu vnútornou časťou pravého chodidla hráča. Pohyb musel byť od základov prerobený, pretože predošlý pohyb potreboval mať loptu tesne pred hráčovou nohou a aj v takom prípade ju ledva trafil. Nový pohyb bol tiež spravený aby sa viac podobal na ľudský pohyb, čiže hráč pracuje s ťažiskom pomocou krčenia kolien a členkov. To vyústi v oveľa väščí náklon robota a tým pádom nie je problém trafiť sa do lopty.
Posadenie
sit_down2
Jedná sa o posadenie sa hráča, využívané najmä pri bránení. Predošlý pohyb sit_down bol veľmi nedokonalý a hráč si prakticky nevedel sadnúť. Preto prišlo k vylepšeniu a výraznému zrýchleniu tohto pohybu. Po jeho vykonaní hráč ukážkovo sedí na zemi.
sit_down2-1
Jedná sa o posadenie sa hráča, využívané najmä pri bránení. Tento pohyb vznikol z nového pohybu sit_down2, ešte väčším zrýchlením jeho vykonávania. Teraz sa hráč dokáže posadiť veľmi rýchlo. Pohyb však kvôli rýchlosti občas skončí pádom.