• mpu6050姿态解算与卡尔曼滤波(5)可应用于51单片机的卡尔曼滤波器


    博客4中给出的滤波器状态维数为4维,测量量为3维,每次滤波需要做不少矩阵乘法和求逆运算。如果想在51单片机上实现,计算耗时会比较长。考虑应用场合可以对滤波器适当做一些简化,计算量会大大减小。
    首先,陀螺和加速度计融合只能保证俯仰和滚转角收敛,而且从测量方程来看,加速度计的测量只与俯仰和滚转角有关。因此可以考虑滤波器状态选取为俯仰角 θ \theta θ和滚转角 γ \gamma γ,这样状态维数会减少。选取状态为俯仰角和滚转角带来的问题是状态方程必须使用欧拉角微分方程,而欧拉角微分方程中包含三角函数计算,反而增加了计算量。
    [ ψ ˙ θ ˙ γ ˙ ] = 1 cos ⁡ θ [ − sin ⁡ γ 0 cos ⁡ γ cos ⁡ γ cos ⁡ θ 0 sin ⁡ γ cos ⁡ θ sin ⁡ θ sin ⁡ γ cos ⁡ θ − sin ⁡ θ cos ⁡ γ ] [ ω n b x b ω n b y b ω n b z b ]

    [ψ˙θ˙γ˙]" role="presentation">[ψ˙θ˙γ˙]
    =\frac{1}{\cos\theta}
    [sinγ0cosγcosγcosθ0sinγcosθsinθsinγcosθsinθcosγ]" role="presentation">[sinγ0cosγcosγcosθ0sinγcosθsinθsinγcosθsinθcosγ]
    [ωnbxbωnbybωnbzb]" role="presentation" style="position: relative;">[ωnbxbωnbybωnbzb]
    ψ˙θ˙γ˙ =cosθ1 sinγcosγcosθsinθsinγ00cosθcosγsinγcosθsinθcosγ ωnbxbωnbybωnbzb
    这种情况下考虑滤波器的应用场合。如果在滤波器运行过程中能保证 θ \theta θ γ \gamma γ基本保持在0±5°附近,那么欧拉角微分方程可以简化为
    [ ψ ˙ θ ˙ γ ˙ ] = [ − γ 0 1 1 0 γ θ γ 1 − θ ] [ ω n b x b ω n b y b ω n b z b ]
    [ψ˙θ˙γ˙]" role="presentation" style="position: relative;">[ψ˙θ˙γ˙]
    =
    [γ0110γθγ1θ]" role="presentation" style="position: relative;">[γ0110γθγ1θ]
    [ωnbxbωnbybωnbzb]" role="presentation" style="position: relative;">[ωnbxbωnbybωnbzb]
    ψ˙θ˙γ˙ = γ1θγ0011γθ ωnbxbωnbybωnbzb

    这样状态方程就变得十分简单,可以只取 θ \theta θ γ \gamma γ。对于 θ \theta θ γ \gamma γ保持在0±5°附近的假设在一些场合下是适用的,比如平衡车、自动保持水平模式的四轴,当然前提是控制可以闭环。
    对于测量方程,也可简化为
    [ a x a y a z ] = [ − g γ g θ g ]
    [axayaz]" role="presentation" style="position: relative;">[axayaz]
    =
    [gγgθg]" role="presentation" style="position: relative;">[gγgθg]
    axayaz = gγgθg

    测量量只取 a x a_x ax a y a_y ay
    这样一来状态和测量方程都变得十分简单,计算量也大大减小,应用在51这样的单片机上也能在10ms内完成姿态解算。

  • 相关阅读:
    2025汤家凤考研数学,基础视频课程+百度网盘+PDF真题讲解
    我的创作纪念日——纪念写博客128天
    springboot框架拦截器中HttpServletRequest 请求如何区分是图片上传流还是普通的字符流?
    使用 Istio CNI 支持强安全 TKE Stack 集群的服务网格流量捕获
    vue文件、js文件外部导入js
    【一】1D测量 Measuring——measure_pos()算子
    接收网络视频数据并解码的探索
    关于Maxscript你了解多少?
    pycharm/vscode 配置black和isort
    Java 面试问题 —— 多线程模块(JUC 模块)
  • 原文地址:https://blog.csdn.net/qiguizhe/article/details/138009924