大型船舶內(nèi)部定位導(dǎo)航方法

在大型船舶尤其是航母復(fù)雜的艙內(nèi)環(huán)境中,船舶建造施工人員和科研人員對(duì)環(huán)境不熟悉很容易迷路,造成時(shí)間、人力等資源的浪費(fèi)。為實(shí)現(xiàn)陌生人員在艙內(nèi)快速定位并尋址導(dǎo)航,設(shè)計(jì)簡(jiǎn)單快捷的艙內(nèi)定位導(dǎo)航系統(tǒng)很有必要[1-4]。基于二維碼和空間數(shù)據(jù)庫(kù)技術(shù)的定位導(dǎo)航方法不依賴(lài)于網(wǎng)絡(luò)信號(hào),不需布線(xiàn),很適合應(yīng)用于船艙內(nèi)定位導(dǎo)航[5-7]。基于二維碼和空間數(shù)據(jù)庫(kù)技術(shù)的艙內(nèi)定位導(dǎo)航系統(tǒng)不僅能夠?qū)崿F(xiàn)精確定位與導(dǎo)航,而且具有成本低、易維護(hù)、投入使用速度快、定位導(dǎo)航方便快捷的特點(diǎn),而且此技術(shù)為其他大型室內(nèi)定位導(dǎo)航研究提供了新的思路 。
二維碼技術(shù)
二維碼技術(shù)可實(shí)現(xiàn)信息的存儲(chǔ)、傳遞和識(shí)別,二維碼是一種能被計(jì)算機(jī)類(lèi)設(shè)備快速識(shí)別的信息載體,其中有一類(lèi)QR二維碼即Quick Response碼,這類(lèi)二維碼因具有使用方便、儲(chǔ)存空間大、糾錯(cuò)性強(qiáng)等優(yōu)點(diǎn), 而得到應(yīng)用廣泛。
二維碼在信息存儲(chǔ)和傳輸方面的優(yōu)點(diǎn)可應(yīng)用于地圖制圖,將艙內(nèi)地圖中各個(gè)標(biāo)志性地理位置用一個(gè)獨(dú)一無(wú)二的二維碼布點(diǎn)與之對(duì)應(yīng),最后將艙內(nèi)地圖轉(zhuǎn)換為二維碼布點(diǎn)圖,可通過(guò)對(duì)二維碼布點(diǎn)實(shí)施經(jīng)典最優(yōu)路徑算法以實(shí)現(xiàn)對(duì)實(shí)際地理路線(xiàn)的最優(yōu)規(guī)劃。
空間數(shù)據(jù)庫(kù)
空間數(shù)據(jù)庫(kù)指的是地理信息系統(tǒng)在計(jì)算機(jī)物理存儲(chǔ)介質(zhì)上存儲(chǔ)的與應(yīng)用相關(guān)的地理空間數(shù)據(jù)的總和,一個(gè)復(fù)雜龐大的室內(nèi)地圖的地理位置信息的數(shù)據(jù)容量很大,空間數(shù)據(jù)庫(kù)能完整存儲(chǔ)查詢(xún)相關(guān)的文字?jǐn)?shù)字和圖形圖像等信息,能高效訪(fǎng)問(wèn)大量數(shù)據(jù),對(duì)信息有強(qiáng)大的檢索和分析能力。
最優(yōu)路徑規(guī)劃
Dijistra算法
Dijstra算法的基本思想是將所有節(jié)點(diǎn)分為兩個(gè)集合,其中一個(gè)集合S存儲(chǔ)的是到源點(diǎn)最短距離已經(jīng)確定的節(jié)點(diǎn),另一個(gè)集合V中的節(jié)點(diǎn)到源點(diǎn)的最短距離還沒(méi)有被確定。將源點(diǎn)的最短距離初始化為0,并將集合S 初始化為空。然后先得到距離源點(diǎn)最近的最短路徑,在依次循環(huán)得到路徑遞增的節(jié)點(diǎn)的最短路徑。每次循環(huán)時(shí)從集合V中選出距離源點(diǎn)最近的節(jié)點(diǎn),求得最短路徑并將該節(jié)點(diǎn)移入集合S中,并在集合V中移除若求取最短路徑時(shí)需要經(jīng)過(guò)其他節(jié)點(diǎn),這些中間點(diǎn)必須是出自集合S中,這樣,直到集合V為空,或是集合V中節(jié)點(diǎn)的最短路徑為無(wú)窮大時(shí),源點(diǎn)到所有節(jié)點(diǎn)的最短路徑就全部都得到了。在這個(gè)過(guò)程中,當(dāng)有新節(jié)點(diǎn)加入S集合時(shí),集合中的節(jié)點(diǎn)最短距離可能會(huì)需要改動(dòng),因?yàn)榻?jīng)過(guò)新加入點(diǎn)的路徑可能會(huì)比之前節(jié)點(diǎn)的最短路徑距離更短。
Floyd算法
Floyd即弗洛伊德算法,又稱(chēng)插點(diǎn)法,
基本思想是從節(jié)點(diǎn)i到節(jié)點(diǎn)j的最短路徑有2種可能,一種是從i不經(jīng)過(guò)其它點(diǎn)直接到j(luò),另一種情況是從i經(jīng)過(guò)其它若干個(gè)節(jié)點(diǎn)后到達(dá)j。因此,我們先假設(shè)兩點(diǎn)的直接距離map[i,j]為節(jié)點(diǎn)i到節(jié)點(diǎn)j的最短路徑的距離,對(duì)于其中任意節(jié)點(diǎn)k,我們反復(fù)驗(yàn)證map[i,k] + map[k,j] < min[i,j]是否成立,若成立,則說(shuō)明從i到k再到j(luò)的路徑比直接由i到j(luò)的路徑要短,則取min[i,j] = map[i,k] + map[k,j],遍歷完i點(diǎn)和j點(diǎn)的所有節(jié)點(diǎn)k后,min [i,j]即是i到j(luò)的最短路徑長(zhǎng)度。

表1 兩層艙室空間數(shù)據(jù)庫(kù)
建立艙內(nèi)二維碼標(biāo)識(shí)圖
單層船艙地圖太簡(jiǎn)單,不具有普遍性,而兩層船艙具有多層船艙的絕大部分
功能需求,為了實(shí)現(xiàn)系統(tǒng)功能和研究方便,以?xún)蓪哟摓榭臻g模型建立艙內(nèi)定位導(dǎo)航系統(tǒng)。
為實(shí)現(xiàn)基于二維碼的精確定位及導(dǎo)航,需要在各房間門(mén)上或其它標(biāo)志性地點(diǎn)處粘貼不同的二維碼標(biāo)識(shí),用來(lái)區(qū)分不同的房間和地理位置。所布置的二維碼標(biāo)識(shí)越多,不僅方便用戶(hù)確認(rèn)當(dāng)前位置,而且定位精度也會(huì)相對(duì)提高。二維碼布點(diǎn)與室內(nèi)的房間位置一一對(duì)應(yīng),相當(dāng)于將復(fù)雜的室內(nèi)布局抽象成用二維碼布點(diǎn)表示的室內(nèi)地圖。
完成以上內(nèi)容后,通過(guò)測(cè)量各個(gè)艙室間的距離,畫(huà)出艙室的二維碼布點(diǎn)圖,建立空間數(shù)據(jù)庫(kù)的有向圖和鄰接矩陣。
根據(jù)有向圖測(cè)得的數(shù)據(jù)可得鄰接矩陣,對(duì)應(yīng)于兩層船艙分別建立兩個(gè)獨(dú)立的32×32鄰接矩陣,這樣得到的鄰接矩陣與兩層船艙室內(nèi)地圖、二維碼布點(diǎn)的有向圖一一對(duì)應(yīng)。
數(shù)據(jù)庫(kù)建立
將艙室的標(biāo)號(hào)信息以及艙室作用信息存到64個(gè)相互獨(dú)立的二維碼中,建立艙內(nèi)
地圖的數(shù)據(jù)庫(kù),見(jiàn)表1。
系統(tǒng)導(dǎo)航實(shí)現(xiàn)
為了實(shí)現(xiàn)在空間導(dǎo)航系統(tǒng)中保持清晰的編程邏輯,采取的編程思想如下,在掃描二維碼定位后得到sta(起點(diǎn))的標(biāo)號(hào)值,再通過(guò)用戶(hù)輸入目的地可得到dst(終點(diǎn))的標(biāo)號(hào)值,然后可根據(jù)sta和dst的標(biāo)號(hào)值差值的絕對(duì)值,來(lái)判斷當(dāng)前所在的船艙與目的地所在船艙是否相同。可通過(guò)計(jì)算dst與sta差值的絕對(duì)值來(lái)判斷,若大于或等于32,則表明起始點(diǎn)所在船艙與目的地所在船艙不相同,需要空間最優(yōu)路徑規(guī)劃;反之,則在同一層船艙,這時(shí)可采用單層船艙的導(dǎo)航方法得到最優(yōu)路徑。
10.3969/j.issn.1001- 8972.2016.21.020