仲洋機(jī)器人足球_第1頁
仲洋機(jī)器人足球_第2頁
仲洋機(jī)器人足球_第3頁
仲洋機(jī)器人足球_第4頁
仲洋機(jī)器人足球_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、實驗一、機(jī)器人足球比賽編程預(yù)備知識一、實驗?zāi)康恼莆?RoboCup 仿真機(jī)器人足球比賽相關(guān)知識點,具體內(nèi)容如下:Linux 操作系統(tǒng)的熟悉及了解其基本操作。掌握Linux 下如何進(jìn)行 C+編程,了解 gcc 編譯器以及一些簡單編輯工具,如:vi、emacs、gedit、Anjuta、Kdevelope 等。啟動 RoboCup 仿真(2D)足球隊的比賽。二、實驗設(shè)備硬件環(huán)境:PC 機(jī)環(huán)境:操作系統(tǒng) linux三、實驗內(nèi)容(1)掌握 Linux 一些常用令a)如何找到用戶主目錄的絕對路徑名?在自己的系統(tǒng)上,用戶主目錄的絕對路徑名是什么?pwd/home/student將當(dāng)前工作目錄從/home/

2、UVA 轉(zhuǎn)到/home/Tsinghua 需要使用什么命令?如何顯示當(dāng)前目錄?cd /home/Tsinghua如何在當(dāng)前目錄下建立子目錄 RoboCup?mkdirRobcup如何刪除子目錄 RoboCup?rmdir Robcup如何查看當(dāng)前目錄下的內(nèi)容?ls如何將文件 start.sh 的權(quán)限設(shè)定為:start.sh 屬于可讀、可寫、可執(zhí)行?od 777 start.sh(7)如何將當(dāng)前目錄包括所有子目錄全部做備份文件,備份文件名為.tar?tar xvfdir1.tar如何將目錄/home 下每一個文件壓縮成.gz 文件?tar -zcwf store.tar如何把上例中每個壓縮的文件

3、解壓,并列出詳細(xì)的信息?tar xvf store.tar Ls -lg實驗二、Demeer5 基本動作 1一、 實驗?zāi)康牧私釪emeer5 的工作原理學(xué)會對Demeer5 進(jìn)行簡單的修改二、實驗設(shè)備硬件環(huán)境:PC環(huán)境:Linux三、實驗內(nèi)容(1)如果可踢球就用最大力踢球else if( WM-isBallKickable()/ 如果球已知,而且當(dāng)前球在我腳下(可踢)Vecition=( PITCH_LENGTH/2.0,(-1 + 2*(WM-getCurrentCycle()%2) *0.4 * SS-getGoalWidth() );,SS-getBallSpeedMax();soc=k

4、ickTo( ACT-ACT-mandInQueue( soc );/ 放入命令隊列mandInQueue( turnNeckToObject( OBJECT_BALL, soc );(2)如果球不可踢且我是隊友中最快到達(dá)球的隊員,則去截球else if( WM-getFastestInSetTo( OBJECT_SET_TEAMMATES, OBJECT_BALL, &iTmp )= WM-getAgentObjectType()& !WM-isDeadBallThem() )/ 如果球不在控制范圍下,但是當(dāng)前能最快搶到球的是我,去執(zhí)行搶球動作Log.log( 100, I am faste

5、st to ball; can get there in %d cycles, iTmp );soc = ACT-ACT-ercept( false );mandInQueue( soc );mandInQueue( turnNeckToObject( OBJECT_BALL, soc );(3)其他情況按點跑位else if(Agent.getDistanceTo(WM-getStrategicition() 1.5 + fabs(Agent.getX()-Ball.getX()/10.0)/ 到了這里就是其他距離球相對遠(yuǎn)一點的人了,如果離自己的陣形點太遠(yuǎn),就跑回 自己的陣形點去。if(WM

6、-getAgentStamina().getStamina()SS-getRecoverDecThr()*SS-getStaminaMax()+800)soc = moveTo(WM-getStrategicition(),PS-getPlayerWhenToTurnAngle();ACT-ACT-mandInQueue( soc );mandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );(4)將球踢方球門else if( WM-isBallKickable()/ 如果球已知,而且當(dāng)前球在我腳下(可踢)Vecition=( PITCH_LENG

7、TH/2.0, (-1 + 2*(WM-getCurrentCycle()%2) *0.4 * SS-getGoalWidth() );,SS-getBallSpeedMax(); mandInQueue( soc );/得到對方球門的坐標(biāo)soc=kickTo( ACT-ACT-mandInQueue( turnNeckToObject( OBJECT_BALL, soc );(5)將球踢向距自己最近的球員else if( WM-isBallKickable()/ 如果球已知,而且當(dāng)前球在我腳下(可踢)Vecition vec=WM-globalition(WM-getClosestInSet

8、ToAgent);(OBJECT_SET_TEAMMATES,soc=kickTo(vec,2.0);ACT-ACT-mandInQueue(soc);mandInQueue( turnNeckToObject( OBJECT_BALL, soc );(7)用不同的帶球模式帶球分別用 DRIBBLE_FAST DRIBBLE_SLOWdribble(vec,DRIBBLE)快速帶球慢速帶球DRIBBLE_WITHBALL安全帶球的模式帶球(8)方球門帶球else if( WM-isBallKickable()AngDeg ang=0.0; soc=dribble(ang,DRIBBLE_FAS

9、T);ACT-ACT-mandInQueue(soc);mandInQueue( turnNeckToObject( OBJECT_BALL, soc );(9)不同的帶球組合else if( WM-isBallKickable()if(WM-isheirPenaltyArea(WM-getBall()Vecition=( PITCH_LENGTH/2.0,(-1 + 2*(WM-getCurrentCycle()%2) *0.4 * SS-getGoalWidth() );soc=kickTo(elseAngDeg ang=0.0;,SS-getBallSpeedMax();soc=drib

10、ble(ang,DRIBBLE_FAST);AngDeg ang=0.0; soc=dribble(ang,DRIBBLE_FAST);ACT-ACT-mandInQueue( soc ); / 放入命令隊列mandInQueue( turnNeckToObject( OBJECT_BALL, soc );實驗三 Demeer5 基本動作 2一、.實驗?zāi)康氖煜?demeer5 并學(xué)會 demeer5 的基本使用方法,具體內(nèi)容如下:理解 UVA 程序的的么而內(nèi)容能修改 demeer5能進(jìn)行底層動作的組合二、實驗設(shè)備:硬件設(shè)備:pc 機(jī)設(shè)備:操作系統(tǒng) linux三、實驗內(nèi)容(1)如果在對方友傳球給

11、 9 號內(nèi)就射門,否則,如果時 7、8、9 號隊友就超前方帶球,其他隊else if( WM-isBallKickable()if(WM-isheirPenaltyArea(WM-getBall()Vecition=( PITCH_LENGTH/2.0, (-1 + 2*(WM-getCurrentCycle()%2) *0.4 * SS-getGoalWidth() );,SS-getBallSpeedMax();soc=kickTo(elseif(WM-getAgentObjectType()=OBJECT_TEAMMATE_7|WM-getAgentObjectType()=OBJECT

12、_TEAMMATE_8|WM-getAgentObjectType()=OBJECT_TEAMMATE_9)AngDeg ang=0.0; soc=dribble(ang,DRIBBLE_FAST);elsesoc=leadingPass(OBJECT_OPPONENT_9,1);AngDeg ang=0.0; soc=dribble(ang,DRIBBLE_FAST);ACT-ACT-mandInQueue( soc );mandInQueue( turnNeckToObject( OBJECT_BALL, soc );(2)如果隊員的位置在自己半場就else if( WM-isBallKi

13、ckable()getBall().getX()getCurrentCycle()%2) *0.4 * SS-getGoalWidth() );,SS-getBallSpeedMax();soc=kickTo(elseAngDeg ang=0.0; soc=dribble(ang,DRIBBLE_FAST);AngDeg ang=0.0; soc=dribble(ang,DRIBBLE_FAST);ACT-ACT-mandInQueue( soc );mandInQueue( turnNeckToObject( OBJECT_BALL, soc );(3)擔(dān)憂人來搶球時,就將球傳給離自己最近的

14、隊友,否則就自己帶球else if( WM-isBallKickable()Circle cir(Agent,2.5);num=WM-getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir); if(numgetGlobal);ition(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,Agentsoc=kickTo(vec,2.0);elsesoc=dribble(0.0,DRIBBLE_FAST);ACT-ACT-mandInQueue( soc ); / 放入命令隊列mandInQueue( turnNeckToObje

15、ct( OBJECT_BALL, soc );實驗四、復(fù)雜的動作決策一、實驗?zāi)康倪M(jìn)一步了解 demeer5 并能熟悉的修改 demeer5 的內(nèi)容以達(dá)到對場上的球員的控制能理解UVA 程序中原來的 demeer 中原來的demeer 中的全部控制能通過修改 demeer5 中的具體 函數(shù)內(nèi)容實現(xiàn)對場上球員的控制能通過底層動作的簡單組合控制場上隊員做出一些復(fù)雜動作決策(4)對 worldm有初步的認(rèn)識,學(xué)會在woeldm,basicplayer 里添加新函數(shù)二、實驗設(shè)備硬件環(huán)境:PC環(huán)境:操作系統(tǒng) linux三、實驗內(nèi)容(1)判斷守門員的位置,朝門空隙較大的一方射門else if( WM-isB

16、allKickable()Vecition vec=WM-getGlobalition(WM-getOppGoaType();if(vec.getY()0)Vecition=(52.2,-6.5);,SS-getBallSpeedMax();soc=kickTo(elseVecition1=(52.5,6.5);1,SS-getBallSpeedMax();soc=kickTo(ACT- ACT-mandInQueue( soc );mandInQueue( turnNeckToObject( OBJECT_BALL, soc );(2)在 Basicplay 力添加一個帶球函數(shù),要求如果無人

17、阻擋就向球門帶球,否則想辦法避開對方球員帶球前進(jìn).打開 WorldM.h,在里面預(yù)定義函數(shù),即寫入boolisOpponenAngleEx( AngDeg angA , AngDeg angB ,doubledDist );該函數(shù)用來判斷當(dāng)前球員角度在angAangB 之間距離小于 dDist 的范圍內(nèi)是否有對方隊員.找到并打開 WorldM.c 在里面填加一個新函數(shù)bool WorldM:isOpponenAngleEx( AngDeg angA , AngDeg angB ,doubledDist )VecVecitionitionAgent Opp;angOpp;= getAgentGl

18、obalition();AngDegiIndex;for( ObjectT o = iterateObjectStart( iIndex, OBJECT_SET_OPPONENTS ); o != OBJECT_ILLEGAL;o = iterateObjectNext ( iIndex, OBJECT_SET_OPPONENTS ) )OppangOpp= getGlobalition( o );= (Opp -Agent ).getDirection() ;if( angA=angOpp & angOpp =angB &return true;Agent.getDistanceTo(Opp

19、 ) isBallKickable()Circle cir(Agent,2.5);num=WM-getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir); if(numisOpponenang+=45;AngleEx(ang-45, ang, 6) )else if ( WM-isOpponenang-=45;AngleEx(ang,ang+45,6) )mand soc = dribble ( ang , DRIBBLE_SLOW );elsesoc=dribble(0.0,DRIBBLE_FAST);ACT-ACT-mandInQueue( soc );ma

20、ndInQueue( turnNeckToObject( OBJECT_BALL, soc );實驗五、特殊比賽模式的設(shè)計一、實驗?zāi)康恼莆辗抡鏅C(jī)器人足球比賽中特殊比賽模式發(fā)生的條件;掌握仿真機(jī)器人足球比賽特殊比賽模式的規(guī)則要求;(3)了解仿真機(jī)器人足球比賽模式的戰(zhàn)術(shù)設(shè)計;(4)進(jìn)一步熟悉WorldM二、實驗設(shè)備(1)硬件環(huán)境:PC 機(jī);類。(2)環(huán)境:操作系統(tǒng) Linux。三、實驗內(nèi)容視覺改變先在 Basicplayer.h 中輸入mandview1122333 (mand soc);)做定義;mand soc)函數(shù)做定義如下:給 view1122333 (mand soc再在 Basicplayer.cpp 中 view1122333 (/*將視覺分成 1122333 的視覺模式(“1”代表 60 度,“2”代表 120,“3”代表 180)*/ma

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論