组合导航原理剖析(三):姿态估计与左乘/右乘扰动误差传播方程

对载体准确的姿态估计是实现高精度导航的前提条件。在消费级产品的导航方案中,无人机需要准确确定当前点头角与侧滚角,进而控制系统实现姿态自稳,是无人机安全行驶至关重要的条件;在高精度导航方案中,惯导系统需在静止状态下需经几分钟至几十分钟的初始对准,该过程就是计算IMU当前的姿态角(也叫作失准角),在长时间对准过程中,Kalman滤波器逐渐达到收敛状态。

在GNSS不参与的姿态估计时,更多依赖于IMU的自修正,主要有三种模式:

① 加速度计的重力加速度分量,用于修正IMU的点头和侧滚方向角度;

② 磁力计感受到的地球磁场方向,用于修正摇头角;

③ 高精度陀螺仪能够测量地球自转的前提下,可以用于摇头角度的初始对准;

其中①和②常见于低精度的导航方案,③见于高精度惯性导航方案,要求陀螺仪的精度高于地球自转角速度(地球自转:15°/h),②不适用于高精度导航方案,因为磁场较为容易受到外界环境的干扰,观测得到的摇头角的精度往往低于陀螺仪的理论精度。不失一般性,下面的内容仅讨论①。

1. 姿态确定方法

姿态估计常采用”error-state EKF“框架,相比于传统的EKF而言,用error state 可降低非线性系统在线性化过程中的误差,是惯性导航中最为常见的方案,其核心思想是用姿态误差的协方差矩阵来描述系统的不确定度。(参考文献:Quaternion kinematics for the error-state KF)(描述不一定准确)在详细设计导航方案时,总结有下面5个步骤:

① 确定待估计的状态量和误差状态量,确定状态更新方程;

② 根据状态更新方程,推导出误差传播方程,并得到kalman滤波的转移矩阵(离散更新方程对误差状态的雅克比矩阵)和协方差更新方程,是其中的核心;

③ 确定多传感器融合的观测模型,并对观测模型推导出残差相对于误差状态的雅克比矩阵;

④ 根据各传感器的误差大小,确定协方差矩阵Q(预测更新矩阵)和R(观测矩阵)

⑤ 确定kalman滤波的更新方程;

状态量就是IMU本体坐标系到导航坐标系下的旋转矩阵(姿态角)和陀螺仪的bias,表示为

ξ = [ R b w      b g ] T {\bf{\xi }} = {\left[ {{\bf{R}}_b^w\;\;{{\bf{b}}_g}} \right]^T} ξ=[Rbwbg]T

标称状态的更新方程表示为

R ˙ b w = R b w ( ω m − b g ) b g = 0 \begin{array}{l}{\bf{\dot R}}_b^w = {\bf{R}}_b^w\left( {{\omega _m} - {{\bf{b}}_g}} \right)\\{{\bf{b}}_g} = 0\end{array} R˙bw=Rbw(ωmbg)bg=0

姿态的误差状态通常用旋转矢量表示,有

δ ξ = [ δ θ        δ b g ] T \delta {\bf{\xi }} = {\left[ {\delta {\bf{\theta }}\;\;\;\delta {{\bf{b}}_g}} \right]^T} δξ=[δθδbg]T

下面对上式进行误差扰动分析,求解误差状态的传播方程。一般有两种模式:左乘扰动和右乘扰动,本文将分别推导两种形式并实现,对比两种模式在精度表现上的差异,最后解释为何会产生这样的差异。

2. 右乘扰动

首先是右乘扰动,定义旋转误差为:(其中 R b t w {\bf{R}}_{bt}^w Rbtw为真实旋转矩阵)

R b t w = R b w E x p ( δ θ ) {\bf{R}}_{bt}^w = {\bf{R}}_b^wExp(\delta {\bf{\theta }}) Rbtw=RbwExp(δθ)

推导得到error-state kinematic为:

δ θ ˙ = − [ ω m − b g ] × δ θ − δ b g − n w δ b g ˙ = n g \begin{align} \dot{\delta \bm \theta} &= -[\bm \omega_m - \bm b_g]_\times \delta \bm \theta - \delta \bm b_g - \bm n_w \\ \dot{\delta \bm b_g} &= \bm n_g \end{align} δθ˙δbg˙=[ωmbg]×δθδbgnw=ng

离散形式为:

δ θ ← Exp [ ( ω m − b g ) Δ t ] T δ θ − δ b g Δ t + θ i δ b g ← δ b g + ω i \begin{align*} \delta\bm \theta &\leftarrow \text{Exp}[(\bm \omega_m - \bm b_g)\Delta t]^T \delta \bm \theta - \delta b_g \Delta t +\bm \theta_i \\ \delta \bm b_g &\leftarrow \delta \bm b_g +\bm\omega_i \end{align*} \\ δθδbgExp[(ωmbg)Δt]TδθδbgΔt+θiδbg+ωi

矩阵形式表示为

[ δ θ δ b g ] = [ Exp [ ( ω m − b g ) Δ t ] T − I Δ t 0 I ] ⏟ F x [ δ θ δ b g ] + [ I 0 0 I ] ⏟ F i [ θ i ω i ] \left[\begin{matrix} \delta \bm \theta \\ \delta \bm b_g \end{matrix}\right] = \underbrace{\left[\begin{matrix} \text{Exp}[(\bm \omega_m - \bm b_g)\Delta t]^T & - \bm I \Delta t \\ \bm 0 & \bm I \end{matrix} \right]}_{\bm F_x} \left[\begin{matrix} \delta \bm \theta \\ \delta \bm b_g \end{matrix}\right] + \underbrace{ \left[ \begin{matrix} \bm I & \bm 0 \\ \bm 0 & \bm I \end{matrix} \right] }_{\bm F_i }\left[\begin{matrix} \bm \theta_i \\ \bm \omega_i \end{matrix}\right] \\ [δθδbg]=Fx [Exp[(ωmbg)Δt]T0IΔtI][δθδbg]+Fi [I00I][θiωi]

当IMU运动较为缓慢或静止时,加速度计的信号为重力加速度分量在IMU本体坐标系下的投影,可用于姿态角度的观测,进而降低陀螺仪输出角速度积分时产生的漂移,这种模式被称为“单矢量测量”。可以表示为

a m = R b w T g + n a {a_m} = {\bf{R}}{_b^{wT}}{\bf{g}} + {n_a} am=RbwTg+na

将旋转矩阵用欧拉角表示

a m = [ g sin ⁡ ψ − g cos ⁡ ψ sin ⁡ θ g cos ⁡ θ ] {a_m} = \left[ \begin{array}{l}g\sin \psi \\ - g\cos \psi \sin \theta \\g\cos \theta \end{array} \right] am= gsinψgcosψsinθgcosθ

欧拉角: θ , ψ , ϕ \theta ,\psi ,\phi θ,ψ,ϕ 。根据上式可知,重力加速度只能提供点头和侧滚方向的观测,而没有办法提供摇头角度的观测,这也是“单矢量观测”的不足之处。

计算残差相对于error state的雅克比矩阵,表示为:

H = [ [ I G R T g ] × 0 ] \bm H = \left[ \begin{matrix} [{}^G_I \bm R^T \bm g]_\times & \bm 0 \end{matrix} \right] \\ H=[[IGRTg]×0]

其中, g = [ 0 0 − 1 ] T \bm g = \left[\begin{matrix} 0 &0 & -1 \end{matrix} \right]^T g=[001]T 为重力在导航坐标系下的方向。

kalman滤波的更新方程表示为:

P − = F x P F x T + Q K = P H T ( H P H T + R ) − 1 δ ξ = K ( a m − R b w T g ) P = P − − K ( H P H T + R ) K T \begin{array}{l}{P^ - } = {F_x}PF_x^T + Q\\K = P{H^T}{(HP{H^T} + R)^{ - 1}}\\\delta \xi = K({a_m} - {\bf{R}}_b^{wT}{\bf{g}})\\P = {P^ - } - K(HP{H^T} + R){K^T}\end{array} P=FxPFxT+QK=PHT(HPHT+R)1δξ=K(amRbwTg)P=PK(HPHT+R)KT

最后,更新状态量表示为

R b w ← R b w E x p ( ω m − b g ) E x p ( δ θ ) b g ← b g + δ b g \begin{array}{l}{\bf{R}}_b^w \leftarrow {\bf{R}}_b^w{\rm{Exp}}({\omega _m} - {b_g})Exp(\delta {\bf{\theta }})\\{{\bf{b}}_g} \leftarrow {{\bf{b}}_g} + \delta {{\bf{b}}_g}\end{array} RbwRbwExp(ωmbg)Exp(δθ)bgbg+δbg

补充以上的推导过程,首先是error-state kinematic:

在这里插入图片描述
在这里插入图片描述

3. 左乘扰动

左乘扰动中定义旋转误差为:(其中 R b t w {\bf{R}}_{bt}^w Rbtw为真实旋转矩阵)

R b t w = E x p ( δ θ ) R b w {\bf{R}}_{bt}^w = Exp(\delta {\bf{\theta }}){\bf{R}}_b^w Rbtw=Exp(δθ)Rbw

推导得到error-state kinematic为:

δ θ ˙ = R b w δ b g − R b w n w δ b ˙ g = n g \begin{array}{l}\delta {\bf{\dot \theta }} = {\bf{R}}_b^w\delta {{\bf{b}}_g} - {\bf{R}}_b^w{n_w}\\\delta {{{\bf{\dot b}}}_g} = {n_g}\end{array} δθ˙=RbwδbgRbwnwδb˙g=ng

矩阵形式表示离散更新方程表示为:

[ δ θ δ b g ] = [ I R b w Δ t 0 I ] ⏟ F x [ δ θ δ b g ] + [ I 0 0 I ] ⏟ F i [ θ i ω i ] \left[\begin{matrix} \delta \bm \theta \\ \delta \bm b_g \end{matrix}\right] = \underbrace{\left[\begin{matrix} \bm I & \bm R_b^w \Delta t \\ \bm 0 & \bm I \end{matrix} \right]}_{\bm F_x} \left[\begin{matrix} \delta \bm \theta \\ \delta \bm b_g \end{matrix}\right] + \underbrace{ \left[ \begin{matrix} \bm I & \bm 0 \\ \bm 0 & \bm I \end{matrix} \right] }_{\bm F_i }\left[\begin{matrix} \bm \theta_i \\ \bm \omega_i \end{matrix}\right] \\ [δθδbg]=Fx [I0RbwΔtI][δθδbg]+Fi [I00I][θiωi]

观测矩阵为:

H = [ I G R T g × 0 ] \bm H = \left[ \begin{matrix} {}^G_I \bm R^T \bm g_\times & \bm 0 \end{matrix} \right] H=[IGRTg×0]

补充以上的推导过程,首先是error-state kinematic:
在这里插入图片描述

其次是观测矩阵的推导。

在这里插入图片描述

4. 调参Q,R矩阵

Q为陀螺仪相关的协方差矩阵,R为加速度计相关的协方差矩阵,记前后两数据帧的时间间隔为 Δ t \Delta t Δt,统计MEMS传感器在静止状态下一段时间内IMU的方差作为离散噪声的方差,记为 σ g 2 \sigma _g^2 σg2和,那么根据预测更新方程和观测方程,协方差矩阵表示为:

Q = d i a g ( σ g 2 Δ t 2    ,    1 0 − 12 ) R = b l k d i a g ( σ a 2 ) \begin{array}{l}Q = diag(\sigma _g^2\Delta {t^2}\;,\;{10^{ - 12}})\\R = blkdiag(\sigma _a^2)\end{array} Q=diag(σg2Δt2,1012)R=blkdiag(σa2)

5. 试验结果对比

试验采用经典的高精度MEMS传感器STIM300型号IMU,陀螺仪的零偏稳定性指标为1°/h,加速度计的零偏为1mg,通过RS422传输数据至ARM计算平台,输出帧率为1000Hz,加速度计数据作101个点矩形窗的平滑,每20ms作一次滤波更新。

IMU的初始欧拉角度为0,0,0,IMU中途经过多次摆动和振动操作,历经2个小时之后,对比如下图所示,由于直接积分用旋转矢量泰勒展开近似的模式进行计算,发现仍存在较为明显的误差,实际情况下,STIM300的漂移程度应远低于图中所呈现的那样。ESKF(采用左乘扰动的模式)在点头、侧滚角上表现较好,摇头角表现较差。摇头角的漂移程度大于直接积分的方式,这是因为单矢量观测过程中可能对摇头角进行错误的观测修正。

而右乘扰动的模式中,摇头角度的漂移更大,甚至到2-3s漂移到1°,在对航向角度缺乏有效观测的条件下,摇头角的漂移程度让人吃惊。

在这里插入图片描述

左乘扰动

左乘扰动

右乘扰动
![在这里插入图片描述](https://img-blog.csdnimg.cn/e77887c6323d465e82398787b28c143e.png

6. 原因分析

对于为什么左乘扰动中摇头角漂移更小,这是因为将误差状态 δ θ \delta \bm \theta δθ由本体坐标系改为定义在惯性坐标系。而**王炜鑫**博士认为将姿态误差定义到惯性坐标系后,线性化的不精确就不会对不可观测的自由度做出错误的修正,详细内容可以参考他的博客。因此在高精度的惯性导航中,常采用左乘扰动的方式进行误差传播方程的推导,在精度要求不太高的场景中,相关论文中也有对右乘扰动模型的使用。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据您的要求,我可以将分类进行改良扩展,使得可以通过 UML 图分析。以下是改良后的分类及其对应的扩展: 显象: - 显在场景:描述当前可见的场景或环境。 - 需求:列出与显在场景相关的需求或期望。 - 时机:指明显在场景出现的时间或条件。 - 技术:列举与显在场景相关的技术或工具。 真象: - 潜在场景:描述潜在的、可能存在的场景或环境。 - 需求:列出与潜在场景相关的需求或期望。 - 时机:指明潜在场景出现的时间或条件。 - 技术:列举与潜在场景相关的技术或工具。 特征: - 结构:描述对象或系统的组成部分及其之间的关系。 - 功能:列举对象或系统所具备的功能或行为。 - 原理:解释对象或系统背后的原理或工作原理。 - 实例:提供具体的对象或系统实例作为示例。 现象: - 评价:对对象或系统进行评价或反馈。 - 解释:解释对象或系统的特性、行为或结果。 - 比较:将对象或系统与其他对象或系统进行比较。 - 改进:提出改进或优化现有对象或系统的建议。 变化: - 复制:指示对象或系统的复制或复制过程。 - 组合:描述对象或系统的组合方式或组件之间的关系。 - 流程:展示对象或系统的流程或工作流程。 - 转化:描述对象或系统的转化过程或转换方式。 通过这种改良扩展,您可以使用 UML 图对各个分类进行分析和建模,以更好地理解和描述相关概念。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

擦擦擦大侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值