




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、水上機器魚5V5技術文檔一、 仿真環境仿真環境是仿真使命運行所處的虛擬環境,其中包括仿真場地(模擬比賽或實驗用水池的對象)、零個或多個仿真水球(模擬比賽或實驗用水球的對象)、零個或多個仿真方形障礙物(模擬比賽或實驗用方形障礙物的對象)、零個或多個仿真圓形障礙物(模擬比賽或實驗用圓形障礙物的對象)。 1. 仿真機器魚模擬比賽或實驗用機器魚的對象。 2. 仿真循環仿真使命運行過程中所有仿真動作順序執行一遍的過程。 3. 仿真周期理論上考慮為比單個仿真循環所耗時間(與運行軟硬件環境有關,不能精確確定,在相同環境下,每次運行也不精確相同)預估最大值稍大的確定時間間隔(如 100 毫秒)。當前平臺仿真循
2、環在推薦的軟硬件配置下所耗時間大約在 10-20 毫秒之間,為簡化線程同步,在仿真使命的公共參數類中設置了一個成員MsPerCycle ,保存一個初始化仿真使命時傳入的整數值,稱為“每周期毫秒數”,實際運行時的仿真周期值不確定,為MsPerCycle 值加上當前周期仿真循環所耗時間,通常MsPerCycle 都取100 毫秒,仿真周期值大約在 110-120 毫秒之間。仿真使命倒計時以根據MsPerCycle 計算出來的總周期數遞減的方式進行,故界面上顯示的倒計時牌并不是按精確的世界時間遞減。 5. 仿真動作包括將策略計算出來的決策命令拷貝到每支隊伍每條仿真機器魚對象本身的決策字段(后續計算都
3、是直接使用仿真機器魚對象自身的決策命令)、對所有動態對象(目前包括每支隊伍的所有仿真機器魚、仿真環境中仿真水球列表的所有仿真水球)進行運動學計算、對所有對象(包括每支隊伍的所有仿真機器魚、仿真環境中所有對象)相互進行碰撞處理(包括碰撞檢測和碰撞響應)。 以仿真使命為中心,URWPGSim2D的設計采用面向對象思想。從對象建模的角度看,包括仿真機器魚、仿真環境和仿真使命(比賽或實驗項目)三類模型,以仿真使命模型為中心。仿真使命包括仿真機器魚隊伍列表和仿真環境。三類模型各包括一個頂層模型分別為仿真機器魚基類RoboFish 、仿真環境基類 SimEnvironment 和仿真使命基類 Missio
4、n。類RoboFish 定義了各種具體仿真使命所需仿真機器魚的公共特性(用類的屬性表示)和公共行為(用類的方法表示)。類 SimEnvironment 定義了各種具體仿真使命所需仿真環境的公共特性(仿真環境不需要定義行為)。類Mission定義了各種具體仿真使命的公共特性和公共行為。 仿真機器魚和仿真環境的公共行為很少或不需要定義,而仿真使命的公共行為則很多。故基類RoboFish 和SimEnvironment 雖然從形式上實現了IRoboFish 和ISimEnvironment 接口,但這兩個接口沒有定義任何方法;而基類 Mission實現了 IMission 接口,該接口定義了諸多方法
5、。部分方法在基類Mission中提供具體實現,另一部分方法則在基類Mission中只提供虛函數實現,由具體仿真使命類提供重載(override)的具體實現。 定義了一個泛型類Team 用于將仿真機器魚組成隊伍。該類有一個 TFish類型的列表(List)成員 Fishes ,保存一支隊伍的全部仿真機器魚對象;有一個隊伍公共參數(TeamCommonPara )類型的成員 Para ,保存一支隊伍的各項特性參數如隊伍名稱、仿真機器魚數量、當前得分等。 仿真環境包括仿真場地、仿真水球、仿真障礙物和仿真通道等元素。仿真環境基類SimEnvironment 有一個仿真場地 Field類型的成員Fiel
6、dInfo ,保存仿真場地對象;有一個仿真水球Ball 類型的列表(List)成員 Balls。 仿真使命基類Mission 有一個仿真機器魚基類RoboFish 組成的隊伍列表(ListTeam )成員TeamsRef;有一個仿真環境基類SimEnvironment 類型的成員EnvRef;有一個仿真使命公共參數 MissionCommonPara 類型的成員CommonPara。 具體仿真使命類(如 3VS3 比賽項目的仿真使命類Match3V3)繼承基類 Mission,相應的具體仿真機器魚類(如Fish3V3)繼承基類 RoboFish ,具體仿真環境類(如Environment3V3
7、 )繼承基類SimEnvironment 。 以仿真循環為主線 仿真使命啟動運行后,仿真循環將周期性地持續進行,直到設定的仿真時間耗完、人為決定暫停/ 停止。 仿真循環將所有仿真動作執行一遍,包括如下步驟。:1. 分配決策值SetDecisionsToFishes 。 2. 對仿真機器魚運動學參數進行計算ProcessFishLocomotion 。 3. 對仿真水球運動學參數進行計算ProcessBallLocomotion 。 4. 處理場上所有對象間的碰撞包括檢測和響應碰撞ProcessCollision 。 5. 處理當前仿真使命特有的規則如比賽犯規計分等ProcessControlR
8、ules。 6. 處理策略調用,區分本地調用和遠程調用。 7. 處理界面動態數據更新。 二、策略編寫 1. 策略是什么 內容上看,策略是用于控制參與當前仿真使命的仿真機器魚完成任務的算法代碼。形式上看,策略是可在服務端和客戶端加載的dll文件。 2. 策略調用方式 I本地模式 服務端URWPGSim2DServer界面上“Referee Strategy”選擇“Local”。本地模式下,仿真使命所有參與隊伍的策略都在服務端加載,和URWPGSim2DServer.exe 運行于同一進程空間,由于仿真循環也運行在URWPGSim2DServer.exe 進程空間中,所有策略和仿真循環運行于同一進
9、程空間。于是所有隊伍的所有仿真機器魚控制指令及仿真循環運行指令均來自同一進程,因此本地模式是集中式仿真模式。 II服務器模式 服務端URWPGSim2DServer界面上“RefereeStrategy”選擇“Remote”。遠程模式下,必須啟動當前仿真使命參與隊伍數量同樣多的URWPGSim2DClient.exe進程,用于加載各支隊伍的策略。這些進程可以與服務端進程處于同一臺電腦,也可以分別位于不同電腦,只要這些電腦處于同一局域網(理論上可以運行于廣域網上,尚未測試)內。每支隊伍的策略,和加載它的URWPGSim2DClient.exe進程運行于同一進程空間。于是每支隊伍的所有仿真機器魚控
10、制指令獨立于仿真循環運行指令,各支隊伍的仿真機器魚控制指令也互相獨立,但隊伍內部各仿真機器魚的控制指令則來自同一進程。因此遠程模式是半分布式仿真模式。 若URWPGSim2DClient.exe 進程與URWPGSim2DServer.exe 進程處于不同電腦,則運行URWPGSim2DClient.exe 進程電腦上的./URWPGSim2D/bin/Sim2DClt.manifest.xml 文件中的http:/ localhost :50000/Sim2DSvr 配置節,localhost 需要修改成URWPGSim2DServer.exe 進程所在電腦的 IP 或主機名。 3. 異步調
11、用 無論是本地模式還是遠程模式,都是采用異步方式。 I本地模式,進程通過為每支隊伍啟動一個Arbiter.Receiver,異步調度 CCR線程池里的線程來為每支隊伍分別執行 GetLocalDecision 運行決策算法獲得決策值。GetLocalDecision與仿真循環是異步關系,執行結果是將獲得的決策數組填充在一片公共空間DecisionRef 中,而仿真循環則通過SetDecisionsToFishes 方法從 DecisionRef將最近獲得的決策值分配給相應隊伍的仿真機器魚。對于 2 支及2 支以上隊伍參與的仿真使命,每個仿真周期各支隊伍的GetLocalDecision執行順序
12、并不確定。 II遠程模式,涉及比較復雜的 CCR 和DSS 通信過程,調用入口代碼在Sim2DSvrService.NextStepProcessDetail 方法中,服務端 URWPGSim2DServer.exe 進程通過SpawnIterator 異步調度Sim2DSvrService.Missi onParaNotification 方法執行,向所有客戶端通知當前仿真使命的Mission對象值(全部仿真環境和過程信息均在此對象中)。客戶端URWPGSim2DClient.exe進程的Sim2DCltService服務實例收到MissionParaNotification 后,通過Spa
13、wnIterator 異步調度 Sim2DCltService.AnnounceDecisionToServer 方法執行,獲取決策數組以ClientAnnounceDecision 類型的消息發送給服務端。服務端URWPGSim2DServer.exe 進程的Sim2DSvrService服務實例收到ClientAnnounceDecision后,CCR調度器異步調度線程池里的線程來執行 ClientAnnounceDecisionHandler,將收到的決策數組填充到公共空間DecisionRef中,供仿真循環通過SetDecisionsToFishes 分配給相應隊伍的仿真機器魚。前述過
14、程還不包括客戶端啟動時,主動連接服務端,請求和服務端建立三、說明1. 類Strategy 的實例在加載完畢后一直存在于內存中,除非仿真使命運行過程中更換策略,因此,可以自定義私有成員變量保存必要信息。 2. GetTeamName接口用于設置隊伍名稱。將其中的“3VS3 Test Team ”(不含引號)替換成隊伍名稱即可。 3. GetDecision接口用于生成Strategy 對象對應的隊伍里所有仿真機器魚的決策數據。決策過程較復雜的情況下,建議將各種子過程封裝成Strategy 類的Private 方法,由GetDecision 或子過程調用。 由于Strategy 類引用了URWPG
15、Sim2D.Common.dll、URWPGSim2D.StrategyLoader 這兩個組件,它們均具有強名稱(使用%URWPGSim2D%URWPGSim2D.snk進行了簽名,強名稱相關介紹詳見MSDN),因此 URWPGSim2D主程序(包括前述兩個組件)版本號更新后,策略 dll文件,必須對相應的Strategy 類重新添加引用,重新生成,才能正常加載。四、策略數據1. 策略編寫工作直接目標是給當前隊伍決策數組decisions 各元素填充決策值,即給Strategy 類當前對象對應的仿真使命參與隊伍各仿真機器魚生成控制指令,仿真機器魚的控制指令是一個Decision 類型的值。
16、2. 決策數據類型Decision 包括兩個int 成員,VCode 為速度檔位值,TCode 為轉彎檔位值。 3. VCode 取值范圍 0-14 共15個整數值,每個整數對應一個速度值,速度值整體但非嚴格遞增。有個別檔位值對應的速度值低于比它小的檔位值對應的速度值,速度值數據來源于實驗。 4. TCode 取值范圍 0-14 共15個整數值,每個整數對應一個角速度值。整數 7 對應直游,角速度值為0,整數6-0,8-14 分別對應左轉和右轉,偏離7 越遠,角速度值越大。 5. 任意兩個速度/ 轉彎檔位之間切換,都需要若干個仿真周期,才能達到穩態速度/ 角速度值。目前運動學計算過程決定穩態速
17、度/ 角速度值接近但小于目標檔位對應的速度/ 角速度值。 6. 禁止使用原地打轉功能,即不能讓仿真機器魚速度為 0 而角速度不為 0 ;平臺做了限制,速度值低于1 檔的穩態速度時,角速度被強制置 0;所以不要試圖把速度降到0 ,然后只給角速度進行轉彎,這樣做的結果是仿真機器魚會原地不動。 7. 場地坐標系及點和向量定義。以矩形場地中心為坐標原點,正右為正X 軸,正下為正Z 軸;從正 X 到負X 軸,順時針為 0,逆時針為 0-。考慮與 MRDS 中的三維坐標系一致,水平面用XOZ表示,Y 軸作為第三維。程序中涉及向量和點的定義,都使用XNA庫中的Vector3類型,用到其中的 X 和Z 維,Y
18、 維均置為0 。二維點和向量與三位點和向量之間的轉換,二維的X 與三維的X 對應,二維的Y 與三維的Z 對應。 8. 對抗性仿真使命的策略,一定要判斷己方所處半場,根據所處半場確定目標球門。根據目標球門設計仿真機器魚的行為及相關決策算法。 9. GetDecision 接口的int 類型的參數 teamId ,表示當前 Strategy 對象對應的隊伍在服務端運行著的仿真使命所有參與隊伍中的編號(從0 開始)。teamId 的初始值,Local 模式時,由策略加載順序確定;Remote模式時,由客戶端啟動順序確定。2 支隊伍參與的對抗性仿真使命,交換半場后,teamId 由服務端或客戶端策略調
19、用入口處相應半場處理代碼進行值的交換,傳到 GetDecision 的teamId 已經正確代表當前時刻當前Strategy 對象對應的隊伍編號。10. GetDecision接口的Mission類型的參數 mission,包含服務端當前運行著的仿真使命公開給策略使用的全部信息。mission.TeamsRefteamId 指向當前Strategy 對象對應的仿真使命參與隊伍Team對象,通過它可以訪問到己方隊伍及其全部仿真機器魚的所有公開信息。當前運行著的仿真使命為2 支隊伍參與的對抗性項目時,mission.TeamsRef(1 + teamId) % 2指向對方隊伍的Team對象,通過它
20、可以訪問到對方隊伍及其全部仿真機器魚的所有公開信息。11. 表 4-1 是策略中可以使用的全部參數,所有成員的引用,均以mission.開頭,如mission.CommonPara.TeamCount;其中“CommonPara.*”一類的成員表示隨后若干右對齊的成員名稱,是以CommonPara.*的形式存在的,如CommonPara.MsPerCycle ,其完整引用為mission.CommonPara.MsPerCycle。MissionCommonPara 、Team、TeamCommonPara 、RoboFish 、Field、RetangularObstacle 、Rounde
21、dObstacle等類型還有其他成員,不向策略公開,那是只與服務端處理有關的變量,不要試圖使用它們,因為服務端向客戶端或本地策略傳遞Mission類型參數的過程包含一個序列化和反序列化的過程,這些不向策略公開的參數,相應的成員沒有序列化和反序列化代碼支持。 12. 具體仿真使命特有的參數(如水球3VS3 等對抗性項目中指示當前比賽階段值的標志量CompetitionPeriod)可以通過 HtMissionVariables鍵名 得到,然后可通過Convert.To*轉換成其值的原始數據類型使用。如水球3VS3 項目的當前比賽階段值通過如下方式獲得:int matchPeriod = Convert.ToInt32(mission. HtMissionVariablesCompetitionPeriod);。每個具體仿真使命需要傳遞給策略的特有參數由仿真使命設計人員確定,并在仿真使命規則文檔中描述其意義和用法。 五、調試策略1. 策略可以先在Local模式下粗調,邏輯基本正確了,再到 Remote模式下進行適應性測試和參數修正。比賽策略一定要在Remote模式下進行過測試;對抗性比賽策略一定要測試過半場交換后的行為是否與預期一致。 2. 由于一個Solution 只可以設置一個啟動項目,而一個Solutio
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 西安航空基地管理辦法
- 西安動態流動管理辦法
- 福建苗圃育苗管理辦法
- 造船產值計算管理辦法
- 股靜脈護理課件
- 腸道與健康課件
- 醫院人員管理培訓課件
- 腸內營養課件
- 肝硬化腹水護理課件
- 高職分招數學試卷
- 火針療法在皮膚病治療中的應用
- 心衰病中醫護理方案課件
- 基于PLC的智能車庫門系統設計
- 【2023有效教學設計原理、策略與評價讀書報告3600字】
- 頂管專項施工方案-人工頂管
- SYNTEC參數說明手冊
- 2023春國家開放大學-01880組織行為學-期末考試題帶答案
- 2012年度天津市科學技術獎評審結果
- 2022年臺州椒江區輔助警務人員招聘考試真題及答案
- 第二講土地估價技術報告難點及技術要求與處理辦法
- 房屋維修施工方案
評論
0/150
提交評論