mpu9150(driverack pa简明教程)

简述MotionDriver是Invensense的针对其Motion传感器的软件包,即Motion传感器的驱动,目前已支持MPU6050/MPU6500/MPU9150/MPU9250这些传感器。MotionDriver并非全部开源,核心的算法部分是针对ARM处理器和MSP430处理器编译成了静态链接库提供的。MotionDriver文件结构arm\STM32F4_MD6do

大家好,又见面了,我是你们的朋友全栈君。

简述

Motion Driver是Invensense的针对其Motion传感器的软件包,即Motion传感器的驱动,目前已支持MPU6050/MPU6500/MPU9150/MPU9250这些传感器。
Motion Driver并非全部开源,核心的算法部分是针对ARM处理器和MSP430处理器编译成了静态链接库提供的。

Motion Driver文件结构

arm\STM32F4_MD6 documentation eMPL-pythonclient mpl libraties msp430\eMD-6.0
针对STM32F4评估板 和InvenSense方案 的工程 文档 测试与demo 性能测试 与Log信息显示 MPL库 Motion Processing Library 针对MSP430 的工程

Python Client

主机端的测试工具,可以辅助调试和设计参数,能比较快速的验证Motion解决方案。
用户命令交互的方式使用,可以使能/禁止sensor,使能计算算法,使能硬件特性,查看Log信息等。
需要安装Python(>2.5),pyserial模块和pygame模块。
使用时需要在“设备管理器”中查看连接的板子的串口号,再用如下的命令执行:

python eMPL-client.py xx(串口号)

然后可以使用其提供的命令,控制Motion sensor的行为。

DMP

即Digital Motion Processor,是内置在MPU9250中的一个硬件算法单元。其特性是快速,低功耗,可编程控制,内嵌硬件模块
许多特性支持运行时动态关闭,除了计步数据,其余的DMP数据均输出到MPU9250的FIFO中。
DMP是内置MPU9250的硬件模块,只能拿到Accel和Gyro两个传感器的数据,因此可以从如下的特性列表中可以看出,DMP所支持的所有的算法特性都只是基于Accel和Gyro数据的,其他类型的数据就不能使用DMP了。

特性 说明
3轴低功耗 Quaternion gyro only quaternion,以200Hz速率集成gyro数据,而实际输送到FIFO的是传感器融合后的数据,该数据的输出速率是用户可以配置的。200Hz的集成可以用于更精确的传感器融合数据,3轴quaternion会被push到MPL lib,然后MPL会处理accel和compass的集成->9轴
6轴低功耗 Quaternion gyro和accel quaternion,以200Hz速率集成gyro和accel数据,实际输送到FIFO的输出速率是用户可以配置的。和上面的3轴quaternion互斥,不能同时使用。在使用了6轴quaternion时,6轴quaternion会被push到MPL lib,然后MPL会处理和compass的集成–>9轴
方向姿态识别 判别设备方向的改变,水平、垂直、水平翻转、垂直翻转,由方向矩阵来决定
敲击姿态识别 多方向的敲击检测,可以知道哪一个轴向的正向/负向敲击,可以检测多大4个敲击,通过API可以配置改特性的阈值、无感时间、敲击次数
计步姿态识别 步数和时间戳,该特性自动使能,但是需要有连续5s的计步检测到,才会触发,计步数据不在FIFO中,而是在DMP memory中
DMP中断 可以配置中断,当FIFO中data ready,敲击检测,方向变化检测

MPL

即Motion Processing Library,是Invensense专利的算法库(不开源),其作用是传感器融合动态标定
Motion Driver将传感器数据push到MPL lib,然后MPL会处理9个轴的传感器数据的融合。
在使能MPL lib前,需要配置MPL特性,这些特性可以调用MPL lib的接口来动态关闭。

算法

MPL算法 说明
Gyro标定 运行时标定。no motion状态被检测到时触发标定,标定将在5s内完成
Gyro温度补偿 在gyro标定后,MPL将记录内部温度,并通过多个数据点为Gyro构建“多点温度斜率”,并应用在上面的标定偏移量上,此方法可以补偿Gyro因温度而产生的漂移
Compass标定 硬磁铁运行时标定,MPL通过对设备周围的磁场环境进行读取和记录,一旦足够的数据呈现,compass偏移值就可以使用,9轴quaternion就可以产生。如果所在环境磁场不稳定,compass就无法标定,只能使用6轴quaternion
抗磁干扰 在MPL标定compass后,将会持续记录磁场强度,因此一旦检测到有扰乱发生,MPL库就会拒绝磁力数据,并切换到6轴传感器融合。在这样的磁场扰乱检测到后,MPL库还是会继续每5s检测一次磁场数据,直到没有再检测到磁场扰乱发生时,又会切换回9轴fusion
Fusion 3 Axis Gyro angle quaternion
Fusion 6 Axis Gyro + Accel quaternion
Fusion 9 Axis Gyro + Accel + Compass quaternion

传感器数据
从quaternion数据可以得到其他各种类型的数据,这些转换接口都在Motion Driver中有实现,可以转换得到的数据类型如下:

数据类型 说明
Compass 每个轴向的磁场数据,单位为micro tesla(微特斯拉)
Gyro X,Y,Z轴向的旋转加速度数据,单位为degrees per second(°/s)
Accel X,Y,Z轴向的线性加速度数据,单位为g
Heading 360 degrees from North with Y+ axis as the pointer
Rotational Matrix 线性代数9个元素的矩阵数据
Euler Angles 欧拉角,Pitch, roll, yaw
Quaternions 传感器融合得到的w,x,y,z旋转角
Linear Acceleration body frame coordinates中的线性加速度
Gravity Vector 重力向量

前面提到的Python Client支持这些传感器数据的显示。

MPU硬件算法特性

特性 说明
工厂标定 demo在产线上如何标定accel和gyro。标定前必须将设备指向固定的方向,同时需要设备的Z+轴与地心引力方向相反。一旦触发,偏移量就可以得到,并存于Hardware Offset寄存器或MPL Lib中(该偏移量需要存入Flash)
工厂自检 基于硬件自检算法
保存与加载传感器状态 提供API用于将传感器状态保存至Flash。包含了每个传感器的标定数据和温度补偿数据
低功耗Accel模式 只有MPU6500和MPU9250支持,加速度采集速率可以从1Hz到640Hz间调整
低功耗Motion Interrupt模式 只有MPU6500和MPU9250支持,即可以进入睡眠模式,通过超过阈值的动作在INT引脚产生中断,唤醒系统
动态改变传感器ODR Ourput Data Rate,可以动态改变传感器数据输出速率,也可以开关传感器
寄存器Dump 可以dump所有寄存器的值
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128852.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java的spi机制_java编程思想第四版

    java的spi机制_java编程思想第四版What?SPI机制(ServiceProviderInterface)其实源自服务提供者框架(ServiceProviderFramework,参考【EffectiveJava】page6),是一种将服务接口与服务实现分离以达到解耦、大大提升了程序可扩展性的机制。引入服务提供者就是引入了spi接口的实现者,通过本地的注册发现获取到具体的实现类,轻松可插拔典型实例:jdbc的设…

    2025年8月24日
    2
  • c++ 二维vector_vector如何重置

    c++ 二维vector_vector如何重置初始化二维vector,为r*c的vector,所有值为0.1.直接用初始化方法(刚开始没想到)vector>newOne(r,vector(c,0));2.用resize()来控制大小vector>res;res.resize(r);//r行for(intk=0;k

    2022年9月18日
    0
  • 搭建 Drupal 个人网站的图文教程

    搭建 Drupal 个人网站的图文教程操作场景Drupal是使用PHP语言编写的开源内容管理框架(CMF),由内容管理系统(CMS)及PHP开发框架(Framework)共同构成。Drupal具备强大的定制化开发能力,您可使用Drupal作为个人或团体网站开发平台。本文档介绍如何在腾讯云云服务器(CVM)上手动搭建Drupal个人网站。进行手动搭建Drupal个人网站需要熟悉Linux命令,例如Cen…

    2022年6月11日
    34
  • C/C++中static变量和static函数的用法

    C/C++中static变量和static函数的用法静态成员数据和静态成员函数1.C中静态数据和静态函数的用法C语言中定义一个静态变量和静态函数主要是为了满足某个文件的需求比如我们在文件List.c中定义staticintcount=0;//静态变量staticintget_last_node(List*Head)

    2022年7月16日
    127
  • phpstorm配置了git后Terminal 不能使用显示:git’ 不是内部或外部命令,也不是可运行的程序…

    phpstorm配置了git后Terminal 不能使用显示:git’ 不是内部或外部命令,也不是可运行的程序…

    2022年2月8日
    88
  • SDN、NFV学习与理解「建议收藏」

    SDN、NFV学习与理解「建议收藏」这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Ma…

    2025年10月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号