李榮川,陳 寧
(1. 海裝上海局駐上海地區軍事代表室,上海 200129;2. 江蘇科技大學 能源與動力工程學院,江蘇鎮江 212100)
近些年來,隨著我國對外貿易的日益增長,船運運輸及船舶數量日益增大,海上施工項目的數量也不斷增加,復雜的水域環境很容易會造成通航船舶碰撞以及擱淺,因此在復雜水域內如何確保船舶安全避開障礙物成為人們越來越關注的問題[1]。同時,隨著智能船舶的發展,基于電子海圖的路徑規劃算法成為保證船舶安全航行的一種有效方法。開發一種基于電子海圖的船舶路徑規劃模擬器顯得尤為重要,讓船員充分的理解如何根據水文、氣象等條件來制定航線,以調動船員的學習積極性[2]。
模擬器為培訓船員路徑規劃教學過程的可視化提供了強有力的手段。C#是面向對象的編程語言,它使得程序員可以快速地編寫各種基于MICROSOFT.NET平臺的應用程序并且提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域,已廣泛應用于高等學校和培訓機構的教學試驗中。基于Visual Studio C#設計和實現的船舶路徑規劃模擬器充分考慮了人機交互的友好性和可擴展性,每條航線都可以查詢或者修改當前航線的所有航點,船員在直觀感受航線制定的同時,可以自己動手修改或者增加航點,加深對培訓內容的理解和掌握。模擬器可提高教學的靈活性,為船員動手能力和創新能力的培養提供沃土。
模擬器利用C#與SQL Server通訊[3],在電腦上模擬AIS信號,將所用數據存入SQL Server,并通過C#可視化界面顯示出所有有效數據,最終在電子海圖上實現航線模擬。其中與航線有關的所有航點都需經過AIS數據加密才能通過串口輸送到電子海圖里,每2個航點之間形成一段航線,通過C#實現船只虛擬移動,來模擬實際船只的航行。該信號模擬器的系統原理如圖1所示。

圖1 信號模擬器的系統原理框圖
模擬器操作簡單,船舶只需選擇目的地港口、出發地港口、船型、桅桿高度、載貨量和吃水深度,點擊查詢按鈕就可以顯示所有的航點,如果查詢條件不滿足要求,界面顯示為空,說明需調整檢索條件,繼續檢索。如果在局部范圍考慮水文和氣象條件需繞行,船員可以修改航點或者增加刪除航點實現繞行,但變化后的航點間的船艏向和航程需重新計算[4],系統界面右側提供計算的功能,船員需輸入相鄰航點之間的經緯度點擊計算按鈕便可得最新的船艏向、航程、剩余航程、經度增加量和緯度增加量。信號模擬界面如圖2所示。
船舶自動識別系統(Automatic Identification System,AIS)是一種新型的通信導航系統,它使用自組織時分多址(SOTDMA)連接方式,在世界任一海域實時進行多船間、船岸間的動靜態航行信息以及其他與航行安全相關信息的交換[5]。船舶的IMO號、MMSI號、船名、船舶經緯度、時間、對地航速、航向信息、吃水深度、ETA等信息都需經過AIS數據加密過后才能成為可被設備識別的暗碼[6]。在開始仿真之前,首先要把1臺正在工作的電子海圖的串口與PC機的串口連接,通過RS232信號線進行通訊,然后打開模擬系統,選擇對應的航線進行模擬,模擬器模擬AIS信號并傳輸到電子海圖上顯示。電子海圖與計算機連接如圖3所示。

圖2 信號模擬界面顯示

圖3 電子海圖與計算機連接
AIS數據加密是將船舶的各項數據的十進制轉化為對應位數的二進制,當加密數據時,需要先將16進制的數轉化為每字節存放6位的有效數據,然后將6位有效數據轉化為8位ASCII,然后根據標準的 AIVDM 語句格式進行打包處理[7]。
軟件VS2015編程獲取和存儲電子海圖對應海域的環境信息,其中包括陸地、島嶼、海床和等深線等障礙物的信息,生成模擬船只航行的海洋環境空間。將已經獲取的海洋環境模型進行柵格化,并設置柵格的大小,啟用基于電子海圖信息的遺傳算法進行航線規劃[8],獲取一條航線對應的多個航點。航點獲取軟件程序流程圖如圖4所示。

圖4 全局路徑規劃程序流程圖
模擬器的航線主要依賴于多個航點的選取,通過全局路徑規劃程序的計算,將得到一條航線對應的多個航點,記錄多個轉向點。將所有航點一一輸入到系統中,此時數據庫將存儲所有航點,如圖5所示。

圖5 數據庫存儲航點
為了方便起見,規定格式:37°25.4′寫作37 254 000,便于后期的航線規劃和模擬。表1為通過全局路徑規劃程序得到的從煙臺港萊州港區到大連港大港港區的一條航線中的所有航點數據。

表1 航點數據
通過2點之間的經緯度數據計算兩點之間距離[9],具體計算為

式中:D為相鄰2點的距離;R為地球半徑;(L,B)、(L′,B′)分別為相鄰2點的經緯度。
總航程的具體計算為

式中:n為總航段數。
當前航點剩余航程的具體計算式為

式中:m為當前航點總航段數。
航程和剩余航程的計算有利于船員掌握船舶航行的整體狀況,對船舶的安全航行有著重要的意義。一方面,確定相鄰航點之間的航程能夠使船員明確距離下一個轉向點還有多遠的距離,另一方面,對實現經濟航線和計算船舶能效營運指數(EEOI)有很大的幫助[10],這對制定航行計劃表也有著很大的參考價值。
已知航點A(x1,y1)、航點B(x2,y2),先求出A、B的象限角:具體計算如式(4):

再根據條件將象限角θ轉換為方位角α[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°。
在我國沿海地區的航行過程中,認為船首向近似等于方位角,因此這里把方位角的值填入船首向的值[12]。
通過船艏向計算緯度增加量a、經度增加量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°)。
模擬器通過疊加緯度增加量和經度增加量不斷改變當前船舶的經緯度數值,從而直接決定了船舶模擬航行的速度。
將所有航點依次連接,連接成一條航線。該航線應具備躲避障礙物,有富裕水深[13]的特點,是能夠滿足當前氣象條件的安全航線。如果出現需要臨時調整航線時,通過調整某一航點或者增加航點來實現繞行[14]。如圖6為煙臺港萊州港區到大連港大港港區的某條航線。

圖6 煙臺港萊州港區到大連港大港港區的某條航線
模擬器最終將向船員展示所指定航線的安全性和可靠性,在前面的所有準備工作做完之后,點擊開始模擬按鈕,C#將以一個定時器的時間間隔不斷地向電子海圖發送AIS數據,該數據依據航線規劃出的所有航點,以緯度增加和經度增加的形式同時變化,實現虛擬船只的移動,可以在電子海圖上清晰地看到船只按照航線規劃的路徑形式航行,并且到達下一個轉向點之后準確轉向,途中可以翻看電子海圖周圍的環境,包括水文情況和航道信息。讓船員在掌握理論知識以后,更好地鞏固和驗證航線規劃的安全性和可靠性[15],很具有教學價值。如圖7為煙臺港萊州港區到大連港大港港區的某條航線模擬航行時的電子海圖上的顯示界面。

圖7 模擬航行時的電子海圖界面顯示
模擬器界面簡單,易操作。船員可以親自編寫航線,并根據電子海圖上的信息和理論認識到驗證航線的可靠性,可以改變船只的信息,也可以繪制定制航線,可操作性強。操作思路清晰,演示便捷,實現了在教室就能夠學習如何繪制航線并且觀察航行過程中可能遇到的危險,教師對航海學知識的講解更直觀。模擬器為課程理論教學和試驗教學的有機結合提供了幫手,為試驗教學提供了強有力的載體,已經應用在輔助性教學中。該系統改善了課程教學效果,發揮了船員的積極主動性,對船員動手和創新能力的培養有較大的幫助。