国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OSG的船橋碰撞檢測技術(shù)仿真

2014-11-28 09:45關(guān)克平江靖楠王靜波
中國航海 2014年2期
關(guān)鍵詞:橋體視景碰撞檢測

關(guān)克平, 江靖楠, 王靜波

(上海海事大學(xué) 商船學(xué)院,上海 201306)

基于OSG的船橋碰撞檢測技術(shù)仿真

關(guān)克平, 江靖楠, 王靜波

(上海海事大學(xué) 商船學(xué)院,上海 201306)

為進(jìn)一步提高船舶操縱模擬器的真實(shí)性,使其更加有效地應(yīng)用于港航論證和船舶操縱模擬培訓(xùn)中,業(yè)界一直致力于研究較為關(guān)鍵的模型碰撞檢測技術(shù)。在介紹船舶操縱模擬器視景系統(tǒng)、Multigen Creator三維場景建模技術(shù)和OSG三維場景渲染技術(shù)的基礎(chǔ)上,通過分析多種包圍盒技術(shù)并比較其優(yōu)劣,在滿足精度要求的前提下,選取軸向包圍盒技術(shù)分別構(gòu)建船舶和橋體的碰撞檢測包圍盒,并提出相應(yīng)的檢測算法及優(yōu)化方案,最后成功應(yīng)用于船舶操縱模擬器的視景系統(tǒng)中。

水路運(yùn)輸;開源場景圖形(OSG);碰撞檢測;船橋碰撞;包圍盒

隨著我國船舶逐漸向大型化方向發(fā)展以及交通流密度不斷增大,船舶航行對橋梁安全的影響日益顯著。船橋碰撞是最常見的事故類型之一,只有安裝橋墩防撞預(yù)警系統(tǒng)并對駕駛?cè)藛T進(jìn)行船舶模擬操縱的培訓(xùn),才能更有效地降低此類事故的發(fā)生率。船舶模擬操縱通過對橋區(qū)水域的模擬而較多地應(yīng)用于通航安全影響論證和通航安全評(píng)估中。[1]

船舶操縱模擬器三維視景系統(tǒng)中常見的驅(qū)動(dòng)技術(shù)有OpenGVS、Vega Prime(VP) 和OpenSceneGraph(OSG)等,其中OSG是唯一開源的場景圖形管理開發(fā)庫,渲染品質(zhì)高、可移植性好,為研究提供了很好的技術(shù)支持。[2]碰撞檢測是船舶操縱模擬器中關(guān)鍵的技術(shù)之一,直接影響仿真效果的真實(shí)性,同時(shí)也是船橋碰撞仿真系統(tǒng)中最重要的一個(gè)環(huán)節(jié)。因此,在OSG的技術(shù)環(huán)境下,創(chuàng)造性地提出船橋碰撞檢測算法及其在復(fù)雜環(huán)境中的優(yōu)化方案,在三維視景系統(tǒng)中取得滿意的效果。

1 船舶操縱模擬器及其技術(shù)支持

1.1船舶操縱模擬器

船舶操縱模擬器可以使人參與到系統(tǒng)的仿真運(yùn)行中去,通過相關(guān)儀器設(shè)備給出的航行信息,人為地控制航速、航向,使駕駛?cè)藛T達(dá)到訓(xùn)練、通航安全評(píng)估和海事分析等的目的。其一般由教練臺(tái)、主控機(jī)、雷達(dá)、電子海圖和投影系統(tǒng)(投影機(jī)和圖形計(jì)算機(jī))等組成,可實(shí)現(xiàn)不同水域、不同風(fēng)流環(huán)境、不同交通會(huì)遇狀況和不同能見度下的航行、避讓、靠離泊訓(xùn)練與評(píng)估。[3]

1.2MultigenCreator三維建模技術(shù)

Multigen Creator軟件能夠?qū)崟r(shí)優(yōu)化OpenFlight數(shù)據(jù),可應(yīng)用于大面積矢量建模、多面形建模和大面積地形精確生成。[3]其與OSG的結(jié)合性較好,在視景仿真、模擬訓(xùn)練、城市仿真等實(shí)時(shí)仿真領(lǐng)域處于世界領(lǐng)先地位。在Creator環(huán)境下制作的三維模型通常保存為*.flt文件格式,支持LOD(Levels of Detail)、BSP(Binary Space Partitioning)等多種場景優(yōu)化組織結(jié)構(gòu),包含模型層次樹信息,不僅便于在OSG中導(dǎo)入,而且可以對其進(jìn)行讀與寫。

1.3OSG三維渲染引擎

OSG的相關(guān)擴(kuò)展模塊使該項(xiàng)技術(shù)功能更加豐富,如OsgEarth,其功能類似于GoogleEarth,具有良好的地形實(shí)時(shí)生成效率,可生成離線地形或根據(jù)高程圖與紋理實(shí)時(shí)生成地形;可實(shí)現(xiàn)矢量圖渲染、高度測量、距離查詢等功能。還有較常用的OsgOcean,是OSG的擴(kuò)展海洋模塊,其特點(diǎn)在于可以逼真地仿真大面積水域,并在其基礎(chǔ)上進(jìn)行二次開發(fā),以完善水域的仿真效果。

2 船舶與橋體碰撞檢測和響應(yīng)流程

在OSG中實(shí)現(xiàn)船舶與橋體碰撞檢測的流程及橋體模型(見圖1和圖2)。

圖1 船撞橋碰撞檢測和響應(yīng)流程圖

模型建好后,在OSG中將其導(dǎo)入,并進(jìn)行場景驅(qū)動(dòng)渲染,然后對模型進(jìn)行碰撞檢測,最后調(diào)用相應(yīng)的碰撞效果。其中,通過碰撞檢測可得出碰撞點(diǎn)的三維世界坐標(biāo)及該點(diǎn)的法線信息,為碰撞響應(yīng)算法提供必要的參數(shù)信息。因此,在實(shí)現(xiàn)船舶與橋墩碰撞的三維仿真中,碰撞檢測是最關(guān)鍵的環(huán)節(jié)。

3 OSG包圍盒碰撞檢測技術(shù)

在虛擬仿真中,檢測模型間的碰撞時(shí),通常先檢測兩個(gè)模型的包圍盒是否有碰撞,若無碰撞,則兩模型之間肯定沒有相交;若有碰撞,根據(jù)層次結(jié)構(gòu)樹原理,自上而下依次檢測其枝節(jié)節(jié)點(diǎn)及葉子節(jié)點(diǎn)的包圍盒是否相交。若出現(xiàn)相交,則停止檢測,返回相交結(jié)果;若檢測完其葉子節(jié)點(diǎn)仍未相交,可判斷兩者不相交。

圖2 Creator中構(gòu)建的橋體模型及其層次結(jié)構(gòu)圖

3.1包圍盒技術(shù)

包圍盒的構(gòu)建類型有很多,以下列舉幾種常用的包圍盒。[5]

3.1.1包圍球(Bounding Sphere)

OSG中,在構(gòu)建場景樹時(shí)就已經(jīng)為每個(gè)節(jié)點(diǎn)構(gòu)造了一個(gè)包圍球,并成為相應(yīng)節(jié)點(diǎn)的屬性,而并非在求取時(shí)專門構(gòu)建。[6]需要算法時(shí),可以通過getBound()直接調(diào)用。其一般適用于輪廓接近于球體的包圍盒的構(gòu)建,可通過兩個(gè)包圍球的半徑之和與兩者球心距離的關(guān)系,初步判斷兩個(gè)模型是否相交,但是不適用于長方體或條狀物包圍盒的構(gòu)建。

3.1.2軸向包圍盒AABB(Axis-Aligned Bounding Box)

軸向包圍盒的各個(gè)方向與坐標(biāo)軸方向平行,一般是長方體。[7-8]OSG中較常用的包圍盒構(gòu)建類型能滿足基本碰撞檢測精度的要求。

在進(jìn)行森林保護(hù)工作時(shí),更多的是依靠人工對森林做出相關(guān)的保護(hù)措施。因此林區(qū)保護(hù)人員的專業(yè)素質(zhì)就顯得非常重要。但是目前我國林區(qū)工作人員大多數(shù)并非經(jīng)過專業(yè)培訓(xùn),且在工作中并不能做到科學(xué)保護(hù),對于森林中出現(xiàn)的常見問題也不能很好的處理,很有可能會(huì)對森林造成二次傷害。林區(qū)保護(hù)人員的工作水平問題也是森林保護(hù)工作發(fā)展的一個(gè)重要阻礙,必須及時(shí)妥善的處理這個(gè)問題。

圖3為船舶模型的AABB包圍盒,分別記錄包圍盒在X、Y、Z3個(gè)軸上投影的最大值和最小值,并保存為3個(gè)矩陣,即Mat[0]=[Xmin,Xmax]、Mat[1]=[Ymin,Ymax]和Mat[2]=[Zmin,Zmax],通過組合可以得到包圍盒8個(gè)頂點(diǎn)的位置信息。船舶在X、Y、Z軸上的投影區(qū)間分別為(Xmin,Xmax)、(Ymin,Ymax)和(Zmin,Zmax),若與另一物體的包圍盒在3個(gè)坐標(biāo)上的投影區(qū)間同時(shí)重合,則判斷兩物體包圍盒相交,否則不相交。

3.1.3方向包圍盒OBB(Oriented Bounding Box)

方向包圍盒是三維空間中能夠包圍物體的沿任意方向構(gòu)建的最小長方體包圍盒,其緊密性較上述兩種包圍盒更好。在OSG中可通過改進(jìn)算法和坐標(biāo)轉(zhuǎn)換實(shí)現(xiàn),但相交測試較復(fù)雜。

圖3 船舶模型AABB包圍盒及其頂點(diǎn)坐標(biāo)

3.1.4離散方向多面體包圍盒k-DOP(kDirection Orientation Polytopes)

k-DOP[8]是一種多面體包圍盒,不僅能夠包含該對象,而且其所有面的法向量都取自一個(gè)固定的方向(k個(gè)向量)集合。k-DOP比其他包圍體更緊密地包圍原物體,k的取值越大,包圍的就越緊密,而計(jì)算復(fù)雜度越高,求交運(yùn)算也就越復(fù)雜。

由于課題研究對象是船模和橋墩,其結(jié)構(gòu)基本成軸對稱且輪廓接近長方體。綜合考慮上述各種包圍盒的優(yōu)劣,在保證一定碰撞檢測精度的前提下,最終選取AABB軸向包圍盒技術(shù)。該技術(shù)在OSG中實(shí)現(xiàn)碰撞檢測的算法較其他方法的可行性更高,程序耗費(fèi)量較低。

3.2OSG碰撞檢測算法

3.2.1場景層次樹構(gòu)建

進(jìn)行碰撞檢測之前構(gòu)建合理的場景層次樹,使算法運(yùn)行時(shí)占用較小內(nèi)存,有利于提高碰撞檢測的效率。碰撞檢測判斷流程見圖4,需構(gòu)建的場景層次結(jié)構(gòu)見圖5。

在OSG中建立一個(gè)findNodeVisitor 的osg::NodeVisitor的派生類,用于讀取*.flt結(jié)構(gòu)樹中的用于碰撞檢測的節(jié)點(diǎn)b_1、b_2、b_3和b_4(見圖2),并作為OSG場景樹中4個(gè)用于碰撞檢測的橋墩節(jié)點(diǎn)brg_1、brg_2、brg_3和brg_4讀入,最后分別添加至brg組節(jié)點(diǎn)下。findNodeVisitor類的定義代碼在主程序中通過accept()調(diào)用即可。

class findNodeVisitor : public osg::NodeVisitor

{

public:

virtual void apply(osg::Node amp;searchNode);//將正在訪問的節(jié)點(diǎn)名稱與搜索節(jié)點(diǎn)名稱相比較,若相符,則添加至節(jié)點(diǎn)列表

圖4 碰撞檢測判斷流程圖

圖5 船橋碰撞的場景層次結(jié)構(gòu)圖

osg::Node* getFirst();//獲取第一個(gè)與搜索字符串名稱相符合的節(jié)點(diǎn)

……};

3.2.2碰撞檢測模塊

該模塊建立了一個(gè)碰撞檢測的類[5,9],主要用于檢測包圍盒之間是否產(chǎn)生碰撞,其主要代碼為:

class DecCallback: public osg::NodeCallback

{public:

virtual void operator()(osg::Node*node,osg::NodeVisitor*nv)

{……//定義相關(guān)包圍盒訪問器;

ship-gt;getParent(0)-gt;accept(boundvisitor1);//建立ship上一級(jí)父節(jié)點(diǎn)坐標(biāo)系下的包圍盒訪問器;

bridge-gt;accept(boundvisitor2); //建立bridge在當(dāng)前父節(jié)點(diǎn)坐標(biāo)系下的包圍盒訪問器

………//分別獲取船舶的包圍盒box_ship和整個(gè)橋體的包圍盒box_bridge;

collision_sign=box_ship.intersects(box_bridge);//用來標(biāo)記船舶是否碰撞的bool型變量,碰撞為True,不碰撞為False

if(collision_sign==True)//判斷船和整體橋體模型是否碰撞,若碰撞,則進(jìn)行下列操作:

{……//判斷船舶包圍盒與四個(gè)橋墩的包圍盒是否發(fā)生碰撞。}}};

上述代碼中,分別把船舶和橋體模型作為節(jié)點(diǎn)類型讀入為ship和bridge,由于它們是gp場景根節(jié)點(diǎn)的不同分支,直接求ship包圍盒的坐標(biāo)和bridge包圍盒的坐標(biāo)不在同一個(gè)坐標(biāo)系內(nèi),無法進(jìn)行碰撞檢測。因此,只有求出ship在其上一級(jí)父節(jié)點(diǎn)的坐標(biāo)系中包圍盒的位置,才能與橋體的包圍盒一起完成正確的碰撞檢測。[7]

在主程序中使用如下代碼,可使場景在更新每一幀時(shí)調(diào)用碰撞檢測:

gp-gt;setUpdateCallback(new DecCallback);

該碰撞算法可以實(shí)時(shí)檢測碰撞,且具有一定的碰撞精度。其碰撞檢測效果見圖6和圖7。

圖6 船舶未與橋墩碰撞的情況

圖7 船模和橋墩碰撞的情況

4 算法優(yōu)化

4.1碰撞檢測算法的優(yōu)化

在碰撞檢測算法中,還可利用OSG的IntersectVisitor遍歷節(jié)點(diǎn)和所有子節(jié)點(diǎn)。在OSG中讀入節(jié)點(diǎn)時(shí),構(gòu)建它們的k-D樹,以便更進(jìn)一步加快碰撞檢測速度。[5]主程序中調(diào)用k-D樹的代碼為

osgDB::Registry::instance()-gt;setBuildKdTreeHint(osgDB::Renderwriter::OPtions::BUILD_KDTREES);

在進(jìn)行碰撞檢測時(shí)調(diào)用InterseetionVisitor::SetUseKdTreewhenAvailable,可進(jìn)一步提高碰撞檢測效率。

4.2包圍盒的優(yōu)化

仔細(xì)觀察圖8,由于碰撞角度不同,當(dāng)檢測到兩包圍盒碰撞時(shí),船舶和橋墩可能還未發(fā)生碰撞。因此,需進(jìn)一步優(yōu)化包圍盒的構(gòu)建方案。圖8(左)是前文所構(gòu)建的包圍盒;圖8(中)是進(jìn)一步優(yōu)化的橋墩包圍盒,其下端明顯更接近實(shí)際橋墩模型,進(jìn)行碰撞檢測的精度也更高。如對碰撞檢測要求更高,可對橋墩模型進(jìn)行分段構(gòu)建包圍盒(見圖8(右)),但該方法的碰撞檢測算法更為復(fù)雜,運(yùn)算量大。實(shí)際應(yīng)用中可根據(jù)需要選擇構(gòu)建包圍盒的算法。[10]

圖8 橋墩模型的AABB包圍盒和Convex hull包圍盒

5 結(jié) 語

運(yùn)用OSG技術(shù),通過構(gòu)建模型的包圍盒,對船撞橋時(shí)船舶和橋墩的碰撞檢測進(jìn)行初步模擬,并已成功應(yīng)用到船舶操縱模擬器中。該項(xiàng)技術(shù)也可獲取碰撞點(diǎn)的世界坐標(biāo)法線等參數(shù),為后期碰撞響應(yīng)算法的加入提供技術(shù)支持。

[1] 關(guān)克平,施朝健,肖英杰,等. 港航設(shè)計(jì)論證中的三維視景建模技術(shù)[J]. 系統(tǒng)仿真學(xué)報(bào),2006(S2):436-440.

[2] YUAN Peng, WANG Shujie, ZHANG Jiwei,et al. Virtual Reality Platform Based on Open Sourced Graphics Toolkit Open Scene Graph[A]. Proceedings of 2007 10th IEEE International Conferences on Computer Aided Design and Computer Graphics,2007.

[3] 關(guān)克平,陳錦標(biāo),施朝健. 基于Creator和Vega的航海模擬器三維視景系統(tǒng)開發(fā)[A].2006系統(tǒng)仿真技術(shù)及其應(yīng)用學(xué)術(shù)交流會(huì)論文集,2006.

[4] 於文.基于OSG的航海模擬器視景系統(tǒng)關(guān)鍵技術(shù)研究[D].廈門:集美大學(xué),2012.

[5] 辛靜.基于增強(qiáng)現(xiàn)實(shí)的機(jī)械臂運(yùn)動(dòng)碰撞檢測算法研究[D].北京:北京郵電大學(xué),2011.

[6] FAN Wenshan,WANG Bin,PAUL J C,et al. An Octree-Based Proxy for Collision Detection in Large-Scale Particle Systems[J]. Science China:Information Sciences, 2013(1): 55-64.

[7] 楊曉,廉靜靜,張新宇. 基于OSG的虛擬場景中包圍盒碰撞檢測的研究[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,2011(9):32-34.

[8] 汪璇. 基于OSG的分布式汽車駕駛模擬器運(yùn)行仿真及碰撞檢測研究[D].武漢:武漢理工大學(xué),2008.

[9] ICCD: Interactive Continuous Collision Detection Between Deformable Models Using Connectivity-Based Culling[J].IEEE Transactions on Visualization and Computer Graphics,2009,15(4):544.

[10] COMING, DANIEL S, STAADT, et al. Velocity-Aligned Discrete Oriented Polytopes for Dynamic Collision Detection[J].IEEE Transactions on Visualization and Computer Graphics, 2008, 14(1):1-12.

SimulationonShip-BridgeCollisionDetectionTechnologyBasedonOSG

GUANKeping,JIANGJingnan,WANGJingbo
(Merchant Marine College, Shanghai Maritime University, Shanghai 201306, China)

In order to improve the facticity of simulation, simulator developers turn attention to three-dimensional collision detection technology, which is one of the key technologies for that purpose. The visual system of the ship handling simulator, the three dimensional modeling technology based on Multigen Creator and the rendering technology of 3D scene based on Open Scene Graph(OSG) are introduced, and the different bounding boxes algorithms are compared. The Axis-aligned bounding box algorithm is chosen for the collision detection, and corresponding detection technology and optimization approaches are presented. The model has been successfully used in the visual system of a ship handling simulator.

waterway transportation; Open Scene Graph(OSG); collision detection; ship-bridge collision; bounding box

2014-02-10

國家自然科學(xué)基金(51149001);上海市教育委員會(huì)科研創(chuàng)新項(xiàng)目(11CX49);上海海事大學(xué)研究生物創(chuàng)新基金(2013ycx032)

關(guān)克平(1978-),男,福建寧德人,副教授,研究方向?yàn)楦酆桨踩撟C、航海仿真技術(shù)等。E-mail:kpguan@shmtu.edu.cn.

1000-4653(2014)02-0035-04

U666.158

A

猜你喜歡
橋體視景碰撞檢測
基于動(dòng)力學(xué)補(bǔ)償?shù)臋C(jī)器人電機(jī)力矩誤差碰撞檢測
全新預(yù)測碰撞檢測系統(tǒng)
虛擬現(xiàn)實(shí)技術(shù)在游戲設(shè)計(jì)中的應(yīng)用及研究
中國船級(jí)社助力將軍澳大橋主跨順利抵港
固定橋不同橋體齦端形態(tài)修復(fù)下頜第一磨牙的三維有限元分析
某炮模擬訓(xùn)練系統(tǒng)中三維視景的設(shè)計(jì)與實(shí)現(xiàn)
基于BIM的鐵路信號(hào)室外設(shè)備布置與碰撞檢測方法
基于預(yù)測和雙緩沖區(qū)的直升機(jī)視景仿真
基于Virtools的虛擬滅火系統(tǒng)碰撞檢測設(shè)計(jì)與實(shí)現(xiàn)
全回轉(zhuǎn)拖輪運(yùn)動(dòng)建模與視景仿真
安龙县| 武义县| 威宁| 手游| 建德市| 泰州市| 南开区| 阆中市| 承德市| 湘乡市| 绍兴县| 灵武市| 怀远县| 云霄县| 崇阳县| 云安县| 泗水县| 南汇区| 枣阳市| 安吉县| 青田县| 长岭县| 晋中市| 罗甸县| 普宁市| 安吉县| 大荔县| 沁阳市| 永寿县| 昭觉县| 滦南县| 平原县| 兴义市| 启东市| 井研县| 平安县| 莱阳市| 平武县| 方城县| 巨野县| 扶余县|