6轴陀螺仪姿态解算

这篇具有很好参考价值的文章主要介绍了6轴陀螺仪姿态解算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

之前看过学长姿态解算相关代码,因为要做平衡车的项目,希望陀螺仪处理数据能够达到很好的效果,大概2个星期前,看的学长代码,当时把大部分代码看懂是用来干什么的,但原理还是一窍不通,没办法,太高深了hhhhh。用学长的代码很顺利就完成了基本工作,但当时调pid看上位机时看到波形是一堆毛刺,把我的强迫症激起来了,但当时急着调pid,学长的代码就将就着用吧。

最近手头的急事都没了,静下心来,想好好姿态解算完善一下,比如加个滤波,我这才发现我都不知道应该在哪加滤波的。之前是用的mahony互补滤波+四元数求解角度。学长用的姿态解算好像都是祖传的,今天仔细找找网上的代码,发现祖传代码还有点细节上的小问题,直立组学长用的滤波我也认不出来名字,其他有的学长用的是一阶低通滤波。

好吧,这个姿态解算是第二个问题,第一个问题是怎么处理陀螺仪原始数据,我就从小小小小小白的层面来讲,因为我现在也是一个小小小小白。首先陀螺仪读取三轴角速度数据,加速度计读取三轴加速度数据,理想情况下,三轴角速度均为0,2轴加速度为0,其中竖直方向始终有个重力加速度。所以竖直方向的加速度对角速度没有互补作用,导致绕竖直方向旋转的角度(偏航角)不准,和陀螺仪的x,y,z轴没关系。(即使陀螺仪竖直放,x或y轴到竖直面上,绕竖直方向旋转的角度依然不准)。

1.滤波
输入级使用算数平均滤波就可以,取十次求平均一般比较稳定。如果要使用加速度,可以再加一个系数比较小的低通滤波。
角速度记得去掉零点偏移值,角速度不用去除零点漂移。

加速度计的噪声较大,所以最好用个滤波处理,查到的有8层窗口滑动平均滤波,效果似乎不错,我用的是16层滑窗感觉效果更好,还有FIR、IIR等的滤波算法,我还没开始用,用滤波器的话有一点要注意:滤波器是会造成延迟的,延迟对控制系统的影响是很大的,所以千万不能为了追求滤波效果,造成大的延迟,通常不要超过一个周期最好。一阶低通效果就足够了,当然也可以设计IIR、FIR之类的。

我之前找滤波算法,花了几天时间,真浪费时间,其实这个原始数据不做滤波应该也是可以的,pid调好就行了,不过因为我的强迫症,非想找个滤波,那毛刺信号看的真的烦人,结果卡尔曼滤波又看不懂,只能用滑动窗口了。

然后就是网上遍地流传的四元数姿态解算,关键是有的代码都不一样,大家对比一下,整理一下。这部分不可避免要看一大堆的博客。

2.角度融合
角速度积分得到的角度比较稳,但会随时间慢慢漂移且只反映变化量;加速度取反三角函数得到的角度不稳,但跟随真实角度,且是对地的绝对角度。
平衡车整个过程都要用到角度这个变量,单纯角速度积分带来的漂移偏差不可忽视,而且参考点不好确定,所以需要用角度融合,将两者得出的角度进行滤波融合,取长补短,就能得到比较可靠的角度。

角度融合滤波的方法有:一阶互补滤波,卡尔曼滤波、四元数mahony滤波。

很重要的一点是,我一开始陀螺仪水平放,用学长的代码完全问题不大,然后我陀螺仪竖直放,结果原来代码用不了了,因为会出现角度跳变问题,然后我捣鼓了半天代码改不了,甚至去找了asin,atan2函数的用法,都没用,最后我还是放弃了,把陀螺仪位置改了。文章来源地址https://www.toymoban.com/news/detail-401850.html

到了这里,关于6轴陀螺仪姿态解算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Android]将实时获取的加速度计、陀螺仪、磁场数据通过卡尔曼滤波,转换为手机的姿态角

    由于需要实时获取传感器数据,我们可以使用Android系统提供的SensorManager类来获取加速度计、陀螺仪和磁场传感器的数据。然后,我们可以将这些数据传递给一个卡尔曼滤波器对象进行滤波。 以下是一段示例代码: 在这个示例代码中,我们注册了对加速度计、陀螺仪和磁场传

    2024年02月17日
    浏览(39)
  • Android使用陀螺仪

    在Android应用中使用陀螺仪可以帮助实现各种功能,比如游戏控制、虚拟现实体验、运动追踪等。以下是使用Android陀螺仪的基本步骤: 获取传感器服务 : 首先,需要获取设备上的陀螺仪传感器服务。可以通过 SensorManager 类来获取。 注册监听器 : 使用 SensorManager 注册一个陀

    2024年04月26日
    浏览(27)
  • 平衡小车——陀螺仪

    可以通过MPU6050获取加速度信息 可以通过DMP库获取角度信息 MPU6050 MPU6050是一种常用的集成电路(IC),结合了3轴陀螺仪和3轴加速度计。它用于各种需要运动跟踪和感应的电子项目和设备。MPU6050由英飞凌科技公司(InvenSense)制造,现在已被TDK收购。它的一些主要特点包括:

    2024年02月02日
    浏览(32)
  • 陀螺仪MPU6050(IIC&源码)

    1. 陀螺仪 1.1   什么是陀螺仪? 检测角度变化的一个装置。 1.1.1  有什么用?? 用于检测角度变化,用角度变化的值判断物体的运动轨迹。 1.1.2  我们怎么用? 我们是使用这个装置(或者说设备)获取到数据,再使用这个数据得到我们想要的信息。 这里我使用陀螺仪获取板

    2024年02月13日
    浏览(34)
  • 陀螺仪小车(Forerake-Car)

    项目简介:搭建一辆有arduino UNO 与rnf24l01组成的小车;手部安装由arduino nano开发板、nrf24l01、imu构成的手势控制器,利用手势控制器检测手部状态、发送信号对小车进行前进,实现基于卡尔曼滤波的MPU6050姿态结算。 如果你想搭建一辆有Arduino UNO和nRF24L01组成的小车,并使用手势

    2024年02月14日
    浏览(72)
  • 课题学习(十九)----Allan方差:陀螺仪噪声分析

       Allan方差是一种分析时域数据序列的方法,用于测量振荡器的频率稳定性。该方法还可用于确定系统中作为平均时间函数的本征噪声。该方法易于计算和理解,是目前最流行的识别和量化惯性传感器数据中存在的不同噪声项的方法之一。该方法的结果与适用于惯性传感器

    2024年01月22日
    浏览(37)
  • MPU6050六轴陀螺仪外围电路分析

    MPU6050六轴陀螺仪常用的外围电路设计分析 AUX_DA引脚:用于传输辅助数据。通过该引脚,MPU6050可以与外部设备或其他传感器进行数据交换。可以将其他传感器(如磁力计)连接到AUX_DA引脚,以获取额外的数据或实现其他特殊功能。 AUX_CL引脚:用于提供辅助时钟信号。MPU6050可

    2024年01月25日
    浏览(35)
  • 陀螺仪mpu6050的使用(附带HAL的使用)

    我们日常见的陀螺仪模块的使用就是在平衡小车和控制小车的移动上,那么陀螺仪是怎么使用的呢,首先就是能很好的使用I2C,而看到这里,说的一切都是虚的,首先陀螺仪的配置和数据手册大家也是没少看的,但是还是跟我再了解一遍. MPU6050内部整合了三轴MEMS陀螺仪、三轴

    2024年02月13日
    浏览(46)
  • MPU6050 加速度计和陀螺仪传感器与 Arduino 连接

    MPU6050是一款非常流行的加速度计陀螺仪芯片,具有六轴感应和 16 位测量分辨率。这种意义上的高精度和低廉的成本使其在 DIY 社区中非常受欢迎。甚至许多商业产品都配备了 MPU6050。陀螺仪和加速度计的组合通常被称为惯性测量单元或 IMU。 IMU 传感器用于各种应用,例如手机

    2024年02月02日
    浏览(43)
  • 【Android入门到项目实战-- 9.5】—— 陀螺仪传感器的详细使用教程

    目录 陀螺仪传感器 1、基础知识  2、实战使用         返回x、y、z轴的角加速度数据。         水平逆时针旋转,z轴为正,顺时针为负;         向左旋转,y轴为负,向右旋转,y为正;         向上旋转,x为负,向下旋转,x为正。 修改activity_main.xml代码如下:

    2024年02月12日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包