李榮川,陳 寧
(1. 海裝上海局駐上海地區(qū)軍事代表室,上海 200129;2. 江蘇科技大學(xué) 能源與動(dòng)力工程學(xué)院,江蘇鎮(zhèn)江 212100)
近些年來(lái),隨著我國(guó)對(duì)外貿(mào)易的日益增長(zhǎng),船運(yùn)運(yùn)輸及船舶數(shù)量日益增大,海上施工項(xiàng)目的數(shù)量也不斷增加,復(fù)雜的水域環(huán)境很容易會(huì)造成通航船舶碰撞以及擱淺,因此在復(fù)雜水域內(nèi)如何確保船舶安全避開障礙物成為人們?cè)絹?lái)越關(guān)注的問(wèn)題[1]。同時(shí),隨著智能船舶的發(fā)展,基于電子海圖的路徑規(guī)劃算法成為保證船舶安全航行的一種有效方法。開發(fā)一種基于電子海圖的船舶路徑規(guī)劃模擬器顯得尤為重要,讓船員充分的理解如何根據(jù)水文、氣象等條件來(lái)制定航線,以調(diào)動(dòng)船員的學(xué)習(xí)積極性[2]。
模擬器為培訓(xùn)船員路徑規(guī)劃教學(xué)過(guò)程的可視化提供了強(qiáng)有力的手段。C#是面向?qū)ο蟮木幊陶Z(yǔ)言,它使得程序員可以快速地編寫各種基于MICROSOFT.NET平臺(tái)的應(yīng)用程序并且提供了一系列的工具和服務(wù)來(lái)最大程度地開發(fā)利用計(jì)算與通訊領(lǐng)域,已廣泛應(yīng)用于高等學(xué)校和培訓(xùn)機(jī)構(gòu)的教學(xué)試驗(yàn)中。基于Visual Studio C#設(shè)計(jì)和實(shí)現(xiàn)的船舶路徑規(guī)劃模擬器充分考慮了人機(jī)交互的友好性和可擴(kuò)展性,每條航線都可以查詢或者修改當(dāng)前航線的所有航點(diǎn),船員在直觀感受航線制定的同時(shí),可以自己動(dòng)手修改或者增加航點(diǎn),加深對(duì)培訓(xùn)內(nèi)容的理解和掌握。模擬器可提高教學(xué)的靈活性,為船員動(dòng)手能力和創(chuàng)新能力的培養(yǎng)提供沃土。
模擬器利用C#與SQL Server通訊[3],在電腦上模擬AIS信號(hào),將所用數(shù)據(jù)存入SQL Server,并通過(guò)C#可視化界面顯示出所有有效數(shù)據(jù),最終在電子海圖上實(shí)現(xiàn)航線模擬。其中與航線有關(guān)的所有航點(diǎn)都需經(jīng)過(guò)AIS數(shù)據(jù)加密才能通過(guò)串口輸送到電子海圖里,每2個(gè)航點(diǎn)之間形成一段航線,通過(guò)C#實(shí)現(xiàn)船只虛擬移動(dòng),來(lái)模擬實(shí)際船只的航行。該信號(hào)模擬器的系統(tǒng)原理如圖1所示。
圖1 信號(hào)模擬器的系統(tǒng)原理框圖
模擬器操作簡(jiǎn)單,船舶只需選擇目的地港口、出發(fā)地港口、船型、桅桿高度、載貨量和吃水深度,點(diǎn)擊查詢按鈕就可以顯示所有的航點(diǎn),如果查詢條件不滿足要求,界面顯示為空,說(shuō)明需調(diào)整檢索條件,繼續(xù)檢索。如果在局部范圍考慮水文和氣象條件需繞行,船員可以修改航點(diǎn)或者增加刪除航點(diǎn)實(shí)現(xiàn)繞行,但變化后的航點(diǎn)間的船艏向和航程需重新計(jì)算[4],系統(tǒng)界面右側(cè)提供計(jì)算的功能,船員需輸入相鄰航點(diǎn)之間的經(jīng)緯度點(diǎn)擊計(jì)算按鈕便可得最新的船艏向、航程、剩余航程、經(jīng)度增加量和緯度增加量。信號(hào)模擬界面如圖2所示。
船舶自動(dòng)識(shí)別系統(tǒng)(Automatic Identification System,AIS)是一種新型的通信導(dǎo)航系統(tǒng),它使用自組織時(shí)分多址(SOTDMA)連接方式,在世界任一海域?qū)崟r(shí)進(jìn)行多船間、船岸間的動(dòng)靜態(tài)航行信息以及其他與航行安全相關(guān)信息的交換[5]。船舶的IMO號(hào)、MMSI號(hào)、船名、船舶經(jīng)緯度、時(shí)間、對(duì)地航速、航向信息、吃水深度、ETA等信息都需經(jīng)過(guò)AIS數(shù)據(jù)加密過(guò)后才能成為可被設(shè)備識(shí)別的暗碼[6]。在開始仿真之前,首先要把1臺(tái)正在工作的電子海圖的串口與PC機(jī)的串口連接,通過(guò)RS232信號(hào)線進(jìn)行通訊,然后打開模擬系統(tǒng),選擇對(duì)應(yīng)的航線進(jìn)行模擬,模擬器模擬AIS信號(hào)并傳輸?shù)诫娮雍D上顯示。電子海圖與計(jì)算機(jī)連接如圖3所示。
圖2 信號(hào)模擬界面顯示
圖3 電子海圖與計(jì)算機(jī)連接
AIS數(shù)據(jù)加密是將船舶的各項(xiàng)數(shù)據(jù)的十進(jìn)制轉(zhuǎn)化為對(duì)應(yīng)位數(shù)的二進(jìn)制,當(dāng)加密數(shù)據(jù)時(shí),需要先將16進(jìn)制的數(shù)轉(zhuǎn)化為每字節(jié)存放6位的有效數(shù)據(jù),然后將6位有效數(shù)據(jù)轉(zhuǎn)化為8位ASCII,然后根據(jù)標(biāo)準(zhǔn)的 AIVDM 語(yǔ)句格式進(jìn)行打包處理[7]。
軟件VS2015編程獲取和存儲(chǔ)電子海圖對(duì)應(yīng)海域的環(huán)境信息,其中包括陸地、島嶼、海床和等深線等障礙物的信息,生成模擬船只航行的海洋環(huán)境空間。將已經(jīng)獲取的海洋環(huán)境模型進(jìn)行柵格化,并設(shè)置柵格的大小,啟用基于電子海圖信息的遺傳算法進(jìn)行航線規(guī)劃[8],獲取一條航線對(duì)應(yīng)的多個(gè)航點(diǎn)。航點(diǎn)獲取軟件程序流程圖如圖4所示。
圖4 全局路徑規(guī)劃程序流程圖
模擬器的航線主要依賴于多個(gè)航點(diǎn)的選取,通過(guò)全局路徑規(guī)劃程序的計(jì)算,將得到一條航線對(duì)應(yīng)的多個(gè)航點(diǎn),記錄多個(gè)轉(zhuǎn)向點(diǎn)。將所有航點(diǎn)一一輸入到系統(tǒng)中,此時(shí)數(shù)據(jù)庫(kù)將存儲(chǔ)所有航點(diǎn),如圖5所示。
圖5 數(shù)據(jù)庫(kù)存儲(chǔ)航點(diǎn)
為了方便起見,規(guī)定格式:37°25.4′寫作37 254 000,便于后期的航線規(guī)劃和模擬。表1為通過(guò)全局路徑規(guī)劃程序得到的從煙臺(tái)港萊州港區(qū)到大連港大港港區(qū)的一條航線中的所有航點(diǎn)數(shù)據(jù)。
表1 航點(diǎn)數(shù)據(jù)
通過(guò)2點(diǎn)之間的經(jīng)緯度數(shù)據(jù)計(jì)算兩點(diǎn)之間距離[9],具體計(jì)算為
式中:D為相鄰2點(diǎn)的距離;R為地球半徑;(L,B)、(L′,B′)分別為相鄰2點(diǎn)的經(jīng)緯度。
總航程的具體計(jì)算為
式中:n為總航段數(shù)。
當(dāng)前航點(diǎn)剩余航程的具體計(jì)算式為
式中:m為當(dāng)前航點(diǎn)總航段數(shù)。
航程和剩余航程的計(jì)算有利于船員掌握船舶航行的整體狀況,對(duì)船舶的安全航行有著重要的意義。一方面,確定相鄰航點(diǎn)之間的航程能夠使船員明確距離下一個(gè)轉(zhuǎn)向點(diǎn)還有多遠(yuǎn)的距離,另一方面,對(duì)實(shí)現(xiàn)經(jīng)濟(jì)航線和計(jì)算船舶能效營(yíng)運(yùn)指數(shù)(EEOI)有很大的幫助[10],這對(duì)制定航行計(jì)劃表也有著很大的參考價(jià)值。
已知航點(diǎn)A(x1,y1)、航點(diǎn)B(x2,y2),先求出A、B的象限角:具體計(jì)算如式(4):
再根據(jù)條件將象限角θ轉(zhuǎn)換為方位角α[11]:
1)當(dāng)x1-x2>0時(shí),y1-y2>0,α=θ。
2)當(dāng)x1-x2<0時(shí),y1-y2>0,α=θ+ 180°。
3)當(dāng)x1-x2<0時(shí),y1-y2<0,α=θ+ 180°。
4)當(dāng)x1-x2>0時(shí),y1-y2<0,α=θ+ 360°。
在我國(guó)沿海地區(qū)的航行過(guò)程中,認(rèn)為船首向近似等于方位角,因此這里把方位角的值填入船首向的值[12]。
通過(guò)船艏向計(jì)算緯度增加量a、經(jīng)度增加量b,具體計(jì)算為
1)當(dāng)α∈(0°, 90°),a=10,b=a/tan(90°-α)。
2)當(dāng)α∈(90°, 180°),a=-10,b=a/tan(180°-α)。
3)當(dāng)α∈(180°, 270°),a=-10,b=a/tan(α-180°)。
4)當(dāng)α∈(270°, 360°),a=10,b=-a/tan(α-270°)。
模擬器通過(guò)疊加緯度增加量和經(jīng)度增加量不斷改變當(dāng)前船舶的經(jīng)緯度數(shù)值,從而直接決定了船舶模擬航行的速度。
將所有航點(diǎn)依次連接,連接成一條航線。該航線應(yīng)具備躲避障礙物,有富裕水深[13]的特點(diǎn),是能夠滿足當(dāng)前氣象條件的安全航線。如果出現(xiàn)需要臨時(shí)調(diào)整航線時(shí),通過(guò)調(diào)整某一航點(diǎn)或者增加航點(diǎn)來(lái)實(shí)現(xiàn)繞行[14]。如圖6為煙臺(tái)港萊州港區(qū)到大連港大港港區(qū)的某條航線。
圖6 煙臺(tái)港萊州港區(qū)到大連港大港港區(qū)的某條航線
模擬器最終將向船員展示所指定航線的安全性和可靠性,在前面的所有準(zhǔn)備工作做完之后,點(diǎn)擊開始模擬按鈕,C#將以一個(gè)定時(shí)器的時(shí)間間隔不斷地向電子海圖發(fā)送AIS數(shù)據(jù),該數(shù)據(jù)依據(jù)航線規(guī)劃出的所有航點(diǎn),以緯度增加和經(jīng)度增加的形式同時(shí)變化,實(shí)現(xiàn)虛擬船只的移動(dòng),可以在電子海圖上清晰地看到船只按照航線規(guī)劃的路徑形式航行,并且到達(dá)下一個(gè)轉(zhuǎn)向點(diǎn)之后準(zhǔn)確轉(zhuǎn)向,途中可以翻看電子海圖周圍的環(huán)境,包括水文情況和航道信息。讓船員在掌握理論知識(shí)以后,更好地鞏固和驗(yàn)證航線規(guī)劃的安全性和可靠性[15],很具有教學(xué)價(jià)值。如圖7為煙臺(tái)港萊州港區(qū)到大連港大港港區(qū)的某條航線模擬航行時(shí)的電子海圖上的顯示界面。
圖7 模擬航行時(shí)的電子海圖界面顯示
模擬器界面簡(jiǎn)單,易操作。船員可以親自編寫航線,并根據(jù)電子海圖上的信息和理論認(rèn)識(shí)到驗(yàn)證航線的可靠性,可以改變船只的信息,也可以繪制定制航線,可操作性強(qiáng)。操作思路清晰,演示便捷,實(shí)現(xiàn)了在教室就能夠?qū)W習(xí)如何繪制航線并且觀察航行過(guò)程中可能遇到的危險(xiǎn),教師對(duì)航海學(xué)知識(shí)的講解更直觀。模擬器為課程理論教學(xué)和試驗(yàn)教學(xué)的有機(jī)結(jié)合提供了幫手,為試驗(yàn)教學(xué)提供了強(qiáng)有力的載體,已經(jīng)應(yīng)用在輔助性教學(xué)中。該系統(tǒng)改善了課程教學(xué)效果,發(fā)揮了船員的積極主動(dòng)性,對(duì)船員動(dòng)手和創(chuàng)新能力的培養(yǎng)有較大的幫助。