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