zhangyh89 发表于 2017-11-30 09:10:57

MPU9250的DMP数据滞后严重如何解决

本帖最后由 zhangyh89 于 2017-11-30 09:17 编辑

最近用到MPU9250,只用到了陀螺仪Z轴的数据,刚开始只使用9250的裸数据,效果还行。后来想到DMP出来的陀螺仪数据会不会更稳定,然后移植了官网最新的DMP库,
结果数据看起来很稳定但是无法使用,数据有很大的延迟,滞后把陀螺仪的裸数据和DMP后的数据都读出来做了下对比,转动PCB查看数据果然有很大的延迟,下面的数据中Nak后面是裸数据,
后面跟的是陀螺仪X Y Z轴数据。DMP设置的滤波设置已经改成最低了还是这样,不知道有没有什么解决办法

DMP:-203 -152 -1821
Nak:-669115 -1029

DMP:-240 -129 -1811
Nak:-480194 -1023

DMP:-286-85 -1780
Nak:-244-57 -1036

DMP:-159167 -1994
Nak:-316-24 -776

DMP:-228130 -2053
Nak: -50166 -709

DMP:-265-20 -1834
Nak:84   34 -888

DMP:-151-44 -1889
Nak: 223   96 -788

DMP:-385 -133 -1768
Nak: 349   72 -790

DMP:-500   31 -1427
Nak: 220-52 -736

DMP:-482180 -1268
Nak: 128222 -600

DMP:-611   57 -1193
Nak: 240418 -558

DMP:-649103 -1065
Nak: 185196 -555

DMP:-251   95 -1128
Nak: 113152 -526

DMP:-225-69 -1072
Nak: 151228 -508

DMP:-231136 -644
Nak:91   -6 -435

zzipeng 发表于 2017-11-30 10:51:27

"DMP设置的滤波设置已经改成最低了还是这样"这句话DMP自带LPF滤波截止频率越低,延时岂不是越大?{:shocked:}

zhangyh89 发表于 2017-11-30 11:02:36

zzipeng 发表于 2017-11-30 10:51
"DMP设置的滤波设置已经改成最低了还是这样"这句话DMP自带LPF滤波截止频率越低,延时岂不是越大?{:shocked ...

写错了。。。最高,5种滤波频率都试过了,效果都差不多。刚又测了下数据,快速的来回旋转PCB,可以看到裸数据已经反向了,DMP的数据还没反向
DMP: 130 -400132
Nak: 510 -118 -3408

DMP:1007 -553 2218
Nak: 561 -585 -4341

DMP:1185 -617 3536
Nak: 759 -1062 -5567

DMP:1273 -537 4510
Nak: 786 -1206 -5985

DMP:1026133 5544
Nak: 354 -1753 -5835

DMP: 891654 5931
Nak:86 -1839 -5152

DMP: 333 1488 5424
Nak:-130 -1585 -4166

DMP:90 1775 4567
Nak:-557 -636 -1503

DMP:65 1788 2416
Nak:-584 -296 -273

DMP: 264 1446671
Nak:-364   86 2069

DMP: 523430 -2523
Nak:-289    3 3428

DMP: 527 -130 -3444
Nak: -10 -106 5500

zzipeng 发表于 2017-11-30 12:03:32

我之前试过,没问题的,照样可以做四轴~~统一用DMP解算出来的姿态以及角速度数据就行了

zhangyh89 发表于 2017-11-30 17:30:15

zzipeng 发表于 2017-11-30 12:03
我之前试过,没问题的,照样可以做四轴~~统一用DMP解算出来的姿态以及角速度数据就行了 ...

那你有没有遇到过四元数,结算出来的Pitch Roll会慢慢飘的情况,程序里已经执行过校准函数了。静止状态上电后Pitch Roll会慢慢的飘到1度,然后再慢慢回到0。当我迅把板子倾斜一个角度后迅速放水平发现Pitch Roll不能立刻回0 ,而是慢慢的从10度20度左右慢慢的回到0,回到0大概需要10秒左右的时间。之前用过MPU6050的DMP就没有种种这些情况。。。难道是最新的DMP库有问题?

zzipeng 发表于 2017-11-30 20:09:38

没有遇到这个问题

zhangyh89 发表于 2017-12-1 09:54:52

zzipeng 发表于 2017-11-30 20:09
没有遇到这个问题

您用的哪个版本的DMP库,还有mpu_init初始化成功后大概执行了哪些操作

296498916 发表于 2019-8-8 16:45:05

最近在调试DMP遇到了这个问题,摸索下发现:
①DMP(不带磁力计)的读取模式下,无论读取频率,数据的实时性都很好,但Yaw有漂移;
②MPL(带磁力计)的读取模式下,读取mpu fifo频率越低,读出的数据滞后越严重。当我把读取循环中的延时函数从100ms降低到1ms,然后再让stm32每读20次才输出1次,这时候输出的实时性和准确性都不错。但延迟在100ms读一次的时候,输出的数据要半分钟才能稳定。
网上查了几天,有不少人出现这种问题,但还没人回复根本的原因,我猜想是跟fifo的读取频率有关,过慢了数据就异常了。
页: [1]
查看完整版本: MPU9250的DMP数据滞后严重如何解决