[0062] 下面结合附图和实施方法对本发明提出的基于边缘计算的海洋VMS数据传输优化方法作进一步的详细说明。
[0063] 边缘层和云层的具体步骤如图1所示。
[0064] (1)边缘层
[0065] 船载终端设备和边缘设备设置在渔船上,其中船载终端设备负责实时采集渔船定位信息(包括经纬度、时间、速度和方向等),即当前时刻的观测轨迹点,并将其发送至边缘设备;边缘设备负责航位跟踪以及接收船载终端设备传输的数据和监控中心发送的卫星通信回执。
[0066] 具体步骤如下:
[0067] 步骤a)边缘设备判断接收到的数据类型,若为卫星通信回执,执行步骤b)的报文重传过程,若为观测轨迹点,则转入执行步骤c)。
[0068] 步骤b)根据卫星通信回执中监控中心期望接收到的报文序号和边缘层已发送的报文序号进而判断传输失败的报文,然后将这些需要进行重传的报文添加到传输缓冲队列中,最后转入执行步骤g)。
[0069] 步骤c)判断观测轨迹队列是否为空,如果是,则执行步骤d),否则转入执行步骤e)。
[0070] 步骤d)基于LDR算法进行轨迹点预测。
[0071] 步骤e)判断预测轨迹点和观测轨迹点之间的距离是否大于阈值,如果是,则执行步骤f),否则转入执行步骤g。
[0072] 步骤f)将当前观测轨迹点添加到观测轨迹队列中。
[0073] 步骤g)判断当前时刻距离上次发送报文的时刻是否大于北斗短报文通信的最小通信间隔,如果是,则执行步骤h),否则转入执行步骤m)。
[0074] 步骤h)判断传输缓冲队列是否为空,如果是,则执行步骤i),否则转入执行步骤l)。
[0075] 步骤i)判断观测轨迹队列是否为空,如果是,转入执行步骤m),否则,执行步骤j)[0076] 步骤j)基于SQUISH算法对观测轨迹队列中的数据进行压缩,得到压缩后的近似轨迹。
[0077] 步骤k)基于上述步骤j)获得的近似轨迹和船载终端设备采集到的速度矢量生成新的报文,并将报文添加到传输缓冲队列中。
[0078] 步骤l)从传输缓冲队列中取出报文,并基于北斗短报文通信发送给云层。
[0079] 步骤m)本次循环结束,等待接收新的数据。
[0080] 需要说明的是:
[0081] 边缘层是由一系列具有计算资源、存储资源和通信资源的船载边缘设备(例如个人计算机)组成,主要包括以下三种功能:
[0082] (1)边缘节点在一定范围内可以进行相互通信,通信的方式包括AIS广播、无线Mesh自组网络、机会网络等。
[0083] (2)边缘层需要向云层传输数据和请求服务,因此具有和云层通信的功能。在近海区域,可以采用4G、AIS广播等岸基无线通信的方式;在远海区域,卫星通信以通信成本低、覆盖范围广、通信距离远,且基本不受环境影响的优点成为海洋VMS的理想选择。
[0084] (3)边缘层在向云层请求服务的同时,还可以在本地直接对渔业相关数据进行存储和分析,通信链路的缩短可以有效解决通信时延问题。
[0085] 所述步骤b)需要说明的是:
[0086] 由于北斗卫星传输的不可靠性,需要考虑出现传输失败或数据失真的情况,即检查是否收到监控中心的通信回执,若收到通信回执,则认为出现上述情况,需要根据通信回执中的报文序号和边缘层已发送的报文序号对丢失的报文进行重传。例如通信回执中的报文序号为7,已发送的报文序号为9,则需要将丢失的7、8、9三条报文进行重传。
[0087] 所述步骤d)需要说明的是:
[0088] 线性航位预测(LDR)算法是最简单有效的航位预测算法,该算法的基本思想是利用位置坐标和速度矢量进行线性轨迹预测。由于渔船在作业的过程中具有随机性,工作人员会根据自身的经验和周围的环境选择渔区进行捕捞作业。因此神经网络、高斯回归过程等模型不适用于当前场景。而LDR算法只需要根据预测基点和速度矢量就可以进行轨迹预测,且预测效果好于上述模型,从而提高了通信资源的利用率,因此本发明使用LDR算法进行位置跟踪。边缘层和监控中心具有确定渔船当前位置的线性预测函数
[0089]
[0090] 其中lb为预测基点,包括定位坐标 和时间lb.t, 为速度矢量,t为待预测轨迹点的时间。
[0091] 所述步骤h)需要说明的是:
[0092] 北斗短报文协议对通信频率有着严格限制,一般最小通信间隔为1分钟(主要受到设备、加密等级等因素的影响),渔船发送轨迹数据必须满足最小通信间隔。
[0093] 所述步骤k)需要说明的是:
[0094] 北斗短报文协议将报文长度严格限制在75字节以内,若发送的报文长度大于75字节,超出的部分则会被忽略。因此通常无法发送所有预测错误的轨迹点,需要在发送前对轨迹进行压缩。SQUISH算法运行速度快、实时性好,且可以通过设置缓冲区大小限定简化后轨迹的长度,因此本发明使用SQUISH算法对预测错误的轨迹进行压缩。
[0095] SQUISH采用局部优化的策略来选择最优轨迹子集,并删除原始轨迹中的冗余轨迹点。图2显示了SQUISH算法的压缩过程(t0~t2)。其中虚线框表示当前时刻已经处理完成的轨迹点,轨迹点旁边的值表示该点的优先级,即该点到相邻轨迹点构成的有向线段的时间同步欧氏距离SED,例如 优先级越小表示删除该点引起的SED误差越小。由于端点在算法执行过程必须保留,因此优先级设置为无穷大。
[0096] SQUISH算法通过缓冲区来维持轨迹点的数量,因此首先需要根据实际应用场景预先设定缓冲区的大小(长度为4),然后依次将轨迹数据添加到缓冲区中,若此时缓冲区未满(t0时刻之前),只需更新前邻轨迹点的优先级;否则(t1~t2),为了存储最新轨迹点,还需要从缓冲区删除优先级最小的轨迹点(P2)。并且更新相邻轨迹点(P1,P3)的优先级。具体调整方法为将删除点的优先级添加到相邻点的优先级上(P1的优先级为无穷大,P3的优先级从0.5变成了0.7)。按照上述步骤依次处理剩余的轨迹点,最终可以得到近似轨迹序列TR′={P1,P4,P5,P6}。
[0097] 所述步骤l)需要说明的是:
[0098] 本发明基于北斗短报文格式自定义报文内容,通过报文序号位、长度位和校验位三个字段来保证卫星通信的可靠性,具体如表1所示:
[0099] 表1自定义报文格式
[0100]标识位 报文序号位 数据净荷 校验位
12字节 4字节 57字节 2字节
[0101] (1)标识位:渔船的唯一标识字段(船舶ID),占用12个字节,以ASCII码进行表示,不满12字节的用空格填充,例如“267291”,1后面6个空格(第一个空格表示标识字段结束)。
[0102] (2)报文序号位:用于标识当前报文的序号,边缘层设备每次生成新的报文,报文序号加一。报文序号主要用于保证传输的可靠性。
[0103] (3)数据净荷:边缘层需要进行传输的具体内容,占用57个字节,主要分成三个部分,具体如表2所示。
[0104] 表2数据净荷内容格式
[0105]速度矢量 长度 预测基点 定位数据 定位数据
8字节 1字节 16字节 16字节 16字节
[0106] 1)速度矢量:用于地面监控中心进行航位推算,占用8个字节。包括速度(4字节)和方向(4字节)两部分。
[0107] 2)长度:进行传输的轨迹点数量(包括预测基点),占用1个字节。
[0108] 3)预测基点:用于监控中心进行轨迹预测,占用16个字节,具体格式和定位数据相同。
[0109] 4)定位数据:需要进行传输的轨迹点,占用16个字节。每个轨迹点包含轨迹点序号(4字节)、经度(4字节)、纬度(4字节)、时间戳(4字节)。其中轨迹点序号用于监控中心进行轨迹点修正。需要说明的是,为了最大化利用报文的长度,本系统传输的是轨迹点的时间戳,地面监控中心需要根据接收到的时间戳生成具体的时间。
[0110] (4)校验位:用ASCII码表示的除校验位外的所有字节异或结果,占用2个字节。例如异或结果为十六进制数“0x7C”,则表示为ASCII码字符“7”和“C”。
[0111] (2)云层
[0112] 云层位于地面监控中心,主要负责根据最新观测点的位置坐标和速度矢量进行轨迹预测,并且在接收到边缘层的更新报文时自动对预测轨迹进行修正,具体步骤如下:
[0113] 步骤a)判断是否接收到边缘层发送过来的报文,如果是,则执行步骤b),否则转入执行步骤g)。
[0114] 步骤b)通过差错校验策略,判断报文是否失真,如果是,转入执行步骤d),否则,执行步骤c)。
[0115] 步骤c)对接收的报文进行解码,并判断报文序号和期望接收到的报文序号是否一致,如果是,转入执行步骤e),否则,执行步骤d)的丢包反馈机制。
[0116] 步骤d)将当前期望接收到的报文序号,通过北斗短报文通信发送给边缘层。
[0117] 步骤e)根据报文中包含的轨迹信息,修正预测错误的轨迹点。
[0118] 步骤f)更新失效的预测基点和速度矢量。
[0119] 步骤g)根据预测基点和速度矢量进行LDR轨迹预测。
[0120] 需要说明的是:
[0121] 云层主要提供低成本的弹性计算和存储服务。可以通过岸基或卫星接收边缘层传输过来的渔船信息并基于GIS进行可视化展示,从而方便相关部门对渔船进行监管。云层旨在提供中央控制,主要分为数据中心和计算中心两部分。其中数据中心负责对渔船数据进行持久化,计算中心则提供包括数据可视化、语音通信、数据分析等服务。
[0122] 所述步骤e)需要说明的是:
[0123] 对于给定误差阈值θd,监控中心基于LDR进行线性轨迹预测时,会出现预测错误的情况,即预测点和观测点之间的距离大于θd,此时需要根据边缘层发送的更新报文进行修正,修正过程如图3所示:
[0124] U是未修正的预测轨迹,S是修正后的轨迹。首先监控中心接收近似轨迹TR′={P4,…,Pi,…,Pn},然后用TR′替换对应序号的预测轨迹Ui,同时由于连续的预测轨迹点是根据相同的lb和 计算出来的,为了降低冗余信息,提高查询速度,本发明只存储首尾轨迹点,删除的轨迹点可以根据首尾轨迹点和时间进行还原,不损失任何精度,因此只保留P1和P3,最终可以得到修正后的轨迹序列TR={P1,…,P3,P4,…,Pn}。
[0125] 所述步骤g)需要说明的是:
[0126] 对于给定误差阈值θd,如果预测轨迹点和观测轨迹点之间的距离小于θd,则认为预测正确,边缘层不会发送任何更新报文,监控中心直接用预测轨迹代替观测轨迹。