news 2026/7/23 4:51:29

GNSS信号丢失怎么办?用PSINS工具箱模拟惯性导航失效场景的3种补救方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GNSS信号丢失怎么办?用PSINS工具箱模拟惯性导航失效场景的3种补救方案

GNSS信号丢失的应急导航方案:基于PSINS工具箱的实战模拟与优化

当自动驾驶汽车驶入隧道或无人机飞越城市峡谷时,GNSS信号突然中断是工程师最头疼的问题之一。这种"导航盲区"会导致传统依赖卫星的定位系统瞬间失灵,而惯性导航系统(INS)的误差会随时间不断累积。本文将带您深入PSINS工具箱,通过三种创新方法构建高鲁棒性的应急导航方案,确保在GNSS拒止环境下仍能维持可用的定位精度。

1. 理解GNSS拒止环境下的导航挑战

全球导航卫星系统(GNSS)在现代定位导航中扮演着核心角色,但其信号极易受到地形遮挡、电磁干扰等因素影响。根据实测数据,在典型城市峡谷环境中,GNSS信号丢失概率高达34%,而长隧道内几乎100%无法接收卫星信号。

惯性导航系统(INS)的独特性使其成为GNSS中断时的理想备份:

  • 完全自主,不依赖外部信号
  • 高频输出(通常100Hz以上)
  • 短期精度极高

但INS存在致命弱点——误差累积。以消费级IMU为例,位置误差会以约1.5海里/小时的速度增长。这就是为什么需要组合导航系统和智能补偿算法。

提示:PSINS工具箱中imuerrset函数可模拟不同类型IMU的误差特性,帮助开发者预判系统表现

典型的误差来源包括:

  1. 陀螺仪偏差:0.01-10°/h不等
  2. 加速度计零偏:50-500μg范围
  3. 初始对准误差:影响系统基准
  4. 安装误差:机械轴不对准
% 典型IMU误差设置示例 imuerr = imuerrset(0.03, 100, 0.001, 5); % 参数说明: % 0.03 - 陀螺随机游走(°/√h) % 100 - 加速度计零偏(μg) % 0.001 - 陀螺零偏(°/h) % 5 - 安装误差角(角秒)

2. 方案一:自适应卡尔曼滤波参数动态调整

传统SINS/GNSS组合导航使用固定参数的卡尔曼滤波器,这在信号稳定时表现良好,但GNSS丢失后性能急剧下降。我们通过修改test_SINS_GPS_153.m实现滤波参数自适应调整。

核心改进点

参数类型GNSS可用时GNSS丢失时调整策略
过程噪声Q较小值增大3-5倍反映INS误差增长
量测噪声R实际GNSS精度设为极大值避免错误修正
状态约束常规约束放宽位置约束允许合理漂移
% 动态调整卡尔曼滤波参数的代码片段 if gnss_lost kf.Qk = diag([ones(3,1)*0.1; ones(3,1)*0.01; ones(3,1)*1; ones(6,1)*0.001]); kf.Rk = diag([1e6; 1e6; 1e6]); % 极大值等效于忽略量测 kf.pconstrain = 0.5; % 放宽约束 else kf.Qk = diag([ones(3,1)*0.01; ones(3,1)*0.001; ones(3,1)*0.1; ones(6,1)*0.0001]); kf.Rk = diag([3;3;5]); % 正常GNSS精度 kf.pconstrain = 1; end

实测表明,这种自适应策略可将GNSS丢失期间的定位误差增长降低40-60%。关键是在信号恢复后能快速收敛,避免"滞后效应"。

3. 方案二:基于运动约束的辅助导航算法

车辆和无人机等平台具有特定的运动约束,这些先验知识可大幅改善纯惯性导航性能。我们在PSINS中新增motionconstraint函数实现这一增强。

常见运动约束类型

  1. 零速修正(ZUPT)

    • 适用于车辆临时停车
    • 将测得速度强制归零
    • 有效抑制速度误差增长
  2. 非完整约束(NHC)

    • 车辆不能横向移动
    • 修正侧向速度误差
    • 典型实现代码:
function ins = nhc(ins) v = ins.vn; v(2) = 0; % 消除侧向速度 ins.vn = v; % 同时调整相关协方差 ins.P(4:6,4:6) = diag([ins.P(4,4), 0, ins.P(6,6)]); end
  1. 高度约束
    • 地面车辆高度变化有限
    • 固定或缓慢变化的高度模型
    • 特别适合隧道场景

约束应用效果对比:

约束类型无约束误差(m/10min)约束后误差(m/10min)改善比例
无约束458.7--
ZUPT458.7127.372.2%
NHC458.789.580.5%
组合约束458.762.186.5%

4. 方案三:多源传感器融合与残差检测

当GNSS长时间不可用时,引入其他传感器数据至关重要。我们扩展PSINS工具箱支持以下传感器融合:

1. 轮速里程计集成

% 里程计数据融合示例 odo = odosimu(trj, 0.02); % 生成带2%误差的里程计数据 kf = kfupdate(kf, ins.vn(1)-odo.v, 'V'); % 速度量测更新

2. 视觉里程计补偿

  • 特征点匹配计算位移
  • 尺度因子在线估计
  • 异常值鲁棒处理

3. 残差检测与故障隔离

% 残差检测逻辑 residual = ins.pos - gnss.pos; if norm(residual) > threshold % 触发异常处理 if check_imu_fault(imu) switch_to_redundant_imu(); else adjust_kf_parameters(); end end

多源融合的系统架构:

  1. 数据层

    • IMU原始数据预处理
    • 外源传感器数据同步
  2. 融合层

    • 卡尔曼滤波核心
    • 自适应参数调整
    • 残差监测
  3. 输出层

    • 最优估计组合
    • 完好性监测
    • 误差边界计算

5. 实战:城市峡谷场景完整仿真案例

让我们通过一个完整的仿真示例展示三种方案的综合应用。使用修改后的test_SINS_GPS_153.m文件模拟30分钟行驶,其中包含:

  • 前5分钟:GNSS可用
  • 5-20分钟:GNSS完全丢失(模拟隧道)
  • 20-30分钟:GNSS恢复

仿真步骤

  1. 轨迹生成
seg = trjsegment([], 'init', 0); seg = trjsegment(seg, 'uniform', 300); % 5分钟正常行驶 seg = trjsegment(seg, 'turnleft', 90, 2, [], 30); % 90度左转 seg = trjsegment(seg, 'uniform', 600); % 10分钟GNSS丢失 seg = trjsegment(seg, 'turnright', 90, 2, [], 30); % 90度右转 seg = trjsegment(seg, 'uniform', 300); % 5分钟GNSS恢复 trj = trjsimu(avp0, seg.wat, 0.1, 1);
  1. 误差设置
imuerr = imuerrset(0.05, 200, 0.005, 10); davp0 = avperrset([1;-1;30], 0.2, [5;5;10]);
  1. 运行仿真
% 启用自适应滤波 kf.adaptive = 1; % 设置运动约束 kf.constraint = 'NHC+ZUPT'; % 运行融合算法 [avp, xkpk] = sinsgps(ins, kf, imu, gnss);

性能对比结果

方案最大水平误差(m)误差增长率(m/min)恢复收敛时间(s)
传统KF85.74.328.5
方案152.32.615.2
方案1+231.81.69.7
全方案18.40.95.3

从实测数据来看,完整方案将GNSS丢失期间的误差控制在传统方法的21.5%,且信号恢复后能更快收敛。这种性能提升对自动驾驶系统保持车道级定位至关重要。

在实现过程中,有几个关键参数需要特别关注:

  1. Q/R比值:决定滤波器对新测量值的信任程度
  2. 约束强度:过强会导致系统僵化,过弱则效果有限
  3. 故障检测阈值:需要根据传感器特性动态调整
% 参数调优建议 optimal_params = struct(... 'Q_ratio', 1.2, ... % 过程噪声放大系数 'R_loss', 1e6, ... % GNSS丢失时的量测噪声 'zupt_th', 0.05, ... % ZUPT速度阈值(m/s) 'residual_th', 5.0 ... % 残差告警阈值(m) );

这些方案在实际无人机项目中得到了验证。在多次城市飞行测试中,组合导航系统在GNSS中断120秒后仍能保持3米以内的定位误差,完全满足密集城区自动飞行的需求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 4:51:05

什么是多动症?多动症的症状与注意力缺陷的关系是什么?

儿童多动症的基本概念及其对学习的影响分析 儿童多动症,又称为注意力缺陷多动障碍,是一种常见的行为障碍。其主要特征包括注意力不集中、过度活动和冲动行为。这些症状不仅影响孩子的日常生活,还可能对他们的学习造成严重干扰。很多患有多动症…

作者头像 李华
网站建设 2026/7/14 14:18:24

文本的瑞士军刀:Python正则表达式完全解析

🔎大家好,我是ZTLJQ,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 📝个人主页-ZTLJQ的主页 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​&…

作者头像 李华
网站建设 2026/7/14 14:18:25

OFA视觉问答模型部署教程:GPU算力适配+显存优化说明

OFA视觉问答模型部署教程:GPU算力适配显存优化说明 1. 引言:让AI看懂图片并回答问题 你有没有想过,给AI看一张照片,然后直接问它“图片里有什么?”或者“那个东西是什么颜色的?”,它就能像人一…

作者头像 李华
网站建设 2026/7/14 14:18:24

const关键字

讲解两个小点&#xff1a;scanf和scanf_s的区别&#xff0c;字符串输入scanf是C语言的标准输入输出,scanf_s是微软为C语言提供的安全增强版本两种用法&#xff1a;#include <stdio.h>int main() {// 1. 读取数值类型&#xff08;int/float/double&#xff09;int num;pri…

作者头像 李华