校賽仿真2D第二次培訓(xùn)技術(shù)部分.ppt_第1頁
校賽仿真2D第二次培訓(xùn)技術(shù)部分.ppt_第2頁
校賽仿真2D第二次培訓(xùn)技術(shù)部分.ppt_第3頁
校賽仿真2D第二次培訓(xùn)技術(shù)部分.ppt_第4頁
校賽仿真2D第二次培訓(xùn)技術(shù)部分.ppt_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

校賽仿真2D第二次培訓(xùn)技術(shù)部分,向server發(fā)送得命令,在SoccerTypes.h里面得commandT有著向server發(fā)送得所有得命令種類 不是所有得命令都需要用到,大概有一半得指令不會(huì)涉及到,是關(guān)于代碼得底層定位得,大家不用深究 最有用得命令型:CMD_DASH,CMD_TURN, CMD_TURNNECK, CMD_KICK, CMD_TACKLE等.,CMD_ILLEGAL,故名思意,是非法得命令,如 SoccerCommand soc(CMD_ILLEGAL); 那么這個(gè)soc就是一個(gè)空的命令,如果執(zhí)行ACT-putCommandInQueue(soc); 那么代碼會(huì)自行處理掉這個(gè)soc,就好像沒有運(yùn)行過這句指令一樣,下面解釋一下關(guān)于 ACT-putCommandInQueue(soc);,Soc就像前面定義得是一個(gè)命令 那么我們?nèi)绾巫宎gent(球員)運(yùn)行這個(gè)命令呢,我們只要 ACT-putCommandInQueue(soc); 就可以了. (每一周期只能發(fā)送一個(gè)主命令,后面在具體說),CMD_DASH,這個(gè)命令是讓球員能跑起來得核心命令 當(dāng)一個(gè)球員發(fā)送dash100時(shí),那么他就朝著身體朝向得到一個(gè)加速度,(具體參數(shù)看技術(shù)手冊),然后得到相應(yīng)得速度, 也就是說一直發(fā)送dash100得話球員會(huì)一直向著身體朝向向前跑 當(dāng)一個(gè)球員發(fā)送dash-100時(shí),那么他就朝著身體朝向得反方向得到一個(gè)加速度,CMD_TURN,這個(gè)命令是用來轉(zhuǎn)身得指令,但是注意了如果發(fā)CMD_TURN,180,并不是說是轉(zhuǎn)身180度,他和自身相應(yīng)得速度還有一定得關(guān)系 最大轉(zhuǎn)身角度為180到-180,跑動(dòng):跑向一點(diǎn),比如我們讓球員跑向(0,0)點(diǎn),可以用命令函數(shù)moveToPos(VecPosition(0,0),7.0) 實(shí)際上moveToPos這個(gè)函數(shù)就是組合了CMD_DASH和CMD_TURN而達(dá)到了跑動(dòng)得目的. 大致就是先轉(zhuǎn)向那個(gè)要跑得點(diǎn)然后dash,CMD_TURNNECK,這個(gè)命令是這次校賽和首屆校賽得最大不同之處,因?yàn)楝F(xiàn)在是局部視覺,所以需要通過agent不斷得轉(zhuǎn)動(dòng)脖子來盡量多得看到有用得信息 首先說明一下CMD_TURNNECK和CMD_TURN得不同 CMD_TURNNECK是轉(zhuǎn)動(dòng)脖子朝向 CMD_TURN是轉(zhuǎn)動(dòng)身體朝向,這是兩個(gè)不同得方向,主命令與復(fù)命令,CMD_TURNNECK這是講到得第一個(gè)副命令 主命令一周期只能發(fā)一個(gè),比如一個(gè)周期同時(shí)發(fā)送CMD_DASH和CMD_TURN的話,只會(huì)執(zhí)行一個(gè)命令. 不同得復(fù)命令一周期可以發(fā)送多個(gè),比如CMD_TURNNECK和CMD_SAY這兩個(gè)可以在一周起同時(shí)發(fā)送,當(dāng)我們發(fā)送CMD_TURN得命令時(shí),如果不發(fā)送CMD_TURNNECK命令時(shí),脖子朝向會(huì)和身體得轉(zhuǎn)動(dòng)而相應(yīng)得轉(zhuǎn)動(dòng) turnNeck還有其他得一些限制,如脖子和身體的夾角不能大于90度等 關(guān)于turnNeck得使用可以看一下turnNeckToPoint這個(gè)函數(shù),CMD_CHANGEVIEW,這個(gè)命令是改變視覺得角度得命令 由于這個(gè)命令得使用比較復(fù)雜,涉及到一些底層問題,所以我們已經(jīng)在程序內(nèi)部做了一定得處理(大家不用管) 視覺得模式是2次narrow(45度視角),一次normal(90度視角) 這是最好得視覺模式,大家不用改,只需要控制agent得脖子轉(zhuǎn)向就可以了,CMD_CATCH,這是守門員的專門命令 Catch的范圍是和守門員中心距離2米的一個(gè)圓,CMD_KICK,這個(gè)命令的目的就是發(fā)給球一個(gè)加速度 如果想要把球踢向(0,0),只要執(zhí)行kickTo(VecPosition(0,0),2.7)就可以了,2.7指得是球到達(dá)(0,0)后想要的速度,CMD_MOVE,這是在開場前,以及守門員抓住球后可以發(fā)的瞬時(shí)移動(dòng)得命令.,CMD_SAY,通訊時(shí)候用的命令,可以不用管,在通訊中已經(jīng)做了處理,CMD_TACKLE,鏟球命令 雖然在上一界校賽中沒有人用過,但是是一個(gè)非常有用的命令,不過對于初期代碼的開發(fā)幫助不大 具體的用法可以查技術(shù)手冊,CMD_ATTENTIONTO,可以說是聽誰的命令 只要會(huì)用listenTo命令就可以了 比如listenTo(一號(hào)隊(duì)員),命令的介紹就到這里 其他命令可以不用管,沒有幫助,帶球方法介紹,UVA底層得帶球函數(shù)dribble Dirbble函數(shù)可以選擇帶球角度和帶球方向,可以說是一個(gè)比較實(shí)際,好用的帶球函數(shù) Dribble主要思想就是向帶球方向發(fā)送kick命令,然后再去截球,這就實(shí)現(xiàn)了帶球. 當(dāng)然這種帶球方法完全沒有考慮對手,其他帶球思想介紹,人球一體 特點(diǎn):每周期都可以選擇發(fā)送kick或者dash命令,具體做法比較復(fù)雜,也沒有最好的算法,有興趣的可以找一下今年10月蘇州robocup 2D我們ZJUBase的比賽錄像,從中發(fā)現(xiàn)、學(xué)習(xí)點(diǎn)什么。,傳球策略,傳球動(dòng)作實(shí)際上就是由kickTo這一函數(shù)來實(shí)現(xiàn)的,比如kickTo(我方一號(hào)的位置),那么表現(xiàn)就為傳球給了一號(hào)球員 至于如何判斷能否傳這個(gè)球,有很多的判斷的方法,希望大家自己多研究,傳球條件判斷思路-截球周期差,傳球隊(duì)員假設(shè)以速度V給接球隊(duì)員傳球 接球隊(duì)員截到球的周期為N 對方所有球員最快截到球的周期為M 如果NM的情況,盡管是不安全的,但是對于前場的情況可能也要傳。,不論是帶球,截球,傳球,都是一系列kick,turn,dash命令得一個(gè)組合,不同得組合就可以得到截然不同得效果,通訊,通訊的程序在CommunicationSystem.h和CommunicationSystem.cpp中,具體用法見以后發(fā)布的文檔,這里說明一下原理. 首先,每2個(gè)agent之間是不能私自進(jìn)行通訊的,但是可以通過通訊的命令來使得agent之前可以有一定的通訊. 通訊發(fā)送的是10個(gè)字符,每個(gè)字符有74種狀態(tài),我們需要對所要發(fā)送的內(nèi)容先編碼,接收者再解碼,已達(dá)到通訊的目的,關(guān)于通訊得限制,信道的限制 1.聽到的信息是延遲一周期 2.只能聽到50米內(nèi)的人說話 3.每個(gè)周期一個(gè)人只能說一句話,每個(gè)人也只能聽到一句話 4.比如1號(hào)隊(duì)員listenTo了2號(hào)隊(duì)員,如果2號(hào)隊(duì)員說話了,那么他能聽到,如果2號(hào)沒有說話,那么1號(hào)會(huì)聽到其他說話隊(duì)員中隨機(jī)的一個(gè) 5.如果不發(fā)送listenTo,聽到隨機(jī)的一個(gè),其他可能遇到得問題,關(guān)于confidence Confidence在當(dāng)前周期看到時(shí)為1.0 當(dāng)沒有看到時(shí)Confidence每周期減0.01 比如getConfidence(OBJECT_BALL) =0.90,說明已經(jīng)10周期沒有看到球了,視覺的限制說明,視覺的得到是存在視覺誤差的,如距離10米的人的視覺誤差最大有1米 每次視覺的角度是不同的,現(xiàn)在的視覺模式是2次narrow(45度),一次normal(90度),只能看見在視角范圍內(nèi)的信息 20米內(nèi)能看清所有人的號(hào)碼 20米到40米號(hào)碼可能看不清楚,但隊(duì)名可以看清 40米以外一定看不見號(hào)碼,且隊(duì)名可能看不清楚 60米以外不能分辨敵友,比較重要的一些函數(shù)的簡單說明,1。moveToPos這個(gè)函數(shù)就是移動(dòng)到一點(diǎn)的函數(shù) 2。Intercept,就是截球的函數(shù) 3。kickTo,踢球的函數(shù),無論是傳球還是帶球都可以用這個(gè)函數(shù)來實(shí)現(xiàn) 4。turnBodyToPoint把身體朝向轉(zhuǎn)向一點(diǎn) 5。turnNeckToPoint把脖子朝向轉(zhuǎn)向一點(diǎn) 6。Dribble,帶球函數(shù) 7。SearchBall,找球函數(shù),此過程脖子不要轉(zhuǎn)動(dòng) (以上是在BasicPlayer.cpp中比較重要的函數(shù),其他一些相關(guān)的函數(shù)可以自己研究),8。getGlobalPosition,得到位置的函數(shù) 9。getOffSideX得到越位線坐標(biāo)的函數(shù) 10。getConfidence,得到一個(gè)球員可信度高低的函數(shù) 11。getStrategicPosition,得到基本策略點(diǎn)的函數(shù) 等

溫馨提示

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

評(píng)論

0/150

提交評(píng)論