港口航道等受限水域因航道狭窄、水深限制大、航道内灯浮等障碍物较多、航行密度大,操作余地小,船舶在港口水域航行发生海事的可能性增大,不仅发生船舶间的碰撞事故,而且船舶搁浅触礁等事故也时有发生。长期以来国内外学者主要针对开阔水域展开船舶自动避碰方面的研究工作,尚未考虑水下碍航物的影响,因此无法适用于港口等受限水域。船舶搁浅触礁预警及避碰与地理避险决策是船舶航行智能化的难点,船舶交通管理系统(VTS)虽然具备搁浅预警功能,但预警机制简单,导致存在误警率、虚警率过高的问题,VTS值班人员在实际工作中通常采用人工决策的方式。团队前期对船舶避浅避礁决策自动化技术问题进行了初步研究,可对船舶静态碍航物进行预警,但是如果船舶数量较多,船舶检索海图信息将占用大量的系统资源,影响算法的实时性。电子海图数据快速检索是保证检索实时性的必要条件,也是研究船舶搁浅触礁危险预警和避浅避礁决策的关键技术。考虑以船舶实时坐标为查询源,根据AIS提供的船舶尺度、装载、船速等要素,以及构建的各类船舶操纵性参数数据库,对各航行船舶建立各自的海图检索区域对海图数据进行再组织,通过设计电子海图快速检索算法,在各海图检索区域内查找对船舶安全航行构成威胁的地理元素,以实现船舶对静态碍航物的不同危险等级预警。
1.电子海图数据再组织
S-57格式的数据结构包含5种类型的记录:数据集描述记录、目录记录、数据字典记录、特征记录和空间记录。其中海图中多数记录属于特征记录和空间记录,而且占据了大部分海图容量。这也是本研究进行海图检索最主要的2种记录。
S-57海图数据文件采用ISO8211作为数据封装格式,把数据结构封装在物理传输结构中。ISO8211基于该交换格式的文件,将其封装在一个逻辑记录(logicalrecord,LR)中。该原始的海图文件传输存放到物理计算机上,经过ISO8211解析库对封装的海图文件进行解析,从而转换成为可以直接使用的电子海图数据文件,即SENC数据。图1描述了海图数据各层递进关系。
用户获得通过ISO8211解析后的SENC数据后,需要对数据进行读取,即用户需要定义自己的数据结构,将存放在存储器中的SENC数据读取到内存中来,用户自己定义的数据结构就是对海图数据的再组织,组织成方便用户使用的数据结构。SENC数据中前半部分是特征记录,主要描述物标的属性,所相关联的空间记录主要描述物标的空间位置特性。对于每一个物标来说主要是通过点、线、面来描述的。因此,采用3个不同的链表存放从SENC文件中提取出来的点、线、面等空间物标。物标结构体定义为
TypedefStruct_ObjRazrules{
BoolIsSelected;
LUPrec*LUP;
S57Obj*obj;
Struct_ObjRazrules*child;
Struct_ObjRazrules*next;
}定义物标链表:
定义不同的索引值:
#definePOINTS0
#defineLINES1
#defineAREAS2
在检索海图时,将检索到的海图物标根据点、线、面分别存放到3个物标链表中,进行危险判断时,根据所要判断的物标类型,在相对应的链表中进行遍历,从而提高检索效率。
2.电子海图数据检索算法
2.1.海图检索区域
考虑到已有的研究工作所提到的海图检索判断点、线和面与矩形区域相交的速度比其他多边形速度快得多,而圆形区域对于不规则碍航物适用性不高。因此考虑选用矩形区域作为船舶检索区域。
根据静态物标对船舶的危险程度将区域划分为危险预警区、紧迫局面区和紧迫危险区。检索区域是根据港口水域内船舶的动态参数而确定的一个矩形区域,见图2。其模型如下。
式中:AE———检索区域的长度;
NE———检索区域的半宽度;
L———船长;
B———船宽;
V———航速;
t———操舵时间,即操舵时舵角由正舵到所操舵角所用的时间:
K,T———当前舵角在δ下的K/T值;
R———以δ舵角、V航速时的旋回半径;
θ———当前改向角;
P———定位精度。
当θ取5°,10°,15°时所得AE和NE分别为危险预警区、紧迫局面区和紧迫危险区的长度和宽度,仿真实验见图3。
最外层矩形框为船舶危险预警区,中间层矩形框为紧迫危险区,最内层矩形框为紧迫危险区。
2.2.动态拾取海图数据法
团队前期研究的SIHC仿真平台具有海图信息拾取功能,即当鼠标点击电子海图上的一点,系统会根据该点的位置坐标,将该点为圆心一定范围的圆形区域内海图信息提取并显示出来。在此功能上,模拟鼠标点击获取海图信息,实现动态拾取海图信息方法来检索船舶检索区内的海图信息,如图4所示。
T为目标船位置,矩形区域为船舶检索区域,将检索区域的宽度平均分成n份,每一份的长度即为检索圆的直径。需要说明的是,检索圆直径要选取一个较为合适的值。如果检索圆过小,相邻的多个检索圆可能检索到同一物标,出现多次的重复检索。此外,海图检索算法的循环次数过多,会导致程序运行缓慢,实时性较差。相反,如果检索圆过大,相切的检索圆之间会出现很大的空间没有被检索到,导致算法的准确性较差。本文初步拟定将船舶危险预警区域的宽度分为6等份,将船舶紧迫局面区域的宽度分为4等份,将船舶紧迫危险区域的宽度分为2等份。
步骤1。横向确定检索点的坐标A1,拾取圆A1内的海图信息。
步骤2。纵向移动确定检索点的坐标Ai(i=2,3,…,n),拾取圆Ai内的海图信息。
步骤3。返回步骤1,2,确定检索点Bi(i=2,3,…,n)。依次类推。
直至遍历完所有的检索点,即拾取检索区内的所有海图数据。海图检索算法流程见图5。
采用动态拾取海图信息的方法检索海图是将船舶检索区域分成若干份,每次拾取完其中的一个检索圆内的海图数据进行危险碍航物的判断,完成判断之后将拾取的海图信息进行清空,进行下一个检索圆的海图信息拾取,这样可避免拾取的海图信息链表内容不断增加,避免每一次的重复判断,从而达到海图信息的快速检索。
2.3.几何检索航道边界线方法
首先,采用描点法依次提取电子海图上航道边界上的拐点,记录所有拐点的经纬度信息。其次,根据拐点的经纬度信息,连接相应的2个点,在电子海图上将航道边界线画出来。最后,建立直角坐标系,在同一坐标系下判断船舶所在区域的航道边界线是否与船舶检索区域相交,即计算机图形学中判断线是否与多边形相交,从而检索出航道线。
海图数据中航道区是面特征,是由闭合的连接线构成。采用直接检索的方式,需要依次判断连接线上的所有链接点与检索区域的位置关系。港口水域航道区较为复杂,链接点较多,如果依次判断会在一定程度上影响检索效率。采用上述特殊方法,不需要读取海图数据中的航道区信息,只需要通过船舶所在位置确定出所在航道区,然后判断所在航道区提取的4条航道线是否与检索矩形相交即可,从而提高检索效率。
2.4.多船海图检索危险预警算法及流程
港口水域的船舶航行需要判断危险碍航物的危险等级,并且为模拟VTS对港口水域船舶实时监控,需要港口水域内航行的所有船舶同时进行海图检索。其港口水域多船海图检索危险预警算法流程见图6。
船舶航行于港口水域,在进行自动避浅避礁决策时以危险等级最高的危险物标为主要避让物标。因此在进行海图检索时,当检索到紧迫危险的物标时,立即输出危险信息并进行避让决策,不再进行紧迫局面区域内的海图检索。同理,当检索到紧迫局面的物标时,不再进行危险预警区域内的海图检索。这样减少了海图的检索次数和范围,可以达到更加快速检索的目的。
3.算法实现结果及实验验证
以厦门港为例,将碍航物信息输入到需要检索的海图物标配置文件中,见表1。
3.1.单船检索危险物标实验
基于SIHC仿真平台的目标船服务器,以灯标作为检索物标。灯标不在船舶检索区域内,因此输出信息栏中无检索物标输出,见图7。船舶检索区域内检索到灯标,输出信息栏中显示危险物标为灯标,见图8。
3.2.检索物标危险等级实验
以航道线为检索目标,判断船舶是否有偏离航道的危险。船舶初始状态,没有检测到航道边界线,因此输出信息栏中无危险物标输出,船舶危险等级为safe,见图9。船舶的危险预警区域检索到航道边界线,输出信息栏中显示危险物标为航道线,且危险等级为warning,见图10。船舶的紧迫局面区域检测到航道边界线,输出信息栏中显示危险物标为航道线,且危险等级为danger,见图11。船舶的紧迫危险区域内检测到航道边界线,输出信息栏中显示危险物标为航道线,且危险等级为deviation,见图12。该实验验证了海图检索算法的可行性。
3.3.多船检索危险物标实验
设置10艘目标船进行多船海图检索实验,验证算法的实时性。实验结果见图13。实现了各船舶实时检索功能。
参考文章:电子海图、AIS、雷达