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

下載本文檔

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

文檔簡介

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

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

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

4、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)。定義了一個泛型類TeamvTFish用于將仿真機器魚組成隊伍。該類有一個TFish類型的列表(ListTFish成員Fishes,保存一支隊伍的全部仿真機器魚對象; 有一個隊伍公共參數(shù)(TeamCommonPara)類型的成員Para,保存一支隊伍的 各項特性參數(shù)如隊伍名稱、仿真機器魚數(shù)量、當前得分等。仿真環(huán)境包括仿真場地、仿真水球、仿真障礙物和仿真通道等元素。仿真環(huán)境基 類SimEnvironment有一個仿真場地 Field類型的成員Fi

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

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

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

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

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

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

12、式,涉及比較復雜的CCR和DSS通信過程,調(diào)用入口代碼在Sim2DSvrService.NextStepProcessDeta方法中,服務端 URWPGSim2DServer.exe 進程通過 SpawnIterator 異步調(diào)度 Sim2DSvrService.MissionParaNotification 方法 執(zhí)行,向所有客戶端通知當前仿真使命的Mission對象值(全部仿真環(huán)境和過程信息均在此對象中)??蛻舳薝RWPGSim2DClient.ex進程的Sim2DCltServicel艮務 實例收至U MissionParaNotification 后,通過 Spawnlterator

13、異步調(diào)度 Sim2DCItService.A nn ou nceDecisio nToServer方法執(zhí)行,獲取決策數(shù)組以 ClientAnnounceDecision類型的消息發(fā)送給服務端。服務端 URWPGSim2DServer.exe 進程的 Sim2DSvrService 服務實例收至U Clie ntA nnoun ceDecision后,CCR調(diào)度器異步調(diào)度線程池里的線程來執(zhí)行 ClientAnnounceDecisionHandie,將收到的決策數(shù)組填充到公共空間DecisionRef中,供仿真循環(huán)通過 SetDecisio nsToFishes分配給相應隊伍的仿真機器魚。前述

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

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

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

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

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

19、表當前時刻當前 Strategy對象對應的隊伍編號。10. GetDecision接口的Mission類型的參數(shù) mission,包含服務端當前運行著的仿真使命公開給策略使用的全部信息。mission.TeamsRefteamld指向當前Strategy對象對應的仿真使命參與隊伍 TeamvRoboFish對象,通過它可以訪問到 己方隊伍及其全部仿真機器魚的所有公開信息。當前運行著的仿真使命為2支隊伍參與的對抗性項目時,missio n.TeamsRef(1+ teamId) % 2指向?qū)Ψ疥犖榈腡eamvRoboFish對象,通過它可以訪問到對方隊伍及其全部仿真機器魚的所有公開信息。11.

20、表4-1是策略中可以使用的全部參數(shù),所有成員的引用,均以mission.開頭,女口 missi on. Com mon Para.TeamCou;其中 “ Common Para.* 類的成員表示 隨后若干右對齊的成員名稱,是以Commo nPara.*的形式存在的,如 CommonPara.MsPerCycle,其完整 引用為 mission.CommonPara.MsPerCycle Missi on Com mon Para、Team TeamCom mon Para、RoboFish、Field、 RetangularObstacle、RoundedObstacle等類型還有其他成員,

21、不向策略公開,那 是只與服務端處理有關的變量,不要試圖使用它們,因為服務端向客戶端或本地 策略傳遞Mission類型參數(shù)的過程包含一個序列化和反序列化的過程,這些不向 策略公開的參數(shù),相應的成員沒有序列化和反序列化代碼支持。12. 具體仿真使命特有的參數(shù)(如水球3VS3等對抗性項目中指示當前比賽階段 值的標志量 CompetitionPeriod)可以通過 HtMissionVariables鍵名得到,然 后可通過Convert.To*轉(zhuǎn)換成其值的原始數(shù)據(jù)類型使用。如水球3VS3項目的當前比賽階段值通過如下方式獲得:int matchPeriod = Convert.Tolnt32(missi

22、on.HtMissio nV ariablesCompetitio nPeriod);。每個具體仿真使命需要傳遞給策略的特有參數(shù)由仿真使命設計人員確定,并在仿真使命規(guī)則文檔中描述其意義和用法。五、調(diào)試策略1. 策略可以先在Local模式下粗調(diào),邏輯基本正確了,再到 Remote模式下進 行適應性測試和參數(shù)修正。比賽策略一定要在 Remote模式下進行過測試;對抗 性比賽策略一定要測試過半場交換后的行為是否與預期一致。2. 由于一個Solution只可以設置一個啟動項目,而一個 Solution里可能有若 干個策略Project ,所以調(diào)試時,一般可以在需要調(diào)試的策略 Project名稱上點 右

23、鍵,選擇“調(diào)試”,“啟動新實例”。3. 調(diào)試2支及以上隊伍參與的仿真使命策略時,一定要事先生成一個或多個 備用策略(最簡單的即可),被調(diào)試的策略,只能作為一支隊伍的策略加載一次, 否則在策略代碼中下的斷點,每個周期都會中斷多次,不利于跟蹤。六、系統(tǒng)標準函數(shù)數(shù)位于 URWPGSim2D.StrategyHelpe命名空間(URWPGSim2D.StrategyHelper.dll 下的Helpers類(靜態(tài)類)中。(詳細參見技術人員手冊)1. PoseToPose函 數(shù)也稱作位姿到位姿控制函數(shù),其作用是實現(xiàn)仿真機器魚從當前位姿到目標位 姿的精確控制。位姿到位姿的控制分為兩個階段: 第一階段,控制

24、仿真機器魚快 速游動到臨時目標點;第二階段,控制仿真機器魚游動至目標點。其中,臨時目 標點為最終目標位姿反向延長線上的某一點,其距離閾值可以調(diào)節(jié)。2. Dribble 函數(shù)也稱作帶球函數(shù),其作用是實現(xiàn)仿真機器魚的帶球控制。 在某些比賽項目中, 若想控制仿真機器魚帶球,則可調(diào)用此函數(shù)。在策略代碼Strategy類的成員函數(shù)(方法)中調(diào)用Dribble。使用推薦參數(shù)的調(diào)用代碼如下,可根據(jù)實際調(diào)試情況進行調(diào)整。附錄一:策略中可以使用的參數(shù)表成員躬稱類型總文CcmnwnPaiaM i ssionComtTiDii Pain寺前仿氏桂布處共參敦1 omninnPra.*risliCiitrcrTcajn

25、ini毎支仏伍仿真機器負數(shù)量MsPctCyclejnt蔭克關陰奄秒數(shù)Remai n in 區(qū) Tycl esmt當1前駅余仿真周軌數(shù)TcdinCiiuniml當冊仿戲便金藝與認伍哉量TtXMSemnfkinr肖肺仿直使血運行時間秒敵TcaiiisRciListTram當前仿真使命的全部怕苴氷球列義Mpi隔1】當賭仿真便命第i個仞真木球剎象UbstLKlcsbtCctLikl RrunularObiUl k、當前仿曲便命的部陸it方形障礙輛州表OHtac lc呂血訓i Rctangul a rf )bstac 1 c幷前仿貞便命第i個仿真ZT蛇障礙物對線)b 聯(lián)超 cleRiDurbdL.ist-Rn undcdC )bs lac le豈前仿氏便命的全部苗咒圖形障礙物列農(nóng)仃 bAtaclesRctundi)RLiintEeiiOhslLidc為柯仿克便命朗i個倩亞冏形障礙物對喩EnvRefHddlnfn.Ficldl.ciigthXMmint當前衍戌揚地x方向也度Field LeugthZMmin

溫馨提示

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

評論

0/150

提交評論