方 磊 ,张 彪* ,陈 冲
(1.南京信息工程大学电子与信息工程学院,江苏 南京 210044;2.南京大学电子科学与工程学院,江苏 南京 210023)
随着经济的发展,全球气候变化日益加剧,自然气象灾害威胁着人民的生活。因此,环境监测、气象预测和灾害预防变得至关重要[1]。对气象数据进行采集和有效分析,是天气预报和气候监测的重要工作内容,而数据采集是分析预测的前提[2]。近几年,随着多旋翼无人机技术的快速发展,如何利用多旋翼无人机高效采集高空气象数据逐渐受到人们的关注。
现阶段,利用多旋翼无人机进行气象数据采集主要有搭载自动气象站和下投式探空仪两种方式,如文献[3]中利用多旋翼无人机搭载自动气象站进行数据采集,但在实际应用中自动气象站相对于下投式探空仪更容易受到多旋翼无人机带来的影响,不利于气象数据的采集。如文献[4]中利用无人机搭载下投式探空仪进行海气界面探测,但在数据接收和图形显示上,功能单一、图形显示效果差,并且在投射探空仪后无法有效观测探空仪的运动状态。LabVIEW 是一种图形化编程软件平台,具有数据采集、人机交互、图形显示和数据处理等多方面强大功能,并且可以生成独立的可执行程序和安装程序,实现在多个没有LabVIEW 软件的PC 端进行数据采集操作,从而大大提高采集效率和便捷性[5]。
由于上述原因,本文设计了一种可以利用多旋翼无人机搭载下投式探空仪,并通过LabVIEW 软件实现集气象数据采集、接收、显示、预处理和存储为一体的多功能气象数据采集系统。该系统不但能够实时显示下投式探空仪的三维运动轨迹,而且通过一维卡尔曼滤波算法对气象数据进行了优化,同时还能够直观地显示出测量数据和滤波后数据的曲线变化。
气象数据采集系统总体框架如图1 所示,该系统主要由数据采集和数据处理两部分构成。数据采集部分主要包括无人机平台和下投式探空仪,具体实现功能是:通过无人机操控员控制多旋翼无人机搭载探空仪到达指定位置并投射探空仪,完成对该区域的气象数据采集任务;数据处理部分是通过PC端进行数据接收、预处理和储存,具体实现功能是:控制软件系统、接收采集数据、显示下投式探空仪三维运动轨迹和进行一维卡尔曼滤波及显示。
图1 气象数据采集系统总体构架
气象数据采集要素主要包括温度、湿度、气压、风速、风向、经纬度和海拔高度,其中温度、湿度、气压、经纬度和海拔高度可直接通过传感器采集得到;风速风向是利用GPS 采集到的位置信息结合相应的数学公式间接计算得出[6]。
根据该系统对气象数据采集要求,系统采用STM32F030CCT6 作为主控芯片。该芯片以Cortex-M0 为内核,工作电压在2.4 V~3.3 V 之间,含有2个SPI 和6 个UART 接口,能够为该系统提供多种存储容量和引脚数组合。
下投式探空仪通过外接7.4 V 直流电源为整个电路供电。为满足各个模块的需求,本文设计一种降压稳压电路。基于正向低压降稳压器(AMS1117)的降压稳压性能好的特点,并通过加入电解电容和多电容滤波电路,实现对整个电路的降压稳压的作用。根据电源电压值,选择容值150 μF,耐压值15 V 的电解电容。降压及稳压电路如图2 所示。
图2 降压及稳压电路图
湿度传感器采用基于电容式相对湿度传感器(HMC03M),利用该传感器具有的加热电阻器进行温度补偿,可以实现在低响应时间下仍能对温度进行优化。本文通过降压稳压电路为其提供稳定的5 V工作电压,并与主控芯片的PA8 接口相连进行数据传输。
温度和气压传感器是一种基于MEMS 先进技术[7]的高分辨率传感器(MS5803-01BA),可以得到精确的24 位数字压力值和温度值。本文通过降压稳压电路为其提供稳定3 V 工作电压,其中温度传感器的SDI、SDO、SCLK 和CS 接口分别与主控芯片的PB15、PB14、PB13 和PB12 接口相连,通过SPI 通信方式进行数据传输;气压传感器SDI、SDO、SCLK 和CS 接口分别与主控芯片的PA7、PB6、PB5 和PB4 接口相连,通过SPI 通信方式进行数据传输。
BD-125 是一种GPS 和北斗相结合的高性能定位模块,该模块采用GPS+BDS+SBAS+QZSS+GALILEO 联合定位模式,支持多种通信波特率,可以快速获得探空仪在下降过程中的位置信息。本文通过降压稳压电路为其提供稳定5 V 工作电压,通过UART 接口与主控芯片的PA2 和PA3 进行数据传输。
为满足远距离传输和较好的抗干扰性能,并且能够适应高低温恶劣环境,该系统采用由亿佰特公司出品的全新一代LoRa 射频无线模块。该模块是基于SEMTECH 公司SX1268 射频芯片,特有的LoRa 扩频技术,通过接口转换模块与上位机进行数据通信。该模块由降压稳压电路提供5 V 稳定工作电压,并通过UART 接口与主控芯片的PB10 和PB11 接口进行数据传输。
为建立下投式探空仪三维运动轨迹,需要根据探空仪采集到的GPS 数据进行坐标转换,将经纬度和海拔高度转换成站心坐标系下的位置信息。
地心坐标系使用WGS-84 坐标系,即以地心为坐标原点,Z轴指向协议地球北极,X轴指向参考子午面与赤道面的交点,Y轴与X轴、Z轴组成右手直角坐标系。
站心坐标系是以站心为坐标原点,X轴指向正北,Y轴指向正东,Z轴指向天顶并垂直于X轴和Y轴,组成的直角坐标系,也称东北天(East-North-Up,ENU)坐标系。
地心坐标转空间直角坐标[8]
空间直角坐标转站心坐标[9]
式中:N是椭球的曲率半径(单位:m),e是椭球偏心率,H是GPS 测得的海拔高度(单位:m),L是经度,B是纬度,L0、B0是地心坐标系下经度、纬度的初始值,(X,Y,Z) 是空间直角坐标系下的坐标值,(X0,Y0,Z0)是空间直角坐标系下的坐标初始值,(a,b,c)是站心坐标系下的坐标值。
为克服下投式探空仪在气象数据采集时受到的外部环境影响以及传感器自身带来的误差,本文提出了一种一维卡尔曼滤波算法。该算法以最小均方误差为估计的最佳准则,根据前一时刻的状态估计值和当前时刻的观测值来预测下一个值并不断递推下去,能够对传感器采集到的数据进行实时的更新和处理,是一种能够去除噪声还原真实数据的有效算法[10]。
一维卡尔曼滤波的系统状态方程和观测方程分别为:
式中:Xk为k时刻的系统状态,Zk为k时刻的观测值;A为状态转移矩阵;H为测量系数参数矩阵。
为获得滤波值Xk+1和Zk+1,根据卡尔曼滤波算法获得以下五个递推公式[11],分别为:
先验估计状态变量
先验估计误差协方差
卡尔曼增益
滤波方程
滤波误差协方差
式中:是第k个过程的先验估计状态变量,是第k个过程的先验估计误差协方差,Q是过程激励噪声协方差,R是测量噪声协方差,Kk是第k个过程的卡尔曼增益,Pk是第k个过程的滤波误差协方差。
构建一维卡尔曼滤波算法后,通过分析实验数据以及传感器误差,可以计算得到最优的P和Q初始值。
探空仪通电后,初始化程序,之后开始读取GPS数据、温度数据、湿度数据和气压数据。然后根据GPS 读取的数据计算风速风向,最后将所有气象数据进行编码整合并通过无线数传发送给上位机。在数据发送的过程中,程序需要判断数据是否全部发送,如果发送完成,将重复上述流程;如果尚未完全发送,则继续发送数据。探空仪程序流程如图3所示。
图3 探空仪程序流程图
上位机是基于美国国家仪器(NI)公司LabVIEW开发平台,使用图形化G 语言编写出来的一种数据接收、显示、预处理和存储的界面显示软件[11]。为实现基于多旋翼无人机气象数据采集系统多功能性要求,将软件划分为五个功能模块,分别是系统控制模块、数据采集模块、LabVIEW 与MATLAB 混合编程、下投式探空仪三维运动轨迹显示模块和卡尔曼滤波显示模块。该系统软件的界面图如图4 所示。
图4 系统软件界面图
4.2.1 系统控制模块
系统控制模块是整个系统的控制中心,主要包括系统初始化、开始采集和退出系统三个部分。初始化主要功能是恢复系统默认参数,可以实现在多组气象数据采集和不同场景下的系统参数设置;开始采集主要功能是在系统配置好通信方式和各个参数后,用以运行系统开始对气象数据的接收和处理;退出系统主要功能是完成气象数据采集并退出系统软件。
4.2.2 数据采集模块
数据采集模块主要是实现数据的接收、显示和存储功能,主要包括串口配置、通信协议设置、数据显示和存储方式四个部分。软件通过将配置好的串口程序与无线数传相连,从而达到与下投式探空仪相通信,并通过ASCII 码通信协议进行数据传输。其中,串口波特率为9 600 bit/s,通信协议是以LDASPTH 为数据帧头,以逗号为数据分割位,通过读取不同位置的数据来实现数据的接收。并将接收到的数据以数字形式显示出来和保存到电子表格中,以便随时调用。数据采集模块程序如图5 所示。
图5 数据采集模块程序图
4.2.3 LabVIEW 与MATLAB 混合编程
由于LabVIEW 软件在数据运算和函数编写中存在不足,该系统结合MATLAB 强大的算法功能和数据处理功能,利用DLL 动态链接库技术,将在MATLAB 中编写的算法程序,调用到LabVIEW 中进行封装,使其在脱离MATLAB 软件后仍能够独立运行,实现算法运算和数据处理的功能。
由于软件系统存在的不兼容性问题,本文通过Visual Studio 2019 软件实现了32 位LabVIEW 软件调用64 位MATLAB 软件生成的DLL 文件[13-16]。DLL 动态链接库技术实现混合编程的具体流程如图6 所示。
图6 LabVIEW 与MATLAB 混编流程图
4.2.4 下投式探空仪三维运动轨迹显示模块
为满足实时监测下投式探空仪的运动状态,有利于了解系统采集数据时的运行情况,该系统加入了三维运动轨迹显示功能。利用LabVIEW 与MATLAB 混合编程,调用MATLAB 中的坐标转换公式,并通过调用局部变量将接收到的位置信息与算法相连,实现对下投式探空仪三维运动轨迹的实时显示。在测量过程中随时可以通过手动操作来保存图片,以便后面分析。下投式探空仪三维运动轨迹程序如图7 所示。
图7 下投式探空仪三维运动轨迹程序图
4.2.5 一维卡尔曼滤波显示模块
为了能够直观显示气象数据在采集过程中的数据变化和滤波后的数据对比,利用LabVIEW 与MATLAB 混合编程,调用一维卡尔曼滤波公式。通过输出不同传感器测得的气象数据,设置数据初始值和卡尔曼滤波参数,从而实现对各个气象数据的一维卡尔曼滤波和波形显示,并可以通过手动操作保存图片。一维卡尔曼滤波部分程序如图8 所示。
图8 一维卡尔曼滤波部分程序图
为验证基于多旋翼无人机气象数据采集系统的实用性,本系统于南京经纬度坐标为(118.646 5,32.201 99)的较为空旷的地方进行实物测试实验。
该系统是以六旋翼无人机为载体,在其上方安装自动地面站,下方是一个可容纳单个探空仪的投射装置。测试时,通过无人机操控员遥控无人机到达520 m 高空,并控制投射装置释放下投式探空仪,然后通过上位机实时监测下投式探空仪的运动轨迹和气象数据变化。实物测试如图9 所示。
图9 实物测试图
系统测试前需要对系统参数进行设定,具体参数配置如表1 所示。
表1 系统参数配置表
该系统通过实际测试能够有效实现各个功能,并通过保存路径可以查看气象数据和图片信息。根据系统保存的下投式探空仪三维运动轨迹如图10(a)所示,通过图片可以清晰地看出探空仪的三维运动轨迹和运动路程区间。图片显示由无人机搭载探空仪在站心位置起飞,在短时间内到达520 m 高空并投射探空仪,探空仪在自身重力和风力的影响进行长时间的曲线运动。在测试过程中,可以看出风向在投射出探空仪后基本上维持在一定范围内上下波动,而风速有个先上升再稳定后下降的过程。通过分析探空仪的移动角度可以看出其移动角度变化是先增大再稳定后减小,跟通过风速风向分析的结果保持一致,证明该功能的可靠性和可行性。实物测试结果显示如图10所示。
图10 实物测试结果显示图
通过实物测试,利用系统软件将一维卡尔曼滤波前后的对比图保存下来,如图10(b)、10(c)、10(d)、10(e)、10(f)所示,通过波形图可以清楚地看出探空仪在由无人机搭载时气象数据变化和投射后的气象数据变化。通过图片显示在无人机搭载探空仪时,受到无人机带来的影响使得风速和风向测量结果浮动较大,而投射出去后探空仪采集到的数据较为稳定。并且可以看出,该系统在应用一维卡尔曼滤波后可以有效降低采集数据的波动,消除失真影响,达到优化采集数据,提高数据准确性的效果。
利用多旋翼无人机的高机动性和便携性,通过下投式探空仪和多功能性上位机设计能够有效完成气象数据的采集、显示、预处理和存储功能,进而提高现有多旋翼无人机在气象数据采集方面的便捷性和高效性。该系统通过DLL 动态链接库技术和LabVIEW 具有的能够生成独立的可执行程序和安装程序的特性,可以有效实现在没有LabVIEW 和MATLAB 的PC 端进行独立运行,从而能够应对各种突发情况,完成气象数据采集任务。