廖 帅,周少琼,朱晓玉,赵永宁,赫 岩
(北京市遥感信息研究所,北京100094)
测向系统是空间无源定位系统的重要组成部分,可以截获、分析和定位目标辐射源,具有极高的使用价值[1]。测向系统主要包括多站和单站2 种模式。多站的时频差和时差定位技术,要求多站之间具有高精度时间同步和通信链路,系统实现复杂,成本较高;单站测向技术,分为比幅测向和干涉仪测向,比幅测向的精度较低,目标辐射源定位精度较差[2]。干涉仪测向定位技术具有测向精度高、结构简单、测向频段宽等优点,在现代电子系统中已广泛应用。相较于线阵干涉仪,圆阵干涉仪可同时提供方位角和俯仰角二维角度信息,解模糊概率高,结构更简单且对平台安装尺寸要求低[3]。目前,在一些小型化的工程实践平台上,已实现了一种基于长短基线的圆阵干涉仪测向方法,利用较短基线覆盖宽视角和解模糊,利用较长基线保证测向精度[4]。
干涉仪测向定位系统中,相位差解模糊是研究的重点,也是在工程实践中需要重点解决的核心问题[5]。目前有很多常用的圆阵干涉仪解模糊的方法,其中一种是采用1 组最长基线作为参考,先计算出所有模糊数下的方位角和俯仰角,再代入每组基线计算误差最小的模糊数,由于需将可能的方位角及俯仰角代入各组基线进行运算,在基线数量较多时,运算量较大[6]。本文提出了一种基于多线程并行的干涉仪测向定位快速处理方法,在圆阵干涉仪相位差解模糊上采用常规的长短基线逐级解模糊法,其研究的重点是如何提升单个节拍数据的处理时效。本文方法通过Qt 的线程池QRunnable 类定义干涉仪测向定位的多线程算法,将单个节拍数据的串行处理流程,利用多线程并行计算的方式实现高效计算。并通过仿真测试,验证了该方法的有效性。
相位干涉仪测向的基本原理是利用不同测向天线在同一时刻接收到的信号相位差与信号的到达方位、俯仰角的对应关系,通过测量不同天线同一时刻接收到的来波信号的相位差,计算得到信号的方向[7]。以圆阵天线为例,其测向原理图如图1 所示。假设圆半径为R,天线为q,且有q=0,1,…,Q-1 共Q个天线。天线阵列位于x,y平面内,第一个天线阵元为0号阵元,并且位于x轴上,因此α=0。天线正好定位于角度αq的整数倍处。
图1 圆阵天线测向原理图
假设一个幅度为A、频率为f的平面波以方位角α、俯仰角β入射到这个阵列上,那么第q个阵元上的感应输出可以写为:
综合各个阵元的信息,可以求出信号相对于坐标系的方位角和俯仰角。
下面以五元均匀圆阵布阵方式为例说明测向原理。天线阵元1、2、3、4、5 均匀分布在半径为R的圆环上,如图2 所示。
图2 测向定位场景示意图
为实现二维高精度测向,必须采用至少2 组基线对才能进行测向,以天线阵元2、天线阵元3、天线阵元1 形成2-3、2-1 基线对为例说明测向原理。
天线阵元2、天线阵元3、天线阵元1 接收信号相位分别为:
阵元2 和阵元3 形成的干涉仪对应的相位差为:
阵元2 和阵元1 形成的干涉仪对应的相位差为:
式中,ω为基线对阵元2 与圆心连线和OXa夹角,γ为阵元1 与圆心连线、阵元3 与圆心连线夹角。将每组基线对做和差处理:
信号方向矢量(cosβcosα,cosβsinα,sinβ)在 阵列平面的投影为:
可得方位角、俯仰角测量结果为:
可见,根据基线设置和相位差测量结果即可求得方位角α和俯仰角β。
对地面辐射源的定位是通过二维干涉仪对目标的无线电波到达方向的方位α和俯仰β角度进行测量,根据测得的角度信息以及地球约束方程对地面辐射源目标进行定位。
采用WGS-84 坐标系作为基准坐标系,辐射源的位置坐标为XTβ(x,y,z),其大地坐标为XT,BLH(L,B,H),在地固坐标系中,直角坐标与大地坐标的关系如下:
式中,RN是目标当地卯酉圈半径,L、B、H分别为目标的经度、纬度和高程;e为WGS-84 地球椭球第一偏心率。
假定在地固坐标系中平台位置为Xs,e(x1,y1,z1),转换至星体坐标系中,辐射源的位置坐标为XT,b(xT,b,yT,b,zT,b),可以表示为:
式中,M为地固坐标系和星体坐标系之间的坐标转移矩阵。建立状态和观测之间的联系,方位和俯仰角测量方程可以表示为:
将直角坐标与大地坐标的对应关系表达式进行化简,可得地球约束方程如下:
方位和俯仰角测量方程与地球约束方程的交点即为辐射源的位置。
目前主流的操作系统如Windows、Linux、Mac OS对多线程均有较好的支持。Windows 环境下,Win32 API 提供了多线程应用程序开发所需要的接口函数,微软基础函数类库(MFC)则是用类库的方式将Win32 API进行封装,以类的方式提供给开发者[8]。在Linux 中,POSIX thread(又称为pthread)是一套通用的线程库,定义了有关线程创建和操作的API,并且具有很好的可移植性[9]。
Qt作为一种基于C++的跨平台GUI系统,能够给用户提供构造图像界面的强大功能。为满足用户构造复杂的图形界面系统的需求、提高图形用户界面的响应速度,Qt 提供丰富的多线程编程支持。Qt 提供了与平台无关的线程类,在Qt系统中与线程相关的最重要的类是QThread类,该类提供了创建一个新线程以及控制线程运行的各种方法。线程通过QThread::run()重载函数开始执行,操作系统会为每一个线程自动分配堆栈,用户也可以调用QThread::setStackSize()函数设置线程的堆栈。要创建自己的线程,只需继承QThread类和重新实现run()函数即可。Qt中的多线程编程主要涉及到传统的线程操作以及与Qt 事件机制相关的操作,Qt的多线程编程在用户界面程序中尤为重要,特别是界面中有大量消耗CPU 资源的程序在运行,使用多线程技术,把大量消耗CPU 资源的程序开辟一个单独的线程运行,能大大提高界面程序的响应速度,同时,还能改善程序的结构,将一个复杂的程序划分由几个独立的线程完成,有利于程序的理解和维护[10]。
考虑到Qt 系统强大的多线程技术,本文提出的干涉仪测向定位快速处理方法正是基于Qt 的多线程处理实现算法流程。
传统的基于相位干涉仪的测向定位,多侧重于高效的解模糊算法,本文提出的基于多线程并行的干涉仪测向定位快速处理方法,重点关注单个节拍数据的处理时效提升。在单个节拍串行处理流程基础上,通过Qt 的线程池QRunnable 类定义干涉仪测向定位的多线程算法,实现对单个节拍数据的高效处理,是一种具有可操作性的工程应用方法。
干涉仪测向的实质是利用无线电波在测向基线上形成的相位差来确定来波方向,干涉仪测向性能的改进和提升主要是从解相位差模糊和天线配置形式、鉴相准确度、通道幅相校正技术、数据处理方法四个方面来进行的[11]。本文侧重于空间无源定位干涉仪测向系统的雷达辐射源处理流程,数据的输入为流式的脉冲描述字,暂不考虑测向系统中数字采样、信号检测、相位估计等过程。其中,脉冲描述字的内容包括:脉冲到达时间(TOA)、脉冲宽度(PW)、频率码(CF)、方位角、俯仰角以及N个相位差码(N+1 为干涉仪测向系统中阵元数量)等。因数据的输入为流式脉冲描述字,故处理流程按照数据输入节拍进行,单个节拍的串行处理流程如图3 所示。
图3 单个节拍的串行处理流程图
单个节拍的串行处理流程包括基于粗方位和俯仰信息的预分选、基于三大参数的主分选、脉冲相位差校正、相位差解模糊以及定位计算等。下面重点对相位差校正和相位解模糊进行详细描述。
3.1.1 相位差系统误差校正
根据对相位干涉仪测向误差模型的分析,引起误差的因素主要有相位差测量误差、基线长度测量误差、干涉仪安装角误差、观测平台姿态误差、观测平台位置误差以及频率测量误差等。实际工程应用中,在各个观测量目前典型的系统误差水平下,观测平台姿态误差、观测平台位置误差和频率测量误差引起的定位偏差很小,通常可以忽略不计;相位差测量误差(ΔΦ)、基线长度测量误差(Δd)和干涉仪安装角误差(方位向Δε、俯仰向Δζ)引起的测向定位偏差通常较大,应加以考虑[12]。
针对相位差系统误差的校正,本文采用了在实际工程应用中的一般方法,即采用基于多个标校站的系统误差校正方法。如图4 所示,在地面建立多个标校站,利用标校站位置已知和信号频率已知这2 个先验信息,通过测量相位差就可以估计出各个观测量的系统误差。利用标校站发射不同的信号频率,通过长时间的积累,即可获取满足多频段、大视场的定位系统误差数据。基于长时间积累的系统误差数据,即可实现对干涉仪测向系统的相位差校正。
图4 基于多标校站的系统误差估计
3.1.2 相位差解模糊
干涉仪测向系统中,由于鉴相器的鉴相范围只有2π,当实际相位差超过2π 时,鉴相器输出的相位值会以2π 为周期翻转,出现多值模糊[13]。要获得高的测角精度,2 天线间的距离要越长;要实现相位不超过2π,2天线间的距离就要足够短,这与提高测向精度的条件相矛盾。通常,在实际工程应用中大多采用多基线相位干涉仪阵列,利用短基线保证较大的测向范围,长基线保证较高的测向精度。目前,多基线相位干涉仪解模糊技术的基本方法主要有:长短基线逐级解模糊法、余数定理法、虚拟基线法、无模糊长基线干涉仪法等,基本思想都是找出多基线相位干涉仪阵列中阵元基线长度的线性组合,使其满足小于辐射信号半波长的条件[14]。
本文是基于圆阵干涉仪测向系统提出的多线程并行处理方法,相位差解模糊采用了均匀圆阵中长短基线多基线组合解模糊法。为得到均匀圆阵不同阵元数量情况下的相位差解模糊效果,选择阵元数量分别为9、11、13、15、21、41 进行了仿真。采用相同的长短基线多基线组合解模糊法,计算了二维的圆概率定位误差值(CEP),仿真结果如图5 所示。
图5 不同阵元数量的圆阵干涉仪定位精度仿真
实际工程应用中,由于单个节拍数据中脉冲密度很大,串行处理流程在处理时延上很难满足应用需求。因此,在单个节拍串行处理流程基础上,通过Qt的线程池QRunnable 类定义干涉仪测向定位的多线程算法,实现对单个节拍数据的高效处理。算法流程如下:
定义:创建一个线程类Loc_ThreadPool,继承于QRunnable;
重写run 函数,主要完成干涉仪测向定位,具体通过for 循环调用单脉冲相位差校正模块、单脉冲相位差解模糊模块以及单脉冲定位解算模块,计算输入所有脉冲列的平均位置信息。
输入:脉冲描述字处理节拍数据流,线程池的最大线程数量为m;
Step1:基于脉冲描述字中的粗方位、俯仰信息进行脉冲预分选;
Step2:基于频率、脉宽和PRI 进行脉冲分选;
Step3:对分选得到的N个辐射源参数进行估计;
Step4:将线程池的最大线程数量赋值m,给每个线程分配N/m个辐射源参与计算;
Step5:定 义QThreadPool 对 象,将Loc_Thread-Pool 传递给QThreadPool 的start 函数,并用它生成N个子线程;
Step6:对第i个子线程,通过调用QThreadPool 的start 函数,将第i个辐射源的脉冲列进行干涉仪测向定位,并将输出的辐射源平均位置信息与参数信息进行融合;
输出:单个节拍数据的全部辐射源参数和位置信息。
硬件环境:工作站,处理器为Intel(R) Xeon(R) W-2145 CPU@3.70 GHz,16 核;内存为128 GB;操作系统为Windows 7。
仿真数据:设置仿真的频段范围为5 000~6 000 MHz,均匀圆阵干涉仪的阵元数量为9 个,仿真的脉冲序列具体内容包括脉冲到达时间、脉冲频率、脉冲宽度、脉冲幅度、方位角、俯仰角以及8 个相位差;仿真数据中加入多种体制雷达信号脉冲,共仿真700 s 的随机雷达脉冲信号,产生1 679 520 个脉冲,在脉冲时序中随机加入干扰脉冲信号,仿真信号时序完整度为85%。
将上述700 s 的随机脉冲信号,按照1 s 一个节拍数据的形式,形成数据流作为算法的输入。考虑到硬件设备性能,处理的线程数量一次从1 个增加至5 个,统计从数据输入到结果输出的全流程处理时效,从1 s节拍数据处理的平均时效和最大时效两方面进行比较,结果如图6—7 所示。
图6 单个节拍数据的平均处理时效对比
图7 单个节拍数据的最大处理时效对比
上述测试结果中,单个节拍数据在多线程并行处理的情况下,时效提升明显;4 个线程并行处理,相比于单线程处理,时延平均缩短了64.5%。另外,5 个线程并行处理,相比于4 个线程并行处理,时效并没有提升,反而有所下降。仿真测试表明,基于多线程并行的干涉仪测向定位快速处理方法,能够提升单个节拍数据的处理时效,但在实际工程应用中,要综合考虑硬件设备性能、资源调度策略等因素,选择合理可行的线程数量。
本文提出的一种基于多线程并行的干涉仪测向定位快速处理方法,重点关注圆阵干涉仪测向系统的数据处理时效性的提升,通过Qt 的线程池QRunnable类定义干涉仪测向定位的多线程算法,将单个节拍数据的串行处理流程,通过多线程并行计算的方式实现高效计算,是一种具有可操作性的工程应用方法。仿真测试验证了本文方法的有效性,且该方法在实际工程中具有较好的应用价值。■