0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Mahony滤波器的原理和公式推导

zhc135136 来源:SmartHWFW 2023-06-17 11:18 次阅读

1.概述

在进行代码分析之前,了解Mahony滤波器的原理和公式推导是必要的。Mahony滤波器是一种基于四元数的姿态估计滤波器,其主要思想是通过加速度计和陀螺仪的测量值来估计姿态,并通过四元数来表示姿态。其公式推导涉及到四元数的运算和旋转矩阵的推导,需要具备一定的数学基础和姿态估计相关的知识。

四元数是一种数学工具,它可以用来表示三维空间的旋转信息。在秦永元的《惯性导航》这本书第9.2章节中,介绍了姿态更新计算的四元数算法,其中详细讲解了四元数的概念、四元数与姿态阵之间的关系以及四元数微分方程。阅读完9.2章节的推导后,我们可以更深入地理解四元数的应用和原理。

之前我也写过一篇 《MEMS_惯性传感器09 - Mahony姿态解算算法详解》,但是还是建议阅读秦永元的《惯性导航》,这样更容易理解。

b275d3f2-0c4c-11ee-962d-dac502259ad0.png

物体的姿态变化可以等效为绕某个轴的一次旋转。我们不需要关注物体变化的中间过程,只需要找到一种变换关系,就能够求出物体从导航坐标系到载体坐标系或从载体坐标系到导航坐标系的坐标。因此,我们需要推导出这种变化关系。

利用四元数与姿态阵的关系,可以推导得到如下结论:

(1) 四元数 Q (表达式如下) 描述了物体的定点转动,即,当之关心 b 系(载体系)相对于 R 系(导航系)的角位置时,可认为 b 系是由 R系经过无中间过程的一次性等效旋转形成的。

b2a23a0a-0c4c-11ee-962d-dac502259ad0.png

Q包含了这种等效旋转的全部信息;u^R 为旋转瞬间和旋转方向 θ为旋转过的角度

(2) 四元数可以确定出 b 系至 R 系的坐标变换矩阵

b2ae83b4-0c4c-11ee-962d-dac502259ad0.png

根据上述推导,已经得到了姿态变换矩阵和四元数表示法中的姿态角。然而,目前四元数的具体数值未知。为了得到真正的姿态角,需要找到确定四元数数值的方法。

通过已知的陀螺仪和加速度计获得的角速度和加速度,我们可以利用四元数微分来求解四元数的具体数值。四元数微分是指将四元数看作一个向量,然后对其进行微分,得到一个表示四元数变化率的向量。通过对四元数微分的计算,可以得到四元数的具体数值。

通过解微分方程,可以计算四元数的参数

b2be6716-0c4c-11ee-962d-dac502259ad0.png

以上公式的推导过程已在书中详细说明,故本文不再赘述。针对误差消除,本文采用了Mahony滤波算法,该算法是本文的核心内容。

2.陀螺仪误差的消除

角度测量中存在偏差,由于角速度是积分得到的,陀螺仪获得的角速度信息存在小的偏差,积分后误差会不断累积,导致角度测量结果偏差较大。虽然加速度计获得的角度信息不会出现偏差,但其受噪声影响较大,短时间内可靠性不高。因此,我们可以利用加速度计获得的角度信息去矫正陀螺仪获得的姿态信息,从而消除算出来的角度误差。

核心思想是利用加速度计获取信息来补偿陀螺仪的角速度信息。具体实现步骤如下:

b2d11208-0c4c-11ee-962d-dac502259ad0.png

1.获取加速度的值,并对其归一化 (归一化是为了确保姿态变化矩阵中的四元数是规范四元数,并且利用陀螺仪更新的四元数也需要归一化。以确保与其他数据对应)

b2fb8d9e-0c4c-11ee-962d-dac502259ad0.png

//Normaliseaccelerometermeasurement
recipNorm = invSqrt(ax * ax + ay * ay + az * az);
ax *= recipNorm;
ay *= recipNorm;
az *= recipNorm;

2.获取陀螺仪算出的姿态矩阵中的重力分量, 重力分量记为Vx、Vy、Vz

b3296d54-0c4c-11ee-962d-dac502259ad0.png

// Estimated direction of gravity and vector perpendicular to magnetic flux
halfvx = q1 * q3 - q0 * q2;
halfvy = q0 * q1 + q2 * q3;
halfvz = q0 * q0 - 0.5f + q3 * q3;

3.获取姿态误差,(将第一步中 获取的重力向量归一化后的值与提取的姿态矩阵的重力向量叉乘)

b3453598-0c4c-11ee-962d-dac502259ad0.png

// Error is sum of cross product between estimated and measured direction of gravity
halfex = (ay * halfvz - az * halfvy);
halfey = (az * halfvx - ax * halfvz);
halfez = (ax * halfvy - ay * halfvx);

4.消除误差, (通过对重力分量叉乘后的误差进行积分,可以得到角速度值。ki为积分系数,dt为积分周期)

integralFBx += twoKi * halfex * (1.0f / sampleFreq);  // integral error scaled by Ki
integralFBy += twoKi * halfey * (1.0f / sampleFreq);
integralFBz += twoKi * halfez * (1.0f / sampleFreq);
gx += integralFBx;  // apply integral feedback
gy += integralFBy;
gz += integralFBz;

5.互补滤波(在PID控制器中加入误差值,并将其与陀螺仪测得的角速度相加,得到修正的角速度值。使用修正的角速度值来更新四元素,以获得更准确的姿态角信息)

// Apply proportional feedback
gx += twoKp * halfex;
gy += twoKp * halfey;
gz += twoKp * halfez;




//Integrate rate of change of quaternion
gx *= (0.5f * (1.0f / sampleFreq));    // pre-multiply common factors
gy *= (0.5f * (1.0f / sampleFreq));
gz *= (0.5f * (1.0f / sampleFreq));

6.求解微分方程

qa = q0;
qb = q1;
qc = q2;
q0 += (-qb * gx - qc * gy - q3 * gz);
q1 += (qa * gx + qc * gz - q3 * gy);
q2 += (qa * gy - qb * gz + q3 * gx);
q3 += (qa * gz + qb * gy - qc * gx);

7.四元数归一化

// Normalise quaternion
recipNorm = invSqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3);
q0 *= recipNorm;
q1 *= recipNorm;
q2 *= recipNorm;
q3 *= recipNorm;

8.四元数求解欧拉角 (在求解角度时要清楚的知道导航坐标系是:东北天; 北东地)


roll = asinf(2 * q0 * q2 - 2 * q1 * q3) * (180 / M_PI);   // 绕X轴旋转
pitch = atan2f(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2 * q2 + 1) * (180 / M_PI); // 绕Y轴旋转
yaw = atan2f(2 * q1 * q2 + 2 * q0 * q3, -2 * q2 * q2 - 2 * q3 * q3 + 1) * (180 / M_PI);   // 绕Z轴旋转

3.算法效果演示

不足:

1)当X轴角度大于90度时,Y轴角度发生了漂移

2)在从旋转到静止的过程之后,Z轴角度没有趋近于0度。
责任编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    161

    文章

    7811

    浏览量

    178075
  • 导航
    +关注

    关注

    7

    文章

    528

    浏览量

    42411
  • 惯性传感器
    +关注

    关注

    2

    文章

    169

    浏览量

    27946

原文标题:MEMS_惯性传感器14 - Mahony 滤波算法的代码分析

文章出处:【微信号:SmartHWFW,微信公众号:SmartHWFW】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    求Sigmadsp的高阶滤波器计算公式

    各位论坛的资深工程师和ADI的技术工程师,能不能给一份滤波器的计算公式!在使用过程中发现HELP文档里按有的公式计算出来是错的和sigmadsp计算的完全不一样,使用high order 计算出
    发表于 01-23 08:13

    抗EMI滤波器设计与应用原理

    摘要:铁氧体软磁材料用于电磁兼容性设计具有优良的电磁性能和价格优势。本文从噪声滤波器原型出发着重讨论了噪声滤波器设计和应用原理,简化和推导了扼流圈电感计算公式,提
    发表于 06-03 10:08 111次下载

    Sallen_Key滤波器

    Sallen_Key权威公式计算,高通滤波器,低通滤波器
    发表于 11-23 11:28 16次下载

    LC低通滤波器的截止频率是怎么推导出来的?公式是什么?

    LC低通滤波器的截止频率是怎么推导出来的?公式是什么?lc电路截止频率公式是:Q=wL\R=2πfL\R(因为w=2πf)=1/wCR=1/2π 阻抗:Zc=1/jwc ;Zl=jwl
    发表于 11-29 17:33 32.4w次阅读
    LC低通<b class='flag-5'>滤波器</b>的截止频率是怎么<b class='flag-5'>推导</b>出来的?<b class='flag-5'>公式</b>是什么?

    带通滤波器到低通滤波器的转换公式推导资料合集

    以一种易于理解的方式介绍了归一化带通滤波器指标转换为低通滤波器指标的公式
    发表于 02-15 13:56 46次下载

    一阶数字低通滤波器原理及公式推导

    吧。查阅了很多无感FOC控制的相关资料,把基本原理和流程渐渐的了解了一下(以后有时间再详细介绍了),发现很多环节都会用到”一阶低通数字滤波器“(相电流滤波,反电势滤波,角度、转速滤波
    的头像 发表于 08-26 14:22 3.4w次阅读

    如何理解卡尔曼滤波器?卡尔曼滤波器状态方程及测量方程

    卡尔曼滤波的最终输出是,真实的状态为,令 对误差的平方求最小值,同样可以推导公式(1-5)到公式(1-7)。因此卡尔曼滤波器也是系统状
    发表于 12-15 10:45 2883次阅读

    低通滤波器截止频率计算公式_作用和用途

    低通滤波器的截止频率可以通过以下公式计算:fc=1/(2πRC),其中R是滤波器的电阻,C是滤波器的电容,fc是滤波器的截止频率。
    发表于 02-16 18:13 3w次阅读

    LLC变换公式推导

    LLC变换公式推导
    发表于 04-03 15:45 7次下载

    模拟无源滤波器设计(九)-Gaussian滤波器设计详解

    文章详细对高斯滤波器的综合设计进行讲解,解释如何从时域无过冲推导出高斯滤波器的。并且深入探讨了高斯滤波器的零极点分布。最后介绍基于Matlab的滤波
    的头像 发表于 05-28 11:31 7274次阅读

    在连续时间域中比较Papoulis滤波器和Chebyshev滤波器

    本文详细对比了切比雪夫滤波器和Papoulis滤波器特性,并且得出结论切比雪夫滤波器要优于Papoulis滤波器。这里的Papoulis滤波器
    的头像 发表于 06-10 09:11 1488次阅读
    在连续时间域中比较Papoulis<b class='flag-5'>滤波器</b>和Chebyshev<b class='flag-5'>滤波器</b>

    LC 滤波器公式 - LC filter

    摘要: LC 滤波器公式 无源滤波器解释 集总元件波滤器由电阻、电感和电容器组成。它们允许高于或低于预定水平的频率通过。衰减程度达到 -
    的头像 发表于 07-04 09:09 4018次阅读
    LC <b class='flag-5'>滤波器</b><b class='flag-5'>公式</b> - LC filter

    Mahony滤波算法参数自动调节方法介绍

    Mahony滤波算法参数自动调节方法是一种用于姿态估计的滤波算法。
    的头像 发表于 12-06 09:45 1139次阅读

    lc滤波器的截止频率计算公式

    LC滤波器的工作原理、计算公式推导、参数解释等方面。 LC滤波器的工作原理 LC滤波器的工作原理是基于电感和电容元件的阻抗特性。在LC
    的头像 发表于 12-14 14:57 1.1w次阅读

    什么是匹配滤波器?如何理解匹配滤波器?

    匹配滤波器、匹配滤波器的详细理解予以介绍。如果你对匹配滤波器具有兴趣,不妨和小编一起来继续往下阅读哦。 一、匹配滤波器 匹配滤波器是一种非常
    的头像 发表于 01-12 08:39 1681次阅读