ˇ Cesk´ e vysok´ e uˇ cen´ı technick´ e v Praze Fakulta elektrotechnick´ a katedra ˇ r´ıdic´ı techniky
Robotick´ y stoln´ı fotbal Popis implementovan´ych funkc´ı a jejich rozhran´ı Vojtˇ ech Myslivec,
[email protected] Kvˇeten 2015
Obsah 1 Anotace
2
2 Implementovan´ e funkce
2
2.1
funkce attackAction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2.2
funkce attack2Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2.3
funkce axesInitialization . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2.4
funkce coordinateSystemTransfer . . . . . . . . . . . . . . . . . . . . . . .
3
2.5
funkce countDefense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.6
funkce countVectorAndEstimateNextPosition . . . . . . . . . . . . . . . . .
3
2.7
funkce defenseAction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.8
funkce disableAxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.9
funkce enableAxes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.10 funkce initVariables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.11 funkce movePlayers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.12 funkce poke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.13 funkce returnAction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.14 funkce rotateAxisWithLimit . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.15 funkce selectAndDoAttack . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.16 funkce selectMode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.17 funkce setSearchRegion . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.18 funkce shoot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3 Implementovan´ e programy
6
3.1
program go to stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.2
program initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.3
program main routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1
1
Anotace
Tento dokument popisuje implementovan´e funkce a jejich vstupy a v´ ystupy v prostˇred´ı Simotion Scout, pouˇzit´e pˇri ˇr´ızen´ı jedn´e osy stoln´ıho fotbalu.
2
Implementovan´ e funkce
Vzhledem k tomu, ˇze prostˇred´ı Simotion Scout umoˇzn ˇuje sledov´an´ı hodnoty za bˇehu programu pouze pro glob´aln´ı promˇenn´e, je vˇetˇsina metod bez vstup˚ u a v´ ystup˚ u, protoˇze ˇctou a zapisuj´ı z a do tˇechto glob´aln´ıch promˇenn´ ych. Pˇrestoˇze je tento zp˚ usob nestandardn´ı a n´achylnˇejˇs´ı na chyby, byl zvolen z d˚ uvodu snadnˇejˇs´ıho hled´an´ı a odstraˇ nov´an´ı chyb v programu.
2.1
funkce attackAction
Vstupy funkce: m´ısto v´ ykopu m´ıˇce target (INT) a pˇredchoz´ı jiˇz proveden´ y posun v rotaˇcn´ı ose shift (INT) V´ ystupy funkce: indik´ator proveden´ı v´ ykopu done (INT) Pˇr´ıklad vol´an´ı: attackAction(target := 300, shift := 0, done => retDINT) Popis funkce: Funkce provede jednoduch´y v´ykop m´ıˇce ze zadan´e pozice.
2.2
funkce attack2Action
Vstupy funkce: m´ısto v´ ykopu m´ıˇce target (INT) V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: attack2Action(target := 300) Popis funkce: Funkce provede v´ykop m´ıˇce s nahr´avkou spoluhr´aˇci ze zadan´e pozice.
2.3
funkce axesInitialization
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: axesInitialization() Popis funkce: Funkce provede inicializaci osy v translaˇcn´ım i rotaˇcn´ım posunu pomoc´ı pomal´eho dojezdu k okraji stolu se sledov´an´ım momentu motoru a sledov´an´ım inicializaˇcn´ı znaˇcky na ose pomoc´ı kamery. Funkce je vol´ana pˇri startu syst´emu. 2
2.4
funkce coordinateSystemTransfer
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: coordinateSystemTransfer() ´daje o pozici m´ıˇce z v´ystup˚ u kamery v px a pˇrepoˇcte Popis funkce: Funkce pˇreˇcte aktu´aln´ı u je na u ´daj o pozici v mm.
2.5
funkce countDefense
Vstupy funkce: pozice osy axisXposition (INT), pro kterou je funkce vol´ana V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: countDefense(axisXposition := 915) Popis funkce: Funkce urˇc´ı pr˚ useˇc´ık budouc´ı trajektorie m´ıˇce a fotbalov´e osy, do kter´eho je potˇreba pˇresunout hr´aˇce pro zamezen´ı pohybu m´ıˇce.
2.6
funkce countVectorAndEstimateNextPosition
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: countVectorAndEstimateNextPosition() Popis funkce: Funkce vypoˇcte z aktu´aln´ı a pˇredchoz´ı zmˇeˇren´e pozice m´ıˇce vektor rychlosti jeho pohybu a odhadne jeho budouc´ı pozici.
2.7
funkce defenseAction
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: defenseAction() Popis funkce: Funkce provede obrannou akci, tedy nastaven´ı hr´aˇce osy na trajektorii pohybuj´ıc´ıho se m´ıˇce. Rychlost pˇresunu z´avis´ı na rychlosti m´ıˇce.
2.8
funkce disableAxes
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: disableAxes() Popis funkce: Funkce vypne nap´ajen´ı motor˚ u a uzamkne ovl´ad´an´ı rotaˇcn´ıho i translaˇcn´ıho pohybu, pokud tomu tak jeˇstˇe nen´ı. 3
2.9
funkce enableAxes
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: enableAxes() u a umoˇzn´ı ovl´ad´an´ı rotaˇcn´ıho i translaˇcn´ıho Popis funkce: Funkce zapne nap´ajen´ı motor˚ pohybu, pokud tomu tak jeˇstˇe nen´ı.
2.10
funkce initVariables
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: initVariables() Popis funkce: Funkce zajist´ı inicializaci z´akladn´ıch promˇenn´ych, jako jsou napˇr´ıklad transformaˇcn´ı konstanty pro pˇrepoˇcet souˇradnic m´ıˇce mezi hodnotou v px a hodnotou v mm. Funkce je vol´ana pˇri startu syst´emu.
2.11
funkce movePlayers
Vstupy funkce: c´ılov´a pozice pro hr´aˇce position (INT) V´ ystupy funkce: indik´ator u ´spˇeˇsn´eho nebo ne´ uspˇeˇsn´eho pˇresunu moved (BOOL) Pˇr´ıklad vol´an´ı: movePlayers(position := 300, moved => retBOOL) Popis funkce: Funkce pˇresune nejbliˇzˇs´ıho moˇzn´eho hr´aˇce na zadanou pozici, pokud je to moˇzn´e (zadan´a pozice je smyslupln´a).
2.12
funkce poke
Vstupy funkce: vzd´alenost m´ıˇce od osy distance (INT) a smˇer nahr´avky direction (INT), s moˇznostmi +1 (vlevo ve smˇeru od vlastn´ı br´any) nebo -1 (vpravo) V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: poke(distance := 20, direction := +1) Popis funkce: Funkce provede nahr´avku m´ıˇce do strany z aktu´aln´ı pozice osy.
2.13
funkce returnAction
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: returnAction() Popis funkce: Funkce zajist´ı pˇresun osy do v´ychoz´ı pozice na stˇredu hˇriˇstˇe. 4
2.14
funkce rotateAxisWithLimit
Vstupy funkce: rychlost ot´aˇcen´ı velocity (INT), akcelerace pˇri rozbˇehu a dobˇehu acceleration (DNT), relativn´ı pozice otoˇcen´ı position (INT), z jej´ıho znam´enka je urˇcen smˇer rotace (+ positive, - negative) ´spˇeˇsn´e dokonˇcen´ı pohybu done (DINT) v pˇr´ıpadˇe, V´ ystupy funkce: promˇenn´a indikuj´ıc´ı u ˇze je nulov´a, pokud je nenulov´a, pohyb nebyl dokonˇcen a promˇenn´a obsahuje u ´daj o uraˇzen´e vzd´alenosti ve stupn´ıch rotace motoru Pˇr´ıklad vol´an´ı: rotateAxisWithLimit1(velocity := 8000, acceleration := 100000, position := 400, done => retDINT) Popis funkce: Funkce rotuje osou s vnitˇrnˇe nastaven´ym limitem na moment s´ıly motoru, v pˇr´ıpadˇe jeho pˇrekroˇcen´ı (zaseknut´ı m´ıˇce) se pohyb pˇreruˇs´ı.
2.15
funkce selectAndDoAttack
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: selectAndDoAttack() Popis funkce: Funkce zvol´ı metodu v´ykopu m´ıˇce podle jeho pozice a zavol´a pˇr´ısluˇsnou funkci.
2.16
funkce selectMode
Vstupy funkce: pozice osy axisXposition (INT), pro kterou je funkce vol´ana V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: selectMode(axisXposition := 915) Popis funkce: Funkce podle pohybu m´ıˇce zvol´ı hern´ı m´od osy, obranu, u ´tok (v´ykop), n´avrat do v´ychoz´ı pozice nebo ˇz´adnou akci.
2.17
funkce setSearchRegion
Vstupy funkce: nejsou V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: setSearchRegion() Popis funkce: Funkce urˇc´ı oblast vyhled´av´an´ı m´ıˇce na hrac´ı ploˇse podle jeho odhadovan´e pˇr´ıˇst´ı pozice a rozmˇery nov´e oblasti zap´ıˇse do pˇr´ısluˇsn´ych promˇenn´ych reprezentuj´ıc´ıch vstupn´ı promˇenn´e kamery. 5
2.18
funkce shoot
Vstupy funkce: pˇredchoz´ı, jiˇz proveden´ y posun v rotaˇcn´ı ose shift (INT) V´ ystupy funkce: nejsou Pˇr´ıklad vol´an´ı: shoot(shift := 200) Popis funkce: Funkce provede v´ykop m´ıˇce na aktu´aln´ı poloze osy a pot´e n´avrat do p˚ uvodn´ı pozice zmˇenˇen´e o hodnotu vstupn´ı promˇenn´e shift.
3 3.1
Implementovan´ e programy program go to stop
Pˇr´ıklad vol´an´ı: Program je nutn´e pˇriˇradit k nˇekter´e z u ´loh v Execution Sytstem Popis programu: Prov´ad´ı operace potˇrebn´e pˇri vypnut´ı programu.
3.2
program initialization
Pˇr´ıklad vol´an´ı: Program je nutn´e pˇriˇradit k nˇekter´e z u ´loh v Execution Sytstem Popis programu: Program provede inicializaci osy v translaˇcn´ım i rotaˇcn´ım posunu pomoc´ı pomal´eho dojezdu k okraji stolu se sledov´an´ım momentu motoru a sledov´an´ım inicializaˇcn´ı znaˇcky na ose pomoc´ı kamery.
3.3
program main routine
Pˇr´ıklad vol´an´ı: Program je nutn´e pˇriˇradit k nˇekter´e z u ´loh v Execution Sytstem Popis programu: Hlavn´ı ˇr´ıdic´ı smyˇcka, naˇc´ıt´a u ´daje o zmˇeˇren´e poloze z kamery, vyb´ır´ a a prov´ad´ı adekv´atn´ı reakci osy.
6