ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

GPS/SINS组合导航半实物仿真系统搭建与联调实践

GPS/SINS组合导航半实物仿真系统搭建与联调实践 简介这是一份关于GPS/SINS组合导航制导控制系统半实物仿真设计的专业技术文献适合飞行器制导控制、惯性导航与半实物仿真领域的工程师、研究生及科研人员阅读。文档以制导炸弹为对象详细介绍了基于GPS全球定位系统与SINS捷联惯性导航系统的制导控制系统组成并围绕半实物仿真试验的目的、内容、原理及主要仿真设备功能展开论述同时给出了仿真软件设计流程和误差干扰模型。包体为单一PDF文件大小约863KB简洁易用。内容源自《导航定位与授时》期刊2017年论文包含系统总体方案、试验模型搭建、仿真环境构建及结果分析等关键环节能帮助读者理解如何通过半实物平台模拟制导炸弹飞行过程评估制导控制系统性能并为飞行靶试提供技术支撑。目前已有115人学习适合作为系统设计参考和课题研究资料。 最近手头这套系统前前后后折腾了两个多月终于把整个闭环跑通了。简单来说就是给一套飞行器制导控制系统搭了个半实物仿真环境核心是GPS和SINS的组合导航。这套系统解决的问题很直接真机试飞成本高、故障场景难以重复、算法改一版就要等一个测试周期。半实物仿真把真实的惯导器件、真实的GPS接收机和真实的制导计算机接进回路用转台和GPS信号模拟器“喂”给它们和真实飞行一致的运动激励与卫星信号让整个制导控制链路在地面上就能完成高保真验证。如果你也在搞组合导航、制导控制或者无人机飞控的硬件在环测试这篇东西应该能帮你少踩几个坑。1. 系统整体设计思路与方案选型1.1 为什么非要把GPS和SINS组合在一起先说朴素的事实捷联惯导SINS完全自主不依赖外部信号输出频率高姿态、速度、位置都能连续给出但纯惯导的误差会随时间累积位置误差增长近似与时间的平方成正比跑几分钟可能还看不出问题跑十几分钟就完全不能看了。GPS的定位误差在长时间内基本保持稳定但更新率低常见民品也就1Hz到10Hz信号稍微受遮挡或者受干扰就掉星室内更是直接失效。制导控制系统对导航源的硬指标是高频、连续、长时稳定所以GPS和SINS是天然的互补组合。这里顺带说一句GPS定位的基本原理也就是所谓的三边测量接收机根据每颗可见卫星的伪距测距码测得的距离加上接收机钟差引起的误差来解算自身位置三维定位至少需要四颗星因为未知量除了x、y、z之外还有接收机钟差。伪距观测方程展开后是一个非线性方程组工程上一般用最小二乘迭代或扩展卡尔曼滤波求解。你在开阔地段跑GPS车载导航觉得定位还行室内突然失效本质就是少了遮挡环境下的可见星和强多径这也是WiFi定位和GPS定位的区别所在——WiFi定位靠室内遍布的AP指纹库GPS靠的是对天开阔的空口信号。组合导航的工程实现有松组合、紧组合和深组合之分。制导控制系统里松组合是首选因为结构简单、故障隔离清晰用卡尔曼滤波器把GPS输出的位置、速度作为观测去估计SINS的误差然后反馈校正惯导解算结果。松组合还有个好处GPS信号彻底失效时滤波器观测缺失系统自然退回纯惯导工作模式不会像紧组合那样因为原始观测量异常导致滤波器发散。1.2 半实物仿真在整个验证体系里的定位制导控制系统验证通常走三步纯数字仿真、半实物仿真、实物试验。纯数字仿真阶段传感器模型全是用代码搭的噪声特性、量化和时延都偏理想化适合验证算法逻辑和参数边界。但到了真实硬件层面陀螺仪有温度漂移、加速度计有刻度误差、GPS接收机有输出延迟、飞控计算机有内存和时序限制这些细节在纯数字仿真里非常难精确建模真到试飞阶段才发现问题代价就太大了。半实物仿真就是在这中间架一座桥传感器是真实的传感器受到的激励是“仿真出来的真实”。姿态运动由三轴转台模拟卫星信号由GPS射频信号模拟器生成控制指令由真实的制导计算机计算最后再回到仿真机里的飞行器模型形成一个闭环。这样一套环境故障场景可以反复注入参数改动可以立刻验证一次飞行中遇到的GPS掉星、多径干扰、信号拉偏都能在地面上重演几十遍。这也是我在这套系统里最看重的一点可重复性。2. 硬件平台搭建与关键设备选型2.1 系统组成和每个模块的作用整个半实物仿真平台分成六大模块实时仿真计算机、三轴飞行仿真转台、GPS射频信号模拟器、惯性测量单元、GPS接收机、制导控制计算机。实时仿真计算机运行飞行器六自由度模型负责解算当前时刻的位置、姿态、速度并把这些信息同步给转台和GPS信号模拟器。转台按照姿态角驱动台体转动IMU安装在转台上真实感受角运动。GPS模拟器根据位置信息生成射频信号GPS接收机接收后输出定位数据。IMU和GPS接收机的数据一起进入组合导航算法得到导航解交给制导控制计算机解算控制律控制指令再返回飞行器模型形成闭环。选型上实时仿真机我用过dSPACE和NI PXI两条路线dSPACE强在闭环实时性和I/O生态成熟NI PXI灵活度高、板卡丰富两者走半实物都没问题关键看团队已有硬件资产和软件熟练度。转台是这一套里比较吃预算的部分必须覆盖飞行器的机动包线我遇到过转台最大角速度不够导致高速机动段激励失真的事后面细说人站。2.2 射频信号注入的两种方式GPS信号模拟器的输出接入接收机有两种工程做法传导式和辐射式。传导式用射频电缆把信号直接接到接收机的天线接口损耗可控、隔离度高适合验收测试。辐射式则通过发射天线在小暗箱或吸波环境里把信号辐射出去接收机用真实天线接收更接近实际使用物理环境但要注意暗箱的屏蔽效果和天线相位中心的摆放位置。半实物仿真中如果接收机天线是独立可拆卸的我建议优先用传导式信号干净、路径损耗好标定。如果接收机是天线一体化模块或者你想验证真实天线在姿态旋转下的接收效果就必须走辐射式了。无论是哪种方式GPS射频接口的连接器、线缆损耗、相位中心偏差都需要提前标定否则后面定位精度数据飘了你分不清是算法问题还是链路问题这类“GPS connector”层面的细节特别容易被新手忽略。2.3 IMU安装与转台联调的细节IMU安装到转台台面时要特别注意三点安装面的平面度、安装坐标系和转台坐标系的对准、线缆的柔性走线。转台高速机动时如果线缆过紧或过重会引入额外的力和力矩IMU敏感的是角运动线缆带来的微小抖动都会被记进数据里。另一个容易忽略的是IMU安装方向必须和转台台体坐标轴严格对齐哪怕偏差一两度转台做大幅姿态运动时惯导解算结果就会带一个恒定的安装误差角。同步线也要在搭建时规划好。1PPS秒脉冲是GPS接收机的标准时间同步输出要接到实时仿真机的数字输入口让算法知道GPS数据对应的精确时刻。仿真机内部各板卡之间最好用PTP或IRIG-B做统一时间基准这些同步设计如果等到调试阶段再补代价非常大。3. GPS卫星信号模拟与误差注入的实现细节3.1 信号模拟器内部到底在算什么GPS射频信号模拟器的核心工作可以理解成一个“虚拟星座发射器”它根据当前时间和用户设定的一条轨迹计算接收机在每一时刻的位置、速度再结合卫星星历算出的卫星位置得到接收机与每颗可见卫星之间的距离叠加上电离层延迟、对流层延迟、星历误差、接收机噪声等误差项生成对应的伪距和载波相位。然后把这些测距信息调制成GPS导航电文、C/A码和L1载波最终上变频到1575.42MHz输出。接收机拿到这个射频信号内部跟踪环路锁定信号后解调出导航电文并测量伪距再按照前面说的三边测量算法解算出位置。也就是说模拟器“告诉”接收机你现在正在某条轨迹上运动。市面上像海马H2这类便携式多通道GPS信号模拟器能同时产生多颗可见卫星的射频信号用于在产线或实验室里测试导航设备原理和我用的这套大型模拟器是一致的区别主要在动态场景支持的逼真度和误差注入能力上。以前很多导航设备模组出厂测试直接灌NMEA串口数据缺点是测不了接收机内部信号跟踪能力射频模拟测试才是更接近实战的验证手段。3.2 误差注入和故障注入怎么设计半实物仿真里处理GPS误差分两个层面。第一层是模拟器内置的标准误差模型包括电离层、对流层、多径、星历误差等模拟器会把它们叠加到伪距上面接收机定位后自然会体现出对应的误差量级。第二层是故障注入模拟器支持人为拉偏某颗卫星的星历、在某个时间段中断信号、设置某颗卫星失锁、或者加入非高斯噪声。这些对于验证组合导航滤波器的容错能力至关重要。我自己做故障测试时常用一组典型场景整理成表格方便复用故障类型注入方式主要验证目标慢变伪距偏差对某颗卫星伪距叠加斜坡偏置滤波器对缓变故障的检测和抑制能力短时信号中断指定通道信号中断0.5秒到2秒纯惯导保持精度和滤波器重收敛速度可见星数量骤减关闭部分卫星通道卫星几何分布退化下的定位精度变化突发多径干扰在特定时刻叠加多径模型接收机码环鲁棒性和组合导航抗差能力故障注入最容易犯的错是把场景设计得过狠直接导致组合导航发散然后花了很久排查算法最后发现是故障场景本身不符合物理实际。建议从最小故障量开始逐步加大记录每一个节点上的系统输出变化否则你很难掌握算法容错的真实边界。3.3 模拟器自检和标定步骤接好模拟器之后第一件事不是直接跑组合导航用例而是先做基础自检。我的做法是三步第一步设置一条静止轨迹比如北纬30度东经120度高度1000米跑5分钟看接收机定位结果的静态精度一般2D RMS应该达到模拟器和接收机各自的标称指标第二步设置一条匀速直线或匀速圆周轨迹对比接收机解算轨迹和注入轨迹的偏差检验动态情况下的跟踪能力第三步开一个故障注入场景确认模拟器的拉偏和中断功能确实生效再进组合导航联调。这块看起来入不了门但实际上非常关键。我曾遇到过一次接收机在某个场景下定位误差突增排查了一周最后发现是星历文件没更新到模拟器当前UTC时间接收机拿到了过期星历。模拟器自检里的静止精度测试相当于给整个射频链路兜了个底链路有问题、算法再强也白搭。4. 组合导航算法核心与制导控制回路联调4.1 捷联惯导解算的基本流程捷联惯导解算主要分三块姿态更新、速度更新、位置更新。姿态更新我一般用四元数法配合圆锥补偿处理高动态环境下的不可交换误差。速度更新用比力方程把加速度计输出的比力加上重力模型补偿同时考虑哥氏加速度和地球自转的影响。位置更新则是把速度在导航坐标系下积分得到经纬度和高度变化。制导控制系统里惯性解算通常要求在200Hz甚至1kHz以上运行IMU输出的角增量和速度增量是逐周期采集的。实时仿真机必须保证这个解算任务严格按固定周期执行任何一次调度抖动都会直接影响姿态精度。这也是为什么半实物仿真平台对实时性要求远高于普通数据采集系统。你可以在后台开一个大计算任务来模拟系统负载用这种方式压力测试实时调度性能这是工程中很常见的做法。4.2 松组合滤波器的状态和观测设计从工程可实现性上看松组合卡尔曼滤波器通常是18维状态包括3个失准角、3个速度误差、3个位置误差、3个陀螺零偏、3个加速度计零偏再加3个陀螺刻度因数误差或额外的相关漂移项。观测方程取GPS位置速度与SINS解算的位置速度之差观测噪声的方差可以根据接收机等级和模拟器误差水平预标定。为什么不用紧组合紧组合要拿到GPS接收机的伪距和载波相位原始观测量调试难度指数级上升而松组合拿到的位置速度已经经过接收机内部滤波状态独立故障隔离也干净。松组合的代价是GPS位置信息本身带了相关性如果接收机内部滤波导致观测噪声时间相关卡尔曼滤波器的白噪声假设会被破坏实践中可以在观测中加入较大方差来抑制。调滤波器参数时我的顺序是先用一个相对保守的观测噪声方差R跑静基座场景把系统调到不发散然后逐步收紧R观察位置误差曲线的噪声水平过程噪声Q则结合载体机动程度和经验值初选再针对典型机动场景微调。这套方法虽然慢但是不会出现一上来就发散到怀疑人生的情况。4.3 制导控制回路的完整闭环工作流程一次半实物仿真运行的时序按我这边平台的流程是实时仿真机先加载飞行器六自由度模型设置好初始位置、速度和姿态以及目标航路点然后模型解算当前状态把位置姿态数据分别发给GPS模拟器和转台GPS模拟器根据位置信息生成射频信号转台则按照姿态角驱动台体转动IMU和GPS接收机同时被“真实”激励IMU输出角增量和速度增量GPS接收机输出经纬高、速度、时间戳组合导航算法把两路数据融合输出高频率、无漂移的导航解制导控制计算机根据导航解和目标偏差解算制导指令控制指令回送给飞行器模型改变模型下一帧的状态。如此循环就形成了一个完整的半实物闭合回路。这个闭环里最容易断裂的点就是数据流和指令流之间的时间同步。我在这套平台里专门加了一个数据记录模块每一条IMU数据、GPS数据、组合导航输出、指令输出都带统一的仿真时间戳后面做问题排查全靠这份日志。甚至可以说日志系统设计得好不好直接决定了联调的效率。5. 联调中的典型问题与排查思路5.1 时间同步错乱导致滤波结果周期性波动现象是组合导航输出的姿态和位置在某个固定频率下周期性波动和载体真实的运动频率对不上。排查下来常见原因是GPS接收机数据帧到了之后程序里用的时间戳是“程序收到数据那一刻”的时间而不是GPS信号对应的真实测量时刻。GPS接收机从信号接收到NMEA报文输出本身有几十到上百毫秒的延迟如果不补偿系统转弯时就会出现明显的位置滞后。解决办法是收到带1PPS时间标记的数据后做一个时间对齐用接收机的输出时刻和对应的秒脉冲计数值反推测量时刻然后在组合滤波器中按这个测量时刻进行观测更新。我见过不少人漏了这一步看轨迹图上组合导航输出比真实参考轨迹慢了一截还以为是滤波器调得不好。5.2 转台动态不足导致的“假失效”某次高速滚转场景测试中惯导解算的姿态误差很小但GPS/组合导航输出的速度误差却异常增大。查了很久才发现问题出在转台指令给的滚转角速度超过了转台最大能力台体实际输出被限幅IMU根本没有感受到预期的角运动后续解算自然对不上。判断方法是直接把转台指令角度和转台编码器反馈角度同时记录下来对比两者的跟随误差。如果跟随误差超过一个阈值比如1度以上说明激励已经失真需要降低轨迹机动强度或者换一个动态范围更大的转台。半实物仿真不是所有场景都必须真实复现超出设备能力的地方要舍得削峰否则你测出的是一个交叉验证过的错误结果。5.3 GPS信号模拟器配置导致的“假丢星”接收机在某个场景里可见星不断跳动几颗星频繁失锁再重捕获定位精度明显变差。排查思路先看模拟器轨迹文件的时间戳是否连续再看星历文件有没有过期最后用频谱仪测射频输出功率和带内平坦度。我遇到过一次“假丢星”是因为轨迹文件里连续两个时间点的位置跳变过大模拟器为了满足新的伪距变化率把某颗星的多普勒算到了接收机跟踪环路的捕获范围之外接收机自然失锁。这类问题的排查顺序建议是先看模拟器自检通道状态再看接收机跟踪状态最后看射频链路。千万不要一上来就怀疑接收机或者组合导航算法很多“丢星”其实是激励信号本身不干净。5.4 组合滤波器发散滤波器发散的表象很多位置误差瞬间暴涨、状态估计出现振荡、某几个状态量输出明显不合理。排查先看GPS接收机本身定位是否正常如果接收机直接输出的定位就已经乱跳那问题在射频信号侧如果GPS输出正常但组合导航发散看滤波新息序列计算归一化新息平方NIS如果NIS长期远大于理论卡方分布阈值说明观测模型和真实量测不匹配需要检查观测矩阵和噪声方差设定。还有一类常见的发散问题是初始对准没做好。SINS初始姿态误差大的情况下组合导航的误差模型线性化假设被破坏滤波器很难收敛。所以每次启动前我都会在静态场景下做一次相对完整的初始对准确保姿态误差足够小再切换飞行场景。6. 一些实际操作中的体会最后分享一点我自己的感受。半实物仿真这套系统技术难点其实不在单一模块而在把所有模块拉通的那个过程。硬件接口不匹配、时间戳不齐、射频电平偏了、转台频响不够任何一个细节都会让你怀疑算法写错了。我的建议是准备一套“系统自检用例”每次跑正式场景之前先花十分钟把全套自检跑一遍这套用例不变一旦系统性能变化第一时间就能定位到是哪个环节出了问题。我在这套平台上用相同的自检场景跑过几十次看到的定位误差和姿态误差曲线每次都惊人地一致这本身就是半实物仿真平台可靠性最好的证明。如果后续想扩展比较自然的方向是往紧组合或深组合演进同一套硬件平台已经具备条件只需要把GPS接收机的原始观测量拉出来把观测方程从位置速度改成伪距和载波相位。也可以加入视觉、气压计、磁力计等多源融合让系统在GPS长时间失效下还能保持一定精度。但不管加多少传感器半实物仿真这套“真传感器加模拟激励”的验证思路是不变的搞透了这套方法论换个载体换个场景基本都能快速上手。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进