mpu6050姿态解算与卡尔曼滤波(2)卡尔曼滤波

卡尔曼滤波,是最优估计理论中十分重要的一个部分。
要全面地理解卡尔曼滤波,你需要一点统计学的知识,以及一点矩阵理论。通常最优估计理论的教材是从最小二乘估计讲起,接着讲到最小方差估计,极大似然估计以及维纳滤波,再到卡尔曼滤波、扩展卡尔曼、无迹卡尔曼-------这是从统计的角度来理解卡尔曼滤波。
事实上,卡尔曼滤波与《自动控制原理》中的状态观测器非常相似。状态观测器利用原系统的输入输出来估计系统状态,对原系统建模(状态方程,输出方程),把观测器的输出与原系统输出的差乘上一个增益反馈给观测器的状态,这样构成一个闭环系统使得观测器状态跟踪原系统状态。卡尔曼滤波中,同样要对系统建模得到状态方程,输出方程则取决于你的测量手段,因此改称量测方程。卡尔曼同样要预测量测值,并把预测值与真实量测值比较,乘上一个增益返回给状态。不同之处在于,状态观测器不考虑噪声,要求系统可检测,并且增益通常是时不变的,而卡尔曼滤波则详细考虑了噪声和初始估计误差,智能的计算每一步的增益,以达到对状态的最优的估计。


实际工程常常面临这样的情况:变量 X X X无法直接测量,能测量的是一些与 X X X相关的量 Z Z Z,通常可以得到确定的函数关系: Z = H ( X ) Z=H(X) Z=H(X),例如要用mpu6050测量转动欧拉角 ( ψ , θ , γ ) T (\psi, \theta,\gamma)^T (ψ,θ,γ)T,无法直接测量,但是加速度计的测量值与欧拉角有关系:
[ a x a y a z ] = [ − g sin ⁡ γ cos ⁡ θ g sin ⁡ θ g cos ⁡ γ cos ⁡ θ ] \begin{bmatrix}a_x\\a_y\\a_z\end{bmatrix}=\begin{bmatrix}-g\sin\gamma \cos\theta\\g\sin\theta\\g\cos\gamma\cos\theta\end{bmatrix} axayaz = gsinγcosθgsinθgcosγcosθ
由测量值Z估计状态X,典型的方法–最小二乘估计,即对X的估计— X ^ \hat X X^应当使得 E { ( Z − H ( X ^ ) ) ( Z − H ( X ^ ) ) T } E\{(Z-H(\hat X))(Z-H(\hat X))^T\} E{(ZH(X^))(ZH(X^))T}最小。典型例子如用直尺测量一支笔的长度,多次测量取平均值就是一个最简单的最小二乘估计。
实际工程中,对状态 X X X可以通过建模,给出 X X X的动力学过程: X ˙ = f ( X , t ) \dot X=f(X,t) X˙=f(X,t),若能确定初始时刻的状态 X 0 X_0 X0,那么显然初始时刻以后的状态都可以确定,对状态 X X X的确定就是一个微分方程求解的问题。然而实际系统 f ( X ) f(X) f(X)多具有复杂的形式,给出 X X X的解析解是一件困难甚至不可能的事。好在我们并不要求 X X X绝对精确的值,只需要满足精度需求的值,那么我们可以依靠数值积分方法给出状态 X X X的解,只要步长 Δ t \Delta t Δt取得足够小,龙格库塔法正是其中的一种典型方法。
X X X的动力学过程与对 Z Z Z的测量都包含有关于 X X X的信息,卡尔曼滤波正是综合运用了这两种信息来给出状态x的最优估计。
卡尔曼滤波包含两个基本方程–状态方程和量测方程,这也是卡尔曼滤波最根本的地方,但凡要实现一个卡尔曼滤波器,只要写出状态方程和量测方程,剩下的就只是代公式了,如果连状态方程和测量方程都写不出来搞不清楚,那也别谈什么实现卡尔曼滤波器。
状态方程: X k = Φ k / k − 1 X k − 1 + Γ k − 1 W k − 1 X_{k}=\Phi_{k/k-1}X_{k-1}+\Gamma_{k-1}W_{k-1} Xk=Φk/k1Xk1+Γk1Wk1
状态方程描述了状态 X X X的动力学过程, Φ k / k − 1 \Phi_{k/k-1} Φk/k1是从k-1时刻到k时刻的状态转移矩阵, Γ k − 1 \Gamma_{k-1} Γk1是k-1时刻的噪声输入矩阵, W k − 1 W_{k-1} Wk1是k-1时刻的系统噪声。
量测方程: Z k = H k X k + V k Z_{k}=H_kX_k+V_k Zk=HkXk+Vk
量测方程描述了状态与量测量的关系, V k V_k V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值