水上機器魚5V5技術(shù)文檔_第1頁
水上機器魚5V5技術(shù)文檔_第2頁
水上機器魚5V5技術(shù)文檔_第3頁
水上機器魚5V5技術(shù)文檔_第4頁
水上機器魚5V5技術(shù)文檔_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、水上機器魚5V5技術(shù)文檔一、 仿真環(huán)境仿真環(huán)境是仿真使命運行所處的虛擬環(huán)境,其中包括仿真場地(模擬比賽或?qū)嶒炗盟氐膶ο螅⒘銈€或多個仿真水球(模擬比賽或?qū)嶒炗盟虻膶ο螅?、零個或多個仿真方形障礙物(模擬比賽或?qū)嶒炗梅叫握系K物的對象)、零個或多個仿真圓形障礙物(模擬比賽或?qū)嶒炗脠A形障礙物的對象)。 1. 仿真機器魚模擬比賽或?qū)嶒炗脵C器魚的對象。 2. 仿真循環(huán)仿真使命運行過程中所有仿真動作順序執(zhí)行一遍的過程。 3. 仿真周期理論上考慮為比單個仿真循環(huán)所耗時間(與運行軟硬件環(huán)境有關(guān),不能精確確定,在相同環(huán)境下,每次運行也不精確相同)預(yù)估最大值稍大的確定時間間隔(如 100 毫秒)。當前平臺仿真循

2、環(huán)在推薦的軟硬件配置下所耗時間大約在 10-20 毫秒之間,為簡化線程同步,在仿真使命的公共參數(shù)類中設(shè)置了一個成員MsPerCycle ,保存一個初始化仿真使命時傳入的整數(shù)值,稱為“每周期毫秒數(shù)”,實際運行時的仿真周期值不確定,為MsPerCycle 值加上當前周期仿真循環(huán)所耗時間,通常MsPerCycle 都取100 毫秒,仿真周期值大約在 110-120 毫秒之間。仿真使命倒計時以根據(jù)MsPerCycle 計算出來的總周期數(shù)遞減的方式進行,故界面上顯示的倒計時牌并不是按精確的世界時間遞減。 5. 仿真動作包括將策略計算出來的決策命令拷貝到每支隊伍每條仿真機器魚對象本身的決策字段(后續(xù)計算都

3、是直接使用仿真機器魚對象自身的決策命令)、對所有動態(tài)對象(目前包括每支隊伍的所有仿真機器魚、仿真環(huán)境中仿真水球列表的所有仿真水球)進行運動學計算、對所有對象(包括每支隊伍的所有仿真機器魚、仿真環(huán)境中所有對象)相互進行碰撞處理(包括碰撞檢測和碰撞響應(yīng))。 以仿真使命為中心,URWPGSim2D的設(shè)計采用面向?qū)ο笏枷?。從對象建模的角度看,包括仿真機器魚、仿真環(huán)境和仿真使命(比賽或?qū)嶒烅椖浚┤惸P?,以仿真使命模型為中心。仿真使命包括仿真機器魚隊伍列表和仿真環(huán)境。三類模型各包括一個頂層模型分別為仿真機器魚基類RoboFish 、仿真環(huán)境基類 SimEnvironment 和仿真使命基類 Missio

4、n。類RoboFish 定義了各種具體仿真使命所需仿真機器魚的公共特性(用類的屬性表示)和公共行為(用類的方法表示)。類 SimEnvironment 定義了各種具體仿真使命所需仿真環(huán)境的公共特性(仿真環(huán)境不需要定義行為)。類Mission定義了各種具體仿真使命的公共特性和公共行為。 仿真機器魚和仿真環(huán)境的公共行為很少或不需要定義,而仿真使命的公共行為則很多。故基類RoboFish 和SimEnvironment 雖然從形式上實現(xiàn)了IRoboFish 和ISimEnvironment 接口,但這兩個接口沒有定義任何方法;而基類 Mission實現(xiàn)了 IMission 接口,該接口定義了諸多方法

5、。部分方法在基類Mission中提供具體實現(xiàn),另一部分方法則在基類Mission中只提供虛函數(shù)實現(xiàn),由具體仿真使命類提供重載(override)的具體實現(xiàn)。 定義了一個泛型類Team 用于將仿真機器魚組成隊伍。該類有一個 TFish類型的列表(List)成員 Fishes ,保存一支隊伍的全部仿真機器魚對象;有一個隊伍公共參數(shù)(TeamCommonPara )類型的成員 Para ,保存一支隊伍的各項特性參數(shù)如隊伍名稱、仿真機器魚數(shù)量、當前得分等。 仿真環(huán)境包括仿真場地、仿真水球、仿真障礙物和仿真通道等元素。仿真環(huán)境基類SimEnvironment 有一個仿真場地 Field類型的成員Fiel

6、dInfo ,保存仿真場地對象;有一個仿真水球Ball 類型的列表(List)成員 Balls。 仿真使命基類Mission 有一個仿真機器魚基類RoboFish 組成的隊伍列表(ListTeam )成員TeamsRef;有一個仿真環(huán)境基類SimEnvironment 類型的成員EnvRef;有一個仿真使命公共參數(shù) MissionCommonPara 類型的成員CommonPara。 具體仿真使命類(如 3VS3 比賽項目的仿真使命類Match3V3)繼承基類 Mission,相應(yīng)的具體仿真機器魚類(如Fish3V3)繼承基類 RoboFish ,具體仿真環(huán)境類(如Environment3V3

7、 )繼承基類SimEnvironment 。 以仿真循環(huán)為主線 仿真使命啟動運行后,仿真循環(huán)將周期性地持續(xù)進行,直到設(shè)定的仿真時間耗完、人為決定暫停/ 停止。 仿真循環(huán)將所有仿真動作執(zhí)行一遍,包括如下步驟。:1. 分配決策值SetDecisionsToFishes 。 2. 對仿真機器魚運動學參數(shù)進行計算ProcessFishLocomotion 。 3. 對仿真水球運動學參數(shù)進行計算ProcessBallLocomotion 。 4. 處理場上所有對象間的碰撞包括檢測和響應(yīng)碰撞ProcessCollision 。 5. 處理當前仿真使命特有的規(guī)則如比賽犯規(guī)計分等ProcessControlR

8、ules。 6. 處理策略調(diào)用,區(qū)分本地調(diào)用和遠程調(diào)用。 7. 處理界面動態(tài)數(shù)據(jù)更新。 二、策略編寫 1. 策略是什么 內(nèi)容上看,策略是用于控制參與當前仿真使命的仿真機器魚完成任務(wù)的算法代碼。形式上看,策略是可在服務(wù)端和客戶端加載的dll文件。 2. 策略調(diào)用方式 I本地模式 服務(wù)端URWPGSim2DServer界面上“Referee Strategy”選擇“Local”。本地模式下,仿真使命所有參與隊伍的策略都在服務(wù)端加載,和URWPGSim2DServer.exe 運行于同一進程空間,由于仿真循環(huán)也運行在URWPGSim2DServer.exe 進程空間中,所有策略和仿真循環(huán)運行于同一進

9、程空間。于是所有隊伍的所有仿真機器魚控制指令及仿真循環(huán)運行指令均來自同一進程,因此本地模式是集中式仿真模式。 II服務(wù)器模式 服務(wù)端URWPGSim2DServer界面上“RefereeStrategy”選擇“Remote”。遠程模式下,必須啟動當前仿真使命參與隊伍數(shù)量同樣多的URWPGSim2DClient.exe進程,用于加載各支隊伍的策略。這些進程可以與服務(wù)端進程處于同一臺電腦,也可以分別位于不同電腦,只要這些電腦處于同一局域網(wǎng)(理論上可以運行于廣域網(wǎng)上,尚未測試)內(nèi)。每支隊伍的策略,和加載它的URWPGSim2DClient.exe進程運行于同一進程空間。于是每支隊伍的所有仿真機器魚控

10、制指令獨立于仿真循環(huán)運行指令,各支隊伍的仿真機器魚控制指令也互相獨立,但隊伍內(nèi)部各仿真機器魚的控制指令則來自同一進程。因此遠程模式是半分布式仿真模式。 若URWPGSim2DClient.exe 進程與URWPGSim2DServer.exe 進程處于不同電腦,則運行URWPGSim2DClient.exe 進程電腦上的./URWPGSim2D/bin/Sim2DClt.manifest.xml 文件中的http:/ localhost :50000/Sim2DSvr 配置節(jié),localhost 需要修改成URWPGSim2DServer.exe 進程所在電腦的 IP 或主機名。 3. 異步調(diào)

11、用 無論是本地模式還是遠程模式,都是采用異步方式。 I本地模式,進程通過為每支隊伍啟動一個Arbiter.Receiver,異步調(diào)度 CCR線程池里的線程來為每支隊伍分別執(zhí)行 GetLocalDecision 運行決策算法獲得決策值。GetLocalDecision與仿真循環(huán)是異步關(guān)系,執(zhí)行結(jié)果是將獲得的決策數(shù)組填充在一片公共空間DecisionRef 中,而仿真循環(huán)則通過SetDecisionsToFishes 方法從 DecisionRef將最近獲得的決策值分配給相應(yīng)隊伍的仿真機器魚。對于 2 支及2 支以上隊伍參與的仿真使命,每個仿真周期各支隊伍的GetLocalDecision執(zhí)行順序

12、并不確定。 II遠程模式,涉及比較復(fù)雜的 CCR 和DSS 通信過程,調(diào)用入口代碼在Sim2DSvrService.NextStepProcessDetail 方法中,服務(wù)端 URWPGSim2DServer.exe 進程通過SpawnIterator 異步調(diào)度Sim2DSvrService.Missi onParaNotification 方法執(zhí)行,向所有客戶端通知當前仿真使命的Mission對象值(全部仿真環(huán)境和過程信息均在此對象中)??蛻舳薝RWPGSim2DClient.exe進程的Sim2DCltService服務(wù)實例收到MissionParaNotification 后,通過Spa

13、wnIterator 異步調(diào)度 Sim2DCltService.AnnounceDecisionToServer 方法執(zhí)行,獲取決策數(shù)組以ClientAnnounceDecision 類型的消息發(fā)送給服務(wù)端。服務(wù)端URWPGSim2DServer.exe 進程的Sim2DSvrService服務(wù)實例收到ClientAnnounceDecision后,CCR調(diào)度器異步調(diào)度線程池里的線程來執(zhí)行 ClientAnnounceDecisionHandler,將收到的決策數(shù)組填充到公共空間DecisionRef中,供仿真循環(huán)通過SetDecisionsToFishes 分配給相應(yīng)隊伍的仿真機器魚。前述過

14、程還不包括客戶端啟動時,主動連接服務(wù)端,請求和服務(wù)端建立三、說明1. 類Strategy 的實例在加載完畢后一直存在于內(nèi)存中,除非仿真使命運行過程中更換策略,因此,可以自定義私有成員變量保存必要信息。 2. GetTeamName接口用于設(shè)置隊伍名稱。將其中的“3VS3 Test Team ”(不含引號)替換成隊伍名稱即可。 3. GetDecision接口用于生成Strategy 對象對應(yīng)的隊伍里所有仿真機器魚的決策數(shù)據(jù)。決策過程較復(fù)雜的情況下,建議將各種子過程封裝成Strategy 類的Private 方法,由GetDecision 或子過程調(diào)用。 由于Strategy 類引用了URWPG

15、Sim2D.Common.dll、URWPGSim2D.StrategyLoader 這兩個組件,它們均具有強名稱(使用%URWPGSim2D%URWPGSim2D.snk進行了簽名,強名稱相關(guān)介紹詳見MSDN),因此 URWPGSim2D主程序(包括前述兩個組件)版本號更新后,策略 dll文件,必須對相應(yīng)的Strategy 類重新添加引用,重新生成,才能正常加載。四、策略數(shù)據(jù)1. 策略編寫工作直接目標是給當前隊伍決策數(shù)組decisions 各元素填充決策值,即給Strategy 類當前對象對應(yīng)的仿真使命參與隊伍各仿真機器魚生成控制指令,仿真機器魚的控制指令是一個Decision 類型的值。

16、2. 決策數(shù)據(jù)類型Decision 包括兩個int 成員,VCode 為速度檔位值,TCode 為轉(zhuǎn)彎檔位值。 3. VCode 取值范圍 0-14 共15個整數(shù)值,每個整數(shù)對應(yīng)一個速度值,速度值整體但非嚴格遞增。有個別檔位值對應(yīng)的速度值低于比它小的檔位值對應(yīng)的速度值,速度值數(shù)據(jù)來源于實驗。 4. TCode 取值范圍 0-14 共15個整數(shù)值,每個整數(shù)對應(yīng)一個角速度值。整數(shù) 7 對應(yīng)直游,角速度值為0,整數(shù)6-0,8-14 分別對應(yīng)左轉(zhuǎn)和右轉(zhuǎn),偏離7 越遠,角速度值越大。 5. 任意兩個速度/ 轉(zhuǎn)彎檔位之間切換,都需要若干個仿真周期,才能達到穩(wěn)態(tài)速度/ 角速度值。目前運動學計算過程決定穩(wěn)態(tài)速

17、度/ 角速度值接近但小于目標檔位對應(yīng)的速度/ 角速度值。 6. 禁止使用原地打轉(zhuǎn)功能,即不能讓仿真機器魚速度為 0 而角速度不為 0 ;平臺做了限制,速度值低于1 檔的穩(wěn)態(tài)速度時,角速度被強制置 0;所以不要試圖把速度降到0 ,然后只給角速度進行轉(zhuǎn)彎,這樣做的結(jié)果是仿真機器魚會原地不動。 7. 場地坐標系及點和向量定義。以矩形場地中心為坐標原點,正右為正X 軸,正下為正Z 軸;從正 X 到負X 軸,順時針為 0,逆時針為 0-??紤]與 MRDS 中的三維坐標系一致,水平面用XOZ表示,Y 軸作為第三維。程序中涉及向量和點的定義,都使用XNA庫中的Vector3類型,用到其中的 X 和Z 維,Y

18、 維均置為0 。二維點和向量與三位點和向量之間的轉(zhuǎn)換,二維的X 與三維的X 對應(yīng),二維的Y 與三維的Z 對應(yīng)。 8. 對抗性仿真使命的策略,一定要判斷己方所處半場,根據(jù)所處半場確定目標球門。根據(jù)目標球門設(shè)計仿真機器魚的行為及相關(guān)決策算法。 9. GetDecision 接口的int 類型的參數(shù) teamId ,表示當前 Strategy 對象對應(yīng)的隊伍在服務(wù)端運行著的仿真使命所有參與隊伍中的編號(從0 開始)。teamId 的初始值,Local 模式時,由策略加載順序確定;Remote模式時,由客戶端啟動順序確定。2 支隊伍參與的對抗性仿真使命,交換半場后,teamId 由服務(wù)端或客戶端策略調(diào)

19、用入口處相應(yīng)半場處理代碼進行值的交換,傳到 GetDecision 的teamId 已經(jīng)正確代表當前時刻當前Strategy 對象對應(yīng)的隊伍編號。10. GetDecision接口的Mission類型的參數(shù) mission,包含服務(wù)端當前運行著的仿真使命公開給策略使用的全部信息。mission.TeamsRefteamId 指向當前Strategy 對象對應(yīng)的仿真使命參與隊伍Team對象,通過它可以訪問到己方隊伍及其全部仿真機器魚的所有公開信息。當前運行著的仿真使命為2 支隊伍參與的對抗性項目時,mission.TeamsRef(1 + teamId) % 2指向?qū)Ψ疥犖榈腡eam對象,通過它

20、可以訪問到對方隊伍及其全部仿真機器魚的所有公開信息。11. 表 4-1 是策略中可以使用的全部參數(shù),所有成員的引用,均以mission.開頭,如mission.CommonPara.TeamCount;其中“CommonPara.*”一類的成員表示隨后若干右對齊的成員名稱,是以CommonPara.*的形式存在的,如CommonPara.MsPerCycle ,其完整引用為mission.CommonPara.MsPerCycle。MissionCommonPara 、Team、TeamCommonPara 、RoboFish 、Field、RetangularObstacle 、Rounde

21、dObstacle等類型還有其他成員,不向策略公開,那是只與服務(wù)端處理有關(guān)的變量,不要試圖使用它們,因為服務(wù)端向客戶端或本地策略傳遞Mission類型參數(shù)的過程包含一個序列化和反序列化的過程,這些不向策略公開的參數(shù),相應(yīng)的成員沒有序列化和反序列化代碼支持。 12. 具體仿真使命特有的參數(shù)(如水球3VS3 等對抗性項目中指示當前比賽階段值的標志量CompetitionPeriod)可以通過 HtMissionVariables鍵名 得到,然后可通過Convert.To*轉(zhuǎn)換成其值的原始數(shù)據(jù)類型使用。如水球3VS3 項目的當前比賽階段值通過如下方式獲得:int matchPeriod = Convert.ToInt32(mission. HtMissionVariablesCompetitionPeriod);。每個具體仿真使命需要傳遞給策略的特有參數(shù)由仿真使命設(shè)計人員確定,并在仿真使命規(guī)則文檔中描述其意義和用法。 五、調(diào)試策略1. 策略可以先在Local模式下粗調(diào),邏輯基本正確了,再到 Remote模式下進行適應(yīng)性測試和參數(shù)修正。比賽策略一定要在Remote模式下進行過測試;對抗性比賽策略一定要測試過半場交換后的行為是否與預(yù)期一致。 2. 由于一個Solution 只可以設(shè)置一個啟動項目,而一個Solutio

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論