本文持续更新…
I2C通信
AHRS是自动航向基准系统(Automatic Heading Reference System)的简称。目前,使用四元数来进行AHRS姿态解算的算法被广泛采用于四轴飞行器上。

IMU部分:
IMU是惯性测量装置(Inertial Measurement Unit)的简称,通常包含陀螺仪和加速度计。

1.陀螺仪:测量的是角速度,即物体转动的速度,把速度和时间相乘,即可以得到某一时间段内物体转过的角度。(但是积分运算得来的角度本身就存在误差,随着时间的累加,误差会加剧,此时就需要加速度计辅助计算出姿态角度)
2.加速度计:测量的是物体的加速度,我们知道,重力加速度是一个物体受重力作用的情况下所具有的加速度。当物体处于静止状态时,加速度计测量出来的值就等于重力加速度1g, 约等于9.8米每平方秒。重力加速度g的方向总是竖直向下的,通过获得重力加速度在其X轴,Y轴上的分量,我们可以计算出物体相对于水平面的倾斜角度。典型的IMU惯性测量芯片为MPU6050,它被广泛采用在四轴飞行器上。
mpu6050便是这两种传感器结合测出姿态角,通常运用卡尔曼滤波得出最终角度

根据加速度计和地磁计的数据,转换到地理坐标系后,与对应参考的重力向量和地磁向量进行求误差,这个误差用来校正陀螺仪的输出,然后用陀螺仪数据进行四元数更新,再转换到欧拉角

陀螺仪的角速度测量:假如他的速度是1度没秒,那么通过速度乘以时间,我们就可以知道他距离起点走了多少度。

加速度计来测量倾角:一个简单的例子如下: 一个单轴的加速计位于重力水平面上的时候,它在垂直方向上受到的加速度为1g,在水平方向上受到的加速度为0。当我们把它旋转一个角度的时候,就会在水平轴上产生一个加速度分量。通过它们的关系,就可以计算出该单轴加速计的倾角。

1.通过陀螺仪的积分来获得四轴的旋转角度
2.然后通过加速度计的比例和积分运算来修正陀螺仪的积分结果。
下面代码中的gx,gy,gz分别代表陀螺仪在X轴,Y轴和Z轴三个轴上的分量
ax,ay,az分别代表加速度计在在X轴,Y轴和Z轴三个轴上的分量。

MPU6050(陀螺仪 加速度计)

MPU6050只包含陀螺仪和加速计共六个轴,
而MPU9150还包含磁力计,共九个轴。

陀螺仪

陀螺仪是测试角速度的传感器,也有人把角速度说成角速率,说的是一样的物理量。拿电 机做例子,当我们说一个电机10转每秒。一转是360度,那么它的主轴在一秒内转过3600 度。也就是说这个电机在转动时的角速度是3600dps.dps 就是dergee per second 度每秒 (或者写成 deg/s).
MPU6050 集成了三轴的陀螺仪.角速度全格感测范围为±250、±500、±1000与± 2000°/sec (dps).当选择量程为±250dps的时候,将会得到分辩率为131LSB/(º/s).也就 是当载体在X+轴转动1dps时,ADC将输出131.

上述的说明,已经知道陀螺仪测量角度的变化率.为了解释这一点,
让我们假设,我们已经 测量围绕Y轴的旋转角(这将是Axz角)在时刻t0,我们将其定义为Axz0,接下来,我们测 量这个角度是在稍后的时间t1是Axz1。
变化率将被计算如下: RateAxz =(Axz1 - Axz0)/(t1 - t0)
如果Axz单位是度,并以秒为时间单位,那么RateAxz将以度 / s表示。 MPU6050并不会以 度/ s 单位输出,我们需要在读完后进行转换。先来看看各个量程对 应的灵敏度

从ADC值到 dps
通过I2C接口读出来的转换结果ADC值,并不是以度每秒为单位。一般按以下公式进行转 换:Anglerate = ADCrate /灵敏度 以量程为±1000º/s为例,说明如何转换。假设读取x轴的ADC值为200,从上表中得知在 ±1000º/s下的灵敏度为32.8LSB/(º/s) 。根据上面的公式: Anglerate = 200/32.8 = 6.09756º/s 这就是说,MPU6050检测到模块正在以约6度每秒的速度绕X轴(或者叫在YZ平面上)旋转.
ADC值并不都是正的,请注意,当出现负数时,意味着该设备从现有的正方向相反的方向旋转.
如下:=顺时针为正


最后,还要将角度换算成弧度制,便于计算

综上做个陀螺仪的总结:
首先 传感器测量出当前姿态角,并且将数据寄存在一个16位的寄存器中
其次我们要选择精度,便于将16位的数据换算成角度
最终将角度转化为弧度制
输出姿态角=寄存器ADC的值/(灵敏度+2PI/360)

加速度计:

加速度计

全球首例整合性6轴运动处理组件
3轴陀螺仪+3轴加速度计
IIC接口,可用于扩展外部传感器
数据格式:旋转矩阵、四元数(quaternion)、欧拉角格式
体积小

无人机传感器
MPU6050:3轴陀螺仪+3轴加速度(姿态)
HMC5883:3轴数字罗盘(精确方向控制)
MS5611:气压计(高度计)

Pitch:俯仰角(抬头低头)
Roll:滚转角(翻身)
Yaw:偏航角(转弯)

三个角度组合,可唯一确定一个姿态
(MPU6050带有三个陀螺仪,每个陀螺仪各自负责检测相应轴的转动速度,也就是检测围绕 各个轴转动的速度。像三轴的陀螺仪将同时检测 X Y Z轴的旋转。 由上面这个模型图,首先我们定义:
Rxz - 是R向量在XZ平面上的投影
Ryz - 是R向量在XY平面上的投影
Rxz和Rz所形成的直角三角形,
利用勾股定理,我们得到: Rxz ^ 2 = RX ^ 2 + RZ ^ 2,
和同样: Ryz ^ 2 = RY ^ 2 + RZ ^ 2
还要注意的是:
R ^ 2 = RXZ ^ 2 + Ry^ 2,这可以来自从公式1和上面的等式,或它可以是来自于由R和Ryz
R ^ 2 = Ryz ^ 2 + Rx^ 2 形成的直角三角 我们不会在本文中使用这些公式,只是让读者认识到所有值之间的关系。 同时我们将定义Z轴和Rxz 、RyZ之间的夹角。 Axz - Rxz和Z轴间的夹角 Ayz - Ryz和Z轴间的夹角 现在看看,从这个模型中,陀螺仪测量什么?)

姿态角解算(MPU6050 加速度计加陀螺仪)相关推荐

  1. STM32实现四驱小车(三)传感任务——姿态角解算

    目录 一. 绪论 二. 惯性传感器测量原理 1. 三轴加速度计 2. 三轴陀螺仪 3. 三轴磁力计 三. 状态估计 1. 姿态估计 (1)线性互补滤波器 (2)非线性互补滤波器 (3)卡尔曼滤波器 2 ...

  2. imu初始对准的姿态角解算注意事项

    众所周知,在b系下的一个向量要投影到n系,需要其在b系下的坐标,乘上方向余弦矩阵Cnb.根据此原理,通过分别找到两个坐标系下对应的的三个不平行矢量,即可求解出该矩阵.在武大牛小骥的ppt中介绍了姿态阵 ...

  3. MPU6050姿态融合解算(DMP)

    mpu6050是一个六轴传感器包括三轴陀螺仪和三轴加速度,分别可以测得三轴的角速度.加速度.但是一般传感器的原始数据都不能直接直接拿来用,都需要滤波和姿态融合解算.对于初学者来说卡尔曼滤波和姿态融合解 ...

  4. 【Arduino 和 MPU6050 加速度计和陀螺仪教程】

    [Arduino 和 MPU6050 加速度计和陀螺仪教程] 1. 概述 2. 工作原理 3. Arduino 和 MPU6050 4. MPU6050 Arduino 代码 5. MPU6050 方 ...

  5. 【灵动MM32-姿态角解算】移植MPU6050-DMP库实现姿态角PRY解算

    MM32使用DMP库处理MPU6050数据.姿态解算 实现途径: ①MM32F3277G9P单片机 ②MPU6050模块 ③智能车逐飞MM32开源库 ④正点原子dmp开源库 开源库链接: 逐飞科技MM ...

  6. 有关加速度计,陀螺仪,姿态融合解算的原理

    机体就好似一条船,姿态就是船的航向(船头的方位),重力是灯塔,陀螺仪(角速度对时间的积分得到的角度)是舵手,加速度计是瞭望手.舵手负责估计和把稳航向,他相信自己,本来船像北开的,就一定会一直往北开,觉 ...

  7. python 数据处理 姿态角数据解算

    对于姿态角解算,目前我所知道的只有两种,一种是DMP库解算出姿态角.一种是算法进行姿态解算: 本次说的是姿态解算,采集的是六轴的原始数据,用python进行姿态解算:废话不多说,看程序,有注解的.. ...

  8. 树莓派pico mpu6050 一阶互补滤波四元数法 解算姿态角

    micro-python:一阶互补滤波&四元数法 代码 2.系统方案 2.1.组成 本系统由供电部分, 主控部分, 姿态传感器与通信部份组成 2.2.供电部分 电池为一节14500锂电池, 容 ...

  9. 基于STM32的四旋翼无人机项目(二):MPU6050姿态解算(含上位机3D姿态显示教学)

    前言:本文为手把手教学飞控核心知识点之一的姿态解算--MPU6050 姿态解算(飞控专栏第2篇).项目中飞行器使用 MPU6050 传感器对飞行器的姿态进行解算(四元数方法),搭配设计的卡尔曼滤波器与 ...

  10. STM32入门笔记(02):MPU6050、MPU9250、ICM20948及姿态解算(SPL库函数版)

    目录 MPU6050 什么是MPU6050? MPU6050的特点 MPU6050框图 MPU6050初始化 MPU6050寄存器 电源管理寄存器1(0X6B) 陀螺仪配置寄存器(0X1B) 加速度传 ...

最新文章

  1. TestStack.White安装详解
  2. 从入门到精(fang)通(qi)第5期 我们的征途是星辰大海
  3. 玩转Numpy——linspace()函数使用详解
  4. RocketMQ是怎么存储消息的?
  5. virtual box中安装Mac OS后设置分辨率
  6. PHP5.3版本安装
  7. 批量增加域用户并设置为漫游用户
  8. 阿里云GIS曾志明:空间数据中台是什么,怎么用
  9. 74HC138 三八译码器
  10. php新年倒计时源码,2020新年倒计时网页HTML源代码 | 一叶轻舟
  11. MySQL Workbench main_menu.xml 文件 可直接粘贴(下)
  12. C#——窗体程序,模拟高温高压锅炉降压处理
  13. LeetCode单词规律解法
  14. java 比大小(四种方法任选)
  15. 惊闻!港媒:中国首艘航母海试时间延后1个月(图)
  16. python中可以清空字典并保留变量的是,给定字典d,以下选项中可以清空该字典并保留变量的...
  17. “冰封”合约背后的老牌劲敌——拒绝服务漏洞 | 漏洞解析连载之二
  18. linux 下 QT 讯飞语音合成
  19. 【实用】JavaScript中Video使用详解过程(多视频列表循环播放)
  20. win7x64新进程画面均无显示一例分析——从内核态到用户态,从x64到wow64,从汇编到托管

热门文章

  1. File.ReadAllText读取文件中文乱码
  2. android睡眠伴侣,GitHub - HuangZengPei/Sleepmon: 我的Android团队项目,一款可以监测、统计睡眠质量情况的睡眠健康伴侣应用。...
  3. Oracle数据库(完整版)
  4. html5简单表格制作
  5. 使用MATLAB进行多元非线性回归拟合预测
  6. python中关于requests里的timeout()
  7. 微信公众账号登陆授权开发——1
  8. 华为手机安装debug的apk时出现无效安装和与操作系统不兼容问题解决
  9. e语言截图软件怎么保存在c盘,电脑截图文件保存在哪_电脑截图保存在哪里
  10. 阿里巴巴国际站组合标题的小技巧