中国科技核心期刊      中国指挥与控制学会会刊     军事装备类重点期刊
Engineering & Application

Design of Inertial/GNSS Integrated Navigation Simulation Verification System Based on MFC

  • XU Jing-shuo 1 ,
  • PENG Wei-qi 2 ,
  • XU Guo-feng 1
Expand
  • 1. Naval Aeronautical University Qingdao Campus, Qingdao 266041
  • 2. Unit 91331 of PLA, Huludao 125100, China

Received date: 2019-10-31

  Revised date: 2020-01-02

  Online published: 2022-05-10

Abstract

In order to verify the effectiveness of the inertial navigation system algorithm, a flight control simulation system is designed to generate flight trajectory data in line with the actual situation. The Strapdown Inertial Multi-subsample algorithm is written in Visual C++language. The SINS/GNSS integrated navigation system is designed based on the MFC modularization idea; based on UDP network, it can perform real-time navigation algorithm simulation verification. The simulation results show that the simulation verification system has good engineering application value for verifying the effectiveness of navigation algorithm and judging system performance.

Cite this article

XU Jing-shuo , PENG Wei-qi , XU Guo-feng . Design of Inertial/GNSS Integrated Navigation Simulation Verification System Based on MFC[J]. Command Control and Simulation, 2020 , 42(3) : 74 -80 . DOI: 10.3969/j.issn.1673-3819.2020.03.014

惯性导航系统(INS)具有完全自主、不受干扰的特点,使其在军用领域获得了广泛的应用。但高精度的惯导系统制造成本太高,而成本低廉的低精度惯导系统(如基于MEMES陀螺的惯导系统)的系统误差随时间积累过大,无法单独长时间进行导航。随着全球卫星导航系统(GNSS)的发展,通过INS与GNSS组合,解决了惯导系统误差随时间积累的问题,成为惯导系统重要发展方向之一[1-2]
惯导系统的导航效果需要通过空中试飞等实验验证,所需成本高,风险大。因此,设计一种能够模拟飞机真实运动轨迹,方便进行导航解算验证的仿真系统很有必要。文献[3]基于实际无人机的飞行数据采用样条插值的方法生成惯性器件输出数据,这种方法在进行多次试验时成本较高,且受外界因素影响较大,样条插值难以准确反映飞机的真实运动情况。文献[4-5] 将飞机的运动过程分解为几个基本的运动阶段,即通过确定飞机的起始位置、终点位置、中途飞越的航路点,根据飞机的飞行姿态,将飞行过程分为滑跑、爬升、平飞、倾斜、转弯等不同的飞行阶段,根据飞机的数学模型和空气动力学模型等分别对各个阶段进行仿真运算,并将不同阶段的仿真数据拼接为一条完整的飞行模拟轨迹,最后,基于该仿真轨迹进行导航仿真验证,但这种方法比较繁琐,飞机运动过于机械化,不够灵活。文献[6]在建立了六自由度非线性飞机数学模型的基础上,根据测试基准轨迹参数,推导出陀螺仪和加速度计的理想输出,但依然存在只能够进行几种设定的机动运动,难以准确反映实时的飞机运动。文献[7]在文献[6]的基础之上,以高超声速飞行器半实物仿真实验为背景,建立了更精确的飞行器六自由度模型。上述文献的研究落点均在飞行器的建模之上,本文在前人研究基础之上利用Visual C++语言,结合飞机动力学模型设计了飞控仿真系统,不仅以某型飞机为研究对象,对飞行器进行了建模,还加入了空间风速模型、大气模型等环境因素,使得该系统能够生成一条符合实际情况的飞行轨迹;编写了捷联惯导多子样算法,利用MFC库函数设计惯性/GNSS组合导航系统软件,对惯导算法进行仿真验证,最终达到了预期系统功能的设计要求。

1 系统方案设计

1.1 预期功能

惯性/GNSS组合导航仿真验证系统所要达到的预期功能如下:
1)能够进行飞行模拟仿真,用户可以通过操控操纵杆生成一条符合实际情况的飞行轨迹(包含俯仰、倾斜、航向、东北天向速度、经纬度等数据);2)通过模拟得到的飞行轨迹数据,能够进行实时惯性导航解算;3)能够模拟GNSS导航数据,经过卡尔曼滤波进行惯性/GNSS组合导航解算;4)用户能够选择多种导航模式(纯惯导导航模式、惯性/GNSS组合导航模式)、惯导解算方法;5)用户可以根据试验情况需要自行设置惯性器件误差。

1.2 总体设计方案

系统分为飞行模拟端和导航计算端,独立运行在两个计算机上,利用Windows socket套接字,通过UDP网络进行数据传输。总体方案设计框图如图1所示(图中虚线框中内容表示在导航计算机中完成)。
图1 惯性/GNSS组合导航仿真验证系统总体设计

2 飞控仿真系统设计

2.1 飞机刚体模型条件假设

首先,基于飞行控制原理对飞机的飞行仿真环境做以下假设[8]:
1)认为飞机是刚体,在仿真过程中形状保持不变,质量保持不变。
2)忽略地球的曲率,认为飞机所处地点地面为一水平面。
3)认为地球相对于惯性系静止不动,即忽略地球自转角速度。
4)忽略飞机所处高度对重力加速度的影响。
5)飞机的几何外形对称且质量分布均匀,即飞机的惯性积Ixy=Izy=0。

2.2 飞控仿真系统总体模型结构设计

飞机的总体模型包括飞机运动学模型和动力学模型。其主要结构设计如图2所示。
图2 飞控仿真系统总体模型结构设计

2.3 风速数学模型的建立

为使仿真结果更加真实,加入了环境空间模型(大气模型采用ISA标准大气模型)。设飞行空间的风速为VW,则飞机的地速为
V=VT+VW
其中,VT为飞机的真空速,方向沿机体系坐标轴的oBxB轴,其大小可以通过发动机的推力来计算。VTVWV三者的关系可以通过图3表示。
其中,ψ表示飞机的航向角;ψr为飞机的实际航迹角;OP表示期望的飞行轨迹;δ表示偏流角,设飞机右偏时为正,左偏为负;Δψ表示飞机偏航角;θW表示空间风速的方向与北向的夹角,其主值为
θ W = a r c t a n V W E V W N
其中,VWE为风速的东向分量大小,VWN为风速的北向分量大小。
VWE=VE-VT sinψ
VWN=VN-VT cosψ

2.4 飞控实时仿真系统界面

控制飞行主要通过外接操纵杆来控制飞机舵偏转和油门杆偏转,本文采用双翼遥控游戏手柄作为仿真软件的硬件操纵杆,用以完成对飞机的姿态、油门等变量的控制。操纵杆控制界面如图4所示。
图4 操纵杆控制界面
飞控仿真系统界面如图5所示。
图5 飞控仿真系统界面

3 捷联惯导系统建模

3.1 坐标系的建立

进行捷联惯导解算首先需要确定相应的导航坐标系。本文捷联惯导系统采用东北天坐标系作为导航系(为满足右手定则,航向角取北偏西为正,范围为:(-π/2,π/2);本文飞控仿真系统采用北偏东为正,范围为:(0,2π))。

3.2 惯性器件误差模型

惯性器件的误差模型可以通过图6来表示,具体内容可以参考文献[9]。
图6 惯性器件误差模型示意图

3.3 惯性器件信息模拟

正常情况下,捷联惯导的算法输入一般为陀螺仪采样的角增量和加速度计的速度增量,经过姿态、速度、位置更新过程,输出飞机的姿态、速度、位置等导航信息。与之相反,捷联惯导反演算法则是根据飞机的姿态、速度、位置信息,经过反演计算得到陀螺仪、加速度计的角增量和速度增量,是捷联惯导算法的逆过程。飞行仿真系统所生成的导航参数经过捷联惯导反演算法就能够得到理想情况下的陀螺仪、加速度计输出。
根据“单子样+前一周期”算法:
Φ m = Δ θ m + 1 12 ( Δ θ m - 1 × Δ θ m )
Δ V s c u l m = 1 12 ( Δ θ m - 1 × Δ V m + Δ V m - 1 × Δ θ m )
由于飞行轨迹已知,因此,ΔVsculmΦm的值通过捷联惯导更新算法可以很容易得到,设ΔV0=0、Δθ0=0,代入上式迭代,即可生成理想情况下陀螺仪、加速度计的输出数据,再通过加入惯性器件的误差就可以得到惯性器件的仿真模拟输出信号。其迭代流程图如图7所示。
图7 惯性器件仿真模拟输出信号

3.4 捷联惯导更新算法

捷联惯导姿态更新算法是捷联惯导算法的核心,其求解精度直接影响速度、位置参数的求解[10]。目前姿态更新的主要方法有欧拉角法、四阶龙格-库塔法和等效旋转矢量算法等[11-16],由于陀螺的输出大多为角增量,故设计采用多子样旋转矢量算法,其理论基础是Bortz方程[17]。具体算法可以参考相关文献,本文在此不做过多赘述。

4 惯性/GNSS组合导航系统建模

4.1 惯性/GNSS组合导航系统原理

因为惯性器件的误差会随着时间的增加而逐渐积累,最终导致纯惯导系统无法进行导航,因此,惯性/GNSS组合导航系统应运而生,它不仅拥有惯导系统在短时间内的高精度定位优点,又能够通过GNSS信息作为外部输入,在运动过程中频繁修正惯导系统,解决了导航误差随时间积累不断发散的问题。
图8 组合导航仿真原理框图

4.2 惯性/GNSS组合导航卡尔曼滤波器设置

设计组合导航卡尔曼滤波器,首先要给出系统状态方程和量测方程[9]:
X · ( t ) = F ( t ) X ( t ) + G ( t ) W ( t )
Z(t)=H(t)X(t)+V(t)
式中:X(t)为系统的n阶状态向量(本文采用15维状态量进行滤波,忽略了惯性器件的标度因数误差),X(t)=[δφE,δφN,δφU,δVE,δVN,δVU,δL,δλ,δh,εE,εN,εU, E, N, U]T,δφE,δφN,δφU是姿态误差角,δVE,δVN, δVU是东、北、天三个方向上的速度误差,δL,δλ,δh是位置误差,εE,εN,εU为陀螺量测误差, E, N, U为加速度计量测误差;F(t)是系统的状态转移矩阵,由捷联惯导系统的误差模型[6]确定;G(t)是系统的噪声驱动矩阵;W(t)为系统噪声;Z(t)为量测值;H(t)为系统量测矩阵;V(t)为量测噪声。
上述方程经过离散化处理后得到:
Xkk,k-1Xk-1k,k-1Wk-1
Zk=HkXk+Vk
取各个导航子系统的导航输出误差量作为估计对象,经过卡尔曼滤波后得到各个导航参数的误差量,根据误差量对惯导系统进行修正,从而达到导航的精度要求。

5 组合导航仿真验证系统的实现

5.1 MFC简介

为了简化程序员的开发工作,微软公司研制并开发了MFC(Microsoft Foundation Class,微软基础类库),它是一套C++类的集合,是一套面向对象的函数库,它将大部分的Windows API封装到C++类中,以类成员函数的形式提供给开发人员调用[18]

5.2 系统组网实现

实现计算机网络通信的方式有很多,本文采用Windows Socket来实现。而网络通信要遵循相关的协议,目前主要有传输控制协议TCP和用户数据包协议UDP。由于UDP协议没有数据确认和重传机制,实时性较高,而且在局域网中传输一般不会出现数据丢失的情况,因而,采用UDP协议来实现网络数据传输,如图9所示。
图9 基于UDP的socket编程

5.3 系统界面设计

采用Microsoft Visual Studio 2010编译器创建MFC工程,利用MFC库函数,生成系统界面如图10所示。
图10 惯性/GNSS仿真系统界面
飞控仿真系统所生成的轨迹数据,能够通过UDP网络实时传输到导航计算机,并在导航计算机中根据用户所选择的导航模式、误差情况进行实时导航解算,导航参数能够实时显示在界面上。仿真系统实物如图11所示。
图11 惯性/GNSS飞行仿真训练系统实物图

6 仿真结果及分析

6.1 仿真结果显示

仿真条件:初始纬度设为29.594°,初始经度设为-95.164°;陀螺常数偏差设为1°/h,角度随机游走系数设为0.001°/$\sqrt{h}$,加速度计常数偏差设为10 μg,速度随机游走系数设为1 μg/$\sqrt{H\text{z}}$,GNSS定位误差设为3 m,速度误差设为0.3 m/s,仿真时间设为5 h(18 000 s),数据传输时间间隔为1 s,GNSS每2 s进行一次量测更新,下面以二子样旋转矢量算法为例给出了飞行模拟航迹、纯惯导解算航迹、惯性/GNSS组合导航解算航迹结果和两种导航模式下的北向速度误差和纬度误差结果如图12-18所示。
图12 飞行模拟航迹
图13 纯惯导解算航迹
图14 惯性/GNSS组合导航解算航迹
图15 纯惯导北向速度误差
图16 纯惯导纬度误差
图17 组合导航北向速度误差
图18 组合导航纬度误差
再减小惯性器件误差将陀螺常数偏差设为0.01°/h,角度随机游走系数设为0.001°/$\sqrt{h}$,加速度计常数偏差设为10 μg,速度随机游走系数设为1 μg/$\sqrt{H\text{z}}$,再次仿真得到北向速度误差和纬度误差如图19-22所示。
图19 纯惯导北向速度误差
图20 纯惯导纬度误差
图21 组合导航北向速度误差
图22 组合导航纬度误差

6.2 仿真结果分析

仿真结果显示:当惯性器件漂移误差较大时,纯惯导解算航迹相对于模拟飞行轨迹偏差很大,无法独立长时间进行导航,对比惯性/GNSS组合导航解算航迹,表明组合导航系统能够有效解决纯惯导系统误差随惯性器件不断累积的问题。当惯性器件漂移误差较小时,通过对比纯惯导解算的误差结果表明在短时间内纯惯导系统具有很高的精度,但随着导航时间的延长其精度逐渐下降;而长时间进行导航过程中,惯性/GNSS组合导航系统的导航精度明显相对于纯惯导系统更加精确。

7 结束语

根据仿真结果,本文设计实现的惯性/GNSS组合导航仿真验证系统达到了最初的设计要求和预期功能,并且系统采用C++语言进行编译,其移植性好。该验证训练系统能够通过操纵杆,灵活生成飞行轨迹,并通过网络通信技术实时进行导航解算。惯性器件误差和解算方法都可以由用户自行设定,对于验证导航算法的有效性、判断系统性能等方面具有很强的实用性,为进一步在实验室中进行综合航电交联试验提供了很好的辅助作用。
[1]
朱静. SINS_GPS松组合与紧组合两种组合方式的对比研究[J]. 舰船电子工程. 2013, 33(6):59-61.

[2]
丁翠玲, 陈帅. GNSS/SINS深组合导航系统研究现状及展望[J]. 航空兵器, 2015, 5:18-22.

[3]
刘科, 吴文启, 唐康华, 等. 利用实际飞行数据插值的INS/GNSS组合导航仿真轨迹发生器[J]. 国防科技大学学报, 2018, 40(1):133-137.

[4]
罗宇锋, 刘勇. 基于轨迹发生器的捷联惯导算法仿真研究[J]. 河南理工大学学报, 2015, 34(6):868-871.

[5]
文钢. 一种基于Matlab的捷联惯导系统仿真轨迹发生器设计[J]. 舰船电子工程, 2016, 36(5):87-91.

[6]
李军伟, 程咏梅, 陈克喆, 等. 基于飞行仿真的捷联惯导算法测试平台[J]. 中国惯性技术学报, 2012, 20(5):530-535.

[7]
陈凯, 卫凤, 张前程, 等. 基于飞行力学的惯导轨迹发生器及其在半实物仿真中的应用[J]. 中国惯性技术学报, 2014, 22(4):486-491.

[8]
张明廉. 飞行控制系统[M]. 北京: 航空工业出版社, 1994:41.

[9]
秦永元. 卡尔曼滤波与组合导航原理[M]. 西安: 西北工业大学出版社, 2015: 288-291,316-335.

[10]
Cheng H, Gupta K[DW]C. A Historical Note on Finite Rotations[J]. Journal of Applied Mechanics, 1989, 56:139-145.

DOI

[11]
秦永元, 张士邈. 捷联惯导姿态更新的四子样旋转矢量优化算法研究[J]. 中国惯性技术学报, 2001, 9(4):1-7.

[12]
张士邈. 适合高动态环境的捷联惯导系统高精度算法研究[D]. 西安:西北工业大学, 2002:11-27.

[13]
聂水茹. 高动态环境下捷联惯导的优化算法研究[D]. 西安:西北工业大学, 2003: 9-20.

[14]
秦永元. 惯性导航[M]. 北京: 科学出版社, 2014: 244-278.

[15]
严恭敏, 杨小康, 翁浚, 等. 一种求解姿态不可交换误差补偿系数的通用方法[J]. 宇航学报, 2017, 38(7):724-727.

[16]
尹剑, 邓宏林, 杨萌, 等. 基于角速率与角增量的捷联惯导姿态算法[J]. 四川兵工学报, 2015, 36(11):101-104.

[17]
Bortz J E. A New Mathematical Formulation for Strapdown Inertial Navigation[J]. IEEE Transactions on Aerospace and Electronic Systems, 1979, 7(1):61-66.

[18]
孙鑫. VC++深入详解[M]. 北京: 电子工业出版社, 2012: 66, 523-556.

Outlines

/