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