基于电子海图的船舶路径规划模拟器开发
2021-08-21李荣川
李荣川,陈 宁
(1. 海装上海局驻上海地区军事代表室,上海 200129;2. 江苏科技大学 能源与动力工程学院,江苏镇江 212100)
0 引言
近些年来,随着我国对外贸易的日益增长,船运运输及船舶数量日益增大,海上施工项目的数量也不断增加,复杂的水域环境很容易会造成通航船舶碰撞以及搁浅,因此在复杂水域内如何确保船舶安全避开障碍物成为人们越来越关注的问题[1]。同时,随着智能船舶的发展,基于电子海图的路径规划算法成为保证船舶安全航行的一种有效方法。开发一种基于电子海图的船舶路径规划模拟器显得尤为重要,让船员充分的理解如何根据水文、气象等条件来制定航线,以调动船员的学习积极性[2]。
模拟器为培训船员路径规划教学过程的可视化提供了强有力的手段。C#是面向对象的编程语言,它使得程序员可以快速地编写各种基于MICROSOFT.NET平台的应用程序并且提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域,已广泛应用于高等学校和培训机构的教学试验中。基于Visual Studio C#设计和实现的船舶路径规划模拟器充分考虑了人机交互的友好性和可扩展性,每条航线都可以查询或者修改当前航线的所有航点,船员在直观感受航线制定的同时,可以自己动手修改或者增加航点,加深对培训内容的理解和掌握。模拟器可提高教学的灵活性,为船员动手能力和创新能力的培养提供沃土。
1 系统内容及实现
模拟器利用C#与SQL Server通讯[3],在电脑上模拟AIS信号,将所用数据存入SQL Server,并通过C#可视化界面显示出所有有效数据,最终在电子海图上实现航线模拟。其中与航线有关的所有航点都需经过AIS数据加密才能通过串口输送到电子海图里,每2个航点之间形成一段航线,通过C#实现船只虚拟移动,来模拟实际船只的航行。该信号模拟器的系统原理如图1所示。
图1 信号模拟器的系统原理框图
模拟器操作简单,船舶只需选择目的地港口、出发地港口、船型、桅杆高度、载货量和吃水深度,点击查询按钮就可以显示所有的航点,如果查询条件不满足要求,界面显示为空,说明需调整检索条件,继续检索。如果在局部范围考虑水文和气象条件需绕行,船员可以修改航点或者增加删除航点实现绕行,但变化后的航点间的船艏向和航程需重新计算[4],系统界面右侧提供计算的功能,船员需输入相邻航点之间的经纬度点击计算按钮便可得最新的船艏向、航程、剩余航程、经度增加量和纬度增加量。信号模拟界面如图2所示。
1.1 AIS数据的加密
船舶自动识别系统(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]。
1.2 航点获取与存储
软件VS2015编程获取和存储电子海图对应海域的环境信息,其中包括陆地、岛屿、海床和等深线等障碍物的信息,生成模拟船只航行的海洋环境空间。将已经获取的海洋环境模型进行栅格化,并设置栅格的大小,启用基于电子海图信息的遗传算法进行航线规划[8],获取一条航线对应的多个航点。航点获取软件程序流程图如图4所示。
图4 全局路径规划程序流程图
模拟器的航线主要依赖于多个航点的选取,通过全局路径规划程序的计算,将得到一条航线对应的多个航点,记录多个转向点。将所有航点一一输入到系统中,此时数据库将存储所有航点,如图5所示。
图5 数据库存储航点
为了方便起见,规定格式:37°25.4′写作37 254 000,便于后期的航线规划和模拟。表1为通过全局路径规划程序得到的从烟台港莱州港区到大连港大港港区的一条航线中的所有航点数据。
表1 航点数据
2 航线计划表的计算
2.1 任意相邻2点之间的距离
通过2点之间的经纬度数据计算两点之间距离[9],具体计算为
式中:D为相邻2点的距离;R为地球半径;(L,B)、(L′,B′)分别为相邻2点的经纬度。
2.2 总航程和剩余航程的计算
总航程的具体计算为
式中:n为总航段数。
当前航点剩余航程的具体计算式为
式中:m为当前航点总航段数。
航程和剩余航程的计算有利于船员掌握船舶航行的整体状况,对船舶的安全航行有着重要的意义。一方面,确定相邻航点之间的航程能够使船员明确距离下一个转向点还有多远的距离,另一方面,对实现经济航线和计算船舶能效营运指数(EEOI)有很大的帮助[10],这对制定航行计划表也有着很大的参考价值。
2.3 任意相邻2点之间的航向
已知航点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]。
2.4 纬度增加量、经度增加量的计算
通过船艏向计算纬度增加量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°)。
模拟器通过叠加纬度增加量和经度增加量不断改变当前船舶的经纬度数值,从而直接决定了船舶模拟航行的速度。
3 航线规划设计
将所有航点依次连接,连接成一条航线。该航线应具备躲避障碍物,有富裕水深[13]的特点,是能够满足当前气象条件的安全航线。如果出现需要临时调整航线时,通过调整某一航点或者增加航点来实现绕行[14]。如图6为烟台港莱州港区到大连港大港港区的某条航线。
图6 烟台港莱州港区到大连港大港港区的某条航线
4 模拟航线航行
模拟器最终将向船员展示所指定航线的安全性和可靠性,在前面的所有准备工作做完之后,点击开始模拟按钮,C#将以一个定时器的时间间隔不断地向电子海图发送AIS数据,该数据依据航线规划出的所有航点,以纬度增加和经度增加的形式同时变化,实现虚拟船只的移动,可以在电子海图上清晰地看到船只按照航线规划的路径形式航行,并且到达下一个转向点之后准确转向,途中可以翻看电子海图周围的环境,包括水文情况和航道信息。让船员在掌握理论知识以后,更好地巩固和验证航线规划的安全性和可靠性[15],很具有教学价值。如图7为烟台港莱州港区到大连港大港港区的某条航线模拟航行时的电子海图上的显示界面。
图7 模拟航行时的电子海图界面显示
5 结论
模拟器界面简单,易操作。船员可以亲自编写航线,并根据电子海图上的信息和理论认识到验证航线的可靠性,可以改变船只的信息,也可以绘制定制航线,可操作性强。操作思路清晰,演示便捷,实现了在教室就能够学习如何绘制航线并且观察航行过程中可能遇到的危险,教师对航海学知识的讲解更直观。模拟器为课程理论教学和试验教学的有机结合提供了帮手,为试验教学提供了强有力的载体,已经应用在辅助性教学中。该系统改善了课程教学效果,发挥了船员的积极主动性,对船员动手和创新能力的培养有较大的帮助。