水中機(jī)器人競(jìng)賽2d仿真組系列1多魚協(xié)作系統(tǒng)謝_第1頁(yè)
水中機(jī)器人競(jìng)賽2d仿真組系列1多魚協(xié)作系統(tǒng)謝_第2頁(yè)
水中機(jī)器人競(jìng)賽2d仿真組系列1多魚協(xié)作系統(tǒng)謝_第3頁(yè)
水中機(jī)器人競(jìng)賽2d仿真組系列1多魚協(xié)作系統(tǒng)謝_第4頁(yè)
水中機(jī)器人競(jìng)賽2d仿真組系列1多魚協(xié)作系統(tǒng)謝_第5頁(yè)
已閱讀5頁(yè),還剩118頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

內(nèi)容簡(jiǎn)多機(jī)器魚協(xié)作仿真系統(tǒng)素育機(jī)器人運(yùn)動(dòng)會(huì)水中專項(xiàng)2D仿真組競(jìng)賽項(xiàng)目所指定等問題。全書共61緒論2統(tǒng)的總體設(shè)計(jì)3介紹仿真系統(tǒng)的實(shí)現(xiàn)過程;第4章介紹仿真系統(tǒng)中碰撞檢測(cè)的方法和效果;第5章介紹仿真系統(tǒng)在機(jī)器魚2D水球水中專項(xiàng)運(yùn)動(dòng)全局視覺組競(jìng)賽項(xiàng)目的所有員裁判員和運(yùn)動(dòng)員,也適合機(jī)器人者參考學(xué)前言素機(jī)器運(yùn)動(dòng)一項(xiàng)國(guó)利的偉工程多機(jī)器魚協(xié)作仿真系統(tǒng)素育機(jī)器人運(yùn)動(dòng)會(huì)水中專項(xiàng)2D仿真組競(jìng)賽項(xiàng)目所指定等問題。全書共61緒論2統(tǒng)的總體設(shè)計(jì)3介紹仿真系統(tǒng)的實(shí)現(xiàn)過程;第4章介紹仿真系統(tǒng)中碰撞檢測(cè)的方法和效果;第5章介紹仿真系統(tǒng)在機(jī)器魚2D水球水中專項(xiàng)運(yùn)動(dòng)全局視覺組競(jìng)賽項(xiàng)目的所有員裁判員和運(yùn)動(dòng)員,也適合機(jī)器人者參考學(xué)本書的編者感謝和信息科技大學(xué)已畢業(yè)和在讀的為完成本書所20134第一章緒 引 思考與練習(xí) 第二章仿真系統(tǒng)設(shè) 引 系統(tǒng)開發(fā)選 硬件配 軟件環(huán) 功能規(guī) 架構(gòu)設(shè) 邏輯架 開發(fā)架 運(yùn)行架 思考與練習(xí) 第三章仿真系統(tǒng)實(shí) 引 思考與練習(xí) 第四章碰撞檢測(cè)和響 引 碰撞建 機(jī)器魚建 碰撞檢 算法流 連續(xù)碰撞檢 碰撞響 算法流 碰撞模擬的實(shí)現(xiàn)與結(jié) 思考與練習(xí) 第五章仿真機(jī)器魚的偽3D繪 問題描 偽3D魚體繪制方 用Path整合關(guān) 尾鰭的偽3D視覺效果處 魚體建 魚體坐標(biāo) CPG運(yùn)動(dòng)學(xué)模 繪制技術(shù)解 GDI+中的Bezier線 尾鰭建 繪制結(jié)果對(duì) 思考與練習(xí) 第六章仿真物的設(shè)計(jì)與實(shí) 仿真物分 靜態(tài) 動(dòng)態(tài) 動(dòng)態(tài)物設(shè)計(jì)思 動(dòng)態(tài)物建模思 動(dòng)態(tài)物實(shí) 動(dòng)態(tài)物設(shè)計(jì)擴(kuò) 思考與練習(xí) 第七章仿真系統(tǒng)應(yīng) 仿真任務(wù)開 仿真任務(wù)設(shè)計(jì)實(shí) 仿真任務(wù)實(shí)現(xiàn)流 仿真策略開 編程相 業(yè)務(wù)相 調(diào)試相 思考與練習(xí) 第八章總結(jié)與展 參考文 第一章緒論引言自1959年萬(wàn)能動(dòng)(nimaton公司造出一臺(tái)真實(shí)用工業(yè)器1“尤尼Unimae2]水器入深進(jìn)行攝或樣要點(diǎn)是通令進(jìn)遠(yuǎn)距作業(yè)可以人主要點(diǎn)是有運(yùn)知學(xué)適邏判斷交互力可以面分為無(wú)人潛水器(RemoyOperatedVehicle,ROV)和自治水中機(jī)器人(Autonomous,小范圍小規(guī)模作業(yè)的需求中污染物取樣、水中場(chǎng)景圖像或等,多數(shù)情況下無(wú)法使,(Bionics(RobotunaSystm,MCAS;roBOTicsystem;USC大學(xué)開發(fā)出一個(gè)典型群智能機(jī)器人系統(tǒng)TheNerdHerd[19];足球機(jī)RoboCupFIRA[20]。,系統(tǒng)。1996年?yáng)|京大學(xué)生產(chǎn)技術(shù)(InstituteofIndustrialScience,UniversityofTokyo,IIS)以其研制的AUVTwin-Burger為基礎(chǔ)構(gòu)建了一個(gè)水下多機(jī)器人系統(tǒng)[22]2001年,海底自治系統(tǒng)(AutonomousUnderseaSystemsInstitute,AUSI)在其研制的多種于小微型水中機(jī)器人本身的研究起步就比較晚,且研究者的目光地集中在單個(gè)機(jī)器人仿生,在小微型水中機(jī)器人、仿生機(jī)器人和多機(jī)器人系統(tǒng)的結(jié)合點(diǎn)上,智能控制(InligentControlLaboratory,ICL,作者所在,以下簡(jiǎn)稱PKUICL)設(shè)計(jì)出了一類PKUICL述三個(gè)分支結(jié)合點(diǎn)上的研究,并不局限于機(jī)器魚,而是設(shè)計(jì)了一系列小微型非1.11.2器球比賽這個(gè)多水中機(jī)器人協(xié)作標(biāo)準(zhǔn)問題,被作為第一個(gè)中國(guó)高校完全自主開發(fā)的比賽項(xiàng)器賽暨RoboCup中國(guó)公開賽正式項(xiàng)目進(jìn)行過多屆比賽,在機(jī)器人科普和水中機(jī)器人研究示[6精力實(shí)體器人械及耗消耗大可能造人力力的謂浪最要(29]多機(jī)器人協(xié)作仿真系統(tǒng)多機(jī)器人協(xié)作是指多個(gè)機(jī)器人在完成一些集體活動(dòng)時(shí)相互合作的性質(zhì)。多個(gè)機(jī)器人通過協(xié)調(diào)協(xié)作以完單機(jī)人難完成復(fù)雜業(yè)可提高機(jī)人系在作過的效率可以增強(qiáng)器人統(tǒng)的境適能還使多器人解決的實(shí)問拓應(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];中國(guó)東學(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)仿的形狀一直都是非常簡(jiǎn)單的圓形,圓形內(nèi)填充不同的顏色和數(shù)字編號(hào)用以指示機(jī)器人的方向和區(qū)分111.4RcssserverRcssserver3DRcssserverC/S系統(tǒng),控務(wù)端模擬出來(lái)的足球機(jī)器人。最根本的不同在于Rcssserver3D構(gòu)建了一個(gè)3D仿真3DRcssserver3DRcssserver1.51.5Rcssserver3DRcssserver和Rcssserver3D都是開源軟件。前者自1995年開發(fā)出來(lái),1997年第一次用于正式比賽,截至20124月已經(jīng)發(fā)布到15.0.1版本20015.26版起,項(xiàng)目托管到著名開源軟件網(wǎng)站0.6版之間發(fā)布的17個(gè)版本與Rcssserver合并管理,在相同的項(xiàng)目主頁(yè);自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)和中國(guó)沈陽(yáng)自動(dòng)化所為其AUV[42,43]等。水中仿生機(jī)器人協(xié)作仿真系統(tǒng)認(rèn)研究成果與研究目標(biāo)比較接近時(shí),再進(jìn)行實(shí)體機(jī)器人驗(yàn)證的方法具有明顯優(yōu)勢(shì)和廣泛PKUICLRoboCup機(jī)器賽,同時(shí)也是RoboCup中國(guó)公開賽,比賽項(xiàng)目主要采用國(guó)際設(shè)置,比賽平臺(tái)多為國(guó)際機(jī)人競(jìng)賽工作委托PKUICL謝廣明老師開創(chuàng)自主的水中機(jī)器人比賽項(xiàng)目,其中兩個(gè)重要的子2D3D因此,水中仿生機(jī)器人協(xié)作仿真平臺(tái)的研究不僅能為水中仿生機(jī)器人協(xié)作相關(guān)研究提供便利還能水中器人賽提平臺(tái)動(dòng)水機(jī)器比賽的展此真系模擬生機(jī)器各個(gè)節(jié)的姿變化運(yùn)動(dòng)態(tài)變情況器比賽行等況一面可以更好地究仿機(jī)器的運(yùn)學(xué)理碰理論運(yùn)策略算等一方還以讓的被中水中器賽以及Rbocup機(jī)賽所采,取了非好的效果。思考與練習(xí)題率;可以增強(qiáng)機(jī)器人系統(tǒng)的環(huán)境適應(yīng)能力;還可使多機(jī)器人系統(tǒng)解決的實(shí)際問題,拓寬(1)(5)57)(8)術(shù)。(9)仿人和仿生技術(shù)。.第二章仿真系統(tǒng)設(shè)計(jì)引言系統(tǒng)開發(fā)選型硬件配置2.1URSim2DInP42.0GHz或同檔次AMDInE73002.66GHz或以2GBDirectX9.0,PixelShader3.0128M80GB軟件環(huán)境WindowsGDI、DirectX、WPFOpenGL)完全自主構(gòu)建物理SimSpark、Webots、MRDSSimSparkRoboCup人比賽3D真賽事比賽平臺(tái)的開發(fā)團(tuán)隊(duì)(如1.2.1所述)為開發(fā)Rcssserver3D這一比賽平臺(tái)而構(gòu)建的基礎(chǔ)仿真系統(tǒng)2003年發(fā)布以來(lái),開發(fā)團(tuán)隊(duì)一直在對(duì)[48]仿真模式方面,模擬的智能體(機(jī)器人)客戶端通過UDP或TCP協(xié)議與SimSpark仿真服務(wù)器進(jìn)機(jī)器人改變自身和環(huán)境的行為;仿真過程通過仿真更新循環(huán)(SimulationUpdateLoop,SUL)址為,可運(yùn)行于Windows和Linux操作系統(tǒng)。但學(xué)(SwissFederalInstituteofTechnology,EPFL)奧利維爾·米歇爾(OlivierMichel)Webots53]置了幾乎所有世界知名的實(shí)體機(jī)器人仿真模型5],而且這個(gè)模型庫(kù)會(huì)隨著機(jī)器人產(chǎn)業(yè)的發(fā)展而Webots54]Weotsebots站http://w /download,可運(yùn)行于Windows、Linux和MacOSX操作系統(tǒng)。但它也采用ODE進(jìn)行碰撞檢測(cè)和剛體動(dòng)力學(xué)仿真,主要適用于陸地機(jī)器人仿真。的兩大技術(shù)——并發(fā)和協(xié)調(diào)運(yùn)行時(shí)(ConcurrencyandCoordinationRuntime,CCR)技術(shù)決了機(jī)器人軟件領(lǐng)域最為關(guān)鍵的并發(fā)和分布式問題[55]。MRDSEnvironment,VSE個(gè)通用的3D仿真器(Simulator基于此仿真器和MRDS提供的基礎(chǔ),可以構(gòu)建各種具體的機(jī)器(Entity(ServiceMRDS(ServiceOrientedArchitecture,SOA)[57]在機(jī)器人基礎(chǔ)軟件領(lǐng)域的一個(gè)具體實(shí)現(xiàn),相關(guān)組件是CCR和DSS。CCR是一個(gè)處理多線程和內(nèi)部任務(wù)同步DSS使用基于簡(jiǎn)單對(duì)象協(xié)議(SimpleObjectAccessProtocol,SOAP)的分布式軟件服務(wù)協(xié)議(DecentralizedSoftwareServicesProtocol,DSSP)和超文本傳輸協(xié)議(HypertextMRDS為閉源商業(yè)軟件,但根據(jù)微軟的機(jī)器人,從MRDS2008R3版開始,提供全功能版本供業(yè)界免費(fèi)使用。MRDS版本可從http:/ /robotics,歷史版本均可在微軟的中心找到。它只能運(yùn)行于Windows操作系統(tǒng),不同版本的MRDS對(duì)Windows操作系統(tǒng)版本的要求有所不同,但基本是較新版本的MRDS運(yùn)行于較新版本的Windows操作系統(tǒng),比如發(fā)布于2010年5月的MRDS2008R3推薦運(yùn)行的操作系統(tǒng)是Windows操作系統(tǒng)就只有Windows7,需要的.NetFramework版本是4.0。及水環(huán)境進(jìn)行物理建模,便于2D仿真平臺(tái)向3D仿真平臺(tái)擴(kuò)展;二是MRDS有較為便利的編程工具VisualStudio支持;三是MRDS提供免費(fèi)使用。以MRDS為基礎(chǔ)仿真平臺(tái),URSim2D開發(fā)和運(yùn)行所需的軟件環(huán)境便可確定,如表2.2所示。2.2URSim2D操作系 Windows7/XP.NetFrameworkVisualStudio(VS)—編程語(yǔ) CSharp(C#)Version—XNAFrameworkRedistributableWindowsMediaEncoder9(屏 所需VisualSVNServer StandardEdition2.0.7(SVN版本管理服務(wù)器)—功能規(guī)劃文獻(xiàn)[1]提出了一般的多機(jī)器人仿真系統(tǒng)所應(yīng)具備的幾個(gè)關(guān)鍵功能,分別是對(duì)相關(guān)模型的器魚)控制平臺(tái)的相關(guān)特性及MRDS的CCR和DSS組件提供的通信機(jī)制,URSim2D的仿真模式考2.1載的動(dòng)態(tài)庫(kù)(DynamicLinkLibrary,DLL)文件。2.3URSim2DServer2.4URSim2DClient架構(gòu)設(shè)計(jì)邏輯架構(gòu)ClientClientServerClientServerDSSCCRCCR2.1URSim2DSim2DSvr)是服務(wù)端提供的DSS服務(wù),主要負(fù)責(zé)仿真流程控制,是系統(tǒng)的部分;服務(wù)端界面(ServerUI,ServerControlBoard)則是服務(wù)端提供的人機(jī)接口,主要負(fù)責(zé)仿真過程呈現(xiàn)、人機(jī)交互并提供各種輔助功能(如仿真數(shù)據(jù)實(shí)時(shí)顯示和記錄、仿真場(chǎng)景截圖和等)接口;ServerControlBoard向Sim2DSvr通過CCR端口進(jìn)行通信;用戶通過服務(wù)端界面對(duì)各種仿真任務(wù)務(wù)運(yùn)行過發(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#編程語(yǔ)言進(jìn)行開發(fā)。URSim2D個(gè)名為URSim2D.slnVS2008C#解決方案(Solution)生成Solution包含至少10個(gè)(可根據(jù)需要擴(kuò)展到)項(xiàng)目(Project,每個(gè)Project即為一個(gè)邏輯組件,組URSim2D.snk(Assembly。2.5URSim2D無(wú)mon.dll加比賽和實(shí)驗(yàn)項(xiàng)目的地 實(shí)現(xiàn)策略動(dòng)態(tài)加載的輔助無(wú)e屏 模塊無(wú)、 服務(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 運(yùn)行庫(kù)文件; mon.dll、 SimulationExy.dll、SimulationEngine.transform.dllDssHost32.exe、DssProxy.exe等3個(gè)DSS服務(wù)編譯運(yùn)行所需文件。所有文件版本號(hào)。MRDS完整安裝后bin AGEIA不需要完整安裝。必需的文件有:NxCooking.dl、PhysXLoader.dlllXNA需要完整的默認(rèn)安裝。可從微 安裝文Excel2003Com不需要完整安裝。必需的文件有:office.dll、Interop.VBIDE.dllOffice2003Office11URSim2DSolution(SolutionDirectory)URSim2D。Solution10ProjectProject平行位于SolutionSolution中除各 URSim2D軟件在部署方面的設(shè)計(jì)目標(biāo)是全綠色,不寫表,不往系統(tǒng)拷貝文件。所有要用到的第組件,盡量全部置于程序運(yùn)行下,實(shí)現(xiàn)即拷即用。輸出URSim2D下設(shè)一級(jí)子binbinMRDSDSSDSSDLLMRDS的安裝下的bin子中,通過binDssHost.exeDssHost.exebin的上級(jí)中尋找名為store的,以查詢服務(wù)相關(guān)的Cache信息,沒找到則自動(dòng)新建該。所以輸出URSim2Dbin子。""/referencepath:"$(TargetDir)referencepath:"$(TargetDir)所有Project的輸出均設(shè)置為“..\URSim2D\bin,不需要完整安裝的第組件也置于該下。所有Project的程序集(這里全是指單個(gè)DLL文件)的CopyLocal屬性設(shè)為False于是各Project的程序集的路徑部分就全部固定為相對(duì)..\URSim2D\bin無(wú)論如何生成新版本,都能得到及時(shí)更新。Sim2DSvr和Sim2DClt這兩個(gè)""/referencepath:"$(TargetDir)referencepath:"$(TargetDir)策略Strategy(StrategySolution)所在。StrategySolution提供了大部分仿真任務(wù)的策略模板。編寫仿真比賽或自編實(shí)驗(yàn)項(xiàng)目策略,可直接在StrategySolutionProjectProject。運(yùn)行架構(gòu)URSim2DServer.exe(DLL)直接在服務(wù)端加RemoteURSm2DClent.ee1V122若URSim2DClient.exe進(jìn)程與URSim2DServer.exe進(jìn)程處于不同計(jì)算機(jī),則運(yùn)行URSim2DClient.exe進(jìn)程計(jì)算機(jī)上的..\URSim2D\bin\Sim2DClt.manifest.xml<dssp:Service></dssp:Service>配置節(jié),localhost需要修改成URSim2DServer.exe進(jìn)程所在計(jì)算機(jī)的IP或主機(jī)名(注意,不同主機(jī)不能同名,否則客戶端連上系統(tǒng)比賽控制模塊設(shè)計(jì)目標(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)實(shí)現(xiàn)引言的軟件實(shí)現(xiàn),通常是指從軟件生命周期中的從編碼到測(cè)試的一系列過程[59]。而本書主要闡述URSim2D設(shè)計(jì)實(shí)現(xiàn)過若干問題的解決方案?;蚨鄠€(gè)仿真圓形物(模擬比賽或?qū)嶒?yàn)用圓形物的對(duì)象。SimulationRoboFish:RoboFish,仿真機(jī)器魚,模擬比賽或?qū)嶒?yàn)用仿生水中機(jī)器人(機(jī)器間隔(如100毫秒。當(dāng)前平臺(tái)仿真循環(huán)在推薦的硬件配置(見2.2.1)下所耗時(shí)間大10-20MsPerycleMPerCyle都取100毫秒,仿周期大110120秒之。真任計(jì)時(shí)以據(jù)MserCyle算出的SimulationAction:仿真動(dòng)作,包括將策略計(jì)算出來(lái)的決策命令拷貝到每支隊(duì)伍每條仿真以仿真任務(wù)為中心的對(duì)象模型3.1類RoboFish和SimEnvironment雖然從形式上實(shí)現(xiàn)了IRoboFish和ISimEnvironment接口,但MissionMission(List<TFish>)成員Fishes monPara)Para,保存一支隊(duì)伍的各項(xiàng)特性參數(shù)如隊(duì)伍名稱、仿真機(jī)器魚仿真環(huán)境包括仿真場(chǎng)地、仿真水球、仿真物和仿真通道等元素。仿真環(huán)境基類SimEnvironmentFieldFieldInfo,保存仿真場(chǎng)地對(duì)象;有一個(gè)仿真水球Ball類型的列表(List<Ball>)成員Balls,保存當(dāng)前仿真環(huán)境中的全部仿真水球?qū)ο?;有一個(gè)仿真圓形物RoundedObstacle類型的列表(List<RoundedObstacle>)成員ObstaclesRound,保存當(dāng)前仿真環(huán)境中的全部仿真圓形物對(duì)象;有一個(gè)仿真方形物RectangularObstacle(List<RectangularObstacle>)ObstaclesRect,保存當(dāng)前仿真環(huán)境中的全部仿真方形物對(duì)象有一個(gè)仿真通道Channel類型的列(List<Channel>)成員Channels,保存當(dāng)前仿真環(huán)境中的全部仿真通道對(duì)象(后期實(shí)現(xiàn)時(shí),考慮仿真通道沒有實(shí)仿真任務(wù)基類Mission有一個(gè)仿真機(jī)器魚基類RoboFish組成的隊(duì)伍列表(List<Team<RoboFish>>)TeamsRef;SimEnvironment monPara類型的成員CommonPara具體仿真任務(wù)類(如3VS3比賽項(xiàng)目的仿真任務(wù)類Match3V3)繼承基類Mission,相應(yīng)的具SimEnvironment。

ServerUICCRServer

List<Rounded

3.1URSim2D3.1URSim2DURSim2D基礎(chǔ)模塊實(shí)現(xiàn)為程序集mon.dll,該程序集提供一個(gè)命名空間List<RetangularList<Retangular 的建模功能的直接基礎(chǔ),也是整個(gè)URSim2D系統(tǒng)的間接基礎(chǔ),如圖3.2所示。圖 以仿真循環(huán)為主線的運(yùn)行流程分配決策值SetDecisionsToFishes 程調(diào)用SpawnIterator(MissionParaNotification),實(shí)質(zhì)是將的仿真任務(wù)各項(xiàng)參數(shù)構(gòu)計(jì)算;計(jì)算結(jié)果或直接填入或通過網(wǎng)絡(luò)發(fā)送給服務(wù)端,由服務(wù)端響應(yīng)事件填入SetDecisionsToFishes所能的數(shù)組?;趯?shí)驗(yàn)數(shù)據(jù)的簡(jiǎn)化動(dòng)力學(xué)和運(yùn)動(dòng)學(xué)模型簡(jiǎn)化動(dòng)力學(xué)模型框架介紹指應(yīng)用于仿真機(jī)器魚的模型,仿真水球和動(dòng)態(tài)物的動(dòng)力學(xué)和運(yùn)動(dòng)學(xué)計(jì)算處理較仿真機(jī)器魚簡(jiǎn)化動(dòng)力學(xué)模型輸入和輸出(tCode實(shí)體機(jī)器魚運(yùn)動(dòng)控制原理:機(jī)器魚本體單片機(jī)程序接收到一個(gè)速度檔位指令和一個(gè)轉(zhuǎn)彎?rùn)n(agularelociy簡(jiǎn)化動(dòng)力學(xué)模型實(shí)質(zhì)mm/smm/s,具體數(shù)據(jù)通過實(shí)驗(yàn)獲取doubledVCodeAndVelocityTable=newdTCodeAndAngularVelocityTable[0dTCodeAndAngularVelocityTable[140~14的角速度值(rad/s,具體數(shù)據(jù)通過實(shí)驗(yàn)獲取doubledTCodeAndAngularVelocityTable=new簡(jiǎn)化動(dòng)力學(xué)模型應(yīng)用概述仿真周期:仿真周期(iCycleMs,單位毫秒ms)是仿真軟件服務(wù)端URSim2DServer設(shè)定的,3.1(iPsXMmiPsZMm,mm(dodDirectinRadπ、速度值(dVelocityMmPs,單位毫米每秒mm/s、速度方向(直游時(shí)與魚體方向一致)0~2πrad/s。其中繪圖中心坐標(biāo)和魚體方向統(tǒng)稱為位姿。另外,考慮編程方便,可以將速度檔位值(iVCode,無(wú)量綱,0~1415、轉(zhuǎn)彎?rùn)n位值(iTCode,無(wú)量綱,期參數(shù)值,這些參數(shù)變量依次命名為iPrePosXMmiPrePosZMmdPreBodyDirectionRad,dPreVelocityMmPsdPreVelocityDirectionRaddPreAngularVelocityRadPsiPreVCode周期的值而更新后參數(shù)變量的值稱為當(dāng)前周期的值;也可將更新前參數(shù)變量的值稱為當(dāng)前周期應(yīng)用背景應(yīng)用目標(biāo)vCodetCode簡(jiǎn)化動(dòng)力學(xué)模型應(yīng)用過程暨運(yùn)動(dòng)學(xué)模型(iDstVCde(iDestTCode)得到的目標(biāo)速度值(dVCdeAndeloctyTableiDestCode](dTCodAndAnularVlocitTableiDestCode]位姿相關(guān)計(jì)算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)計(jì)算c度/角速度所需的時(shí)間Tucaucc

Tuc/角加速度值uc

Tuccc 到任一檔位c的穩(wěn)態(tài)速度V/角速度W所需的時(shí)間Tdcccm ccmm于是加速度值adcm

VTdc/角加速度值dc

WTdcffk個(gè)仿真周期,上層策略發(fā)下直游檔位值cf(k)/轉(zhuǎn)彎?rùn)n位值cs(k后,經(jīng)過動(dòng)力學(xué)和運(yùn)動(dòng)學(xué)計(jì)算、碰撞檢測(cè)和響應(yīng)計(jì)算,仿真機(jī)器魚的速度值V(k,角速度值W(k均為已知,則第k1cf(k1/轉(zhuǎn)彎?rùn)n位值cs(k1后相應(yīng)量的計(jì)算公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)建了一個(gè)以仿真任務(wù)為中心(tCode圍是{0,1,……,14}1570~6值越小,轉(zhuǎn)彎半徑越??;8~14第四章碰撞檢測(cè)和響應(yīng)引言仿靜態(tài)形物在碰處(括測(cè)和響rocesColliion過,循環(huán)檢測(cè)每個(gè)仿真機(jī)器魚隊(duì)伍列表中全部仿真機(jī)器魚對(duì)象和其他各種對(duì)象(包括除自身以外的仿真機(jī)魚對(duì)全仿真球?qū)θ抡娴亟缛抡鎽B(tài)圓全仿真靜態(tài)方等之間碰循檢測(cè)真水等他動(dòng)態(tài)象和有靜對(duì)象間的撞(,然由于兩個(gè)仿真機(jī)器魚之間碰撞檢測(cè)和響應(yīng)在任意兩個(gè)對(duì)象間的碰撞處理問題中最為復(fù)雜,其他對(duì)象間的碰撞檢測(cè)和響應(yīng)是其簡(jiǎn)化版本,在此只探討兩個(gè)仿真機(jī)器魚之間的碰撞檢測(cè)和響碰撞建模簧”建模等[44]。在碰撞檢測(cè)技術(shù)的發(fā)展初期,大多采用空間分解法,即將對(duì)象用若干個(gè)等體的單元格表示[45]基于包圍盒的建模方法包圍盒(BoundingVolume)在二維平面中占據(jù)一定的空間,可包圍一個(gè)或多個(gè)不規(guī)則形狀14-1AABB坐標(biāo)軸的最小長(zhǎng)方體。AABBAABB包圍盒,只需6個(gè)浮點(diǎn)數(shù),由此可見,這種包圍盒的運(yùn)算復(fù)雜度并不高,檢測(cè)較為容易。當(dāng)然,它的缺點(diǎn)也非常明顯,AABBOBB是在AABB的基礎(chǔ)上,它們的區(qū)別主要在于包圍盒的軸向是否可變。OBB是包含K-k-DOPK2-14-1K-K-OBB>K-OBB>K-K-圓形方形動(dòng)態(tài)還是靜態(tài),Sphere建模方式完全可以符合它的檢測(cè)需要;由于動(dòng)態(tài)四邊形物的軸向和OBB行增加了不少負(fù)擔(dān)。因此,本書利層建模方式,減少了不必要的碰撞檢測(cè),首先進(jìn)行粗略的判斷,排除不可能發(fā)生的碰撞,其次運(yùn)用精細(xì)化的模型進(jìn)行進(jìn)一步檢測(cè)(4-2。4-2機(jī)器魚建模機(jī)器魚結(jié)構(gòu)及運(yùn)動(dòng)原理4-54-44-5機(jī)器魚軀分是內(nèi)置通訊塊制模池等組再剛性料外包繞動(dòng)尾所產(chǎn)的推運(yùn)動(dòng)隱含一個(gè)后部向尾行波[4]么機(jī)器通過調(diào)節(jié)三個(gè)舵機(jī)的擺動(dòng)頻率和擺動(dòng)幅度,形成由魚體波幅包絡(luò)線和正弦曲線合成的魚體波曲4-64-6包圍盒樹模型形[50。由此,可以把機(jī)器魚的復(fù)雜結(jié)構(gòu)分解開來(lái),逐層檢測(cè),由粗略到精細(xì),既提高了平臺(tái)效的基本模型[514-7外層模型而包圍盒樹的葉節(jié)點(diǎn)則是利用K-Dop模型建模[63],完成了詳細(xì)檢測(cè)階段的檢測(cè)任務(wù)K-Dop中K的選取是依據(jù)葉節(jié)點(diǎn)的形狀,分別有3-Dop、4-Dop和5-Dop。當(dāng)機(jī)器魚游動(dòng)時(shí),其各建模既可以提高平臺(tái)的運(yùn)行速率,又可以精確地檢測(cè)出碰撞的發(fā)生。碰撞檢測(cè)算法流程,時(shí)刻但在算機(jī)處理只能它順序執(zhí)也是說(shuō)一個(gè)間片只能間的碰撞檢測(cè)進(jìn)行優(yōu)先級(jí)劃分。本書的多物體檢測(cè)順序由低到高依次為物與機(jī)器魚和水最高檢測(cè)在第步仿真臺(tái)中物對(duì)象數(shù)目對(duì)較所將它其它,4-84-8即可。根據(jù)機(jī)器魚的包圍盒樹建模,可以得到它的凸邊形頂點(diǎn)列表Vertex[i][j],其中i代表葉節(jié)點(diǎn),i[0,8],j代表每個(gè)葉節(jié)點(diǎn)下,包圍盒K-Dop模型的頂點(diǎn)值,根據(jù)選取的k不同,j的取值范圍也不同。計(jì)算頂點(diǎn)列表中的極值坐標(biāo)maxxmaxyminxminy,那么,只需比較極值坐標(biāo)maxxminx與左右邊界值maxyminy與上下邊界值。4-94-94-10。假設(shè)當(dāng)前碰撞檢測(cè)的時(shí)刻為t1,前一周期的檢測(cè)時(shí)刻為t0100ms時(shí)刻,有可能接近于t1時(shí)刻,也有可能由于對(duì)象運(yùn)動(dòng)速度較快,在100ms的時(shí)間內(nèi),兩個(gè)檢測(cè)物t1時(shí)刻是否發(fā)生碰撞,如果發(fā)生碰撞且碰撞距離在設(shè)4-10基于分離軸的碰撞檢測(cè)原理PhasePhase凸多邊形的檢測(cè)假設(shè)在二維平面中存在兩個(gè)凸多邊形A和B,如圖4-12(a)所示,其中多邊形A是凸五邊形,B(MinimumIntersectionVector,以下簡(jiǎn)寫為MIV),具有最小相交向量的垂線記為二者的作用法線(NormalAxisNA)。 4-12for(AB 將AB}球與凸多邊形的檢測(cè)4-13首先,引入一個(gè)概念——VoronoiV,我們定義距(xx)2(yy PP(x(xx)2(yy D

VoronoiDr連續(xù)碰撞檢測(cè)坐標(biāo)轉(zhuǎn)換XOY中,原點(diǎn)坐標(biāo)為(00)OXOYO(abXOY是以O(shè)XOY的Y軸和坐標(biāo)系ππ)現(xiàn)有一點(diǎn)AXOY坐標(biāo)系的坐標(biāo)值為xyXOY坐標(biāo)系的坐標(biāo)值(xy如x(xa)cos(yb)siny(xa)sin(yb)cos

(4-(4-路徑的發(fā)生時(shí)刻,所以利用坐標(biāo)轉(zhuǎn)換,以其中一個(gè)運(yùn)動(dòng)物體A作為參考系,將另外一物體B置于該坐標(biāo)系中,判斷BAXOY中,假設(shè)APA0P(xA0,yA0,A0

(4-(4-PB0P(xB0,yB0,B0

(4-(4-以得到以A(初始時(shí)刻)物體為參考坐標(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è)定碰撞檢測(cè)閾值為D,當(dāng)通過分離軸理論計(jì)算出的最小相交向量值在閾值范圍內(nèi)AABABBT/2判斷AB(1)~(3)步驟,直至檢測(cè)4-14運(yùn)動(dòng)插值和三中有良好的兼容性,故本書運(yùn)動(dòng)插值都基于三那么該方法運(yùn)用到二維平面內(nèi)首先分析平動(dòng)插值,假設(shè)被檢測(cè)對(duì)象A末狀SA0)SA1。在SA0)狀態(tài)下,A的中心坐標(biāo)值可表PA0同樣的ASA1狀態(tài)下的中心坐標(biāo)值為向量PA1。那么利用平動(dòng)插值后得到的tSAtt0,1,它的中心坐標(biāo)值為

(4-

qsxiyj

(4-x,y,z,sqsv],旋轉(zhuǎn)方向R3空間中各軸旋轉(zhuǎn)的角度即可表示為對(duì)應(yīng)的四元數(shù)。q [cosX,sinXq q q , q q , (4-將三個(gè)向量合成一個(gè)向量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按照運(yùn)動(dòng)方式的不同,可以將機(jī)器魚二維仿真平臺(tái)中的動(dòng)態(tài)物體分為兩類——一類是機(jī)器球它只依靠力在中進(jìn)的運(yùn)碰撞過所生的屬于式動(dòng),而該運(yùn)行為會(huì)因水的力而漸所以合上述兩點(diǎn)化條件可以碰撞應(yīng)4-15的過十分雜由于作用間十短暫所以本將其化為體的移和位移。瞬時(shí)碰撞階段恢復(fù)系數(shù)撞時(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è)定正方向?yàn)榉ň€方向,那么恢復(fù)系數(shù)的定義是:vCrv

(4-一樣。通過實(shí)驗(yàn)可以分別測(cè)得球與球碰撞、球與物碰撞、球與邊界碰撞的恢復(fù)系數(shù)。實(shí)驗(yàn)過將兩條機(jī)器魚魚頭相對(duì)放置于水池中,相距大約30cm,如圖4-16所示。機(jī)器魚A靜止,機(jī)器魚B以速度v2nA動(dòng),發(fā)生碰撞后記A碰撞后的速度v1n,和機(jī)器魚B后的AAB4-16所示,碰撞點(diǎn)距離機(jī)器魚A的頭部頂點(diǎn)為10cm,大約為魚身長(zhǎng)的1/3。機(jī)器魚A靜止,機(jī)器魚B以速度v2n向AAv1nBv2nAAB4-19記錄方法同(2,其中機(jī)器魚A機(jī)器魚B垂直于A的尾部第一關(guān)節(jié)放置,碰撞點(diǎn)距離機(jī)器魚A的頭部頂點(diǎn)為15cm,大約為魚體一半的長(zhǎng)度。示意圖和結(jié)果數(shù)據(jù)如圖4-21和4-22所0.026。AAB(2A25cm4-234-240.0081。AAB4-23的魚體長(zhǎng)度(除去尾鰭部分)300mm,可以推出如下的結(jié)論:魚處于擺直狀態(tài)下的魚體總長(zhǎng)度(除去尾鰭部分)為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ì)點(diǎn)i上的力矩Ii則是該質(zhì)點(diǎn)所受內(nèi)、外力的總和。那么,根據(jù)定義量,而機(jī)器魚的轉(zhuǎn)動(dòng)過程可以認(rèn)為是圍繞其質(zhì)心進(jìn)行的,所以作用力矩定義為,質(zhì)心O作用點(diǎn)P在相應(yīng)魚體頭尾軸l上投影點(diǎn)的距離d,如圖4-26示dPdP4-26依據(jù)動(dòng)量矩定理,機(jī)器魚的動(dòng)量矩變化L與沖量矩I相同

(4-W為角速度的變化值,規(guī)定順時(shí)針方向?yàn)檎?,角度范圍是[-π/2,π/2J是轉(zhuǎn)iJ M21i由上述過程,可以得出角速度的變化W

ml

(4-Wmvmv*瞬時(shí)響應(yīng)階段

1

(4-0.01s(T/10碰撞模擬的實(shí)現(xiàn)與結(jié)果本書將針對(duì)前文總結(jié)的碰撞檢測(cè)方法,分別對(duì)仿真平臺(tái)中涉及到的對(duì)象一一進(jìn)行實(shí)驗(yàn)結(jié)果分析。由.3水球和物檢測(cè)連續(xù)測(cè)包機(jī)魚和的檢測(cè)水球機(jī)器的檢機(jī)魚之間的檢以結(jié)果以仿周期增即時(shí)遞用截平運(yùn)行的式來(lái)現(xiàn)碰 水球和物的檢物物物物 物物物物 物物)) 思考與練習(xí)第五章仿真機(jī)器魚的偽3D繪制問題描述URWPGSim2D仿真平臺(tái)基于RoboticsStudio(MSRS)設(shè)計(jì)并實(shí)現(xiàn),可使用2維數(shù)據(jù)分為三個(gè)關(guān)節(jié),每個(gè)關(guān)節(jié)用一個(gè)梯形表示,35.15.1URWPGSim2D1.05.2URWPGSim2D1.0URWPGSim2D仿真平臺(tái)1.0版本中的物都是固定的,和魚或球發(fā)生碰撞后依舊不變,使URWPGSim2D1.03DGDI+技術(shù)[30],繪制出具有柔性體線的魚2D3D形間的縫隙,優(yōu)化了碰撞處理和魚的體線展現(xiàn)[31]。的動(dòng)態(tài)色彩填充和bezier3D5.3供魚體各關(guān)節(jié)的長(zhǎng)度,魚體中心點(diǎn)(FishPosition)的坐標(biāo)、魚體朝向(Fishdirection)和魚尾FishHead.X=FishPosition.X+FishHead.Y=FishPosition.Y+Bezier[33]。如圖5.5所示1和點(diǎn)4鰭的始末端點(diǎn),位于曲線上,而點(diǎn)2和點(diǎn)3線的控制點(diǎn),在5.5Path渡,需要用Path在GDI+中,繪圖工作由Graphics對(duì)象來(lái)完成,可以創(chuàng)建幾個(gè)與Graphics分開的Path對(duì)象,在pathAll對(duì)此,采用GDI+path??梢酝ㄟ^這種有層次的色彩過渡來(lái)模擬現(xiàn)實(shí)中的立體光影效果。603D3D個(gè)。和r;這里,Q為有窮狀態(tài)集合;S為某一角度下的魚體狀態(tài),至,以5度角順時(shí)針遞增;Σ為輸狀態(tài)集F=Q。5.7。5.7GDI+GDI05.8。其中,MaxDistance5.8根據(jù)圖5.7和圖5.8,觀察出魚尾擺動(dòng)時(shí),隨著尾鰭朝向順時(shí)針不斷變化,其點(diǎn)集(圖5.10)相

Y= Y (5-Y= (5- 其中,θ為尾鰭的方向角。得到公式:TailWidth= 在中軸線上的投影點(diǎn)固定為tailAxis。tailFinRight與tailAxis的距離為distance。只要根據(jù)尾鰭方向,給定不同的distance,就能通過固定點(diǎn)tailAxis計(jì)算出連續(xù)變化的tailFinRight的坐標(biāo)。而換[34,35]。5.10為了方便測(cè)試,先獨(dú)立建立了一個(gè)測(cè)試工程,用來(lái)魚體模型。圖5.11中標(biāo)出的點(diǎn)位單位是寬:44底邊高:30-20(180)長(zhǎng)底邊: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í)神經(jīng)中樞的自激行為引起自發(fā)節(jié)律性運(yùn)動(dòng)的控制方法[37]。CPG能實(shí)現(xiàn)眾多的節(jié)律運(yùn)動(dòng)(如胃腸蠕動(dòng)、呼吸運(yùn)動(dòng)、肢體運(yùn)動(dòng)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為了實(shí)現(xiàn)虛擬仿真機(jī)器魚擺動(dòng)的平滑性,這里對(duì)實(shí)體機(jī)器魚的CPG模型進(jìn)行了改造,并將其應(yīng)用其中,d是微分符號(hào);n表示周期號(hào)碼;r表示擺動(dòng)幅度;i表示關(guān)節(jié)編號(hào);h為經(jīng)驗(yàn)常數(shù),通常0,重頭開始計(jì)算,因此,會(huì)出現(xiàn)魚本書魚體繪制采用.net自帶的GDI+函數(shù)庫(kù),主要用到技術(shù)有bezier曲線,Region歸并,漸變畫GDI+Bezier圖5.15簡(jiǎn)單曲線示意如圖5.15中所示的Bezier曲線,其端點(diǎn)和控制點(diǎn)已標(biāo)出,起點(diǎn)為p1,前半段曲線受c1吸引,向上彎曲,值得注意的是,c1和p1的連線就是該曲線在p1處引出的切線。后半段手c2吸引,向下彎曲,同樣,c2p2p2GDI+bezierGraphicsPenGraphics類中定義了DrawBezier函數(shù)Pen類中含有設(shè)定的曲線參數(shù)Pen類的實(shí)例輸入到DrawBezierDrawBezierbezier起點(diǎn)的坐標(biāo)是(00)而兩個(gè)控制點(diǎn)的坐標(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+的線性漸變畫刷對(duì)魚體進(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è)計(jì)與實(shí)URWPGSim2D仿真物分物分為靜態(tài)物和動(dòng)態(tài)物靜態(tài)物指顏色大小位置都固定不變的物,如搶球大項(xiàng)目中的球門柱和克項(xiàng)目中的邊界等。動(dòng)態(tài)物指顏色、大小、位置、速度均可改變的物,如新?lián)屒虼箜?xiàng)目中球門前上下移動(dòng)的物,該類物靈活多變,需靜態(tài)物的質(zhì)量默認(rèn)為無(wú)窮大,這樣和機(jī)器魚或者球碰撞后,不會(huì)改變靜態(tài)物的位置。為了突出物的立體效果,平臺(tái)中的物的顏色都是從圖形中心向圖形頂點(diǎn)進(jìn)行線性6.1圖6.1靜態(tài)動(dòng)態(tài)1、隨機(jī)動(dòng)態(tài)隨機(jī)設(shè)定速度和軌跡會(huì)使物在比賽過缺少預(yù)判性也因此為比賽策略的編寫平添不可控因素,使得比賽結(jié)果的運(yùn)氣成分變大。比如運(yùn)氣差的一方,隨機(jī)移動(dòng)的物會(huì)一直阻撓2、固定動(dòng)態(tài)固定化物的速度和軌跡可以使選手通過計(jì)算準(zhǔn)確掌握物的運(yùn)動(dòng)特性從而避開障動(dòng)態(tài)物設(shè)計(jì)思最優(yōu)化,必須趨吉避兇,動(dòng)態(tài)物的運(yùn)動(dòng)特性和形態(tài)特性。規(guī)避型動(dòng)態(tài)以2v2搶球大為例,如圖6.2所示,可以在球門前添加上下移動(dòng)的長(zhǎng)條形物,進(jìn)攻態(tài)物的長(zhǎng)邊推走而功虧一簣。同樣,一旦進(jìn)球,防守方要把球撈出,亦要避開動(dòng)態(tài)物,不然球會(huì)態(tài)物的短邊碰回自己的門內(nèi)相對(duì)而言防守方更具優(yōu)勢(shì)因?yàn)榉朗胤街灰荛_短邊將球擋在動(dòng)態(tài)物的長(zhǎng)邊范圍內(nèi),靜待球態(tài)物頂走即可進(jìn)行成功的防守。圖6.2搶球大項(xiàng)目中的動(dòng)態(tài)強(qiáng)運(yùn)型動(dòng)態(tài)強(qiáng)運(yùn)型動(dòng)態(tài)物是指可以利用來(lái)運(yùn)球的移動(dòng)物其顯著特征是動(dòng)態(tài)物存在一定該物從左往右移動(dòng)時(shí),“V”字形狀使得球一旦進(jìn)入其運(yùn)動(dòng)范圍內(nèi),就會(huì)陷入夾角中,被障下方的物有利于右方隊(duì)伍的進(jìn)攻。得球一旦被,就很難被魚撈出,易于持球。相反,“V”的背部卻很難持球,最多是將球向圖6.3水球5vs5中的動(dòng)態(tài)動(dòng)態(tài)物建模思其父類--靜態(tài)物,以提高代碼的復(fù)用性。動(dòng)態(tài)物實(shí)用面向?qū)ο蟮乃枷雽?dòng)態(tài)物抽象為RectangularDynamic類,該類實(shí)現(xiàn)ICloneable和關(guān)于動(dòng)態(tài)物循環(huán)運(yùn)動(dòng)的實(shí)現(xiàn),在本模型中是以周期計(jì)數(shù)的方法實(shí)現(xiàn)的。用circleTimes變量單趟循環(huán)運(yùn)動(dòng)的周期數(shù),用TimesCouter變量充當(dāng)計(jì)數(shù)器,每個(gè)周期加1,當(dāng)與//////publicclassRectangularDynamic:ICloneable,{publicstringfalsepublicboolIsDeletionAllowed;public{for(inti=0;i<4;i++)PolygonVertices.Add(newxna.Vector3(0,0,}}//////<paramname="strName">仿真方形物名稱///<paramname="positionMm">仿真方形物位置(在場(chǎng)地坐標(biāo)系中,以mm為///<paramname="colorBorder">仿真方形物輪廓顏色///<paramname="colorFilled">仿真方形物填充顏色///<paramname="borderWithPix">仿真方形物輪廓像素寬度///<paramname="lengthMm">仿真方形物長(zhǎng)度(以mm為單位///<paramname="widthMm">仿真方形物寬度(以mm為單位///<paramname="directionDeg">仿真方形物方向(在場(chǎng)地坐標(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個(gè)頂點(diǎn)列表,4位publicList<xna.Vector3>PolygonVertices=new下所示,構(gòu)建了一個(gè)長(zhǎng)寬100mm,水平朝向,邊緣厚度為0的矩形動(dòng)態(tài)物:publicvoid{LengthMm=WidthMm=DirectionRad=BorderWidthPix=0}定義以上參數(shù)后,調(diào)用CalculateCollisionDetectionParas()方法計(jì)算出碰撞時(shí)刻物外接圓半徑、4個(gè)頂點(diǎn)坐標(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*/}動(dòng)態(tài)物繪制模塊實(shí)及的全部動(dòng)態(tài)仿真物恢復(fù)默認(rèn)位置的情況有以下3種:publicvirtualvoidResetDynamicObstacles(){publicvoidDraw(refGraphics{DrawHelper.DrawRectangle(refg,PositionMm,DirectionRad,LengthMm,WidthMm,BorderWidthPix,ColorBorder,ColorFilled);} 6.4圖6.5動(dòng)態(tài)物運(yùn)動(dòng)軌跡截動(dòng)態(tài)物設(shè)計(jì)擴(kuò)思考與練習(xí)題能上劃分,分為規(guī)避型動(dòng)態(tài)物和強(qiáng)運(yùn)型動(dòng)態(tài)物。第七章仿真系統(tǒng)應(yīng)用仿真任務(wù)開發(fā)URSim2D還可用于水中多機(jī)器人協(xié)作仿真的實(shí)驗(yàn)平臺(tái)。URSim2D仿真任務(wù)開發(fā)過程包括設(shè)計(jì)兩個(gè)階MissionURSim2D.Sim2DSvrSim2DSvrServiceprivate仿真任務(wù)設(shè)計(jì)實(shí)例下面以水中機(jī)器人2D仿真比賽的一個(gè)比賽項(xiàng)目[62]——2D仿真協(xié)作過孔為例,展示仿真任務(wù)比賽內(nèi)容2D仿真協(xié)作過孔為1伍參與,每支隊(duì)伍2仿真機(jī)器魚,用到1真水球,3比賽場(chǎng)地2D5.17.12D比賽過程初始狀態(tài),121項(xiàng)目規(guī)則比賽時(shí)間計(jì)分規(guī)則0策略編寫2D91,10IsCollidedBallAndFish0AtStage11IsCollidedBallAndFish1AtStage1220水球標(biāo)志IsCollidedBallAndFish0AtStage21碰過仿真水球標(biāo)志IsCollidedBallAndFish1AtStage2330志IsCollidedBallAndFish0AtStage3、仿真機(jī)器魚1碰過仿真水球標(biāo)志IsCollidedBallAndFish1AtStage3440志IsCollidedBallAndFish0AtStage4、仿真機(jī)器魚1碰過仿真水球標(biāo)志IsCollidedBallAndFish1AtStage4ExecutingTaskNo。8個(gè)的數(shù)據(jù)類型是bool取值為truefalse9個(gè)的數(shù)據(jù)類型是int取值范圍為1、2、3、4,取值1表示仿真水球尚未被推過第一個(gè)孔,正在執(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ù)實(shí)現(xiàn)流程ProjectMatchCSharp(TwishPushallViChannl.cs,添加mon,.Xna.Framework等必需的并使用using語(yǔ)句引入;也可直在代碼文件中新建命名空間MatchMatch命名空間下新建三別繼承于RoboFish、SimEnvironment和Mission類(如FishTwoFishPushBallViaChannel、Mission(TwoFishPushBallViaChannel)IMission(Mission一定需要實(shí)現(xiàn)的方法,7.17.1是 是是是是是是是否s否否否否在ProjectSim2DSvr下Sim2DSvrService類的privatevoidInitMission(stringstrMissionNameintmissionMinutesSwitch2Dcasecase//實(shí)例化TwoFishPushBallViaChannel或獲取它的唯一實(shí)例并將其接口 的MyMission.IMissionRefMyMission.Instance().MissionRef=(Mission)TwoFishPushBallViaChannel.Instance(); para=new monPara("協(xié)作過孔",1,2,60*missionMinutes,100,true,在ProjectSim2DSvr下ServerControlBoard這個(gè)Form上的 petitionItem下拉框控最后至少重新生成MatchSim2DSvrProjectProject仿真策略開發(fā)以下描述中%URSim2D%URSim2DSolutionDirectoryD:\Mys\VisualStudio編程相關(guān)編寫策略,首先需要建立基于.NetFramework3.5使用C#編程語(yǔ)言的Windows(ClassLibrary)VS2008(Project)及相應(yīng)的解決方案(SolutionURim2DStratgy類必須繼承自MarshalByRefObject類并實(shí)現(xiàn)IStrategy接口,為GetTeamName和GetDecision.Dss.Base.dll、.Xna.Framework.dll mon.dll可以直接使用%URSim2D%\Strategy\下的StrategySolution即Strategy.sln,然后在StrategySolutionProjectStrategyProject。也可新建策略Project(如Strategy3VS3)的同時(shí)新建Solution,并讓ProjectSolution的下級(jí)中,Solution可以放在任意位置,Solution名稱可以任意,推薦使用(PropertiesURim2D.tratey修改類名(Classname)等。默認(rèn)建立的cs文件(如Class1.cs)重命名為Strategy3VS3.cs(如ClassLibrary1URSim2D.Strategyclass(Class1StrategyMarshalByRefObject,IStrategy。類Strategy中必須重載MarshalByRefObject的InitializeLifetimeService現(xiàn)returnnull,StrategyRemotingException)類Strategy的實(shí)例在加載完畢后一直存在于內(nèi)存中,除非仿真任務(wù)運(yùn)行過更換策略,usingusingusingSystem.Collections.Generic;usingSystem.Linq;usingusingxnausingnamespace{publicclassStrategy:MarshalByRefObject,{ codeneverbechangedor//////overridetheInitializeLifetimeServicetoreturnnullinsteadofavalidILeaseimplementation///toensurethistypeofremoteobjectnever//////publicoverrideobject{returnnull;//makestheobjectlive }//////決策類當(dāng)前對(duì)象對(duì)應(yīng)的仿真任務(wù)參與隊(duì)伍的決策數(shù)組///privateDecision[]decisions=第一次調(diào)用//////returns>隊(duì)伍名稱字符串</returns>publicstringGetTeamName(){return"3VS3Test}/////////用于作為索 Mission對(duì)象的TeamsRef隊(duì)伍列表中代表當(dāng)前隊(duì)伍的元///<returns>當(dāng)前隊(duì)伍所有仿真機(jī)器魚的決策數(shù)據(jù)構(gòu)成的Decision數(shù)組對(duì)象publicDecision[]GetDecision(Missionmission,int{//決策類當(dāng)前對(duì)象第一次調(diào)用GetDecision時(shí)Decision數(shù)組 if(decisions==null)decisions=new }return}}}Team(GetDecisionStrategy過程較復(fù)雜的情況下,建議將各過程封裝成Strate

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論