弹载磁测系统可视化标定软件设计*
2023-06-05王清源张晓明李惠杰
王清源 张晓明,2 李惠杰
(1.中北大学电子测试技术国家重点实验室 太原 030051)(2.中北大学仪器科学与动态测试教育部重点实验室 太原 030051)
1 引言
随着科技的不断进步,常规弹药已经难以适应现代战争的需求,弹药智能化、制导化已经是发展的必然趋势。地磁测姿系统因为具有误差不累计、抗过载能力强、成本低、体积小等优势[1],已经成为弹载导航中的主要方案之一。由于三轴磁传感器轴间不正交、系统电路的放大特性不完全一致、零点偏移等原因[2],会导致磁测系统出现测量精度低等问题,为了提高磁测系统的精度与可靠性,需要对其进行标定和补偿。目前标定流程仍采用先采集数据,再用如Matlab等仿真软件处理数据。此流程步骤繁琐,操作复杂,且因缺乏数据可视化导致对标定数据的准确性把握不足,难以满足在实际要求。因此亟需一个能够可视化、自动化的软件来简化操作,提升标定速度。
基于上述需求,本文基于Qt 开发平台[3~4]设计了一种弹载磁测系统可视化自动标定软件,实现了数据可视化与标定自动化,并针对开发过程中出现的问题提出行之有效的解决办法。
2 磁测系统结构
磁测系统包含两个子系统,分别为弹载磁测系统(下位机)和弹载磁测系统标定测试软件(上位机)。上位机负责弹药发射前磁测系统的标定与精度测试功能,上位机标定精度会直接影响弹载磁测系统的精度。系统结构图如图1所示。
图1 系统结构图
3 上位机总体设计
3.1 通信模块
串口通信通过有线连接,抗干扰能力强,但是由于其依赖于线缆,当下位机与下位机距离过远时,其走线便会非常麻烦。蓝牙采用无线连接,可解决掉走线过于繁琐的问题,但是在其周围无线信道拥堵时,其传输便会收到很大影响。串口与蓝牙能适应不同的环境,因此上位机采用了串口+蓝牙的方式。
3.1.1 蓝牙通信原理
Qt提供了Qt Bluetooth 模块操作蓝牙。蓝牙通信需要格外关注两个协议,分别是GAP(Generic Access Profile)和GATT(Generic Attribute Profile),GAP用来控制设备连接和广播。GATT则定义两个低功耗蓝牙设备之间通过Service 和Characteristic通信的方式。Qt 为低功耗蓝牙提供了·Qt Bluetooth Low Energy API,其基本流程如下:
1)使用QBluetooth Device Discovery Agent 发现周围所有广播的蓝牙设备;
2)遍历搜索到的蓝牙设备,筛选出目标设备;
3)使用QLow Energy Controller 类的create Central()函数创建一个中心设备,并与目标设备进行连接,获取蓝牙services列表,根据服务的uuid筛选所需服务;
4)找到需要的服务后,根据characteristic 列表的uuid筛选出目标characteristic;
5)配置目标设备的descriptor,完成连接。
连接后,只需读写筛选出的characteristic 即可进行通信。
3.1.2 串口通信原理
串口使用了Qt SerialPort 模块,该模块提供了一系列API,能够满足对串口的基本配置和操作,创建一个QSerialPort类配置串口的波特率、停止位等参数,然后使用open()函数打开串口。该模块提供了两种方式读写,一种是阻塞模式,使用waitFor-ReadyRead 函数阻塞当前线程,等待可读数据,另一中是非阻塞方式,使用connect 函数连接QSerial-Port的信号readReady()与对应的槽函数,在槽函数中即可进行数据处理。
3.2 数据可视化
为了清晰有效传递实验信息,程序设计了数据可视化界面。论文通过总结以往磁测系统标定过程中出现的情况,设计了一种数据可视化界面,实验人员可通过此界面实时掌握数据状态,从而对实验进程及时做出调整。
3.2.1 可视化界面设计
在弹体标定的过程中,存在诸多干扰:静电或者串口误码有可能导致出现野值,由于数据标定算使用的基于最小二乘的椭球拟合算法,野值会影响标定数据的准确性;弹体出现磁化现象使磁测系统中的磁传感器出现饱和现象,从而影响磁测系统标定的准确度。通过对标定过程中的干扰因素及误差分析,论文设计一套全方位立体实时可视化的GUI 界面,界面上由了一个二维图像、一个三维图像以及实时数据显示控件,满足实验人员全方位了解数据状态的需求。二维图像采用了Qt 的QChart模块,用于实时显示六条的波形图,如图2所示。
图2 二维波形图
三维图像显示则负责实时显示椭球整体的情况,其采用了Qt的三维图表模块Data Visualization,程序使用了三维散点图模式。该图像会在标定过程中不断旋转,以便实验人员从不同角度实时了解椭球形状。当数据出现野值时,三维椭球图周围会出现散点,如图3(b)所示,当野值过多便会影响椭球拟合的精度,此时需要重新标定。
图3 椭球异常情况
当椭球某部分出现“削平”的情况时表示磁传感器饱和,如图3(a)所示,出现这种情况需停止标定,继续标定没有意义。往往这种情况实验人员需要对弹体进行整体退磁等处理后才能重新标定。
3.2.2 多线程优化
由于串口波特率较高,数据接收与解析计算占用了大量的CPU的时间片,同时界面波形图与三维椭球图也需要占用大量CPU资源,导致用户界面不能及时相应实验人员的操作,严重影响使用体验。为了充分发挥计算机的性能,提升软件界面响应的及时性,软件采用了多线程技术[5]。
程序中使用Qt提供的QThread类,将耗时的串口读写与数据解析、计算等操作移动到子线程中,界面主线程只负责采用数据可视化与响应用户操作,通过多线程技术,软件响应速度与流畅度得到了大幅度提升。其流程如图4所示。
图4 多线程执行流程图
3.3 磁测系统误差模型及补偿
3.3.1 磁测系统误差模型
磁测系统的误差来源主要有三个:三轴不正交误差、三轴灵敏度误差、零偏误差[6~8]。由于三个误差的存在,导致地磁矢量由圆球面畸变为平移的椭球面[9~11]。由根据误差来源建立三轴磁传感器误差模型,如式(1)所示:
其中:为三轴磁传感器的误差矩阵;(X Y Z)T为三轴磁传感器的实际输出(存在误差);kx、ky、kz为三轴磁传感器的灵敏度;X0、Y0、Z0分别为传感器三个轴的理想值(不存在误差)。x,y,z为三轴零偏误差,α、β、γ为三轴间不正交误差角。
3.3.2 基于椭球拟合的误差标定
由于地磁三维矢量和理论上是一个定值,因此,在理想的情况下,三轴磁传感器在全空间范围内旋转后的输出值可以构成一个圆球,但是由于三种误差的存在,圆球面畸变成椭球面。
设椭球方程为
经过推导最终得到三轴磁传感器误差参数如式(3)所示:
其中Bb为传感器理论三维矢量和,B0为系统的零偏误差。
3.3.3 误差补偿
根据误差模型,易得传感器理论输出如式(4)所示:
根据标定模式下的数据,计算得到磁测系统三轴零偏、灵敏度和不正交角等数据,利用上位机将标定数据下载到磁测下位机系统,下位机即可根据式(4)的误差补偿模型,将传感器的测量值补偿后输出,从而得到理想值。
4 系统测试
为了验证程序标定数据的正确性以及有效性,本文以三轴磁传感器HMC1053 为例,利用软件对带有HMC1053 三轴磁传感器的磁测系统进行自动标定与补偿。
首先在一个磁干扰较小的环境中,全范围内旋转磁测系统,软件会实时采集数据并进行可视化处理。采集数据完成后软件会自动计算误差标定与补偿系统,并将数据下载的系统中。精度验证方法如下,将滚转角旋转一周,每30°记录一次数据,其波形如图5所示,精度对比如表1所示。
表1 补偿前后滚转角对比
图5 补偿后精度测试
由表1 分析可得,其最大误差为1°,已经在误差允许的范围内。实验结果表明该软件采用椭球拟合的方法,能够正确对系统进行标定,实现了对磁测系统的高精度补偿。
5 结语
本文针对磁传感器标定中的可视化、自动化等问题设计开发了一套上位机软件,其对标定流程及精度验证流程中的数据进行了全面可视化处理,且极大简化了全流程的操作。实验验证表明,程序可快速、准确对磁测系统进行标定,极大提高了标定效率。