Mahony互补滤波器代码详解
在博客文章《一起深入读懂Mahony互补滤波器》(https://blog.csdn.net/jessecw79/article/details/84668189) 的基础上,本文将对Mahony互补滤波器的Matlab代码进行详细解读。本文是Jesse Chen的原创文章,如果转载请注明出处。
文章目录
回顾《一起深入读懂Mahony互补滤波器》
在上一篇文章中,我们介绍了Mahony互补滤波器的推导过程和公式。如图1是一个基本SO(3)的Mahony互补滤波器的框图。
图1 Block diagram of the passive complementary filter on SO(3)
如果采用估计值 R ^ \hat{R} R^作为反馈,可以得到在估计参考坐标系下的互补滤波器方程(将陀螺仪的bias考虑在内):
R ^ ˙ = R ^ ( Ω y − b ^ + ω ) × b ^ ˙ = − k b vex ( π a ( R ~ ) ) , with k b > 0 ω = k est vex ( π a ( R ~ ) ) , with k est > 0 R ~ = R ^ T R \begin{aligned} \dot{\hat{R}} &= \hat{R}\left(\Omega^y - \hat{\mathbf{b}} + \omega\right)_\times \\ \dot{\hat{\mathbf{b}}} & = -k_b\operatorname{vex}\left(\pi_a\left(\widetilde{R}\right)\right),\qquad\text{with }k_b > 0 \\ \omega &= k_{\text{est}}\operatorname{vex}\left(\pi_a\left(\widetilde{R}\right)\right),\qquad\text{with }k_\text{est} > 0 \\ \widetilde{R} &= \hat{R}^T R \end{aligned} R^˙b^˙ωR
=R^(Ωy−b^+ω)×=−kbvex(πa(R
)),with kb>0=kestvex(πa(R
)),with kest>0=R^TR
假设 k P = k est k_P = k_\text{est} kP=kest, k I = k b k_I = k_b kI=kb,那么很容易得到参考文献[1],[2],[3]中的passive complementary filter:
R ^ ˙ = R ^ ( Ω y − b ^ + k P ω ) × , R ^ ( 0 ) = R ^ 0 b ^ ˙ = − k I ω , b ^ ( 0 ) = b ^ 0 ω = vex ( P a ( R ~ ) ) , R ~ = R ^ T R y \begin{aligned} \dot{\hat{R}} &= \hat{R}\left(\Omega^y - \hat{\mathbf{b}} + k_P\omega\right)_\times,\qquad\hat{R}\left(0\right) = \hat{R}_0 \\ \dot{\hat{\mathbf{b}}} &= -k_I\omega,\qquad\qquad\qquad\qquad\quad\hat{\mathbf{b}}\left(0\right) = \hat{\mathbf{b}}_0 \\ \omega &= \operatorname{vex}\left(\mathbb{P}_a\left(\widetilde{R}\right)\right),\qquad\qquad\qquad\widetilde{R} = \hat{R}^T R_y \end{aligned} R^˙b^˙ω=R^(Ωy−b^+kPω)×,R^(0)=R^0=−kIω,b^(0)=b^0=vex(Pa(R
)),R
=R^TRy
其中 P a ( ⋅ ) = π a ( ⋅ ) \mathbb{P}_a\left(\cdot\right) = \pi_a\left(\cdot\right) Pa(⋅)=πa(⋅)。
IMU的测量值
一般情况下,IMU可以是9轴,包括:
- 3轴的陀螺仪;
- 3轴的加速度计;
- 3轴的磁力计;
捷联式IMU的参考坐标系是和IMU固定在一起的(body fixed frame)坐标系 { B } \{\mathcal{B}\} { B},惯性参考坐标系为 { A } \{\mathcal{A}\} { A},旋转 R = B A R R = {}_\mathcal{B}^\mathcal{A}R R=BAR表示 { B } \{\mathcal{B}\} { B}相对于 { A } \{\mathcal{A}\} { A}的旋转。
陀螺仪测量误差模型
陀螺仪的测量值可以表示为:
Ω y = Ω + b + μ   ∈ R 3 \Omega^y = \Omega + \mathbf{b} + \boldsymbol{\mu}\,\in\mathbb{R}^3 Ωy=Ω+b+μ∈R3
其中 Ω \Omega Ω是真实值, μ \boldsymbol{\mu} μ是加性高斯噪声,而