集群环境下的合成孔径声纳多传感器数据共享方法转让专利

申请号 : CN201710259321.7

文献号 : CN107168809B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 钟何平唐劲松张森徐魁黄攀田振吴浩然丘昌镇

申请人 : 中国人民解放军海军工程大学

摘要 :

本发明公开了一种集群环境下的多传感器数据共享方法,其步骤包括:(1)设置系统工作参数;(2)计算单块原始声纳回波数据获取时间,确定所对应时间段内最大传感器数据个数,并分配初始存储空间;(3)接收各传感器节点上传数据并存储;(4)单块声纳数据采集完毕时,对当前传感器数据按照采集时间进行排序,然后截取与当前采集声纳数据所对应时间段传感器数据,进行数据组包操作。(5)计算发送次数,按照固定大小及发送次数向后续数据接收线程发送传感器数据。(6)数据接收线程完成数据接收后,解包后进行后续信号处理。按照本发明实现的数据共享方法,使得不同进程之间传感器数据共享方法简单,并且容易拓展,不受传感器数据类型个数限制。

权利要求 :

1.一种集群环境下的合成孔径声纳多传感器数据共享方法,其特征在于,上述数据共享方法包括如下步骤:对所述多传感器数据执行分块存储,在接收数据前,确定所述多传感器数据块所对应的最大传感器数据个数,按照最大个数为上述个数中的每一种传感器数据设置存储空间的数据容量;

开启多线程接收传感器数据,并且按照循环队列接收数据,存储入上述设置的对应传感器类型的存储空间中;

当单块合成孔径声纳数据采集完毕时,对所述传感器数据执行排序及组包,然后按照排序顺序对组包后的数据执行传输;

接收所述数据后按照组包程序对应执行解包从而实现数据共享,对所述多传感器数据执行分块的计算方法为:将所述数据在方位向上按照N倍的合成孔径长度进行分块 其中λ为所述数据回波波长、D为所述合成孔径声纳阵元长度、R为所述合成孔径声纳最远成像距离,N为合成孔径个数,所述存储空间的数据容量的计算方法为:计算出采集上述长度数据 所需要的时间T;并记录对应所需要采集的脉冲数据个数NPluse;根据最高传感器数据采集频率为FsMax,时间T,计算出所述存储空间的数据容量为:T*FsMax,实际分配数据容量在计算出的数据容量数值基础上设置盈余。

2.如权利要求1中所述的集群环境下的合成孔径声纳多传感器数据共享方法,其特征在于,所述组包程序依次存储总数据长度、GPS数据个数和对应的GPS数据、超短基线数据个数和对应的超短基线数据、姿态传感器数据个数和对应的姿态传感器数据。

3.如权利要求2所述的集群环境下的合成孔径声纳多传感器数据共享方法,其特征在于,所述组包后的数据传输方式为:组包后的总传感器数据长度为iTotalSize、一次能够传输的最大数据长度iMax、自定义的一次发送的数据长度iOneSendSize,计算出传输次数NSend=floor(iTotalSize/iOneSendSize)+1以及最后一次传输的剩余数据量iTotal-iMax*floor(iTotal/iOneSendSize),发送至后续进程顺序处理。

说明书 :

集群环境下的合成孔径声纳多传感器数据共享方法

技术领域

[0001] 本发明属于数据共享领域,特别是涉及一种集群环境下的合成孔径声纳多传感器数据共享方法。

背景技术

[0002] 合成孔径声纳(SAS)是一种高分辨率成像声纳,它具有成像分辨率与工作频率和成像距离无关的优点,可广泛用于水下考古、海底石油勘探和搜寻水下失落物体等。为进行高精度成像,必须对载体运动过程所造成的各种误差进行补偿,将非理想运动状态下接收的多子阵信号转化为理想运动状态下的信号,然后进行成像处理。集群环境下合成孔径声纳信号处理过程中,进行运动补偿首先涉及到的就是多种传感器数据的共享方法。由于传感器类型多,每种传感器数据频率不一致,如何在不同进程之间进行传感器数据共享是一个重要问题。

发明内容

[0003] 针对现有技术的以上缺陷或改进需求,本发明的目的在于克服集群环境下合成孔径声纳信号处理多传感器数据共享方法难的问题,该方法能够有效解决不同传感器数据在不同进程之间的有效传递,并且易于拓展。
[0004] 本发明提供了一种集群环境下的合成孔径声纳多传感器数据共享方法,其特征在于,上述数据共享方法包括如下步骤:
[0005] 对所述多传感器数据执行分块存储,在接收数据前,确定所述多传感器数据块所对应的最大传感器数据个数,按照最大个数为上述个数中的每一种传感器数据设置存储空间的数据容量;
[0006] 开启多线程接收传感器数据,并且按照循环队列接收数据,存储入上述设置的对应传感器类型的存储空间中;
[0007] 当单块合成孔径声纳数据采集完毕时,对所述传感器数据执行排序及组包,然后按照排序顺序对所述组包后的数据执行传输;
[0008] 接收所述数据后按照所述组包程序对应执行解包从而实现数据共享。
[0009] 进一步地,对所述多传感器数据执行分块的计算方法为:
[0010] 将所述数据在方位向上按照N倍的合成孔径长度进行分块 其中λ为所述数据回波波长、D为所述合成孔径声纳阵元长度、R为所述合成孔径声纳最远成像距离,N为合成孔径个数。
[0011] 进一步地,所述存储空间的数据容量的计算方法为:
[0012] 计算出采集上述长度数据 所需要的时间T;并记录对应所需要采集的脉冲数据个数NPluse;根据最高传感器数据采集频率为FsMax,时间T,计算出所述存储空间的数据容量为:T*FsMax,实际分配数据容量在上述计算数值基础上设置盈余。
[0013] 进一步地,所述组包程序依次存储总数据长度、GPS数据个数和对应的GPS数据、超短基线数据个数和对应的超短基线数据、姿态传感器数据个数和对应的姿态传感器数据。
[0014] 进一步地,所述组包后的数据传输方式为:组包后的总传感器数据长度为iTotalSize、一次能够传输的最大数据长度iMax、自定义的一次发送的数据长度iOneSendSize,计算出传输次数NSend=floor(iTotalSize/iOneSendSize)+1以及最后一次传输的剩余数据量iTotal-iMax*floor(iTotal/iOneSendSize),发送至后续进程顺序处理
[0015] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
[0016] (1)本发明中所采用的传感器数据组包与解包方法,实现了空间离散数据与连续数据存储的转换,使得数据传输与数据类型无关,简化了集群环境下的多类型传感器数据传输。
[0017] (2)本发明中所采用的分段数据传输方法,解决了大数据量传感器数据的传输问题,使得传感器数据传输不再受限于传感器数据量大小。
[0018] 总之,按照本发明实现的多传感器数据共享方法,能够实现不同进程之间传感器数据简单地实现共享,并且容易拓展,不受传感器数据类型个数限制。增加传感器种类时,只需要更改传感器数据发送进程组包和接收进程解包方法,进程之间的传输方法不需更改,极大简化了集群环境下的多传感器数据共享。

附图说明

[0019] 图1为按照本发明实现的合成孔径声纳多传感器数据共享方法流程示意图;
[0020] 图2为按照本发明实现的多传感器数据组包示意图;
[0021] 图3为按照本发明实现的多传感器数据传输示意图;
[0022] 图4为按照本发明实现的多传感器数据解包示意图。

具体实施方式

[0023] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0024] 为实现上述目的,按照本发明,提供一种根据每一种传感器的数据频率和信号处理时间段的长度来确定单块数据传感器数据个数上限,然后以此长度为每一种传感器数据开辟数据存储空间。每种传感器数据达到后,按照循环队列方法将其存放在各自队列中,当合成孔径数据长度达到N个数据长度后,记录合成孔径起始时间和结束时间,对每一种传感器数据先按照时间顺序进行排序,然后截取与数据采集时间段对应的传感器数据,同时记录每一种传感器数据个数,之后将截取后的传感器数据进行组包,发送至后续进程以供处理,当然在接收端,只需对组包数据执行相反过程的解包,即可获得共享数据。
[0025] 在上述技术方案中,单块传感器数据个数确定方法如下:根据合成孔径长度和合成孔径个数确定合成孔径时间,再与所有传感器中数据频率最大值相乘即可获取单块数据传感器个数最大值,将其作为所有传感器数据存储空间分配依据。
[0026] 在上述技术方案中,单块传感器数据存储方法采用循环队列方式进行存储。
[0027] 在上述技术方案中,传感器数据截取分为两个步骤,首先将循环队列中数据按照时间递增顺序进行排列,然后截取数据采集时间段内的传感器数据。
[0028] 在上述技术方案中,数据组组包括以下几个步骤:(1)根据每一种传感器数据类型大小和对应的传感器数据个数计算出总的传感器数据长度,并根据此长度为存放组包后传感器数据块开辟连续存储空间;(2)按照指定传感器数据顺序,依次将传感器数据个数和对应的传感器数据拷贝到新开辟的存储空间。
[0029] 在上述技术方案中,传感器数据传输时,首先指定一次能够传输的最大数据长度,根据此长度计算需要传输的次数以及最后一次传输的剩余数据量,调用传输函数,将组包后的传感器数据块从发送进程发送至接收进程。
[0030] 在上述技术方案中,传感器数据接收进程先根据数据个数上限分配临时数据存储空间,接收当前传感器数据块总长度,并计算出需要接收的数据块个数,然后依次从数据发送进程接收传感器数据,并根据组包顺序提取出各种传感器数据。
[0031] 实施例一
[0032] 按照本发明的其中一种具体的实施例中,本发明合成孔径声纳多传感器数据共享方法流程如图1所示,包括以下步骤:
[0033] 确定数据块所对应的最大传感器数据个数;
[0034] 按照最大传感器数据个数为每一种传感器数据开辟存储空间;
[0035] 开启多线程接收各传感器数据;
[0036] 按照循环队列存储每一种传感器数据;
[0037] 单块声纳数据块满时,对传感器数据进行排序和组包;
[0038] 按照固定块大小向后续进程发送组包数据;
[0039] 接收进程完成组包数据接收后对传感器数据解包;
[0040] 进行传感器数据后续处理。
[0041] 具体来说详细的步骤如下:
[0042] S100、根据合成孔径声纳系统参数,波长λ、阵元长度D和最远成像距离R,计算成像距离上的合成孔径长度 并将原始回波数据在方位向上按照N倍的合成孔径长度进行分块,计算出采集该长度数据所需要的时间T和对应所需要采集的脉冲数据个数NPluse。
[0043] S200、获取各传感器数据的采集频率,记最高传感器数据采集频率为FsMax,则在时间T内,各传感器获取的最大数据个数为T*FsMax。在分配各传感器数据存放空间时,按照T*FsMax*(1+0.2)进行,确保单块数据首尾不重叠,防止有效数据丢失。
[0044] S300、系统工作时,实时记录当前采集的脉冲数据个数,当脉冲个数达到NPluse时,将此时的各传感器数据进行组包,从各传感器数据存储空间中截取与所采集脉冲时间段相对应的传感器数据,并进行数据组包,将组包结果放于数据发送缓冲区。
[0045] S400、传感器数据发送线程根据NSend=floor(iTotalSize/iOneSendSize)+1计算出需要发送的次数,依次向数据接收线程发送传感器数据。其中iTotalSize表示组包后的总传感器数据长度、iOneSendSize表示自定义的一次发送的数据长度。
[0046] S500、传感器数据接收线程接收完传感器数据后,按照与组包相反的协议进行数据解包,提取每一种传感器数据,用于后续处理。
[0047] S600、如果存在后续线程在处理过程中也需要传感器数据,则当前传感器数据接收线程在接收完毕传感器数据或者数据处理完毕后,直接将接收缓冲区的数据按照同样的方式转发至后续处理线程。
[0048] 图2描述的是数据发送端多传感器数据组包过程,传感器数据包括GPS数据、超短基线数据和姿态传感器数据,每一种传感器数据包含传感器数据个数和对应的传感器数据内容。组包线程根据各传感器数据个数和数据类型计算总长度,并开辟连续内存空间,依次存储总数据长度、GPS数据个数和对应的GPS数据、超短基线数据个数和对应的超短基线数据、姿态传感器数据个数和对应的姿态传感器数据。
[0049] 图3描述的是多传感器数据传输过程,将传感器数据从进程A传递到进程B。在传输过程中,将连续内存空间数据分为固定大小数据块,依次传递每一块数据,最后传递剩余数据。
[0050] 图4描述的是数据接收端进行多传感数据解包过程,接收完传感器数据块后,依次对传感器数据进行解析,根据GPS数据个数开辟GPS数据存储空间,并将GPS数据从数据接收空间拷贝到新开辟的GPS数据存储空间,然后依次对超短基线数据和姿态传感器数据进行相同操作,完成多传感器数据解包过程。
[0051] 更为具体来说:合成孔径长度L、孔径个数M、最高传感器数据采集频率为FsMax、当前接收传感器数据个数iCur_Num、总的数据长度iTotal(根据每种传感器数据类型大小和对应传感器个数计算得出)、组包后的总传感器数据长度iTotalSize、自定义的一次发送的数据长度iOneSendSize。
[0052] 1.根据系统参数,波长λ、阵元长度D和最远成像距离R,计算成像距离上的合成孔径长度
[0053] 将原始回波数据在方位向上按照N倍的合成孔径长度进行分块 计算出采集该长度数据 所需要的时间T;
[0054] 并记录对应所需要采集的脉冲数据个数NPluse;
[0055] 2.根据最高传感器数据采集频率为FsMax,时间T,计算出各传感器获取的最大数据个数为:T*FsMax,进而分配存储空间,分配存储空间的时候,要保证单块数据首尾不重叠,防止有效数据丢失,需要在分配存储空间的时候,进行冗余空间的分配,在本实施方式中,采用T*FsMax*(1+0.2);
[0056] 3.记录数据存放位置,根据iCur_Num当前接收传感器数据个数和iTotal总的数据空间长度计算位置索引:index=(iCur_Num+1)%iTotal,其中iCur_Num表示当前已经接收的传感器数据个数,iTotal表示数据空间长度;
[0057] 4.记录当前采集的数据脉冲个数,当达到NPluse时,将进行组包操作;
[0058] 5.根据指定的一次发送的数据长度iOneSendSize,计算出传输次数以及最后一次传输的剩余数据量iTotal-iMax*floor(iTotal/iOneSendSize);
[0059] 5.传感器数据发送线程调用NSend=floor(iTotalSize/iOneSendSize)+1传输函数,将组包后的传感器数据块从接收进程中发送至接收进程,其中iTotalSize表示组包后的总传感器数据长度、iOneSendSize表示自定义的一次发送的数据长度;
[0060] 6.按照与组包相反的协议进行数据解包,提取每一种传感器数据,用于后续处理,如果存在后续线程在处理过程中也需要传感器数据,则当前传感器数据接收线程在接收完毕传感器数据或者数据处理完毕后,直接将接收缓冲区的数据按照同样的方式转发至后续处理线程。
[0061] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。