Extended Kalman Filter vs. Error State Kalman Filter for Aircraft Attitude Estimation 翻译

Extended Kalman Filter vs. Error State Kalman Filter for Aircraft Attitude Estimation

先大致介绍一下看这篇论文的动机,最近在面试时候提到自己用到了误差卡尔曼基本都会被问到误差卡尔曼和扩展卡尔曼的区别,但答的都不是非常理想,其中一个面试官推荐了这篇论文。

摘要

卡尔曼滤波器 (KF) 是当状态和测量动态本质上是线性时最小化均方误差的最佳估计器,前提是过程和测量噪声过程被建模为高斯白噪声。然而,在现实世界中,人们会遇到大量的场景,其中过程或测量模型(或两者)都是非线性的。在这种情况下,使用了一类称为扩展卡尔曼滤波器 (EKF) 的次优卡尔曼滤波器的实现。 EKF 的工作原理是将当前参考轨迹周围的非线性模型线性化,然后为线性化的模型设计卡尔曼滤波器增益。最近,针对某一类问题出现了一种替代方法,其中使用卡尔曼滤波器估计状态的误差,而不是状态本身。这种误差状态 KF (ErKF) 方法通过非线性模型的扰动推导误差状态动力学,有助于误差状态的最优更新以及误差状态协方差的最优预测和更新。这是因为误差状态动力学是线性的,从而满足最优卡尔曼滤波的条件。本文通过模拟提供了 EKF 和 ErKF 之间的比较,并表明 ErKF 性能对执行的各种机动的飞机具有鲁棒性。此外,本文表明,与 EKF 不同,ErKF 不需要针对噪声协方差反复调整以获得可接受的估计性能。

引言

所有状态变量均可以直接测量在实践中是罕见的。在物理系统中,状态向量的某些分量是无法访问的内部变量,它们要么无法测量,要么测量需要使用非常昂贵的测量设备。因此,测量所有状态变量要么不可行,要么非常昂贵。因此,在大多数实际场景中,确实需要通过已知测量来构建对未知状态变量的估计。

对于具有确定性扰动的线性动力系统,Luenberger 观测器为状态估计问题提供了一个完整而全面的答案[1]。 在系统的过程和测量是线性的,并且被过程白噪声和测量白噪声扰动的系统,一些其历史可以追溯到1940年的早期的观测器设计方法,包括 Wiener-Hopf 滤波器,它是一个线性系统[2,3]和 Kalman-Bucy 滤波器[4-6],这是一种基于模型的滤波方法。维纳滤波器对观测器理论的主要贡献在于使用谱分解技术推导了随机平稳标量过程的稳态最优滤波器和预测器。另一方面,在卡尔曼滤波理论的发展过程中,输入输出信号维纳模型被状态空间模型所取代,得到了平稳和非平稳情况下最优状态估计量的递推解。此外,卡尔曼滤波器在最小化系统状态误差协方差的迹的意义上提供了递归的解决方案。换句话说,卡尔曼滤波器也可以称为最小协方差估计器。 维纳和卡尔曼滤波器是最小二乘意义上的最优滤波器,并且在稳态下彼此等效[7]。在上述滤波器设计中,假设维纳滤波器的情况下信号和噪声处理的频谱特性以及过程和测量的协方差矩阵是完全已知的。离散时间中典型的时不变线性系统表示为
ξ k + 1 = A ξ k + B u k + G w k , ξ ( 0 ) = ξ 0 z k = C ξ k + v k (1) \xi_{k+1} = A \xi_k + Bu_k + Gw_k, \xi(0) = \xi_0 \\ z_k = C\xi_k + v_k \tag{1} ξk+1=Aξk+Buk+Gwk,ξ(0)=ξ0zk=Cξk+vk(1)
其中 ξ k \xi_k ξk表示系统状态向量, u k u_k uk表示系统输入向量, w k w_k wk表示过程噪声向量, z k z_k zk表示系统输出向量, v k v_k vk表示测量噪声向量, A A A表示系统状态矩阵, B B B表示系统输入矩阵, G G G表示过程扰动矩阵, C C C表示输出/测量矩阵, ξ 0 \xi_0 ξ0表示系统状态的初始值。使用卡尔曼滤波器 (KF) 的主要优点之一是它能够递推地预测和更新状态,使其成为在线应用的理想选择。应该注意的是,不需要测量系统的所有状态来估计它们。 KF 的原理是使用可用的测量来估计那些不一定需要测量的状态。然而,在过程动力学或测量或两者中具有固有非线性特性的系统下,线性KF的直接实现不能保证在最小化估计误差的均方根的意义上产生最优的结果。因此,对能够有效重构非线性系统未知状态的需求促进了非线性滤波理论的研究。

非线性滤波器的设计是一个非常具有挑战性的问题,并且在过去几十年的文献中受到了相当多的关注[8,9]。 离散时间中典型的时不变非线性系统可以表示为
ξ k + 1 = f ( ξ k , v k , w k ) , ξ ( 0 ) = ξ 0 z k = h ( ξ k ) + v k (2) \xi_{k+1} = f(\xi_k,v_k,w_k), \xi(0) = \xi_0 \\ z_k = h(\xi_k) + v_k \tag{2} ξk+1=f(ξk,vk,wk),ξ(0)=ξ0zk=h(ξk)+vk(2)
其中,和以前一样, ξ k \xi_k ξk表示方程2中非线性系统的系统状态向量。 u k u_k uk表示系统输入向量, w k w_k wk表示过程扰动向量, z k z_k zk表示系统输出向量, v k v_k vk表示测量扰动向量, f ( ⋅ , ⋅ , ⋅ ) f(·,·,·) f(,,)表示非线性的过程函数,它将系统状态、输入和扰动映射到状态的微分(动力学), h ( ⋅ ) h(·) h()表示系统状态的非线性测量函数, ξ 0 \xi_0 ξ0表示系统状态的初始值。过程和测量噪声过程具有零均值和规定的协方差,在文献中通常分别表示为 Q k Q_k Qk R k R_k Rk。在开发非线性滤波器的众多尝试中,扩展卡尔曼滤波器 (EKF) 是最流行的方法。 EKF 的设计通常基于系统在每个时间步长沿着参考轨迹的一阶局部线性化[6,10-12]。因此,非线性系统动力学相对于系统状态的偏导数被计算并在状态状态下对于每一个时间步长进行评估。 EKF 是一个估计器,它处理动态过程和测量中的非线性,此外,类似于 KF,它处理过程和测量动态被高斯白噪声扰动的系统。 EKF[11,13-15]被概念化为对困难理论问题的工程近似。问题是关于在存在干扰的情况下从可用测量估计非线性系统的状态的问题。自被提出以来,EKF 已成功应用于非线性随机系统的状态估计[16-18]。对于在过程或测量中完全无噪声的系统,即完美模型和无噪声传感器, EKF 可以被设计为作为确定性非线性系统的状态估计器。[19]中的结果受到某些条件的测量的一些大偏差结果的强烈影响,如[20]中所报告的。[19]中的目标是描述为无噪声非线性动力系统构建观测器的设计过程,该观测器形成有噪声非线性动力系统的极限解。一个限制参数与过程以及测量噪声向量相关联,并且当这个限制参数接近 0 时,有噪声系统的观测器的行为接近于无噪声确定性系统的观测器的行为。十多年来,EKF 的稳定性和收敛特性一直是研究的主题。在[21]表明 EKF 保证是一个非发散的估计器。当估计状态替换为稳定状态反馈中的实际状态时,非发散估计器可用于创建基于模型的非线性控制系统而不会失去稳定性。 保证 EKF 不发散的条件大致是非线性有界斜率,输入是加性输入,系统是 M-可检测的。在[19]中报告的研究中,通过有效构建确定性观测器来达到随机滤波器的渐近极限。文献研究表明,虽然EKF对一般类型的系统表现出指数收敛行为,但这些结果在本质上仍然是局部的[22-24,26,27]。在[22]中展示了合适的 Q k Q_k Qk R k R_k Rk的选择与EKF的有效性之间的连接。在[23]中开发了一种线性化技术,该技术包括引入未知对角矩阵以将近似误差考虑在内。显示稳定性结果的问题被重新转换为线性矩阵不等式问题,这反过来建立了 EKF的良好收敛行为与协方差矩阵 Q k Q_k Qk R k R_k Rk之间的联系。在[26]中,EKF被设计为具有先验规定的稳定度。EKF误差动力学的平衡点被证明是一个指数稳定的平衡点。在[26]建立结果的一个关键假设是高阶泰勒级数项的范数是成比例的误差项的平方的上限。这个假设有助于说明EKF是一个指数观测器。此外,在[22]和[26]中,已经详细研究了 EKF的吸引域。一种建议是将 Q k Q_k Qk矩阵设置得足够大,以便EKF在状态估计误差的初始化中可以容忍任意大的误差。在[24]中作者建立了连续-连续(过程和测量是连续的)和连续-离散(过程是连续的,而测量是离散的)EKF的稳定性结果,这些EKF是从[28]的观测器中导出的。[24]的作者表明,只要噪声协方差矩阵 ( Q k Q_k Qk R k R_k Rk) 被适当地参数化,EKF就会采用随增益增加而渐近地接近固定增益观测器的时变高增益观测器的形式。此外,在[24]中表明,在测量的 Lie导数形成系统非线性的微分同胚和全局利普西兹性质的条件下,EKF是一类可转换为下三角形式的非线性系统的全局指数观测器。在[29]中,提出了一种用于聚合反应器标准非线性模型的基于观测器的控制结构,使用经典的输入/输出线性化技术进行控制器设计并保证全局渐近闭环稳定性。通过指数收敛观测器估计未知状态,类似于EKF的方程,用于形成控制律。在[30]中表明,对估计误差的非线性和指数稳定性的限制性假设,并不能保证闭环系统的行为,即使系统在状态反馈下是指数稳定的。因此,已经进行了大量的研究工作来分析闭环系统的行为,并且使用诸如EKF之类的估计器作为观测器。为此[18]放宽了全局李普西兹条件,并考虑了一类可转换为具有线性内部动力学的特殊正规形式的系统。带有 EKF 的闭环系统然后通过黎卡迪方程的参数化以标准奇异点扰动形式表示。此外,通过放宽全局李普西兹条件,峰值现象[33]的结果可能会导致困难,这可能导致闭环系统的不稳定。当使用高增益反馈产生具有非常负实部的特征值时,会发生峰化现象,其中一些状态在快速衰减到零之前达到峰值。这种现象通常通过将控制全局限制在感兴趣的紧凑区域之外来克服。 EKF 的许多成功应用在[32,34]和其他领域中有所描述,例如膜生物反应器系统的监测[35-37]、自适应状态估计、非线性估计[38]、参数估计、目标跟踪、神经网络训练、编队飞行[39,40]、弹道弹丸状态估计[41-43]、未知地形环境中的导航[44,45]等。

工程师可以使用数值近似来解决精确问题,或者他们可以精确地解决近似问题” - Fred Daum[9]。将实际问题中出现的非线性动力学和/或非线性测量方程线性化并基于线性化方程计算卡尔曼增益的过程是EKF的原理。相比之下,[46,47]中描述的误差状态卡尔曼滤波器通过将问题从状态域重新转换为误差状态域来解决具有精确解的近似问题。

误差状态卡尔曼滤波器 (ErKF) 是在[46]中针对移动机器人定位问题引入的。在这个问题中,以及在一般的自主导航问题中,位置和姿态的准确估计对于制导和控制算法有效执行至关重要。陀螺仪、加速度计和磁力计等内部传感器(安装在本机上)分别用于提供瞬时角速度、加速度和航向的测量[47,48]。外部传感器,例如全球定位系统 (GPS) 提供位置、速度和车辆的航迹角。很多时候,各种传感器的测量结果会融合在一起,以提高估计的质量[47,48]。然而,最基本的导航形式依赖于内部安装的传感器或所谓的“捷联”惯性传感器[48]。惯性导航系统 (INS) 被广泛使用用于飞行器导航和户外机器人中[46,49]。构成 INS 的传感器套件称为惯性测量单元 (IMU),它通常由测量角速度的陀螺仪和测量机身轴上比力的加速度计组成。INS 通过航位推算来计算方向、位置和速度的估计值。它通过分别使用已知的初始方向和速度对角速度和加速度的刚体运动学方程进行积分以获得方向(姿态)估计和速度估计,并在已知初始位置的情况下通过对速度方程进行积分以获得位置估计来实现这一点。

众所周知,惯性传感器存在零偏以及需要建模的随机误差[47]。经典 INS 集成了 IMU 中传感器提供的测量值,以获得姿态以及位置和速度估计。因此,如果不定期重置或不使用外部测量的帮助,姿态、位置和速度计算中的误差会随着时间无限增长。基于卡尔曼滤波器的算法已用于估计绝对状态,例如姿态、位置和速度,以及偏差和其他误差参数。对于姿态估计问题,使用了两类(过程)建模方式:动态或车辆特定建模和捷联建模。以欧拉角表示的姿态运动学由 [48,50,51]给出
[ ψ ˙ θ ˙ ϕ ˙ ] = 1 c o s θ [ 0 s i n ϕ c o s ϕ 0 c o s ϕ c o s θ − s i n ϕ c o s θ c o s θ s i n ϕ s i n θ c o s ϕ s i n θ ] [ p q r ] (3) \begin{bmatrix} \dot{\psi} \\ \dot{\theta} \\ \dot{\phi} \end{bmatrix} = \frac{1}{cos\theta} \begin{bmatrix} 0 & sin\phi & cos\phi \\ 0 & cos\phi cos \theta & -sin \phi cos \theta \\ cos \theta & sin \phi sin\theta & cos \phi sin \theta \end{bmatrix} \begin{bmatrix} p \\ q \\ r \end{bmatrix} \tag{3} ψ˙θ˙ϕ˙=cosθ100cosθsinϕcosϕcosθsinϕsinθcosϕsinϕcosθcosϕsinθpqr(3)

其中 ψ \psi ψ θ \theta θ ϕ \phi ϕ是偏航角、俯仰角和滚转角, p p p q q q r r r是角速度或速率陀螺仪测量的速率。如果初始姿态已知,姿态可以通过方程(3)的积分获得。在[52]中,采用所谓的动态建模方法,其中角速率包含在要估计的状态向量中,而由陀螺仪测量的速率用作 KF 的测量值。在捷联模型中,如[46-48,50,51]所采用的那样,状态向量中包含姿态中的误差而不是姿态本身,而辅助传感器测量的姿态用作测量值。然而,所谓的动态建模方法(在[46]中也被称为直接过滤方法)有以下缺点[46,51]:(a) 动态模型依赖于车辆,因此每次进行修改,或部分被重新定位,或其质量发生变化等,动态建模必须改变,(b) 动态建模需要更多的状态和车辆运动参数的知识,以及 © 对相互作用的精确建模需要平台和环境。在[46,51]中,一种误差状态滤波器被推导出,其中姿态误差包含在状态向量中,而误差传播方程是从包含陀螺仪测量的方程(3)中给出的捷联方程推导出来的。在误差状态公式中,欧拉角是通过对方程(3)中给出的设备进行积分获得的,而估计的误差在每个时间步都被反馈到欧拉角中。陀螺仪测量中的零偏也可以包含在状态向量中,并且可以在每个时间步反馈给设备。 KF中用于误差状态公式的测量值是通过其他辅助传感器(例如加速度计和磁力计)获得的姿态测量值。 ErKF 的一些成功应用在[47,50,71]中进行了描述。在[71]中报道的研究中,使用视觉传感器开发了同步定位和建图 (SLAM) 算法,用于在未知的城市环境中进行导航,其中全球定位系统 (GPS) 中断是一种常见现象,或者GPS信号不可用。

EKF 的固有限制之一是重新调整噪声协方差矩阵 Q k Q_k Qk R k R_k Rk和初始状态误差协方差矩阵,以适应车辆运行的特定情况[53-55]。众所周知,这些协方差矩阵的不确定性对 EKF 的性能有影响。由于调整不当,这些协方差矩阵中的任何不确定性都会对滤波器产生不利影响,有时甚至可能导致其发散。在传统设置中,噪声协方差矩阵的确定需要对过程和测量模型有很好的了解。在本文中,我们建议在不重新调整噪声和状态误差协方差矩阵的情况下,比较 EKF 和 ErKF 在一组飞机机动中的性能。因此,一旦这些协方差矩阵已经根据过程和传感器规格进行了调整,当遇到不同的飞行条件(例如存在或不存在湍流)或执行不同的飞机机动时,协方差矩阵不一定是最佳的,就不应该重新调整它们。据我们所知,将 ErKF 与传统 EKF 进行这种滤波器性能比较还没有被尝试过。此外,本文试图通过问题表述和滤波器设计指出 EKF 和 ErKF 之间的一些差异。论文的其余部分结构如下:第 II 部分提供了所考虑问题的数学公式以及设计 EKF 和 ErKF 的框架。在第三节中,一个典型的姿态航向参考系统问题被公式化用于飞机姿态估计,其测量来自传感器,如陀螺仪和加速度计。第四节针对第三节中针对一系列不同飞机机动开发的问题提供了一些模拟。此外,我们在第四节中提出了一个重要的评论(Remark IV.1),它构成了本文的基础。对于所有这些机动,EKF 和 ErKF 的性能被进行了比较和对比。最后,第五节包含一些总结性评论和一些未来计划。在整篇论文中,粗体表示向量,大写字母表示矩阵,小写字母表示标量。

通用问题公式

考虑具有连续过程动力学和离散测量的非线性、有界、可观测系统为
x ˙ ( t ) = f ( x ( t ) , u ( t ) ) + Γ w ( t ) , x ( 0 ) = x 0 z k = h ( x k ) + v k (4) \dot{x}(t) = f(x(t),u(t)) + \Gamma w(t), x(0) = x_0 \\ z_k = h(x_k) + v_k \tag{4} x˙(t)=f(x(t),u(t))+Γw(t),x(0)=x0zk=h(xk)+vk(4)
其中, x ∈ D x ⊂ R n x \in \mathcal{D}_x \subset \mathcal{R}^n xDxRn表示系统的 n n n−维状态向量, u ∈ D u ⊂ R m u \in \mathcal{D}_u \subset \mathcal{R}^m uDuRm表示 m m m−维已知输入向量, w ∈ D w ⊂ R n w w \in \mathcal{D}_w \subset \mathcal{R}^{n_w} wDwRnw表示 n w n_w nw−维随机过程噪声, z k ∈ D z ⊂ R p z_k \in \mathcal{D}_z \subset \mathcal{R}^p zkDzRp表示 p p p-维系统测量, v k ∈ D v ⊂ R p v_k \in \mathcal{D}_v \subset \mathcal{R}^p vkDvRp表示 p p p-维随机测量噪声, f ( ⋅ , ⋅

<think>好的,用户遇到了Git合并时本地更改会被覆盖的问题,需要解决方案。根据之前的引用资料,解决方法主要有commit、stash和revert三种。首先,我得确认用户的具体情况,比如他们的本地更改是否已经完成,是否需要保留,或者是否可以丢弃。用户可能不太清楚这三种方法的适用场景,需要详细解释每个选项的步骤和优缺点。比如,commit适用于需要保留更改的情况,stash适合临时保存以便后续恢复,而revert则是直接撤销更改,适用于不需要保留的情况。需要结构清晰,分点说明,每个方法都给出操作步骤和适用场景,帮助用户理解哪种情况最适合他们。还要注意使用中文,避免技术术语过于复杂,让用户容易理解。同时,生成相关问题,可能涉及如何恢复stash的内容,或者如何避免频繁冲突等,扩展用户的知识点。另外,要确保LaTeX格式正确,但在这个问题中可能用不上数学公式,所以主要关注代码块和引用标识。检查引用是否正确,比如引用[^1]和[^2]的来源是否相关,用户提供的引用内容是否准确对应解决方案。 最后,确保回答真实可靠,操作步骤准确无误,避免误导用户。可能还需要提醒用户根据具体情况选择方法,比如如果有未完成的实验性代码,stash可能是更好的选择,而如果是确定要保留的修改,则应该commit。</think>要解决Git合并时本地更改被覆盖的问题,可根据不同场景选择以下三种方法: ### 一、提交本地更改(commit) **适用场景**:当本地更改已测试通过且需要保留到版本历史中。 **操作步骤**: 1. 将改动添加到暂存区: ```bash git add . # 添加所有文件 # 或指定文件 git add file1.txt file2.py ``` 2. 提交更改并添加描述: ```bash git commit -m "完成用户登录模块优化" ``` 3. 执行合并操作: ```bash git merge origin/main ``` **优点**:保留完整的开发记录,便于后续追溯[^1]。 ### 二、暂存更改(stash) **适用场景**:需要临时保存未完成的修改(如调试代码),优先处理合并操作。 **操作步骤**: 1. 保存当前工作状态: ```bash git stash # 可选添加备注 git stash save "用户登录模块调试代码" ``` 2. 查看暂存记录列表: ```bash git stash list ``` 3. 合并远程分支: ```bash git merge origin/main ``` 4. 恢复暂存内容: ```bash git stash pop # 恢复并删除最近一次暂存 # 或指定特定暂存 git stash apply stash@{1} ``` **优点**:保持工作目录整洁,特别适合处理紧急合并任务[^2]。 ### 三、撤销本地更改(revert) **适用场景**:本地修改可丢弃(如实验性代码或错误修改)。 **操作步骤**: 1. 撤销所有未提交的修改: ```bash git checkout -- . # 全部文件 # 或指定文件 git checkout -- file1.txt ``` 2. 执行合并操作: ```bash git merge origin/main ``` **风险提示**:此操作不可逆,需确认文件无需保留。 --- ### 对比决策表 | 方法 | 保留记录 | 可恢复性 | 适用阶段 | |---------|----------|----------|------------------| | commit | ✅ | ✅ | 功能开发完成时 | | stash | ❌ | ✅ | 开发中途临时切换 | | revert | ❌ | ❌ | 放弃无效修改 | ### 扩展应用场景 - 当存在多个暂存时,可用`git stash list`查看记录,通过`git stash apply stash@{n}`精准恢复 - 合并后出现冲突时,可使用`git mergetool`可视化工具解决冲突 - 长期分支开发推荐使用`git rebase`保持提交历史线性
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值