| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> ESP32 之 ESP-IDF 实战(一)—— 物联网风力摆控制系统(①姿态解算部分) -> 正文阅读 |
|
[人工智能]ESP32 之 ESP-IDF 实战(一)—— 物联网风力摆控制系统(①姿态解算部分) |
本文章 来自原创专栏《ESP32教学专栏 (基于ESP-IDF)》,讲解如何使用 ESP-IDF 构建 ESP32 程序,发布文章并会持续为已发布文章添加新内容! 每篇文章都经过了精打细磨! ↓↓↓通过下方对话框进入专栏目录页↓↓↓
文章目录一、姿态解算算法简介姿态解算,也叫做姿态分析,姿态估计,姿态融合。是指通过传感器的数据(如加速度,角速度)推算出物体当前姿态的过程。 本期项目使用MPU6050传感器测量加速度和角速度,进而解算出姿态。 1. 为什么要至少两种传感器有人可能会有疑问,只用加速度传感器不就能测出姿态了吗。直接对重力加速度分解到3个坐标轴上不就读取出来了吗。 其实这是不正确的,因为物体并非就一定处于平衡状态。想象一下当物体被静止悬挂的时候,确实可以直接使用加速度传感器读取出当时的姿态,即俯仰角度和横滚角度。但是当物体在运动状态呢,尤其是有外部作用力驱动的时候呢(如风力摆,将采用风力作为驱动),加速度传感器的值就会变成重力加速度和运动加速度的矢量和了,显然这样做是不准确的。 2. 传感器的零点漂移问题加速度传感器和陀螺仪(测角速度)两种传感器都会有零点漂移。 对于加速度传感器,我们不能保证其平放的时候就一定测出一个竖直向下的加速度,而是会有一定的偏移量,而且这个偏移量也会有浮动。 对于陀螺仪,即使当物体处于完全静止状态的时候,也不能保证陀螺仪的读数为0。即使物体无角速度,也会被传感器读出一个较小的角速度。 我么知道了这两种传感器都会产生误差,那么具体这两者的误差有什么区别呢。 而陀螺仪则与之不同了,陀螺仪测出的是角速度,它与角度呈一阶微分关系,因此陀螺仪需要经过积分环节才能转换为姿态,会产生积分误差。因此其误差主要反映在由零飘导致的误差,即会产生低频误差(误差主要来自低频零飘噪声)。 加速度传感器高频误差较大,陀螺仪低频误差大,因此我们要将其融合。这也是我们所要研究的 二、姿态的表示方法描述一个物体的姿态有很多种方法,最常见的如四元数法和欧拉角法。 1. 欧拉角(1)简介欧拉角指的是物体绕三个轴依次旋转相应角度,表示当前的姿态。优点是十分直观。 一种欧拉角为绕固定坐标系的,另一种是绕自身(载体)坐标系的。一般通过绕自身坐标系来描述姿态。我们一般用小写字母
(2)缺陷:万向节死锁2. 四元数(1)四元数则描述了三维空间的旋转旋转四元数一种是用一个四维向量表示三维空间姿态的旋转的方法。 矢量绕法轴旋转: 矢量旋转的四元数表示: (2)四元数与欧拉角的关系对于ZYX欧拉角(绕自身坐标系 三、姿态融合:根据加速度和角速度计算四元数1. 使用一阶龙格——库塔法求四元数使用一阶龙格——库塔法求四元数 其中 ω x , ω y , ω z \omega_x, \omega_y, \omega_z ωx?,ωy?,ωz?分别为自身坐标系xyz下的分角速度, Δ t \Delta t Δt为两次结果的时间 因此我们要通过角速度来更新四元数,但是角速度传感器的值是不能拿来直接用的,因为陀螺仪存在零飘。因此我们要用加速度传感器的值来修正。 2. 修正角速度通过加速度来修正角速度 首先将读取到的加速度归一化,即3个方向同时除以原模长使得其模变为为单位长度1,这样我们会得到一个总加速度单位向量
a
0
=
[
a
x
a
y
a
z
]
a_0= \left[\begin{matrix}a_x\\a_y\\a_z\end{matrix}\right]
a0?=???ax?ay?az????? 通过上一时刻四元数,估计出上一刻姿态下重力加速度的值,同样归一化,得到下述式子
两个向量的叉乘视为误差(想想叉乘的几何意义:以两个向量为邻边的平行四边形面积) 对误差进行积分 修正后的角速度
3. C语言代码完成更新四元数转换成C语言代码即可
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/8 4:36:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |