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