已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
大連市仿真機器人足球競賽平臺手冊V3.0平臺操作說明1 啟動Server 打開DUTSoccerServer,單擊菜單Start 。2 啟動Clientl 打開DUTSoccerClent1,輸入DUTSoccerServer所在機器的IP,如果在同一臺機器上,輸入127.0.0.1即可。l 端口號Port用默認(rèn)的即可。l 單擊按鈕 Select you team dll! ,選擇球隊動態(tài)鏈接庫文件(如文件 ./球隊/范例球隊.dll)。l 單擊帶有連接按鈕(帶有閃電圖標(biāo)的按鈕)。用相同的方法啟動DUTSoccerClent2,連接第二個球隊。3 開始比賽。待兩個球隊都連好后,單擊DUTSoccerServer上的菜單KickOff,比賽開始。3 結(jié)束比賽。比賽正常結(jié)束,兩個客戶端會關(guān)閉與Server的網(wǎng)絡(luò)連接。如若在比賽結(jié)束前強行關(guān)閉Server,需關(guān)閉客戶端的提示窗口(The match was terminate exceptionally),如若繼續(xù)比賽,重新打開Server可執(zhí)行文件,客戶端不用重新打開。規(guī)則說明l 比賽簡介:大連市仿真機器人足球競賽是面向大連市所有本科生、研究生的計算機程序類競賽。參賽選手編制AI程序分別控制五名球員,在一定大小的場地上進行虛擬足球比賽,以規(guī)定時間內(nèi)的累積得分來判斷勝負(fù)。l 升級說明: 為比賽水平不斷接近國際比賽標(biāo)準(zhǔn),在V3.0版本中,球員運動規(guī)則基本采用國際比賽標(biāo)準(zhǔn)。且仍然采用集中控制的形式,保證了比賽易上手的特點,且對參加更高級比賽提供了更好的指導(dǎo)性。l 場地說明:1. 無論左側(cè)的球隊或右側(cè)的球隊,場地的左上角均為其坐標(biāo)原點,坐標(biāo)系如圖所示。先連接Server的為左隊,后連接的為右隊。編寫球隊時,要使自己的球隊為左隊或右隊均可正常比賽。2. 場地的坐標(biāo)信息,單位為米。const double CDOORWIDTH = 4.0; / 球門一側(cè)長度是4.0,實際長度是2 * 4.0const double CPNZWIDTH = 20.0; / 大禁區(qū)的寬度const double CHALFPNZWIDTH = 10.0; / 大禁區(qū)的半寬度const double CPNZLEN = 8.0; / 大禁區(qū)的長度const double CSPNZWIDTH = 12.24; / 小禁區(qū)的寬度const double CHALFSPNZWIDTH = 6.12; / 小禁區(qū)的半寬度const double CSPNZLEN = 5.2; / 小禁區(qū)的長度const double CFLDWIDTH = 34.0; / 場地寬度const double CHALFFLDWIDTH = 17.0; / 一半場地寬度const double CFLDLEN = 52.0; / 場地長度const double CHALFFLDLEN = 26.0; / 一半場地長度const double CDOORY1 = CHALFFLDWIDTH - CDOORWIDTH; / 上門柱const double CDOORY2 = CHALFFLDWIDTH + CDOORWIDTH; / 下門柱l 模型1. 運動模型每一個仿真步長內(nèi), 每一個物體的運動按如下公式計算:這里,和 分別為物體在時刻的位置和速度。是一個用和指定的衰減參數(shù)。是物體的加速度, 它源自(由)于dash中的Power參數(shù)(當(dāng)物體是球員), 或kick命令(當(dāng)是球的時候), 遵從下面的公式:(axt, ayt) = Power * power_rate * (cos(t), sin(t)t是物體在timestep t上的方向, 并power_rate是dash_power_rate或從kick_power_rate計算. 當(dāng)為球員的時候, 它就是球員面向的方向. 當(dāng)為球的時候, 它的方向按下述公式給出:tball =tkicker + Directiontball 和tkicker分別是球和踢球者的方向, Direction是kick命令的第二個參數(shù).2. 運動噪聲模型為了反映真實世界的物體的意外運動, 往運動物體和指令的參數(shù)中增加了噪聲. 有關(guān)運動的噪聲在方程4.18中被加入:(ut+1x; ut+1y) = (vtx ; vty ) + (atx; aty) + (rrmax; rrmax)這里, rmax是在-rmax, rmax上, 具有統(tǒng)一屬性的隨機數(shù)字. rmax是依據(jù)物體速度量的參數(shù), 公式如下:rmax = rand * |(vtx , vty )|這里, rand是由play_rand和ball_rand給出的參數(shù).噪聲也象下面那樣被加入一個指令的Power和Moment參數(shù):argument = (1 + rrand) * argument試驗平臺中關(guān)閉了運動噪聲,而將平臺設(shè)置中視覺噪聲去掉的話就是一個理想模型3. 碰撞模型如果在一個仿真周期結(jié)束的時候, 兩個物體重疊, 那么它們被移動回來, 直到不重疊. 那么速度的大小將變?yōu)樵瓉淼?.1倍,且方向取相反方向。 注意, 這是可能的: 一個球穿過一個球員, 只要球和球員在仿真周期末尾決不重疊。發(fā)生碰撞后,將被如下顯示出:球員間碰撞球員與球碰撞4. 球員跑動模型(Dash model)與體力模型(Stamina model)l 跑動模型(Dash model)用在球員向自己所對方向加速的命令,把加速的力量作為一個參數(shù)。加速力量的有效范圍在和之間。每個球員執(zhí)行命令都會消耗一定數(shù)量的體力。每場比賽的開始,每個球員的體力被設(shè)為。如果球員加速向前奔跑(power0),體力將會減少power。如果球員向后加速奔跑(power 0.0 ) ? dPower : -2 * dPower ; if( m_dStamina 0 ) m_dStamina = 0; / stamina below recovery threshold, lower recovery if( m_dStamina CRECOVERMIN) m_dRecovery -= CRECOVERDEC; / stamina below effort decrease threshold, lower effort if( m_dStamina CEFFORTMIN ) m_dEffort -= CEFFORTDEC; / stamina higher than effort incr threshold, raise effort and check maximum if( m_dStamina = CEFFORTINCTHR * CSTAMINAMAX & m_dEffort 1.0 ) m_dEffort = 1.0; / increase stamina with (new) recovery value and check for maximum m_dStamina += m_dRecovery*CSTAMINAINCMAX; if ( m_dStamina CSTAMINAMAX ) m_dStamina = CSTAMINAMAX;5. 踢球模型(Kick model)踢球命令含有兩個參數(shù):踢球球員想要踢球的力量(在minpower和maxpower之間),踢球的角度。角是以度的形式給出,并且在minmoment和maxmoment之間。一旦踢球命令到達server,如果球在踢球球員的可踢范圍內(nèi),那么踢球命令將被執(zhí)行。假如踢球球員和球之間的距離在0和kick_able_margen之間,對于球員球是可以踢到的。為了計算區(qū)域內(nèi)的距離,我們必須知道球員和球之間的距離,我們計算出人和球外表之間的最近距離。那么,它們之間的距離就是兩個物體中心距離減去球的半徑再減去球員的半徑。對于踢球首先要計算的就是踢球的有效力度(ep):ep kick powerkick_power_rate;如果球不是在球員的正前方,踢球的有效力度將會減少一定的數(shù)量,而這個減少的數(shù)量取決于球與球員之間的相對距離。如果球相對于球員的相對角度為零,例如,球在球員的正前方,踢球的有效力度將保持不變。相對角度相差越大,踢球的有效力度就減少的越多。最差的情況就是球在球員的后面(角度為180):有效力度將減少25。第二個影響踢球的有效力度就是球與球員之間的相對距離這個參數(shù):明顯地,球員能夠踢到球的距離在0到kickable_margin之間。如果距離為零,那么踢球有效力度不會將少。球離球員的距離越遠(yuǎn),踢球有效力度減少的就越多。如果兩者之間的距離到達最大kickable_margin,那么踢球的有效力度將減少原來的25。綜上可見最差的踢球情況就是球員離球最遠(yuǎn)而且還背對著球,這樣只有50的踢球力量能用。對于有效踢球力度我們可以用下面公式來表示。(dir_diff表示球和球員之間的角度差,dist_ball表示球和球員間的距離差。0=dir_diff=180 , 0=dist_diff=kickable_margin)有效踢球力度用在計算加速度ni,在每個周期n這個加速度矢量將加上球的全局加速度n 。(注意,如果存在多個隊員在同一個周期可以踢球,他們踢球的力量為矢量疊加)。在從周期n到周期n1的過渡中,加速度n被應(yīng)用于:1n被限制在最大值baccel_max以內(nèi),現(xiàn)在最大加速度的值就等于有效踢球力度的最大值。2當(dāng)前球的速度n要加上 n,n的值被限制在最大值ball_speed_max。3噪聲也要被加到n上去。噪聲矢量的方向和長度應(yīng)在-|n |*ball_rand|n |*ball_rand。4球的新坐標(biāo)位置n+1是其舊的坐標(biāo)n加上速度矢量n 。(例如:對于球來說兩個周期最大的距離差是ball_speed_max)。5ball_decay是用在球上的:n1 nball_decay。加速度n+1被設(shè)為零。踢球成功如5號員顯示,踢球失敗如3號隊員顯示參數(shù)如下:const double CMAXBALLV = 2.7; / 球最大速度const double CMAXBALLACC = 2.7; / 球最大加速度const double CBALLDECAY = 0.94; / 球速衰減系數(shù)const double CBALLSIZE = 0.085; / 球的尺寸const double CBALLRAND = 0.05; / 球的運動噪聲系數(shù)從踢球模型和當(dāng)前的參數(shù)設(shè)定來看,仍舊可以利用許多小的踢球動作來實現(xiàn)配合踢球。例如,先停球,然后踢到一個可踢范圍內(nèi)的更加有利的位置,然后再踢到預(yù)計的位置。另一種可能就是也可以用一個配合將球加速到最大而不停球。6. 轉(zhuǎn)身模型(Turn model)當(dāng)球員用dash朝自己身體方向加速時,turn用來改變球員自身的方向。Turn的參量是力矩,有效值在minmoment 和 maxmoment之間。如果球員不移動,力矩就等于球員轉(zhuǎn)動的角度。然而,當(dāng)移動時,會有轉(zhuǎn)動慣量去抑制轉(zhuǎn)動。特別的,實際球員所轉(zhuǎn)過的角度如下:actual_angle = moment/(1.0+inertia_moment*player_speed) inertia_moment是一個參數(shù),默認(rèn)值5.0。因此,當(dāng)球員的速度是1.0時,他所能轉(zhuǎn)的有效角度大小為30,方向可以是順時針或逆時針。然而,在同一個周期內(nèi),由于不能再執(zhí)行dash和turn命令,所以在執(zhí)行turn時球員最快速度只能是player_speed_maxplayer_decay,這就意味著對于一個默認(rèn)的球員他的默認(rèn)轉(zhuǎn)動角度只有60。參數(shù)如下:const double CINERTIAMOMENT= 5.0; / 轉(zhuǎn)身慣性參數(shù)const double CMAXMOMENT = 180.0; / 命令最大轉(zhuǎn)身角度const double CMINMOMENT = -180.0; / 命令最小轉(zhuǎn)身角度7. 守門員撲球模型(Catch model)各隊1號隊員為守門員,守門員在自己的大禁區(qū)內(nèi)有撲球的能力。當(dāng)球處于守門員正向夾角catch_max_moment和catch_min_moment之間,且球距離守門員的距離在catch_able_margin內(nèi),即可撲球(成功率為catch_probability)。每守門員連續(xù)撲球不能超過max_catch_time(只要球不出大禁區(qū)均算連續(xù)撲球),且兩次撲球的時間間隔不得少于catch_ban_cycle。撲球后球速將被設(shè)為零,守門員將移動到可控球的范圍內(nèi)。且一切在己方大禁區(qū)內(nèi)的對方球員均將被移出大禁區(qū)。參數(shù)如下:const double CCATCHABLEMARGIN = 1.5; / 守門員的撲球范圍const double CCATCHMAXMOMENT = 90; / 守門員撲球的最大夾角const double CCATCHMINMOMENT = -90; / 守門員撲球的最小夾角const double CCATCHPROBABILITY = 1.0; / 守門員撲球成功率const int CCATCHBANCYCLE = 5; / 兩次撲球間隔時間const int CMAXCATCHTIME = 2; / 最多連續(xù)撲球次數(shù)l 命令結(jié)構(gòu)struct TCommand CommandTypeT CommandType; /命令種類:Stay,Turn,Kick,Dash,Catch double ComParam0; /命令參數(shù)0 double ComParam1; /命令參數(shù)1;其中:Stay : 無參數(shù) Turn : ComParam0 : angTurnKick : ComParam0 : angKick ComParam1 : powerDash : ComParam0 : powerCatch: 無參數(shù)l 信息結(jié)構(gòu)1. 球的信息typedef struct Vector pos; / 坐標(biāo)Vector vel; / 速度bool bCarsh; / 是否發(fā)生碰撞 BallState;2. 我方隊員信息typedef struct Vector pos; / 坐標(biāo)Vector vel;/ 速度double d
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院護工保密協(xié)議書范本(3篇)
- 舞蹈新生班主題課程設(shè)計
- 藝術(shù)與設(shè)計課程設(shè)計案例
- 自然探索團隊課程設(shè)計
- 簡易課程設(shè)計
- 英語詞匯班課程設(shè)計
- 正太分布課程設(shè)計
- 綠色蟈蟈課程設(shè)計
- 財務(wù)制度匯編
- 《刑罰的體系與種類》課件
- 鄧州市龍理鄉(xiāng)第一初級中學(xué)-2025年春節(jié)寒假跨學(xué)科主題實踐作業(yè)模板【課件】
- 2024年中央經(jīng)濟工作會議精神解讀
- 2023-2024學(xué)年廣東省深圳市福田區(qū)八年級(上)期末歷史試卷
- 公司安全事故隱患內(nèi)部舉報、報告獎勵制度
- 歷史常識單選題100道及答案解析
- 2024年陜西榆林市神木市公共服務(wù)輔助人員招聘775人歷年高頻難、易錯點500題模擬試題附帶答案詳解
- 福建省泉州市2023-2024學(xué)年高一上學(xué)期期末質(zhì)檢英語試題(解析版)
- GA 2139-2024警用防暴臂盾
- 2024年首都機場集團招聘筆試參考題庫附帶答案詳解
- GB 6944-2012 危險貨物分類和品名編號(高清版)
- 建筑制圖學(xué)習(xí)基礎(chǔ)實訓(xùn)報告
評論
0/150
提交評論