MPU9250调试笔记(融合磁力计计算Yaw)

2023-05-16

底部 附源码--2022-10-5

===================

产品需要一个姿态传感器,使用了MPU9250,主要是算法库不太好找,自己写是不太可能的,欧拉角、四元素计算反正我是没看懂,也贪图快,想一步到位调出来。

硬件工程师使用了IIC接口。

1. 最早调试使用了官方提供的mpl例程,移植完后俯仰和翻滚都没有问题,主要是YAW 方向角,每次芯片重启Yaw都是0,转动芯片吧这个值也变,就是置0不大对,毕竟9250是9轴有磁力计,每次重启计算出来的YAW应该和重启前一至是正北的角度偏移才对。

2. 后来翻了下mpl文档,发现需要对磁力计8字校准,mpl才会把磁力计融合进Yaw,否者Yaw是6轴融合的结果。试了下8字校准,不知道是不是环境内磁场干扰的关系,特别难校准,校准后的确融合了磁力计,得到了理想的Yaw。不过似乎这个校准值可以被存储下来,再次启动时传给mpl继续使用。我没有实现,因为产品需要,我想找一个校准简便的方式,但是这样一来mpl库就无法使用了。

3. 开始了漫长的找库过程,主要是找能够融合磁力计的计算方法,搜遍了大小论坛,基本上就是copy的mpl库。特别是某莫,交了几百块钱,反正没翻到有价值的东西,后来听说还改版了,钱也打了水漂,这都是后话了。

4. 在git找到了救命稻草。

GitHub - kriswiner/MPU9250: Arduino sketches for MPU9250 9DoF with AHRS sensor fusion

移植了这个例程,主要还是免费的,开源就是伟大。

例程比较简洁,开始会先进行校准,陀螺仪、重力。磁力计校准没有细看,这里换了自己的校准方式。

我的磁力计的校准思路是 :校准时进行三个轴面采样,每个轴面校准两个磁力计轴向。比如水平面采集X Y;每个平面划分成4个象限(要求高可以分为8个),判断每个象限采集足够的点之后判定为采集完成。采集过程记录点的最大值和最小值即可找到中心点。中心点值即为磁力计补偿值。

关于象限的判断,比如水平面采样,Z不使用。计算方法:atan2(X,Y)/(2*acos(-1))*360 方位角转度数,进而判断象限。校准完这些值可以做个结构体写flash,下次还用它。

最后

例程似乎有个bug,在选择坐标系时磁力计的坐标系与其他6轴不能吻合,也不符合右手定理。

当时把磁力计的Z轴反转了下,没有使用例程。计算的Yaw比较稳定,方向和手机磁力计大致相同。

使用的坐标系:

原例程磁力计是mag[1] mag[0] mag[2]。

这个库还算稳定,Yaw有小范围漂移,漂到一定范围自己修正。对比官方的mpl计算值的确差点,不过自己产品对Yaw要求不是特别高,区分东西南北绰绰有余。

在git评论区看到有同样疑问,作者还没有回复,或许是个bug。

<<END

附件:

https://download.csdn.net/download/Yangquot/86735853

代码入口mpu_9250_9axis,先初始化再进行计算。磁力计校验后存了下flash,校验时是按区域采点数做判断。

代码是从几年前项目拉出,仅供参考。

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

MPU9250调试笔记(融合磁力计计算Yaw) 的相关文章

  • 微服务高级篇【1】之微服务保护

    文章目录 前言一 初识Sentinel1 1 雪崩问题1 2 解决方法1 3 小结1 4 服务保护技术对比1 5 Sentinel介绍1 6 Sentinel安装1 7 微服务整合Sentinel 二 测试工具 xff1a Jmeter2
  • 密码学【java】初探究加密方式之非对称加密

    文章目录 非对称加密1 常见算法2 生成公钥和私钥3 私钥加密4 私钥加密 公钥解密5 公钥和私钥的保存和读取5 1 保存公钥和私钥 5 2 读取公钥和私钥 非对称加密 非对称加密算法又称现代加密算法 非对称加密是计算机通信安全的基石 xf

随机推荐

  • 密码学【java】初探究加密方式之数字签名

    文章目录 前言1 数字签名简介2 基本原理3 数字证书4 网页加密5 edge的网站连接图标6 代码实现7 keytool工具使用7 1 常用命令 xff1a 7 2 生成私钥公钥 未实践成功 7 3 导出公钥 前言 有关keytool的使
  • 密码学【java】初探究之springboo集成mybatis,swagger,数字签名

    文章目录 项目环境一 swagger技术的补充1 1 swagger xff08 https github com OAI OpenAPI Specification xff09 介绍1 2 swagger的基础注解1 3 controll
  • Ubuntu查看所有用户的账号密码

    查看用户名 用任意账号 cat etc passwd 每行对应一个用户 xff0c 各列分别为 username password masked userId groupId comment homeDir shell 例如 da kao
  • Struts Action的execute方法不执行问题

    学习了SpringMVC xff0c 又想去探究一下Struts的奥秘 xff0c 是否和SpringMVC有什么异同之处 xff1f 于是 xff0c 动手编写了一个非常简单的demo程序 xff0c 但是在写的过程中 xff0c 发现页
  • JPress开源框架的安装过程 Maven工程导入MyEclipse并运行

    1 点击Jpress下载链接 https github com JpressProjects jpress 下载源码压缩包 xff0c 解压 2 复制解压后的工程到MyEclipse的工作空间中 3 点击MyEclipse gt File
  • JPress安装

    安装完成后数据库中就会生成数据表
  • jQuery LigerUI 使用教程

    首页引入样式文件和js文件 xff1a lt link href 61 34 css ligerui all css 34 rel 61 34 stylesheet 34 type 61 34 text css 34 gt lt jquer
  • myeclipse部署tomcat问题

    MyEclipse部署tomcat时出现 xff1a Deployment is out of date due to changes in the underlying project contents You 39 ll need to
  • 如何安装 EFI 分区引导

    原文链接 xff1a http www macfans com cn forum php mod 61 viewthread amp tid 61 161919 xff08 注 xff1a 这个教程只针对单硬盘安装原版OSX或双硬盘双系统
  • 【Android】系统源码下载及编译

    源码及编译 步骤 1 xff1a 创建一个空目录来存放源码 xff1a mkdir aosp cd aosp 步骤 2 xff1a 获取最新版本的 repo 并签出 android 8 1 0 r1 分支 xff1a repo init u
  • Unity3D游戏作品大盘点

    原文链接 xff1a http www unitymanual com 404 html 经典重现 新仙剑OL 新仙剑OL 采用跨平台Unity3D引擎 xff0c 耗资数千万 xff0c 历时三年多 xff0c 由台湾大宇正版授权 xff
  • Linux常见软件包格式及安装讲解

    1 在Linux中安装应用软件 Linux这一新兴操作系统 xff0c 由于系统核心源代码完全公开的缘故 xff0c 存在着许多基于GPL协议之下的分发版本 在一片反行业垄断的呼声中 xff0c 这只小企鹅近年来的发展速度实在令人振奋 其中
  • MySQL数据库安装、全量备份、增量备份与恢复

    一 数据库安装 Mysql数据库安装路径 xff1a opt mysql Mysql数据库数据文件路径 xff1a opt mysql data Mysql数据库root用户登录密码 xff1a admin 1 安装MySQL之前先检查li
  • 拓扑排序(Topological Sorting)

    一 什么是拓扑排序 在图论中 xff0c 拓扑排序 xff08 Topological Sorting xff09 是一个有向无环图 xff08 DAG Directed Acyclic Graph xff09 的所有顶点的线性序列 且该序
  • libjvm.so共享库找不到

    redis 64 node 1 ggs ggsci ggsci error while loading shared libraries libjvm so cannot open shared object file No such fi
  • 如何修改新建脚本模板-ScriptTemplates(Unity3D开发之十五)

    猴子原创 xff0c 欢迎转载 转载请注明 xff1a 转载自Cocos2Der CSDN xff0c 谢谢 xff01 原文地址 http blog csdn net cocos2der article details 44957631
  • linux简易书单

    1 Linux程序设计 xff08 第4版 xff09 万千读者推荐的Linux经典入门书 程序设计实战型图书 xff0c 以简单易懂 内容全面和示例丰富而受到广泛好评 如果你没有Linux基础 xff0c 可以先读这本 话说回来 xff0
  • Spring Boot与RabbitMQ的整合消息确认

    strong span style font size 18px 消息生产者和消费者 span strong import com rabbitmq client Channel import org slf4j Logger import
  • tomcat7下载安装

    进入apache官网下载tomcat7在最左边的找到download下的tomcat 7并点击 选择 32 bit 64 bit Windows Server Installer 下载 下载完成后 xff0c 将安装文件移动到本地硬盘D 安
  • MPU9250调试笔记(融合磁力计计算Yaw)

    底部 附源码 2022 10 5 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 产品需要一个姿态传感器 xff0c 使用了MPU9250 xff0c 主要是算法库不太好找