




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
內(nèi)容簡多機(jī)器魚協(xié)作仿真系統(tǒng)素育機(jī)器人運動會水中專項2D仿真組競賽項目所指定等問題。全書共61緒論2統(tǒng)的總體設(shè)計3介紹仿真系統(tǒng)的實現(xiàn)過程;第4章介紹仿真系統(tǒng)中碰撞檢測的方法和效果;第5章介紹仿真系統(tǒng)在機(jī)器魚2D水球水中專項運動全局視覺組競賽項目的所有員裁判員和運動員,也適合機(jī)器人者參考學(xué)前言素機(jī)器運動一項國利的偉工程多機(jī)器魚協(xié)作仿真系統(tǒng)素育機(jī)器人運動會水中專項2D仿真組競賽項目所指定等問題。全書共61緒論2統(tǒng)的總體設(shè)計3介紹仿真系統(tǒng)的實現(xiàn)過程;第4章介紹仿真系統(tǒng)中碰撞檢測的方法和效果;第5章介紹仿真系統(tǒng)在機(jī)器魚2D水球水中專項運動全局視覺組競賽項目的所有員裁判員和運動員,也適合機(jī)器人者參考學(xué)本書的編者感謝和信息科技大學(xué)已畢業(yè)和在讀的為完成本書所20134第一章緒 引 思考與練習(xí) 第二章仿真系統(tǒng)設(shè) 引 系統(tǒng)開發(fā)選 硬件配 軟件環(huán) 功能規(guī) 架構(gòu)設(shè) 邏輯架 開發(fā)架 運行架 思考與練習(xí) 第三章仿真系統(tǒng)實 引 思考與練習(xí) 第四章碰撞檢測和響 引 碰撞建 機(jī)器魚建 碰撞檢 算法流 連續(xù)碰撞檢 碰撞響 算法流 碰撞模擬的實現(xiàn)與結(jié) 思考與練習(xí) 第五章仿真機(jī)器魚的偽3D繪 問題描 偽3D魚體繪制方 用Path整合關(guān) 尾鰭的偽3D視覺效果處 魚體建 魚體坐標(biāo) CPG運動學(xué)模 繪制技術(shù)解 GDI+中的Bezier線 尾鰭建 繪制結(jié)果對 思考與練習(xí) 第六章仿真物的設(shè)計與實 仿真物分 靜態(tài) 動態(tài) 動態(tài)物設(shè)計思 動態(tài)物建模思 動態(tài)物實 動態(tài)物設(shè)計擴(kuò) 思考與練習(xí) 第七章仿真系統(tǒng)應(yīng) 仿真任務(wù)開 仿真任務(wù)設(shè)計實 仿真任務(wù)實現(xiàn)流 仿真策略開 編程相 業(yè)務(wù)相 調(diào)試相 思考與練習(xí) 第八章總結(jié)與展 參考文 第一章緒論引言自1959年萬能動(nimaton公司造出一臺真實用工業(yè)器1“尤尼Unimae2]水器入深進(jìn)行攝或樣要點是通令進(jìn)遠(yuǎn)距作業(yè)可以人主要點是有運知學(xué)適邏判斷交互力可以面分為無人潛水器(RemoyOperatedVehicle,ROV)和自治水中機(jī)器人(Autonomous,小范圍小規(guī)模作業(yè)的需求中污染物取樣、水中場景圖像或等,多數(shù)情況下無法使,(Bionics(RobotunaSystm,MCAS;roBOTicsystem;USC大學(xué)開發(fā)出一個典型群智能機(jī)器人系統(tǒng)TheNerdHerd[19];足球機(jī)RoboCupFIRA[20]。,系統(tǒng)。1996年東京大學(xué)生產(chǎn)技術(shù)(InstituteofIndustrialScience,UniversityofTokyo,IIS)以其研制的AUVTwin-Burger為基礎(chǔ)構(gòu)建了一個水下多機(jī)器人系統(tǒng)[22]2001年,海底自治系統(tǒng)(AutonomousUnderseaSystemsInstitute,AUSI)在其研制的多種于小微型水中機(jī)器人本身的研究起步就比較晚,且研究者的目光地集中在單個機(jī)器人仿生,在小微型水中機(jī)器人、仿生機(jī)器人和多機(jī)器人系統(tǒng)的結(jié)合點上,智能控制(InligentControlLaboratory,ICL,作者所在,以下簡稱PKUICL)設(shè)計出了一類PKUICL述三個分支結(jié)合點上的研究,并不局限于機(jī)器魚,而是設(shè)計了一系列小微型非1.11.2器球比賽這個多水中機(jī)器人協(xié)作標(biāo)準(zhǔn)問題,被作為第一個中國高校完全自主開發(fā)的比賽項器賽暨RoboCup中國公開賽正式項目進(jìn)行過多屆比賽,在機(jī)器人科普和水中機(jī)器人研究示[6精力實體器人械及耗消耗大可能造人力力的謂浪最要(29]多機(jī)器人協(xié)作仿真系統(tǒng)多機(jī)器人協(xié)作是指多個機(jī)器人在完成一些集體活動時相互合作的性質(zhì)。多個機(jī)器人通過協(xié)調(diào)協(xié)作以完單機(jī)人難完成復(fù)雜業(yè)可提高機(jī)人系在作過的效率可以增強(qiáng)器人統(tǒng)的境適能還使多器人解決的實問拓應(yīng)用途徑陸地多機(jī)器人協(xié)作仿真系統(tǒng)陸地機(jī)器人領(lǐng)域,典型的多機(jī)器人仿真系統(tǒng)有卡耐基梅隆大學(xué)(CarnegieMellonGaTech)開發(fā)的MissionLab[31];梅森大學(xué)(GeorgeMasonUniversity,GMU)開發(fā)的MASON[32];筑波(Tsukuba)電子技術(shù)綜合(ElectroTechnicalLaboratory,ETL)松原仁(ItsukiNoda)及后續(xù)諸多開發(fā)者共同開發(fā)和的SoccerServer(rcssserver)[33,34];和·科格勒(MarcoKogler)及后續(xù)諸多開發(fā)者共同開發(fā)和的SimSpark和SoccerServer3D(rcssserver3D)[35];中國東學(xué)佟等人開發(fā)和的[36](NewNeu)系列TBSimTBHard。TeamBots2.0TBHard可以用于控制NomadicTechnologies公司生產(chǎn)的Nomad150機(jī)器人和Probotic公司生產(chǎn)的Cye型機(jī)器人。而TeamBots仿真環(huán)境TBSim最重要的特性是支TBHardTeamBots2.0Nomad150Cye1.31.3TeamBotsTeamBots是開源軟件,可以從其。SoccerServerSoccerServer器人足球錦標(biāo)賽(RobotSoccerWorldCup,RoboCup)[37]的二維(2D)和三維(3D)仿的形狀一直都是非常簡單的圓形,圓形內(nèi)填充不同的顏色和數(shù)字編號用以指示機(jī)器人的方向和區(qū)分111.4RcssserverRcssserver3DRcssserverC/S系統(tǒng),控務(wù)端模擬出來的足球機(jī)器人。最根本的不同在于Rcssserver3D構(gòu)建了一個3D仿真3DRcssserver3DRcssserver1.51.5Rcssserver3DRcssserver和Rcssserver3D都是開源軟件。前者自1995年開發(fā)出來,1997年第一次用于正式比賽,截至20124月已經(jīng)發(fā)布到15.0.1版本20015.26版起,項目托管到著名開源軟件網(wǎng)站0.6版之間發(fā)布的17個版本與Rcssserver合并管理,在相同的項目主頁;自2009年起,0.6.55水中多機(jī)器人協(xié)作仿真系統(tǒng)AUVAUV的NPSAUVIntegratedSiulato[38](NPSIS;東京大學(xué)水中機(jī)器人及其應(yīng)用(UnderwaterRobotics&ApplicationLaboratory,URAL)Twin-BurgerAUVMulti-VehicleSimulto[39](MVS;夏威夷大學(xué)馬諾分校自治系統(tǒng)(Autonomous(DVECS;Solar-poweredAUVCooperativeAUVDevelopmentConcept[41](CADCON)和中國沈陽自動化所為其AUV[42,43]等。水中仿生機(jī)器人協(xié)作仿真系統(tǒng)認(rèn)研究成果與研究目標(biāo)比較接近時,再進(jìn)行實體機(jī)器人驗證的方法具有明顯優(yōu)勢和廣泛PKUICLRoboCup機(jī)器賽,同時也是RoboCup中國公開賽,比賽項目主要采用國際設(shè)置,比賽平臺多為國際機(jī)人競賽工作委托PKUICL謝廣明老師開創(chuàng)自主的水中機(jī)器人比賽項目,其中兩個重要的子2D3D因此,水中仿生機(jī)器人協(xié)作仿真平臺的研究不僅能為水中仿生機(jī)器人協(xié)作相關(guān)研究提供便利還能水中器人賽提平臺動水機(jī)器比賽的展此真系模擬生機(jī)器各個節(jié)的姿變化運動態(tài)變情況器比賽行等況一面可以更好地究仿機(jī)器的運學(xué)理碰理論運策略算等一方還以讓的被中水中器賽以及Rbocup機(jī)賽所采,取了非好的效果。思考與練習(xí)題率;可以增強(qiáng)機(jī)器人系統(tǒng)的環(huán)境適應(yīng)能力;還可使多機(jī)器人系統(tǒng)解決的實際問題,拓寬(1)(5)57)(8)術(shù)。(9)仿人和仿生技術(shù)。.第二章仿真系統(tǒng)設(shè)計引言系統(tǒng)開發(fā)選型硬件配置2.1URSim2DInP42.0GHz或同檔次AMDInE73002.66GHz或以2GBDirectX9.0,PixelShader3.0128M80GB軟件環(huán)境WindowsGDI、DirectX、WPFOpenGL)完全自主構(gòu)建物理SimSpark、Webots、MRDSSimSparkRoboCup人比賽3D真賽事比賽平臺的開發(fā)團(tuán)隊(如1.2.1所述)為開發(fā)Rcssserver3D這一比賽平臺而構(gòu)建的基礎(chǔ)仿真系統(tǒng)2003年發(fā)布以來,開發(fā)團(tuán)隊一直在對[48]仿真模式方面,模擬的智能體(機(jī)器人)客戶端通過UDP或TCP協(xié)議與SimSpark仿真服務(wù)器進(jìn)機(jī)器人改變自身和環(huán)境的行為;仿真過程通過仿真更新循環(huán)(SimulationUpdateLoop,SUL)址為,可運行于Windows和Linux操作系統(tǒng)。但學(xué)(SwissFederalInstituteofTechnology,EPFL)奧利維爾·米歇爾(OlivierMichel)Webots53]置了幾乎所有世界知名的實體機(jī)器人仿真模型5],而且這個模型庫會隨著機(jī)器人產(chǎn)業(yè)的發(fā)展而Webots54]Weotsebots站http://w /download,可運行于Windows、Linux和MacOSX操作系統(tǒng)。但它也采用ODE進(jìn)行碰撞檢測和剛體動力學(xué)仿真,主要適用于陸地機(jī)器人仿真。的兩大技術(shù)——并發(fā)和協(xié)調(diào)運行時(ConcurrencyandCoordinationRuntime,CCR)技術(shù)決了機(jī)器人軟件領(lǐng)域最為關(guān)鍵的并發(fā)和分布式問題[55]。MRDSEnvironment,VSE個通用的3D仿真器(Simulator基于此仿真器和MRDS提供的基礎(chǔ),可以構(gòu)建各種具體的機(jī)器(Entity(ServiceMRDS(ServiceOrientedArchitecture,SOA)[57]在機(jī)器人基礎(chǔ)軟件領(lǐng)域的一個具體實現(xiàn),相關(guān)組件是CCR和DSS。CCR是一個處理多線程和內(nèi)部任務(wù)同步DSS使用基于簡單對象協(xié)議(SimpleObjectAccessProtocol,SOAP)的分布式軟件服務(wù)協(xié)議(DecentralizedSoftwareServicesProtocol,DSSP)和超文本傳輸協(xié)議(HypertextMRDS為閉源商業(yè)軟件,但根據(jù)微軟的機(jī)器人,從MRDS2008R3版開始,提供全功能版本供業(yè)界免費使用。MRDS版本可從http:/ /robotics,歷史版本均可在微軟的中心找到。它只能運行于Windows操作系統(tǒng),不同版本的MRDS對Windows操作系統(tǒng)版本的要求有所不同,但基本是較新版本的MRDS運行于較新版本的Windows操作系統(tǒng),比如發(fā)布于2010年5月的MRDS2008R3推薦運行的操作系統(tǒng)是Windows操作系統(tǒng)就只有Windows7,需要的.NetFramework版本是4.0。及水環(huán)境進(jìn)行物理建模,便于2D仿真平臺向3D仿真平臺擴(kuò)展;二是MRDS有較為便利的編程工具VisualStudio支持;三是MRDS提供免費使用。以MRDS為基礎(chǔ)仿真平臺,URSim2D開發(fā)和運行所需的軟件環(huán)境便可確定,如表2.2所示。2.2URSim2D操作系 Windows7/XP.NetFrameworkVisualStudio(VS)—編程語 CSharp(C#)Version—XNAFrameworkRedistributableWindowsMediaEncoder9(屏 所需VisualSVNServer StandardEdition2.0.7(SVN版本管理服務(wù)器)—功能規(guī)劃文獻(xiàn)[1]提出了一般的多機(jī)器人仿真系統(tǒng)所應(yīng)具備的幾個關(guān)鍵功能,分別是對相關(guān)模型的器魚)控制平臺的相關(guān)特性及MRDS的CCR和DSS組件提供的通信機(jī)制,URSim2D的仿真模式考2.1載的動態(tài)庫(DynamicLinkLibrary,DLL)文件。2.3URSim2DServer2.4URSim2DClient架構(gòu)設(shè)計邏輯架構(gòu)ClientClientServerClientServerDSSCCRCCR2.1URSim2DSim2DSvr)是服務(wù)端提供的DSS服務(wù),主要負(fù)責(zé)仿真流程控制,是系統(tǒng)的部分;服務(wù)端界面(ServerUI,ServerControlBoard)則是服務(wù)端提供的人機(jī)接口,主要負(fù)責(zé)仿真過程呈現(xiàn)、人機(jī)交互并提供各種輔助功能(如仿真數(shù)據(jù)實時顯示和記錄、仿真場景截圖和等)接口;ServerControlBoard向Sim2DSvr通過CCR端口進(jìn)行通信;用戶通過服務(wù)端界面對各種仿真任務(wù)務(wù)運行過發(fā)送給客戶端的狀態(tài)信息;ClientControlBoard向Sim2DClt通過CCR端口進(jìn)行通務(wù) 2.2URSim2D2.32.3環(huán)境設(shè)置模塊用于構(gòu)建機(jī)器球比賽仿真環(huán)境,定義比賽狀態(tài)控制所需要的環(huán)境量等開發(fā)架構(gòu)根據(jù)第2.2節(jié)所作的軟硬件選型,URSim2D采用VisualStudio(VS)2008TeamSuite/ProfessionalwithSP1,C#編程語言進(jìn)行開發(fā)。URSim2D個名為URSim2D.slnVS2008C#解決方案(Solution)生成Solution包含至少10個(可根據(jù)需要擴(kuò)展到)項目(Project,每個Project即為一個邏輯組件,組URSim2D.snk(Assembly。2.5URSim2D無mon.dll加比賽和實驗項目的地 實現(xiàn)策略動態(tài)加載的輔助無e屏 模塊無、 服務(wù)端DSS服務(wù)和界面模、 客戶端DSS服務(wù)和界面模 除自有組件外和.NetFrameworkURSim2DMRDSAGEIAPhysX、XNAFramework、WMEncoder9、Excel2003ComLibrary等第組件,如表2.6所示。表2.6URSim2D所需第組MRDS2008不需完整安裝。必需的文件有:.Ccr.Adapters.IO.dll .Dss.Runtime.dll、.Dss.Rxy.dll.Dss.Runtime.transform.dll.Dss.Tools.dll等10 運行庫文件; mon.dll、 SimulationExy.dll、SimulationEngine.transform.dllDssHost32.exe、DssProxy.exe等3個DSS服務(wù)編譯運行所需文件。所有文件版本號。MRDS完整安裝后bin AGEIA不需要完整安裝。必需的文件有:NxCooking.dl、PhysXLoader.dlllXNA需要完整的默認(rèn)安裝??蓮奈?安裝文Excel2003Com不需要完整安裝。必需的文件有:office.dll、Interop.VBIDE.dllOffice2003Office11URSim2DSolution(SolutionDirectory)URSim2D。Solution10ProjectProject平行位于SolutionSolution中除各 URSim2D軟件在部署方面的設(shè)計目標(biāo)是全綠色,不寫表,不往系統(tǒng)拷貝文件。所有要用到的第組件,盡量全部置于程序運行下,實現(xiàn)即拷即用。輸出URSim2D下設(shè)一級子binbinMRDSDSSDSSDLLMRDS的安裝下的bin子中,通過binDssHost.exeDssHost.exebin的上級中尋找名為store的,以查詢服務(wù)相關(guān)的Cache信息,沒找到則自動新建該。所以輸出URSim2Dbin子。""/referencepath:"$(TargetDir)referencepath:"$(TargetDir)所有Project的輸出均設(shè)置為“..\URSim2D\bin,不需要完整安裝的第組件也置于該下。所有Project的程序集(這里全是指單個DLL文件)的CopyLocal屬性設(shè)為False于是各Project的程序集的路徑部分就全部固定為相對..\URSim2D\bin無論如何生成新版本,都能得到及時更新。Sim2DSvr和Sim2DClt這兩個""/referencepath:"$(TargetDir)referencepath:"$(TargetDir)策略Strategy(StrategySolution)所在。StrategySolution提供了大部分仿真任務(wù)的策略模板。編寫仿真比賽或自編實驗項目策略,可直接在StrategySolutionProjectProject。運行架構(gòu)URSim2DServer.exe(DLL)直接在服務(wù)端加RemoteURSm2DClent.ee1V122若URSim2DClient.exe進(jìn)程與URSim2DServer.exe進(jìn)程處于不同計算機(jī),則運行URSim2DClient.exe進(jìn)程計算機(jī)上的..\URSim2D\bin\Sim2DClt.manifest.xml<dssp:Service></dssp:Service>配置節(jié),localhost需要修改成URSim2DServer.exe進(jìn)程所在計算機(jī)的IP或主機(jī)名(注意,不同主機(jī)不能同名,否則客戶端連上系統(tǒng)比賽控制模塊設(shè)計目標(biāo)任目標(biāo)任環(huán)境信2.42.5球真比狀態(tài)行控處理,理結(jié)經(jīng)過比轉(zhuǎn)換輸?shù)椒聰?shù)據(jù)示界面2.5思考與練習(xí)答:本仿真系統(tǒng)提供LocalRemoteLocalURSim2DServer.exeRemote.第三章仿真系統(tǒng)實現(xiàn)引言的軟件實現(xiàn),通常是指從軟件生命周期中的從編碼到測試的一系列過程[59]。而本書主要闡述URSim2D設(shè)計實現(xiàn)過若干問題的解決方案?;蚨鄠€仿真圓形物(模擬比賽或?qū)嶒炗脠A形物的對象。SimulationRoboFish:RoboFish,仿真機(jī)器魚,模擬比賽或?qū)嶒炗梅律袡C(jī)器人(機(jī)器間隔(如100毫秒。當(dāng)前平臺仿真循環(huán)在推薦的硬件配置(見2.2.1)下所耗時間大10-20MsPerycleMPerCyle都取100毫秒,仿周期大110120秒之。真任計時以據(jù)MserCyle算出的SimulationAction:仿真動作,包括將策略計算出來的決策命令拷貝到每支隊伍每條仿真以仿真任務(wù)為中心的對象模型3.1類RoboFish和SimEnvironment雖然從形式上實現(xiàn)了IRoboFish和ISimEnvironment接口,但MissionMission(List<TFish>)成員Fishes monPara)Para,保存一支隊伍的各項特性參數(shù)如隊伍名稱、仿真機(jī)器魚仿真環(huán)境包括仿真場地、仿真水球、仿真物和仿真通道等元素。仿真環(huán)境基類SimEnvironmentFieldFieldInfo,保存仿真場地對象;有一個仿真水球Ball類型的列表(List<Ball>)成員Balls,保存當(dāng)前仿真環(huán)境中的全部仿真水球?qū)ο?;有一個仿真圓形物RoundedObstacle類型的列表(List<RoundedObstacle>)成員ObstaclesRound,保存當(dāng)前仿真環(huán)境中的全部仿真圓形物對象;有一個仿真方形物RectangularObstacle(List<RectangularObstacle>)ObstaclesRect,保存當(dāng)前仿真環(huán)境中的全部仿真方形物對象有一個仿真通道Channel類型的列(List<Channel>)成員Channels,保存當(dāng)前仿真環(huán)境中的全部仿真通道對象(后期實現(xiàn)時,考慮仿真通道沒有實仿真任務(wù)基類Mission有一個仿真機(jī)器魚基類RoboFish組成的隊伍列表(List<Team<RoboFish>>)TeamsRef;SimEnvironment monPara類型的成員CommonPara具體仿真任務(wù)類(如3VS3比賽項目的仿真任務(wù)類Match3V3)繼承基類Mission,相應(yīng)的具SimEnvironment。
ServerUICCRServer
List<Rounded
3.1URSim2D3.1URSim2DURSim2D基礎(chǔ)模塊實現(xiàn)為程序集mon.dll,該程序集提供一個命名空間List<RetangularList<Retangular 的建模功能的直接基礎(chǔ),也是整個URSim2D系統(tǒng)的間接基礎(chǔ),如圖3.2所示。圖 以仿真循環(huán)為主線的運行流程分配決策值SetDecisionsToFishes 程調(diào)用SpawnIterator(MissionParaNotification),實質(zhì)是將的仿真任務(wù)各項參數(shù)構(gòu)計算;計算結(jié)果或直接填入或通過網(wǎng)絡(luò)發(fā)送給服務(wù)端,由服務(wù)端響應(yīng)事件填入SetDecisionsToFishes所能的數(shù)組。基于實驗數(shù)據(jù)的簡化動力學(xué)和運動學(xué)模型簡化動力學(xué)模型框架介紹指應(yīng)用于仿真機(jī)器魚的模型,仿真水球和動態(tài)物的動力學(xué)和運動學(xué)計算處理較仿真機(jī)器魚簡化動力學(xué)模型輸入和輸出(tCode實體機(jī)器魚運動控制原理:機(jī)器魚本體單片機(jī)程序接收到一個速度檔位指令和一個轉(zhuǎn)彎檔(agularelociy簡化動力學(xué)模型實質(zhì)mm/smm/s,具體數(shù)據(jù)通過實驗獲取doubledVCodeAndVelocityTable=newdTCodeAndAngularVelocityTable[0dTCodeAndAngularVelocityTable[140~14的角速度值(rad/s,具體數(shù)據(jù)通過實驗獲取doubledTCodeAndAngularVelocityTable=new簡化動力學(xué)模型應(yīng)用概述仿真周期:仿真周期(iCycleMs,單位毫秒ms)是仿真軟件服務(wù)端URSim2DServer設(shè)定的,3.1(iPsXMmiPsZMm,mm(dodDirectinRadπ、速度值(dVelocityMmPs,單位毫米每秒mm/s、速度方向(直游時與魚體方向一致)0~2πrad/s。其中繪圖中心坐標(biāo)和魚體方向統(tǒng)稱為位姿。另外,考慮編程方便,可以將速度檔位值(iVCode,無量綱,0~1415、轉(zhuǎn)彎檔位值(iTCode,無量綱,期參數(shù)值,這些參數(shù)變量依次命名為iPrePosXMmiPrePosZMmdPreBodyDirectionRad,dPreVelocityMmPsdPreVelocityDirectionRaddPreAngularVelocityRadPsiPreVCode周期的值而更新后參數(shù)變量的值稱為當(dāng)前周期的值;也可將更新前參數(shù)變量的值稱為當(dāng)前周期應(yīng)用背景應(yīng)用目標(biāo)vCodetCode簡化動力學(xué)模型應(yīng)用過程暨運動學(xué)模型(iDstVCde(iDestTCode)得到的目標(biāo)速度值(dVCdeAndeloctyTableiDestCode](dTCodAndAnularVlocitTableiDestCode]位姿相關(guān)計算iPrePosXMmiPrePosXMm=iPosXMm;iPrePosZMm=dPreBodyDirectionRad=dCycleSiCycleMs/1000;SiPosXMm+=(int)(dVelocityMmPs*dCycleS*Cos(dVelocityDirectionRad)+0.5iPosZMm+=(int)(dVelocityMmPs*dCycleS*Sin(dVelocityDirectionRad)+0.5dBodyDirectionRad+=dAngularVelocityRadPs*if(dBodyDirectionRad>=2*PI)dBodyDirectionRad-=速度相關(guān)計算c度/角速度所需的時間Tucaucc
Tuc/角加速度值uc
Tuccc 到任一檔位c的穩(wěn)態(tài)速度V/角速度W所需的時間Tdcccm ccmm于是加速度值adcm
VTdc/角加速度值dc
WTdcffk個仿真周期,上層策略發(fā)下直游檔位值cf(k)/轉(zhuǎn)彎檔位值cs(k后,經(jīng)過動力學(xué)和運動學(xué)計算、碰撞檢測和響應(yīng)計算,仿真機(jī)器魚的速度值V(k,角速度值W(k均為已知,則第k1cf(k1/轉(zhuǎn)彎檔位值cs(k1后相應(yīng)量的計算公ffV(k)
cf(k
V
V(k)
cf(k
auc(k1)T)orV(k)
cf(k
adc(k1)T
auc(k1)T,
V(k)
cf(k
auc(k1)Tfdffssfss
cf(k1)T
V(k)
cf(k1)
cf(k1)TW(k)
scs(ks
W(k)),W(k)
cs(k
uc(k1)T)orW(k)
dcs(kd
dc(k1)TsW(k1)W(k)uc(k1)Ts
W(k)
cs(k
uc(k1)Tsdsd
cs(k
W(k)(Wc(k1)
cs(k1)TD(k)W(k)TD(k1)D(k)W(k)T
W(k)W(kW(k)W(k思考與練習(xí)題URSim2D仿真系統(tǒng)采用了哪種模型構(gòu)建方法,為其基礎(chǔ)模塊構(gòu)建了一個以仿真任務(wù)為中心(tCode圍是{0,1,……,14}1570~6值越小,轉(zhuǎn)彎半徑越??;8~14第四章碰撞檢測和響應(yīng)引言仿靜態(tài)形物在碰處(括測和響rocesColliion過,循環(huán)檢測每個仿真機(jī)器魚隊伍列表中全部仿真機(jī)器魚對象和其他各種對象(包括除自身以外的仿真機(jī)魚對全仿真球?qū)θ抡娴亟缛抡鎽B(tài)圓全仿真靜態(tài)方等之間碰循檢測真水等他動態(tài)象和有靜對象間的撞(,然由于兩個仿真機(jī)器魚之間碰撞檢測和響應(yīng)在任意兩個對象間的碰撞處理問題中最為復(fù)雜,其他對象間的碰撞檢測和響應(yīng)是其簡化版本,在此只探討兩個仿真機(jī)器魚之間的碰撞檢測和響碰撞建?;伞苯5萚44]。在碰撞檢測技術(shù)的發(fā)展初期,大多采用空間分解法,即將對象用若干個等體的單元格表示[45]基于包圍盒的建模方法包圍盒(BoundingVolume)在二維平面中占據(jù)一定的空間,可包圍一個或多個不規(guī)則形狀14-1AABB坐標(biāo)軸的最小長方體。AABBAABB包圍盒,只需6個浮點數(shù),由此可見,這種包圍盒的運算復(fù)雜度并不高,檢測較為容易。當(dāng)然,它的缺點也非常明顯,AABBOBB是在AABB的基礎(chǔ)上,它們的區(qū)別主要在于包圍盒的軸向是否可變。OBB是包含K-k-DOPK2-14-1K-K-OBB>K-OBB>K-K-圓形方形動態(tài)還是靜態(tài),Sphere建模方式完全可以符合它的檢測需要;由于動態(tài)四邊形物的軸向和OBB行增加了不少負(fù)擔(dān)。因此,本書利層建模方式,減少了不必要的碰撞檢測,首先進(jìn)行粗略的判斷,排除不可能發(fā)生的碰撞,其次運用精細(xì)化的模型進(jìn)行進(jìn)一步檢測(4-2。4-2機(jī)器魚建模機(jī)器魚結(jié)構(gòu)及運動原理4-54-44-5機(jī)器魚軀分是內(nèi)置通訊塊制模池等組再剛性料外包繞動尾所產(chǎn)的推運動隱含一個后部向尾行波[4]么機(jī)器通過調(diào)節(jié)三個舵機(jī)的擺動頻率和擺動幅度,形成由魚體波幅包絡(luò)線和正弦曲線合成的魚體波曲4-64-6包圍盒樹模型形[50。由此,可以把機(jī)器魚的復(fù)雜結(jié)構(gòu)分解開來,逐層檢測,由粗略到精細(xì),既提高了平臺效的基本模型[514-7外層模型而包圍盒樹的葉節(jié)點則是利用K-Dop模型建模[63],完成了詳細(xì)檢測階段的檢測任務(wù)K-Dop中K的選取是依據(jù)葉節(jié)點的形狀,分別有3-Dop、4-Dop和5-Dop。當(dāng)機(jī)器魚游動時,其各建模既可以提高平臺的運行速率,又可以精確地檢測出碰撞的發(fā)生。碰撞檢測算法流程,時刻但在算機(jī)處理只能它順序執(zhí)也是說一個間片只能間的碰撞檢測進(jìn)行優(yōu)先級劃分。本書的多物體檢測順序由低到高依次為物與機(jī)器魚和水最高檢測在第步仿真臺中物對象數(shù)目對較所將它其它,4-84-8即可。根據(jù)機(jī)器魚的包圍盒樹建模,可以得到它的凸邊形頂點列表Vertex[i][j],其中i代表葉節(jié)點,i[0,8],j代表每個葉節(jié)點下,包圍盒K-Dop模型的頂點值,根據(jù)選取的k不同,j的取值范圍也不同。計算頂點列表中的極值坐標(biāo)maxxmaxyminxminy,那么,只需比較極值坐標(biāo)maxxminx與左右邊界值maxyminy與上下邊界值。4-94-94-10。假設(shè)當(dāng)前碰撞檢測的時刻為t1,前一周期的檢測時刻為t0100ms時刻,有可能接近于t1時刻,也有可能由于對象運動速度較快,在100ms的時間內(nèi),兩個檢測物t1時刻是否發(fā)生碰撞,如果發(fā)生碰撞且碰撞距離在設(shè)4-10基于分離軸的碰撞檢測原理PhasePhase凸多邊形的檢測假設(shè)在二維平面中存在兩個凸多邊形A和B,如圖4-12(a)所示,其中多邊形A是凸五邊形,B(MinimumIntersectionVector,以下簡寫為MIV),具有最小相交向量的垂線記為二者的作用法線(NormalAxisNA)。 4-12for(AB 將AB}球與凸多邊形的檢測4-13首先,引入一個概念——VoronoiV,我們定義距(xx)2(yy PP(x(xx)2(yy D
VoronoiDr連續(xù)碰撞檢測坐標(biāo)轉(zhuǎn)換XOY中,原點坐標(biāo)為(00)OXOYO(abXOY是以O(shè)XOY的Y軸和坐標(biāo)系ππ)現(xiàn)有一點AXOY坐標(biāo)系的坐標(biāo)值為xyXOY坐標(biāo)系的坐標(biāo)值(xy如x(xa)cos(yb)siny(xa)sin(yb)cos
(4-(4-路徑的發(fā)生時刻,所以利用坐標(biāo)轉(zhuǎn)換,以其中一個運動物體A作為參考系,將另外一物體B置于該坐標(biāo)系中,判斷BAXOY中,假設(shè)APA0P(xA0,yA0,A0
(4-(4-PB0P(xB0,yB0,B0
(4-(4-以得到以A(初始時刻)物體為參考坐標(biāo)系的其它位姿信息,見公式(4-7)和(4-
xB0
yB0
0
0
(4-B0
xBO
yBO
0
y
y
xx
0sin B1 B A A B
(4-
BAA二分法原理14SA)S(B)T=100ms設(shè)定碰撞檢測閾值為D,當(dāng)通過分離軸理論計算出的最小相交向量值在閾值范圍內(nèi)AABABBT/2判斷AB(1)~(3)步驟,直至檢測4-14運動插值和三中有良好的兼容性,故本書運動插值都基于三那么該方法運用到二維平面內(nèi)首先分析平動插值,假設(shè)被檢測對象A末狀SA0)SA1。在SA0)狀態(tài)下,A的中心坐標(biāo)值可表PA0同樣的ASA1狀態(tài)下的中心坐標(biāo)值為向量PA1。那么利用平動插值后得到的tSAtt0,1,它的中心坐標(biāo)值為
(4-
qsxiyj
(4-x,y,z,sqsv],旋轉(zhuǎn)方向R3空間中各軸旋轉(zhuǎn)的角度即可表示為對應(yīng)的四元數(shù)。q [cosX,sinXq q q , q q , (4-將三個向量合成一個向量qyqxqzsxiyjzkscos(Y/2)cos(X/2)cos(Z/2)sin(Y/2)sin(X/2)sin(Z/xcos(Y/2)sin(X/2)cos(Z/2)sin(Y/2)cos(X/2)sin(Z/ysin(Y/2)cos(X/2)cos(Z/2)cos(Y/2)sin(X/2)sin(Z/zcos(Y/2)cos(X/2)sin(Z/2)sin(Y/2)sin(X/2)cos(Z/
(4-SA0)Q0s0x0iy0iz0kSlerp(p,q,h)
psin[(1h)]qsinhQ0sin[(1h)]Q1sinh其中h[0,1]cosp
(4-Q0Q1s0s1v0
(4-
2(sx 12(x2y2)arcsin(2(sy
(4- 2(sz 12(y2z2)碰撞響應(yīng)算法流程3s按照運動方式的不同,可以將機(jī)器魚二維仿真平臺中的動態(tài)物體分為兩類——一類是機(jī)器球它只依靠力在中進(jìn)的運碰撞過所生的屬于式動,而該運行為會因水的力而漸所以合上述兩點化條件可以碰撞應(yīng)4-15的過十分雜由于作用間十短暫所以本將其化為體的移和位移。瞬時碰撞階段恢復(fù)系數(shù)撞時不同材質(zhì)變形恢復(fù)能力的參數(shù)稱為恢復(fù)系數(shù),用Cr表示,是碰撞后法向分離速度和碰撞前2/5(a)完全彈性碰撞是剛體間的碰撞,它的恢復(fù)系數(shù)Cr1(b)非完全彈性碰撞,碰撞后一部分能量被消耗,所以恢復(fù)系數(shù)0Cr1(c)完全非彈性碰撞情況較為少見,恢復(fù)系數(shù)Cr0假設(shè)A、Bv1n、v2n,碰撞后的法線速度分量分別為v1nv2n,設(shè)定正方向為法線方向,那么恢復(fù)系數(shù)的定義是:vCrv
(4-一樣。通過實驗可以分別測得球與球碰撞、球與物碰撞、球與邊界碰撞的恢復(fù)系數(shù)。實驗過將兩條機(jī)器魚魚頭相對放置于水池中,相距大約30cm,如圖4-16所示。機(jī)器魚A靜止,機(jī)器魚B以速度v2nA動,發(fā)生碰撞后記A碰撞后的速度v1n,和機(jī)器魚B后的AAB4-16所示,碰撞點距離機(jī)器魚A的頭部頂點為10cm,大約為魚身長的1/3。機(jī)器魚A靜止,機(jī)器魚B以速度v2n向AAv1nBv2nAAB4-19記錄方法同(2,其中機(jī)器魚A機(jī)器魚B垂直于A的尾部第一關(guān)節(jié)放置,碰撞點距離機(jī)器魚A的頭部頂點為15cm,大約為魚體一半的長度。示意圖和結(jié)果數(shù)據(jù)如圖4-21和4-22所0.026。AAB(2A25cm4-234-240.0081。AAB4-23的魚體長度(除去尾鰭部分)300mm,可以推出如下的結(jié)論:魚處于擺直狀態(tài)下的魚體總長度(除去尾鰭部分)為l,兩條機(jī)器魚魚頭相碰的恢復(fù)系數(shù)為μ,那么與機(jī)器魚BC(1lb)*
(4-C(1lalb)*
(4-4-3物0.05*(1lalb0.05*(1lal0.03*(1lal0.03*(1lal0.05*(1lal響應(yīng)分析法線等信息。圖中的vavbwawb。4-25在法線方向上分解va、vbvan、vbnvat、vbt。mb。mavanmbvbnmavan v
(4-C 最后的速度值vavb。nIri*Iin
(4-其中ri代表作用在質(zhì)點i上的力矩Ii則是該質(zhì)點所受內(nèi)、外力的總和。那么,根據(jù)定義量,而機(jī)器魚的轉(zhuǎn)動過程可以認(rèn)為是圍繞其質(zhì)心進(jìn)行的,所以作用力矩定義為,質(zhì)心O作用點P在相應(yīng)魚體頭尾軸l上投影點的距離d,如圖4-26示dPdP4-26依據(jù)動量矩定理,機(jī)器魚的動量矩變化L與沖量矩I相同
(4-W為角速度的變化值,規(guī)定順時針方向為正,角度范圍是[-π/2,π/2J是轉(zhuǎn)iJ M21i由上述過程,可以得出角速度的變化W
ml
(4-Wmvmv*瞬時響應(yīng)階段
1
(4-0.01s(T/10碰撞模擬的實現(xiàn)與結(jié)果本書將針對前文總結(jié)的碰撞檢測方法,分別對仿真平臺中涉及到的對象一一進(jìn)行實驗結(jié)果分析。由.3水球和物檢測連續(xù)測包機(jī)魚和的檢測水球機(jī)器的檢機(jī)魚之間的檢以結(jié)果以仿周期增即時遞用截平運行的式來現(xiàn)碰 水球和物的檢物物物物 物物物物 物物)) 思考與練習(xí)第五章仿真機(jī)器魚的偽3D繪制問題描述URWPGSim2D仿真平臺基于RoboticsStudio(MSRS)設(shè)計并實現(xiàn),可使用2維數(shù)據(jù)分為三個關(guān)節(jié),每個關(guān)節(jié)用一個梯形表示,35.15.1URWPGSim2D1.05.2URWPGSim2D1.0URWPGSim2D仿真平臺1.0版本中的物都是固定的,和魚或球發(fā)生碰撞后依舊不變,使URWPGSim2D1.03DGDI+技術(shù)[30],繪制出具有柔性體線的魚2D3D形間的縫隙,優(yōu)化了碰撞處理和魚的體線展現(xiàn)[31]。的動態(tài)色彩填充和bezier3D5.3供魚體各關(guān)節(jié)的長度,魚體中心點(FishPosition)的坐標(biāo)、魚體朝向(Fishdirection)和魚尾FishHead.X=FishPosition.X+FishHead.Y=FishPosition.Y+Bezier[33]。如圖5.5所示1和點4鰭的始末端點,位于曲線上,而點2和點3線的控制點,在5.5Path渡,需要用Path在GDI+中,繪圖工作由Graphics對象來完成,可以創(chuàng)建幾個與Graphics分開的Path對象,在pathAll對此,采用GDI+path??梢酝ㄟ^這種有層次的色彩過渡來模擬現(xiàn)實中的立體光影效果。603D3D個。和r;這里,Q為有窮狀態(tài)集合;S為某一角度下的魚體狀態(tài),至,以5度角順時針遞增;Σ為輸狀態(tài)集F=Q。5.7。5.7GDI+GDI05.8。其中,MaxDistance5.8根據(jù)圖5.7和圖5.8,觀察出魚尾擺動時,隨著尾鰭朝向順時針不斷變化,其點集(圖5.10)相
Y= Y (5-Y= (5- 其中,θ為尾鰭的方向角。得到公式:TailWidth= 在中軸線上的投影點固定為tailAxis。tailFinRight與tailAxis的距離為distance。只要根據(jù)尾鰭方向,給定不同的distance,就能通過固定點tailAxis計算出連續(xù)變化的tailFinRight的坐標(biāo)。而換[34,35]。5.10為了方便測試,先獨立建立了一個測試工程,用來魚體模型。圖5.11中標(biāo)出的點位單位是寬:44底邊高:30-20(180)長底邊:z(魚體關(guān)節(jié)底邊定義中的z,和x,y5.11Point[]head=
newPoint(70,25),newPoint(60,17),newPoint[]leftBody=Point[]rightBody=
newPoint(50,25),newPoint(40,50),newPoint(45,80),newPoint(50,100),newPoint(55,130),newPoint(58,140),newnew//newPoint(40,165),newPoint(62,140),newPoint(65,130),newPoint(70,100),newnewPoint(80,50),newPoint(70,25),Point[]leftFin=Point[]rightFin=
newPoint(45,70),newPoint(25,78),newPoint(47,53)newPoint(75,70),newPoint(95,78),newPoint(73,51)角度,線條BA5.12即可。左魚鰭偏轉(zhuǎn)角度=(魚的角速度檔位-7)*aa5.13其中y5.14CPG中樞模式發(fā)生器(CentralPatternGenerator)是一種模擬生物低級神經(jīng)中樞的自激行為引起自發(fā)節(jié)律性運動的控制方法[37]。CPG能實現(xiàn)眾多的節(jié)律運動(如胃腸蠕動、呼吸運動、肢體運動CPG起到調(diào)節(jié)及穩(wěn)定作用[38]。相位關(guān)系。由于各神經(jīng)元之間的突觸連接具有可塑性,CPG調(diào)節(jié)CPG網(wǎng)絡(luò)的連接權(quán)重,改變CPG網(wǎng)絡(luò)的輸出模式,可以產(chǎn)生廣泛的生物行為[38]。CPG為了實現(xiàn)虛擬仿真機(jī)器魚擺動的平滑性,這里對實體機(jī)器魚的CPG模型進(jìn)行了改造,并將其應(yīng)用其中,d是微分符號;n表示周期號碼;r表示擺動幅度;i表示關(guān)節(jié)編號;h為經(jīng)驗常數(shù),通常0,重頭開始計算,因此,會出現(xiàn)魚本書魚體繪制采用.net自帶的GDI+函數(shù)庫,主要用到技術(shù)有bezier曲線,Region歸并,漸變畫GDI+Bezier圖5.15簡單曲線示意如圖5.15中所示的Bezier曲線,其端點和控制點已標(biāo)出,起點為p1,前半段曲線受c1吸引,向上彎曲,值得注意的是,c1和p1的連線就是該曲線在p1處引出的切線。后半段手c2吸引,向下彎曲,同樣,c2p2p2GDI+bezierGraphicsPenGraphics類中定義了DrawBezier函數(shù)Pen類中含有設(shè)定的曲線參數(shù)Pen類的實例輸入到DrawBezierDrawBezierbezier起點的坐標(biāo)是(00)而兩個控制點的坐標(biāo)分別為(80,40)、(1600,300(200,20),myGraphics.DrawBezier(myPen,0,0,80,40,160,300,200,5.16abc圖5.16曲線及切線示意像變換[3435],以模擬完整的投影變化。xna.Vector3tailFinLeftStart;xna.Vector3tailFinRightStart;xna.Vector3xna.Vector3xna.Vector3tailFinLeftMiddle;xna.Vector3tailFinRightMiddle;Point[]tailFinLeftArcPoint[]tailFinBackArcPoint[]tailFinRightArc{distanceToAxis1;distanceToAxis4;xna.Vector3temptailAxis2;tailAxis2=tailAxis1;tailAxis1=temp;temp=tailAxis3;tailAxis3=tailAxis4;tailAxis4=temp;}GDI+技術(shù)進(jìn)行如下繪制。#region尾鰭繪制GraphicsPathpathTailFin=newpathTailFin.AddCurve(tailFinLeftArc,0.5f);pathTailFin.AddCurve(tailFinRightArc,0.5f);#regionGraphicsPathpathLeftFin=newxna.Vector3leftFinControl1=newxna.Vector3((pointReal14.X+100*halfSinTheta),0,(pointReal14.Z-100*xna.Vector3leftFinControl2=newxna.Vector3((pointReal7.X+100*halfSinTheta/2),0,(pointReal7.Z-100*halfCosTheta/GraphicsPathpathRightFin=newxna.Vector3rightFinControl1=newxna.Vector3((pointReal13.X-100*halfSinTheta),0,(pointReal13.Z+100*xna.Vector3rightFinControl2=newxna.Vector3((pointReal5.X-100*halfSinTheta/2),0,(pointReal5.Z+100*halfCosTheta/GDI+的線性漸變畫刷對魚體進(jìn)行染色。GraphicsPathpath=newGraphicsPath();Penmypen=newPen(Color.Red);LinearGradientBrushbrush=newLinearGradientBrush(newPoint(700,800),new//GraphicsPathmyPathLeft=newRegionr=newGraphicsPathmyPathRight=newmyPathRight.AddCurve(rightFin,5.175.183D思考與練習(xí)題并,漸變畫刷等第六章仿真物的設(shè)計與實URWPGSim2D仿真物分物分為靜態(tài)物和動態(tài)物靜態(tài)物指顏色大小位置都固定不變的物,如搶球大項目中的球門柱和克項目中的邊界等。動態(tài)物指顏色、大小、位置、速度均可改變的物,如新?lián)屒虼箜椖恐星蜷T前上下移動的物,該類物靈活多變,需靜態(tài)物的質(zhì)量默認(rèn)為無窮大,這樣和機(jī)器魚或者球碰撞后,不會改變靜態(tài)物的位置。為了突出物的立體效果,平臺中的物的顏色都是從圖形中心向圖形頂點進(jìn)行線性6.1圖6.1靜態(tài)動態(tài)1、隨機(jī)動態(tài)隨機(jī)設(shè)定速度和軌跡會使物在比賽過缺少預(yù)判性也因此為比賽策略的編寫平添不可控因素,使得比賽結(jié)果的運氣成分變大。比如運氣差的一方,隨機(jī)移動的物會一直阻撓2、固定動態(tài)固定化物的速度和軌跡可以使選手通過計算準(zhǔn)確掌握物的運動特性從而避開障動態(tài)物設(shè)計思最優(yōu)化,必須趨吉避兇,動態(tài)物的運動特性和形態(tài)特性。規(guī)避型動態(tài)以2v2搶球大為例,如圖6.2所示,可以在球門前添加上下移動的長條形物,進(jìn)攻態(tài)物的長邊推走而功虧一簣。同樣,一旦進(jìn)球,防守方要把球撈出,亦要避開動態(tài)物,不然球會態(tài)物的短邊碰回自己的門內(nèi)相對而言防守方更具優(yōu)勢因為防守方只要避開短邊將球擋在動態(tài)物的長邊范圍內(nèi),靜待球態(tài)物頂走即可進(jìn)行成功的防守。圖6.2搶球大項目中的動態(tài)強(qiáng)運型動態(tài)強(qiáng)運型動態(tài)物是指可以利用來運球的移動物其顯著特征是動態(tài)物存在一定該物從左往右移動時,“V”字形狀使得球一旦進(jìn)入其運動范圍內(nèi),就會陷入夾角中,被障下方的物有利于右方隊伍的進(jìn)攻。得球一旦被,就很難被魚撈出,易于持球。相反,“V”的背部卻很難持球,最多是將球向圖6.3水球5vs5中的動態(tài)動態(tài)物建模思其父類--靜態(tài)物,以提高代碼的復(fù)用性。動態(tài)物實用面向?qū)ο蟮乃枷雽討B(tài)物抽象為RectangularDynamic類,該類實現(xiàn)ICloneable和關(guān)于動態(tài)物循環(huán)運動的實現(xiàn),在本模型中是以周期計數(shù)的方法實現(xiàn)的。用circleTimes變量單趟循環(huán)運動的周期數(shù),用TimesCouter變量充當(dāng)計數(shù)器,每個周期加1,當(dāng)與//////publicclassRectangularDynamic:ICloneable,{publicstringfalsepublicboolIsDeletionAllowed;public{for(inti=0;i<4;i++)PolygonVertices.Add(newxna.Vector3(0,0,}}//////<paramname="strName">仿真方形物名稱///<paramname="positionMm">仿真方形物位置(在場地坐標(biāo)系中,以mm為///<paramname="colorBorder">仿真方形物輪廓顏色///<paramname="colorFilled">仿真方形物填充顏色///<paramname="borderWithPix">仿真方形物輪廓像素寬度///<paramname="lengthMm">仿真方形物長度(以mm為單位///<paramname="widthMm">仿真方形物寬度(以mm為單位///<paramname="directionDeg">仿真方形物方向(在場地坐標(biāo)系中,以弧paramname="velocityMmPs">當(dāng)前速度值,單位mm每秒paramname="velocityDirectionRad">當(dāng)前速度方向備份,單位弧度rad,值域[-PI,PI)</param>///<paramname="angularVelocityRadPs">當(dāng)前角速度值,單位弧度每秒paramname="circleTimes"publicRectangularDynamic(stringstrName,xna.Vector3positionMm,ColorColorcolorFilled,intborderWithPix,intlengthMm,intwidthMm,floatdirectionDeg,floatvelocityMmPs,floatvelocityDirectionRad,floatangularVelocityRadPs,intcircleTimes){Name=strName;PositionMm=positionMm;ColorBorder=colorBorder;ColorFilled=colorFilled;BorderWidthPix=borderWithPix;LengthMm=lengthMm;WidthMm=DirectionRadxna.MathHelper.ToRadians(directionDeg);IsDeletionAllowed=true; //默認(rèn)允許刪除VelocityMmPs=velocityMmPs;VelocityDirectionRad=velocityDirectionRad;AngularVelocityRadPs=angularVelocityRadPs;CircleTimes=circleTimes;TimesCouterCircleTimespublicCollisionTypepublicCollisionType**,單位publicintCircumcircleRadiusMm;4個頂點列表,4位publicList<xna.Vector3>PolygonVertices=new下所示,構(gòu)建了一個長寬100mm,水平朝向,邊緣厚度為0的矩形動態(tài)物:publicvoid{LengthMm=WidthMm=DirectionRad=BorderWidthPix=0}定義以上參數(shù)后,調(diào)用CalculateCollisionDetectionParas()方法計算出碰撞時刻物外接圓半徑、4個頂點坐標(biāo)的值,具體如下代碼所示,其中PositionMm為物的中心坐標(biāo)。publicvoid{CircumcircleRadiusMm=(int)Math.Sqrt(LengthMm*LengthMm+WidthMm*WidthMm)/2;floatsine=floatcosine=/2+WidthMm*sine/2,0,PositionMm.Z-LengthMm*sine/2-WidthMm*//2+WidthMm*sine/2,0,PositionMm.Z+LengthMm*sine/2-WidthMm*//2-WidthMm*sine/2,0,PositionMm.Z+LengthMm*sine/2+WidthMm*//2-WidthMm*sine/2,0,PositionMm.Z-LengthMm*sine/2+WidthMm*/}動態(tài)物繪制模塊實及的全部動態(tài)仿真物恢復(fù)默認(rèn)位置的情況有以下3種:publicvirtualvoidResetDynamicObstacles(){publicvoidDraw(refGraphics{DrawHelper.DrawRectangle(refg,PositionMm,DirectionRad,LengthMm,WidthMm,BorderWidthPix,ColorBorder,ColorFilled);} 6.4圖6.5動態(tài)物運動軌跡截動態(tài)物設(shè)計擴(kuò)思考與練習(xí)題能上劃分,分為規(guī)避型動態(tài)物和強(qiáng)運型動態(tài)物。第七章仿真系統(tǒng)應(yīng)用仿真任務(wù)開發(fā)URSim2D還可用于水中多機(jī)器人協(xié)作仿真的實驗平臺。URSim2D仿真任務(wù)開發(fā)過程包括設(shè)計兩個階MissionURSim2D.Sim2DSvrSim2DSvrServiceprivate仿真任務(wù)設(shè)計實例下面以水中機(jī)器人2D仿真比賽的一個比賽項目[62]——2D仿真協(xié)作過孔為例,展示仿真任務(wù)比賽內(nèi)容2D仿真協(xié)作過孔為1伍參與,每支隊伍2仿真機(jī)器魚,用到1真水球,3比賽場地2D5.17.12D比賽過程初始狀態(tài),121項目規(guī)則比賽時間計分規(guī)則0策略編寫2D91,10IsCollidedBallAndFish0AtStage11IsCollidedBallAndFish1AtStage1220水球標(biāo)志IsCollidedBallAndFish0AtStage21碰過仿真水球標(biāo)志IsCollidedBallAndFish1AtStage2330志IsCollidedBallAndFish0AtStage3、仿真機(jī)器魚1碰過仿真水球標(biāo)志IsCollidedBallAndFish1AtStage3440志IsCollidedBallAndFish0AtStage4、仿真機(jī)器魚1碰過仿真水球標(biāo)志IsCollidedBallAndFish1AtStage4ExecutingTaskNo。8個的數(shù)據(jù)類型是bool取值為truefalse9個的數(shù)據(jù)類型是int取值范圍為1、2、3、4,取值1表示仿真水球尚未被推過第一個孔,正在執(zhí)行協(xié)作任務(wù)1;取值2表示3/43/4。= = intno=Convert.ToInt32if((no1)&&(f01true)&&(f11true))12111if((no2)&&(f02true)&&(f12true))22221f((no3)&&(f03true)&&(f13true))3,2331if((no4)&&f04true)&&f14true))42仿真任務(wù)實現(xiàn)流程ProjectMatchCSharp(TwishPushallViChannl.cs,添加mon,.Xna.Framework等必需的并使用using語句引入;也可直在代碼文件中新建命名空間MatchMatch命名空間下新建三別繼承于RoboFish、SimEnvironment和Mission類(如FishTwoFishPushBallViaChannel、Mission(TwoFishPushBallViaChannel)IMission(Mission一定需要實現(xiàn)的方法,7.17.1是 是是是是是是是否s否否否否在ProjectSim2DSvr下Sim2DSvrService類的privatevoidInitMission(stringstrMissionNameintmissionMinutesSwitch2Dcasecase//實例化TwoFishPushBallViaChannel或獲取它的唯一實例并將其接口 的MyMission.IMissionRefMyMission.Instance().MissionRef=(Mission)TwoFishPushBallViaChannel.Instance(); para=new monPara("協(xié)作過孔",1,2,60*missionMinutes,100,true,在ProjectSim2DSvr下ServerControlBoard這個Form上的 petitionItem下拉框控最后至少重新生成MatchSim2DSvrProjectProject仿真策略開發(fā)以下描述中%URSim2D%URSim2DSolutionDirectoryD:\Mys\VisualStudio編程相關(guān)編寫策略,首先需要建立基于.NetFramework3.5使用C#編程語言的Windows(ClassLibrary)VS2008(Project)及相應(yīng)的解決方案(SolutionURim2DStratgy類必須繼承自MarshalByRefObject類并實現(xiàn)IStrategy接口,為GetTeamName和GetDecision.Dss.Base.dll、.Xna.Framework.dll mon.dll可以直接使用%URSim2D%\Strategy\下的StrategySolution即Strategy.sln,然后在StrategySolutionProjectStrategyProject。也可新建策略Project(如Strategy3VS3)的同時新建Solution,并讓ProjectSolution的下級中,Solution可以放在任意位置,Solution名稱可以任意,推薦使用(PropertiesURim2D.tratey修改類名(Classname)等。默認(rèn)建立的cs文件(如Class1.cs)重命名為Strategy3VS3.cs(如ClassLibrary1URSim2D.Strategyclass(Class1StrategyMarshalByRefObject,IStrategy。類Strategy中必須重載MarshalByRefObject的InitializeLifetimeService現(xiàn)returnnull,StrategyRemotingException)類Strategy的實例在加載完畢后一直存在于內(nèi)存中,除非仿真任務(wù)運行過更換策略,usingusingusingSystem.Collections.Generic;usingSystem.Linq;usingusingxnausingnamespace{publicclassStrategy:MarshalByRefObject,{ codeneverbechangedor//////overridetheInitializeLifetimeServicetoreturnnullinsteadofavalidILeaseimplementation///toensurethistypeofremoteobjectnever//////publicoverrideobject{returnnull;//makestheobjectlive }//////決策類當(dāng)前對象對應(yīng)的仿真任務(wù)參與隊伍的決策數(shù)組///privateDecision[]decisions=第一次調(diào)用//////returns>隊伍名稱字符串</returns>publicstringGetTeamName(){return"3VS3Test}/////////用于作為索 Mission對象的TeamsRef隊伍列表中代表當(dāng)前隊伍的元///<returns>當(dāng)前隊伍所有仿真機(jī)器魚的決策數(shù)據(jù)構(gòu)成的Decision數(shù)組對象publicDecision[]GetDecision(Missionmission,int{//決策類當(dāng)前對象第一次調(diào)用GetDecision時Decision數(shù)組 if(decisions==null)decisions=new }return}}}Team(GetDecisionStrategy過程較復(fù)雜的情況下,建議將各過程封裝成Strate
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑行業(yè)管理
- 醫(yī)院火災(zāi)講解課件
- 中班自助游戲課件
- 中班安全健康教育說課稿
- 商品質(zhì)量管理合同(2篇)
- 2025年統(tǒng)編版小學(xué)道德與法治四年級下冊《多姿多彩的民間藝術(shù)》說課課件
- 2025年統(tǒng)編版小學(xué)道德與法治二年級下冊《安全地玩》說課課件
- 施工過程中防水保護(hù)協(xié)議
- 小學(xué)德育培訓(xùn)演講
- 施工現(xiàn)場材料采購及使用協(xié)議
- 掌握重點中職電子商務(wù)教師資格證試題與答案
- 5.3基本經(jīng)濟(jì)制度 課件 2024-2025學(xué)年統(tǒng)編版道德與法治八年級下冊
- 河南省鄭州市管城區(qū)2024-2025學(xué)年級九年級下學(xué)期第一次模擬數(shù)學(xué)試題(原卷版+解析版)
- 隔音涂料施工方案
- 甘肅卷2024年高考真題化學(xué)試題(含答案)
- T-CCTAS 61-2023 橋梁承重纜索抗火密封綜合防護(hù)技術(shù)規(guī)程
- 消防員職業(yè)技能鑒定中級技能題庫大全
- 鐵路行車組織 課件 項目4 調(diào)車工作
- 2024年浙江郵電職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- (一模)2024-2025學(xué)年佛山市普通高中教學(xué)質(zhì)量檢測(一)數(shù)學(xué)試卷(含答案)
- 招標(biāo)代理機(jī)構(gòu)選取突發(fā)情況應(yīng)急處理預(yù)案
評論
0/150
提交評論