四元数

圆点博士小四轴之四元数算法。四元数算法在小四轴上一般直接采用Madgwick的算法就差不多。

这是一个居于GPL的协议,大家可以自由使用。

//================

// IMU.c

// S.O.H. Madgwick

// 25th September 2010

//=================

转载如下:

void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az) {

float norm;

float vx, vy, vz;

float ex, ey, ez;

// normalise the measurements

norm = sqrt(ax*ax + ay*ay + az*az);

ax = ax / norm;

ay = ay / norm;

az = az / norm;

// estimated direction of gravity

vx = 2*(q1*q3 - q0*q2);

vy = 2*(q0*q1 + q2*q3);

vz = q0*q0 - q1*q1 - q2*q2 + q3*q3;

// error is sum of cross product between reference direction of field and direction measured by sensor

ex = (ay*vz - az*vy);

ey = (az*vx - ax*vz);

ez = (ax*vy - ay*vx);

// integral error scaled integral gain

exInt = exInt + ex*Ki;

eyInt = eyInt + ey*Ki;

ezInt = ezInt + ez*Ki;

// adjusted gyroscope measurements

gx = gx + Kp*ex + exInt;

gy = gy + Kp*ey + eyInt;

gz = gz + Kp*ez + ezInt;

// integrate quaternion rate and normalise

q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT;

q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT;

q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT;

q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT;

// normalise quaternion

norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);

q0 = q0 / norm;

q1 = q1 / norm;

q2 = q2 / norm;

q3 = q3 / norm;

}

互补滤波

在小四轴上,我们常见的滤波方法是互补滤波。下面我们来看互补滤波是怎么工作的。

根据下图,我们可以知道,

我们每次得到的角度数据是由下列成分组成的:

1。当前的角度

2。当前陀螺仪运动所产生的角度

3。当前物体运动所产生的加速度角度

通过改变系数a和b, 我们能够调整上述各个成分的权重值,从而得到不同的滤波结果。通常我们采用a>b来进行运算。即当前的角度和陀螺仪运动产生的角度占有更大的比重,而当前加速度角度占有比较小的比重。

根据该理论,我们来看圆点博士小四轴代码中的实现方法:

bs004_mpu6050_acc_pitch_com=

(bs004_filter_high*(bs004_mpu6050_acc_pitch_com+bs004_mpu6050_gyro_pitch_raw*bs004_filter_time)

+bs004_filter_low*bs004_mpu6050_acc_pitch_raw)

/(bs004_filter_high+bs004_filter_low);

bs004_mpu6050_acc_roll_com=

(bs004_filter_high*(bs004_mpu6050_acc_roll_com +bs004_mpu6050_gyro_roll_raw *bs004_filter_time)

+bs004_filter_low*bs004_mpu6050_acc_roll_raw)

/(bs004_filter_high+bs004_filter_low);

互补滤波系数_四元数+互补滤波 - osc_5aksh307的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. java绘制统计直方图取平均_统计学——直方图解析 - osc_lv8qb16y的个人空间 - OSCHINA - 中文开源技术交流社区...

    直方图(Histogram),又称质量分布图,是一种统计报告图, 由一系列高度不等的纵向条纹或线段表示数据分布的情况. 一般用 横轴表示数据类型,纵轴表示分布情况. 直方图是数值数据分布的精确图形表示 ...

  2. python遗传算法最短路径问题有几种类型_遗传算法求最短路径 - osc_tn8uhjgi的个人空间 - OSCHINA - 中文开源技术交流社区...

    实例描述 配送中心数为 $1$,客户数 $k$为 $8$,车辆总数 $m$为 $2$:车辆载重皆为 $8$ 吨:各客户点需求为 $g(i = 1, 2, ... , 8)$(单位为吨),已知客户点与配 ...

  3. python获取中文字体点阵坐标_点阵汉字显示 - freecamel的个人空间 - OSCHINA - 中文开源技术交流社区...

    目录: DOS下的点阵汉字 汉字的内码 汉字字模 汉字库文件 打印字库文件和HZK12 main() { unsigned char *s,*e="ABcd",*c="你 ...

  4. mysql连库串_数据库连接串整理 - osc_ac5z111b的个人空间 - OSCHINA - 中文开源技术交流社区...

    常用JDBC驱动与连接字符串 MySQL driver:com.mysql.jdbc.Driver url:jdbc:mysql://localhost:3306/mydb MySQL url格式:j ...

  5. emc存储java打开后报错_连接EMC存储系统 - osc_mk8rqvg4的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.准备一台笔记本电脑,一根网线即可. 2.将网线一头连接笔记本电脑,另一头连接存储.(连接存储的一头应连接到有扳手图标的那一网口上) 3.配置IP地址 IP:128.221.1.254 子网掩码:2 ...

  6. python 白盒测试_白盒测试教程 - 颜丽的个人空间 - OSCHINA - 中文开源技术交流社区...

    总共贴了39节,后续还有很长,共122节,文章名为'白盒测试教程' 1.白盒测试概念 2.测试覆盖标准 3.逻辑驱动测试 4.基本路径测试 白盒测试概念 1.白盒测试也称结构测试或逻辑驱动测试,是一种 ...

  7. java运动员最佳配对_运动员最佳配对问题 - osc_y1pyjby5的个人空间 - OSCHINA - 中文开源技术交流社区...

    这道题可以看为排列数的一个典型模块 一.算法实现题: 1.问题描述: 羽毛球队有男女运动员各n人,给定2个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势:Q ...

  8. java 投票算法_摩尔投票算法 - woshixin的个人空间 - OSCHINA - 中文开源技术交流社区...

    摩尔投票算法(Moore majority vote algorithm) 这个在wiki的介绍在https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_m ...

  9. java遮罩层_页面遮罩层 - javaalex的个人空间 - OSCHINA - 中文开源技术交流社区

    一. 基于ajax请求的遮罩层: $.ajax({ type:'POST', url:url, data:obj, dataType:'json', beforeSend: function () { ...

  10. leip与mysql数据库_性能分析方法 - osc_xm8bu282的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.性能分析的常用手段 1.空间换时间,利用内存缓存从磁盘上取出的数据,CPU可以直接访问内存,从而比从磁盘读取数据更高的效率. 2.时间换空间,当空间成为瓶颈的时候,切开数据分批次处理,用更少空间完 ...

最新文章

  1. 计算机知识指的是什么意思,计算机上面的m+和m-是什么意思
  2. go mod require + replace解决本地包依赖问题
  3. 响应式Web设计——最佳指南
  4. 【转】Ubuntu中SVN客户端安装+使用
  5. HTML如何设置音频播放器控件的大小
  6. Python 扯淡的Map-Reduce
  7. intellij IDEA 报 非法字符 \65279 原因及解决方法
  8. iOS C++ 关于深度学习(机器学习) (一)学习概览
  9. Linux环境下的jdk安装(大数据环境)
  10. Reactor 线程模型
  11. 解决jellyfin媒体库标题乱码
  12. 分期付款“名义利率”和“实际利率”的公式及其套路
  13. L1W3 用1层隐藏层的神经网络分类二维数据
  14. 好佳居软装十大品牌 各种风格的窗帘这样搭配,瞬间精致美观
  15. 再见PDF提取收费!我用100行Python代码搞定!
  16. java gef_GEF开发入门要点(个人经验)
  17. DM36x IPNC远程升级
  18. Linux系统下查找最近修改过的文件
  19. 1002: 简单多项式求值 ZZULIOJ
  20. 四川省眉山市2021年高考成绩查询,四川眉山中学2021年排名

热门文章

  1. 阿里图标库《保留彩色》
  2. YOLOv2论文笔记
  3. 调用微信接口方法说明--JS-SDK
  4. 禅与维修摩托车的艺术_罗伯特-M-波西格
  5. 怎么用计算机弹电脑病毒音乐,怎么制作电脑病毒?简单电脑病毒制作方法
  6. 极光java sdk_极光使用服务端使用java sdk 出现异常 日志如下
  7. 统计学软件 Stata 16
  8. python2中文乱码
  9. 软著申请合作开发协议模板
  10. 如何将CAD转换成黑白的PDF文档?