MPU6050 获取角度理论推导(一)

2023-11-12

当你搜到这篇文章的时候说明你已经在做陀螺仪的项目了。

那么陀螺仪具体的东西应该不用多说,他其实就是一个获取原始数据然后通过DMP或者MCU的计算处理,

然后得到角度的一个传感器。

MPU6050内部集成了一个陀螺仪一个加速传感器还有DMP计算单元。

陀螺仪是提供实时的三轴角速度,其中三轴分辨是Pitch, Roll,Yaw。简单来说我们视之为XYZ三轴。

还有三轴加速度,加速计时用来获取三轴方向的实时加速度值。

所以三轴陀螺仪+三轴加速计  就是6轴数据的融合了。

如果再配合一个三轴的磁力计,那么就变成9轴数据融合了。

这里先和大家说一下自己的亲身体验。

9轴的陀螺仪,带有磁力计。可以维持Yaw方向不漂移。但是对磁场的要求相对较高。放到实际产品中的时候要考虑如何避免

产品中磁场的影响。这样才能保证稳定性。

6轴的陀螺仪虽然Z轴会漂,但是使用软件滤波的方法还是可以维持一段时间稳定性的。且对磁场没有要求。

 

接下来我们来剖析一下陀螺仪6轴和9轴的融合原理。

原文我忘记是哪里的了,地址就不贴了(找到了再补上),也是参考别人的。

 

  • 姿态角解算---理论推导

 

姿态航向参考系统(AHRS)

首先我们需要了解两个坐标系:

导航坐标系(n): 导航坐标系 n 指的是以地球为参考的坐标系,定义为东北天右手直角坐标系。

载体坐标系(b): 载体坐标系 b 则是以四轴飞行器自身为参考的坐标系, 也定义为右手直角坐标系。

例如:飞机向前的方向为 Y 轴正方向,取飞机向右的方向为X轴正方向,取飞机向上的方向为Z轴正方向。 

 

四元数、欧拉角、方向余弦: 

在百度百科中,欧拉角是这样被描述的:用来确定定点转动刚体位置的3个一组独立角参量,由章动角θ、旋进角(即进动角)ψ和自转角j组成,为欧拉首先提出而得名。简单点来说,就是:绕Z轴旋转为偏航角(YAW)ψ,绕Y轴旋转为横滚角(ROLL)θ,绕X轴旋转为俯仰角(PITCH)φ。

 

绕Z轴旋转ψ角(YAW):

 

定义导航坐标系 n 中某一点的坐标为(x,y,z),使用矩阵表示为: (注意这里是x y z,不是图中的x’ y’ z’)。

设该点在载体坐标系中坐标为(x’,y’,z’),使用矩阵表示为:

 

对于该任意点,易得到两个坐标系下坐标之间的关系:

 

表示成矩阵的形式如下:

 

同理可得: 
绕Y轴旋转θ角(ROLL): 

 

两个坐标系下的转换关系:

 

绕X轴旋转φ角(PITCH):

两个坐标系下的转换关系:

 

由前面的结论可以得到进过三个欧拉角的旋转,得到导航坐标系下的向量 与旋转后的载体坐标系下的向量 之间的关系: 

 

给出由 的坐标变换矩阵:

 

所以可以得到用欧拉角表示的坐标变换矩阵: 

这样我们就得到了使用欧拉角表示的坐标变换矩阵,这个公式先放在这里,等会再用。

 

接下来我们来看看四元数: 

四元数是简单的超复数。

复数是由实数加上虚数单位 i 组成,其中i^2 = -1。

相似地,四元数都是由实数加上三个虚数单位 i、j、k 组成,而且它们有如下的关系: i^2 = j^2 = k^2 = -1, i^0 = j^0 = k^0 = 1 , 每个四元数都是 1、i、j 和 k 的线性组合,即是四元数一般可表示为a + bk+ cj + di,其中a、b、c 、d是实数。

对于i、j、k本身的几何意义可以理解为一种旋转,其中i旋转代表X轴与Y轴相交平面中X轴正向向Y轴正向的旋转,j旋转代表Z轴与X轴相交平面中Z轴正向向X轴正向的旋转,k旋转代表Y轴与Z轴相交平面中Y轴正向向Z轴正向的旋转,-i、-j、-k分别代表i、j、k旋转的反向旋转。

这里已经讲得比较清楚了,我们可以把四元数看成一个常数加上一个三维矢量,即

 

四元数的乘法运算:

对于任意一个四元数 来说,q0、q1、q2、q3都是实数,i、j、k为互相正交的单位向量,也是虚单位 。 

 

 

 

 

满足乘法关系如下:

 

举例:假设有两个四元数,

则这两个四元数相乘结果为:

将上面的运算表示成矩阵形式:

设两个四元数Q和P的乘积为四元数

 

或者

 

从M(Q)中,第一列为四元数Q本身,第一行为四元数Q的共轭的转置,不管第一行和第一列,我们可以提取出一个3*3的矩阵VQ,称其为M(Q)的核。 

同理可得,M(P)的核VP: 

四元数的相关知识的准备差不多完成了,下面开始推导四元数的公式: 
我们定义一个四元数 ,用来表示从导航坐标系n和载体坐标系b之间的旋转变换:

 

可以得到旋转矩阵 的数学关系:

 

到这里我们就推出了使用四元数表示的旋转矩阵

 

联立两者对应项相等,求解方程组即可。解方程的步骤就省略了,直接写出结果。令:

 

推出结果:

 

前面我们用欧拉角推导出来的旋转矩阵 也可以叫做方向余弦矩阵(DCM),使用的是Z-Y-X顺规,不做赘述,有兴趣可以再去查找相关资料。 

这里我们代入方向余弦矩阵对应项的值求出欧拉角与四元数的关系,并做一些三角函数的变换整理得到下面的形式:

上式是欧拉角用表示四元数的公式。 
还是由方向余弦矩阵(DCM)可以得到: 

 

 

 

这四个公式的意义是,给出了四元数与欧拉角之间的关系,我们可以很方便地使用这几个公式将欧拉角与四元数相互转换。还需要注意一点,因为方向余弦矩阵的定义不同,对应的欧拉角旋转方式不同,公式也会不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MPU6050 获取角度理论推导(一) 的相关文章

  • MPU6050里面还有一个温度传感器

    MPU6050里面还有一个温度传感器 xff0c 是不是因为这个那些飞控考虑恒温 xff1f http www makeru com cn video 16190 35379 html
  • mpu6050角度滤波

    文章 xff1a https www cnblogs com we1238 articles 7562028 html 输入量 通过mup6050姿态传感器 xff0c 我们可以分别得到X Y Z轴三个方向的加速度和角速度分量 输出量 我们
  • STM32F4无人机6轴运动处理组件MPU6050

    目的 学习MPU6050的原理 MPU6050初始化方法 原理 MPU6050是9轴运动处理传感器 它集成了3轴MEMS陀螺仪 xff0c 3轴MEMS加速度计 xff0c 以及一个可扩展的数字运动处理器DMP xff08 Digital
  • MPU6050介绍及姿态解算

    1 介绍 xff1a MPU6050 是 InvenSense 公司推出的全球首款整合性 6 轴运动处理组件 xff0c 相较于多组件方案 xff0c 免除了组合陀螺仪与加速器时之轴间差的问题 xff0c 减少了安装空间 xff08 1 x
  • MPU6050

    简介 xff1a MPU6050是InvenSense 公司的 MPU6050 作为主芯片 xff0c 能同时检测三轴加速度 三轴陀螺仪 三轴角速度 的运动数据以及温度数据 利用 MPU6050 芯片内部的 DMP 模块 xff08 Dig
  • MPU6050-扫盲

    文章部分内容转载于 https blog csdn net zmjames2000 article details 88379640 管脚名称说明VCC3 3 5V xff08 内部有稳压芯片 xff09 GND地线SCLMPU6050作为
  • MPU6050温度计算公式

    Tem为16位数据 Tem 43 12412 340 61 Tem 340 43 36 5 Tem每340对应1摄氏度 12412代表0摄氏度
  • 最简单DIY基于STM32F407探索者开发板的MPU6050陀螺仪姿态控制舵机程序

    STM32库函数开发系列文章目录 第一篇 xff1a STM32F103ZET6单片机双串口互发程序设计与实现 第二篇 xff1a 最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇 xff1a 最简单DIY基于STM32F40
  • DSP28系列—MPU6050漂移补偿方案的探索

    说在前面的话 xff1a 大家都知道 xff0c 陀螺仪是一种能测量角速度的器件 xff0c 是姿态解算 角度测量等任务中无法缺少的工具 单轴的陀螺仪配合单轴的加速度计 xff0c 就能结算出一个姿态角 在平衡车的应用中 xff0c 一维的
  • MPU6050 +STM32F411RCT6

    今天玩了一个MPU6050模块 xff0c 在这里跟大家分享一下 xff0c 希望对大家有所帮助 我用的控制板是我自己画图打板的 xff0c 使用的MCU是STM32F411RCT6 使用的MPU6050如下图 xff0c 在某宝上买的 M
  • HAL库 MPU6050的使用

    HAL库 amp amp MPU6050 HAL库 MPU6050的使用 xff1a 今天在本教程中 xff0c 我们将使用STM32接口MPU6050 xff08 GY 521 xff09 加速度计陀螺仪 同时 xff0c 我将在PC上利
  • MAG02 IMU传感器模块替代MPU6050模块介绍

    MAG02模块内置TDK高精度6轴IMU 惯性测量单元 xff09 传感器芯片 xff0c 通过处理器读取传感器数据 xff0c 并经过内部复杂运算后通过串口输出加速度 xff0c 角速度 xff0c 角度等数据 xff0c 大大减轻了用户
  • Arduino操作MPU6050模块

    MPU6050是集成三轴陀螺仪 xff0c 三轴加速度计 xff0c 温度传感器于一体的模块 本文档基于Adafruit MPU6050实现MPU6050模块基本操作 Adafruit MPU6050库 xff1a https github
  • stm32使用MPU6050读取温度值验证I2C

    通过MPU6050测温来进行I2C的验证学习 关于MPU6050寄存器相关可以参考https blog csdn net he yuan article details 76559569 I2C时序很多 xff0c 我是直接以原子I2C的程
  • MPU6050温度计算公式

    Tem为16位数据 Tem 43 12412 340 61 Tem 340 43 36 5 Tem每340对应1摄氏度 12412代表0摄氏度
  • MPU6050教程(转载)

    如果你想玩四轴 xff0c 想搞什么空中鼠标 xff0c 平衡车等待 xff0c 那么MPU6050真的是太强大了 xff0c 能做很多东西 但是论坛上MPU6050整个教学过程基本上是没有的 xff0c 资源共享 xff0c 不应该只在自
  • stm32 MPU6050 6轴姿态传感器的介绍与DMP的应用

    最近应用到三轴姿态传感器 xff0c 因为之前有MPU6050 xff08 6轴传感器 xff0c 这是6轴的 xff09 xff0c 进行搭配使用 xff0c 通过三轴姿态传感器进行舵机的角度调整 内容来源学习正点原子的教程 xff09
  • Micropython——九轴传感器(MPU6050)的使用及算法(二)

    前言 xff1a 在上篇文章中 xff0c 简单地实现了九轴传感器 xff08 MPU6050 xff09 的获取加速度 角速度以及温度的数值 但是 xff0c 我们知道 xff0c 对于MPU6050来说 xff0c 其提供的数据会夹杂有
  • 基于MSP432P401R的MPU6050陀螺仪串口输出姿态角程序

    基于MSP432P401R的MPU6050陀螺仪串口输出姿态角程序 目录 基于MSP432P401R的MPU6050陀螺仪串口输出姿态角程序 前言 一 实验器材 二 硬件资源 1 usb转ttl 2 串口1 波特率 9600 P2 2 P2
  • 单片机MPU9250/6050陀螺仪芯片驱动

    单片机MPU9250 6050陀螺仪芯片驱动 CubeMX配置 驱动代码 项目需要陀螺仪检测设备位置角度信息 所以就有了本文章 代码借鉴了github上大佬写的应用了卡尔曼滤波 关于寄存器的说明参考 当然驱动代码中也附带了说明 https

随机推荐

  • unity中脚本添加不了的原因及解决方案

    1 删除挂不上去的脚本 重新添加这个脚本 2 看看有没有其他的脚本编译错误 有的话修改其他脚本 3 检测脚本 名字与雷明是否一致 不一致的话修改类名 使得脚本与类名一致 4 重启下unity的编辑器 有时候unity会卡顿 需要重新启动
  • 电路初级基本原理总结

    电路初级基本原理总结 电荷 正电荷和负电荷 带了电 荷 摩擦过的物体有了吸引物体的轻小物体的性质 电荷间的相互作用规律 同种电荷相互排斥 异种电荷相互吸引 元电荷 e 一个电子所带的电荷量 e 1 6 10 19 C 电荷量 电荷的多少 单
  • Ubuntu 安装docker、docker-compose

    一 更新Ubuntu源 本文章更新阿里云源 可跳过 1 备份原始源 sudo cp etc apt source list etc apt source list backup 2 修改源文件 sudo vim etc apt source
  • SQL数据库权限管理-10个数据库角色

    为便于管理数据库中的权限 SQL 数据库提供了服务器角色 数据库角色 用户等来划分不同用户拥有的权限差异 今天给大家介绍数据库角色对应的权限 数据库级角色 存在两种类型的数据库级角色 数据库中预定义的 固定数据库角色 可以创建的 用户定义的
  • 区分Java中的Iterable与Iterator接口

    Java中的Iterable与Iterator详解 在Java中 我们可以对List集合进行如下几种方式的遍历 List
  • Python语言基础-变量与表达式

    Python语言基础 变量与表达式 Python是一门简单而强大的编程语言 在学习Python的过程中 了解和掌握变量与表达式的概念是至关重要的 本文将介绍Python中的变量的定义和使用 各种基本数据类型以及常见的运算符和表达式 一 变量
  • 灌区量测水监测系统解决方案

    一 方案背景 我国是个水资源极其匮乏的国家 且农业用水一直是我国的耗水大户 占全部耗水总量的60 以上 这其中灌溉用水又占农业用水 90 左右 传统的农业灌溉过程存在着巨大的水资源滥用与浪费 目前我国的灌溉水有效利用系数仅为0 53 意味着
  • 文件的纵向合并

    在进行数据最初处理我们需要合并多个excel文件 1 将文件夹中的excel文件都转换成dt文件格式 clear cd Users chenyaxin Desktop corporate bonds data fs xlsx local i
  • 股票数据爬取:使用Python爬取股票的实时价格和历史交易数据

    目录 前言 1 股票数据爬虫概述 2 环境准备 3 分析目标股票网站
  • Kubernetes核心概念总结(摘选)

    1 1 Master Master节点上面主要由四个模块组成 APIServer scheduler controller manager etcd APIServer APIServer负责对外提供RESTful的Kubernetes A
  • 三十五.C++ 的cout输出,cin输入

    一 用cout输出 include
  • Qt多次链接connect函数的信号槽会调用多次问题

    1 发送一次信号 调用多次槽函数问题 在同一个类中 多次链接QObject connect sender SIGNAL signalSender QString int receiver SLOT onSignalSender QStrin
  • MATLAB奇异值分解及其应用(GUID实例)

    一 奇异值的计算 定义 设A是秩为r的m n复矩阵 的特征值为 则称 为矩阵A的奇异值 其中称为A的正奇异值 通常称之为奇异值 二 奇异值分解 定义 设A是秩为r的m n复矩阵 则存在m阶酉矩阵U和n阶酉矩阵V 使得 成为A的奇异值分解 其
  • 中国IT业缺少什么

    一个人 我们要从小给他补钙 补锌 还有维生素 当然是缺什么就补什么 因人而异 不一而足 倘若营养不良 必定是不会健康成长的了 甚至还有夭折的危险 前几天 惊闻许多中关村的中小品牌人去楼空 还有一家很大的笔记本厂商也夭折了 不禁大吃一惊 IT
  • 腾讯风采依旧:第四季度财报,金融科技和企业服务部门比翼双飞

    腾讯周三公布了其收益 季度和年度收入增长均创下历史新低 因为这家中国科技巨头继续感受到北京收紧监管对互联网行业的影响 第四季度收入为1441 8亿元人民币 226 3亿美元 去年同期为1476亿元人民币 同比增长8 这是该公司自2004年上
  • 高精度时间差值

    引用 解决GetTickCount的时间精度不够的问题 1 类声明 pragma once define WIN32 LEAN AND MEAN include
  • 【前端】Vue项目:旅游App-(13)home:热门数据的网络请求、store和显示

    文章目录 目标 过程与代码 页面html与css 获取数据 网络请求 store 展示数据 效果 总代码 修改或添加的文件 service的home js service的index js store的home js home vue 本项
  • 2019-2013全球开放数据价值贡献优秀案例

    报告通过梳理和分析全球开放数据价值贡献优秀案例 探索开放数据价值创造的模式 路径和机制 为我国利用开放数据促进经济发展 提升国家治理水平和公共服务能力提供经验参考 关注公众号 互联互通社区 回复 DATA171 获取全部报告内容 精彩推荐
  • can connect mysql not server_解决UCenter info: Can not connect to MySQL server的方法

    今天把网站换了台服务器结果发现UCenter打开时提示UCenter info Can not connect to MySQL server 了 但通信是没有问题 只是注册时提示错误 这个不用说就是数据库配置文章的问题 修改下Discuz
  • MPU6050 获取角度理论推导(一)

    当你搜到这篇文章的时候说明你已经在做陀螺仪的项目了 那么陀螺仪具体的东西应该不用多说 他其实就是一个获取原始数据然后通过DMP或者MCU的计算处理 然后得到角度的一个传感器 MPU6050内部集成了一个陀螺仪一个加速传感器还有DMP计算单元