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 "DMP设置的滤波设置已经改成最低了还是这样"这句话DMP自带LPF滤波截止频率越低,延时岂不是越大?{:shocked:} 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 我之前试过,没问题的,照样可以做四轴~~统一用DMP解算出来的姿态以及角速度数据就行了 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
没有遇到这个问题
您用的哪个版本的DMP库,还有mpu_init初始化成功后大概执行了哪些操作 最近在调试DMP遇到了这个问题,摸索下发现:
①DMP(不带磁力计)的读取模式下,无论读取频率,数据的实时性都很好,但Yaw有漂移;
②MPL(带磁力计)的读取模式下,读取mpu fifo频率越低,读出的数据滞后越严重。当我把读取循环中的延时函数从100ms降低到1ms,然后再让stm32每读20次才输出1次,这时候输出的实时性和准确性都不错。但延迟在100ms读一次的时候,输出的数据要半分钟才能稳定。
网上查了几天,有不少人出现这种问题,但还没人回复根本的原因,我猜想是跟fifo的读取频率有关,过慢了数据就异常了。
页:
[1]