INS/GNSS组合导航(三)松耦合、紧耦合、深度耦合

2023-05-16

0 INS/GNSS组合导航概述

        所谓INS/GNSS组合导航,就是利用INS和GNSS两者信息进行融合,从而综合利用两者的优点,实现优势互补,求解实现pose的解算,得到PVA(位置、速度、姿态)的准确结果。
         惯性导航系统INS是一种全自主的导航系统,可以输出超过200Hz的高频信号,并且具有较高的短期测量精度。除了提供位置与速度之外还可以提供姿态信息。但由于算法内部存在积分,惯性传感器的误差会不断累积,使得长期导航误差无限制增长。
       与INS相反,GNSS(全球导航卫星系统),主要有美国GPS 、俄罗斯GLONASS 、欧空局Galileo和中国BDS。GNSS具有良好的长期精度,导航误差大致为几米,设备成本低于100美元。但是,它短期精度与输出频率较低。一个常规的GNSSS接收机通常无法提供姿态信息,除非采用一些额外的硬件或软件。此外,全球导航卫星系统需要依靠至少3颗卫星(4颗)的信号,而卫星信号通常会受到高层建筑、树木、隧道、大气以及多路径效应的干扰。
从上述特点来看,INS与GNSS具有较好的互补特性,将二者集成可以得到比单一导航系统稳定性更好、精度更高的导航方案。INS/GNSS的组合导航系统可以输出高频率的导航参数信息(位置、速度、姿态),并且在长、短期的导航过程中均能具备较高精度。采用基于卡尔曼滤波的最优估计方法,对GNSSS和INS定位导航信息进行融合,可以得到可靠的导航解。GNSS能够防止惯性数据漂移,INS能在GNSS信号中断时提供位置、速度、姿态信息。

特别声明:由于早期的GNSS全球导航卫星系统以美国为主,当前其应用普及程度也是世界主流,导致现有的教科书中泛指的GNSS信号都是直接使用的GPS(全球定位系统),GPS本身不是特指美国,但美国命名的采用这个名字,为表述准确,2016年以后出版物多数已改成GNSS写法。GNSS直译为全球导航卫星系统,亦称为全球卫星导航系统,只是翻译的习惯差异。

下文中所有图表展示的GPS和表达式中出现的GPS并不特指美国GPS,在国内也可能是北斗导航GNSS信号,图表和公式来自转载或文献应用,尊重原始版权,不作修改,准确的写法应该是全部改成GNSS字样。

下文内容全部翻译于

Aboelmagd Noureldin, Tashfeen B. Karamat, Jacques Georgy - Fundamentals of Inertial Navigation, Satellite-based Positioning and Their Integration-Springer (2013)

国内翻译版 《惯性导航、卫星定位及其组合的基本原理 》黄卫权,赵琳 译.


典型的INS/GNSS组合如图所示(以GPS为例):
 

滤波器可以采用传统的kalman滤波器、其衍生的LKF、EKF,或者其他滤波算法(粒子滤波)。
滤波器通过比较惯导与GNSS的输出,估计出惯导系统中位置,速度和姿态的误差,该误差对惯性输出进行校正。

1 误差反馈

基于状态误差卡尔曼滤波的INS/GNSS组合导航系统,可采用两种误差反馈机制:开环和闭环。


1.1 开环INS/GNSS架构

开环结构中,位置校正、速度校正和姿态校正均在INS外部完成,其中估计误差在每次迭代时从INS解中减去。在这一过程中,误差与状态校正不会反馈给INS系统。
 

 开环结构的优点:
在kalman滤波出现问题时,还可以通过原始的INS导航系统继续支持导航工作。
但是,由于惯性漂移没有进行补偿,惯导误差随时间不断增大,使得线性假设失效。
因此开环的结构更容易导致kalman滤波器性能下降。

1.2 闭环INS/GNSS架构

在闭环结构中,KF估计的误差通过反馈的形式对INS进行校正。在误差估计反馈后,KF的位置、速度和姿态估计被重置为零。
由下图以看出,kalman滤波估计的加速度计误差与陀螺仪误差在每个周期内都通过反馈以矫正IMU测量,继而作用于系统模型的计算。

2 组合导航的类型

为了最大限度地发挥GNSS和INS的互补特性,提出了各种INS/GNSS集成架构。
可分为:松耦合、紧耦合和深耦合

2.1 松耦合 的INS/GNSS组合导航

在松耦合的结构中,GNSS与INS均独立工作并各自提供导航参数的结果。为了提高导航精度,通常将GNSS的位置与速度输入到滤波器中,同时,INS的位置、速度、姿态也作为滤波器的输入,滤波器通过比较二者的差值,建立误差模型以估计INS的误差。利用这些误差对惯导结果进行修正,得到速度、位置、姿态的组合导航结果。
松耦合的组合结构易于实现,并且比较稳定。当它为开环时,可以提供三个独立的导航结果(原始INS、原始GNSS和组合结果),当它为闭环时可以提供两个独立的导航结果(原始GNSS、组合结果)。
一个主要的缺点,当卫星数量低于最低数量时,GNSS会暂时失效。并且GNSS KF的输出是时间相关的,那么KF对于测量噪声不相关的假设就会受到影响,从而影响系统性能。
 

2.2 紧耦合 的INS/GNSS组合导航

在紧耦合的导航系统中,GNSS的伪距以及伪距速率的测量 将与INS预测的相应值 进行做差,并将差值反馈给kalman滤波器,用来估计惯导系统的误差。惯导系统的输出经过误差的校正之后,得到组合导航的解。紧耦合的系统结构如图所示。

 紧耦合的组合方式消除了松耦合方法中因卡尔曼滤波级联而产生的测量关联问题。除此之外,在卫星信号消失的情况下,紧耦合的组合模式依然能够提供GNSS信号更新。
由于紧耦合方法涉及对原始GNSS数据的处理,因此在结构上相对于松耦合来说更加复杂。
另一个局限在于,紧耦合结构无法得到独立的GNSS导航结果。
在INS/GNSS组合导航使用相同硬件条件下,紧耦合的解在精度与鲁棒性上均优于松耦合的结果。
 

2.3 深度耦合的 INS/GNSS组合导航

 深度耦合结构与紧耦合、松耦合主要存在两个区别:
1.GNSS接收机采用了回环校正的结构
2.INS的信息作为GNSS接收机的一个组成部分

因此,在深耦合的结构中,INS与GNSS将不再是独立的系统。
该方案通常需要接入内部GNSS硬件,实现起来比较复杂。
深组合的优点是:这种方式降低了跟踪频率,提高了抗干扰能力。使得导航系统可以在较低的信噪比下工作,并且在卫星信号拒止的情况下GNSS依然能够得到导航解。

3 INS方程的动态误差模型

在INS/GNSS组合导航中,需要一个最优估计器来进行数据融合与估计。根据不同系统的需求,估计器的选择也有所不同。传统上,常用kalman滤波器进行惯性传感器的融合,因此,在后续主要针对这一组合进行研究。
在导航坐标系的选择上,根据第(五)讲的内容,通常选用local-level坐标系(当地坐标系)来实现导航解算。第(六)讲分析了导航初始化误差、惯性传感器误差、算法误差等对惯性导航系统误差的影响。因此,此处要使用误差模型来分析和估计与INS相关的各种误差源,总结误差模型,以便于对组合导航的不同结构进行分析。

在第6讲曾分析过,L系的状态误差矢量方程中,包含了沿大地曲面的误差(纬度误差、精度误差、海拔误差)、沿地球系的速度误差(东向速度误差Ve、北向速度误差Vn、天向速度误差Vu)、以及三个姿态角的误差(俯仰pitch、横滚roll、航向yaw)、同时还包括加速度计的bias和陀螺仪的drift。
因此,完整的误差状态矢量表述为:
 

 

 在L系下)上式中,各部分的误差线性化模型为:

位置误差:在这里插入图片描述
速度误差:

 姿态误差:

加速度误差:

 

 角速度误差:

4 松耦合的INS/GNSS组合导航模型

4.1 系统模型

连续时间卡尔曼滤波的系统模型:
在这里插入图片描述
其中,G为噪声分布矢量,包含了与状态矢量相关的方差:
在这里插入图片描述
F为状态转换矩阵,包含了INS误差模型的各个部分【也就是之前的线性化模型】,可以总结为以下形式:
在这里插入图片描述
状态矢量为 位置、速度、姿态、加速度计、陀螺仪的误差分量:

 因此,INS/GNSS 松耦合组合导航的系统模型 可以写成:

 将上式进行展开,可以较为清楚地看到系统状态是如何通过动态矩阵进行耦合的:

 同理,离散时间的系统模型为:

 

4.2 测量模型

离散的KF测量模型表示为:

 其中,等式右侧第二项代表零均值的测量噪声,协方差为Rk。
由于KF的状态矢量包含INS中的误差,因此对应的测量矢量由INS预测的速度、位置与GNSS测量的位置、速度之差组成:

 注意:如果感觉GNSS的速度不准确,也可以只把位置当作观测值!

Hk是tk时刻的测量矩阵,描述了在无噪声情况下通过状态变量的线性组合得到测量值Zk:

那么,完整的松耦合测量模型可写为:

 

将其展开得到:

 此外,还有两个重要的协方差矩阵Rk、Pk
Rk包含测量状态对角线上的方差,定义为:

 

 预测状态的协方差Pk同样是一个对角矩阵,由对角线上的方差组成:

 其中,每一个对角元素的方差项也是3x3的对角矩阵,分别与位置,速度,姿态,陀螺仪偏差和加速度计偏差有关。

4.3 INS/GNSS松耦合总框图

5 紧耦合的INS/GNSS组合导航模型

 此处讨论紧耦合的组合导航模型。
与第4部分类似,首先讨论从L系下的INS动态误差和测量模型;
接着给出GNSS误差和测量误差模型;
最后通过kalman滤波实现综合系统模型与测量模型。

5.1 系统模型

INS part
连续时间kalman滤波 INS系统模型(与松耦合相同):
在这里插入图片描述
FI:动态协方差矩阵
G:噪声分布矩阵
wI:白噪声

 GNSS part
kalman滤波GNSS系统模型:
在这里插入图片描述
状态矢量中包含:GNSS接收机时钟误差和漂移,通过随机游走建模:
在这里插入图片描述

动态协方差矩阵为

 噪声分布矢量:
在这里插入图片描述

各分量分别为:时钟偏差的白噪声标准差,时钟漂移的白噪声标准差; 因此,完整的系统模型可以表示为:  

 结合INS与GNSS的系统模型
在这里插入图片描述
将 INS part 与 GNSS part 的方程代入,得到上式的展开式:

 

 离散时间的系统模型:

 

5.2 测量模型

kalman滤波的测量模型在离散时间上的表达式为:

对于紧耦合的系统来说,可用的观测数据为GNSS的伪距以及伪距速率等测量值,因此,测量矢量即为INS估计值与GNSS测量值之差:
在这里插入图片描述
对于M个卫星来说,方程又可写为:

 

 伪距测量值【具体内容在第三章】
在这里插入图片描述
GNSS接收机获得第m个卫星的信号,可以通过以下模型来表示:
在这里插入图片描述

利用卫星导航信息可以计算出卫星的钟差和电离层误差,对流层误差也可以通过建立适当的模型进行计算。因此,在对GNSS误差进行校正之后,可以将校正后的伪距写成:
在这里插入图片描述
等式右侧第三项为各种剩余误差。

第m个卫星到GNSS接收机的实际物理距离为:

 

 则,伪距方程可重写为:

 

 其中:

 校正后的接收机位置定义为:

 其中:

 由于伪距测量方程是非线性的,因此在进行kalman滤波之前需要进行线性化(在xINS附近泰勒展开),对于函数 F(x,y,z)在线性化点(xi,yi.zi)的展开式为:

 将伪距方程在当前最优估计值(xINS, yINS, zINS)处线性化后,得到:

 由INS的输出定义的伪距测量为:

 因此,可以得到二者的差值:

 

 

 

 所以,伪距测量误差可归结为:

 对于M个可被观测的卫星,测量误差方程可表示为:

 

 对于ECEF大地坐标中的位置,需要使用以下关系将其转换成ECEF直角坐标:

 为了在kalman滤波中使用,上述方程组必须通过泰勒级数线性化:

 

 将上式代入到测量误差方程中,

 

得到最终的伪距测量模型:

 

伪距速率测量

 

 卫星和接收器运动产生的多普勒频移是二者相对速度在连线上的投影,与发射频率成正比,与光速成反比

 

 其中:

 根据多普勒测量,伪距速率可以通过下式进行计算:

而实际的伪距速率为:

 建立伪距测量的模型:

令接收机时间漂移: 

 则

得到的测量模型是关于deta(Vx)、deta(Vy)、deta(Vz)的函数,因此需要将上式转化为状态误差的形式。
由INS测量得到的伪距速率为:
在这里插入图片描述
其中,Vx,INS、Vy,INS、Vz,INS是INS在e坐标系下估计的接收机速率。
将(8.66)与(8.67)式做差,得到:

 

 (8.70)中

 将(8.70)写成状态空间的形式:

对于M个可被观测的卫星,伪距速率的测量误差方程可表示为:

 

 速度在L系与e系之间的关系可通过下式表示:

 代入R矩阵,得到:

 因此,伪距速率测量模型最终可写为:

 

5.3 总体测量模型

将5.2提供的伪距误差和伪距速率误差的测量模型结合起来,可以得到整体测量模型为:

 

紧耦合集成实现的框图如图所示:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

INS/GNSS组合导航(三)松耦合、紧耦合、深度耦合 的相关文章

  • c#切割字符串几种方法

    1 xff0c 按单一字符切割 string s 61 34 abcdeabcdeabcde 34 string sArray 61 s Split 34 c 34 oreach string i in sArray Console Wri
  • Linux

    一 常用操作以及概念 快捷键求助关机PATHsudo包管理工具发行版VIM 三个模式GNU开源协议 二 磁盘 磁盘接口磁盘的文件名 三 分区 分区表开机检测程序 四 文件系统 分区与文件系统组成文件读取磁盘碎片blockinode目录日志挂
  • 动态链接库与静态链接库的区别

    静态链接库与动态链接库都是共享代码的方式 xff0c 如果采用静态链接库 xff0c 则无论你愿不愿意 xff0c lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了 但是若使用 DLL xff0c 该 DLL 不必被包含在最终
  • ssm——小学期实训总结

    实训总结 经过这两个星期短暂的学习 xff0c 我学习了ssm的框架搭建与web前端设计基础 在第一个星期 xff0c 老师着重为我们讲了框架的原理 搭建与运用 xff1b 而在第二个星期 xff0c 重点则转移到了小组对项目的开发与研究上
  • ROS TF原理和使用方法

    ROS TF介绍 一 TF是什么 xff1f 1 TF是ROS的一个包 xff08 package xff09 2 TF能让用户随时记录各种坐标系之间的变换关系 3 TF能让用户在一个坐标系中进行坐标运算 xff0c 并将转换关系后的位置关
  • 分布式系统核心—日志

    分布式系统的核心组件 日志 有时也叫write ahead logs commit logs 或者事物 logs 通常指在应用所有的修改之前先写入日志 xff0c 一般会将重放日志 撤销日志都写进去 NoSQL数据库 KV存储 Hadoop
  • Linux 下常见的进程调度算法

    进程调度 xff1a 在操作系统中调度是指一种资源分配 调度算法是指 根据系统的资源分配策略所规定的资源分配算法 操作系统管理了系统的有限资源 xff0c 当有多个进程 或多个进程发出的请求 要使用这些资源时 xff0c 因为资源的有限性
  • Ubuntu18.04更换内核方法(原内核版本 4.15.0-38-generic)

    以下过程全部在root权限下操作 xff08 sudo su xff09 1 安装必备软件编译工具 xff1a apt get install libncurses5 dev build essential kernel package 注
  • Mac下使用Java反编译工具JD-GUI

    下载 下载JD GUI 我们选择 Mac 版的 jd gui osx 1 6 6 tar 下载解压打开即可使用 xff0c 不出意外的话出意外了 竟然提示我没有找到Java 版本 xff0c 我直接zsh 命令行下执行查看 java ver
  • Android 中使用Lambda表达式

    Android Studio默认使用Lambda表达式是会报错的 xff0c 即使你使用的是java 8 xff0c 为了在android studio中使用lambda表达式 xff0c 我们必须借助一个插件retrolambda xff
  • 树莓派安装ros系统

    导语 最近给树莓派安装了ros系统 xff0c 这里记录一下 步骤 xff1a 1 下载ros系统的软件 这里推荐从ubiquityrobotics下载ubiquityrobotics 的系统 这个相当于是给你下载了ubuntu16 04和
  • 嵌入式软件工程师相关的应聘要求

    本文收集从网上找到的嵌入式软件工程师岗位相关的职位要求 xff0c 与自身能力进行对比 xff0c 找出不足 xff0c 查漏补缺 xff0c 为18年的跳槽做好准备 1 嵌入式软件工程师杭州 浙江大华技术股份有限公司 职位描述 xff1a
  • docker无法访问localhost的一种解决方法

    如果你使用的不是toolbox xff0c 可以关掉这个页面了 如果你使用的是toolbox xff0c 请使用192 168 99 100加你的的接口 因为toolbox使用了virtualbox虚拟机 xff0c 相当于包了一层 xff
  • VCC、VDD、VEE、VSS等有关电源标注的区别

    Almost all integrated circuits ICs have at least two pins which connect to the power rails of the circuit they are insta
  • Linux内核学习(三)应用层和内核

    目录 写在前面整体环境学习笔记操作系统和内核简介 96 printf 96 和 96 prinfk 96 应用层对内核的调用从例子看原理 应用层的 96 write 96 如何调用内核中的 96 write 96 调用过程实践实现原理学习笔
  • ROS2安装serial库

    场景及问题描述 xff1a 今天在使用ros2读取IMU数据的时候 xff0c 他需要用到一个serial的包 xff0c 由于我使用的是Ubuntu20 04 43 ROS2humble xff0c 并且没有安装这个包 xff0c 所以出
  • 滚动校验(Rolling Checksum)算法

    滚动校验 Rolling Checksum 算法 Rsync中使用了一种滚动检验 Rolling Checksum 算法 xff0c 用于快速计算数据块的检验值 它是一种弱校验算法 xff0c 采用的是Mark Adler的adler 32
  • ROS2手写接收IMU数据(Imu)代码并发布

    目录 前言接收IMU数据IMU的串口连接问题 python接收串口数据 python解析数据ROS2发布IMU数据可视化IMU数据效果 前言 在前面测试完了单独用激光雷达建图之后 xff0c 一直想把IMU的数据融合进去 xff0c 由于经
  • ROS2+cartographer+激光雷达+IMU里程计数据融合(robot_locazation) 建图

    目录 写在前面总体流程分块解释IMU数据接收和发布车轮编码器数据接收和发布数据融合 robot localization概括使用 cartographer订阅 效果 写在前面 之前写了一篇ROS2 43 cartorgrapher 43 激
  • Ardupilot SITL(Software in the Loop)软件仿真

    参考 xff1a http ardupilot org dev docs sitl native on windows html sitl native on windows 第一步 xff1a 下载MAVProxy 第二步 xff1a 下

随机推荐