打印

[小应用]GD32F103+MPU9150 四轴飞行器第一步:9DOF姿态融合

[复制链接]
楼主: zkcaptain
手机看帖
扫描二维码
随时随地手机跟帖
381
楼主,你这个算法在当俯仰角>90度或小于-90时,横滚角会由0变为一个很大的值,而只转动Roll,俯仰Ptich就没有此现象.你这边是吗

使用特权

评论回复
382
yc_xpg| | 2015-7-8 15:38 | 只看该作者
何解?

使用特权

评论回复
383
7869| | 2015-7-15 17:12 | 只看该作者
为什么前面讲解的是X对应pitch,后面又是y对应pitch整个都是乱的。。。。。。

使用特权

评论回复
384
明月_相照| | 2015-7-16 17:15 | 只看该作者
楼主还在吗,磁力计是怎么校准的?

使用特权

评论回复
385
王大熊| | 2015-7-17 09:36 | 只看该作者
膜拜楼主,到现在为止,我对这个芯片才开始入门了。

使用特权

评论回复
386
smilingangel| | 2015-7-18 15:08 | 只看该作者
MPU9150(INVENSENSE公司的,单芯片内集成了加速度计、陀螺仪和磁力计,并且内置DMP用于姿态融合,不过只融合了加速度计和陀螺仪,具有自校准功能.

使用特权

评论回复
387
大秦正声| | 2015-7-20 19:35 | 只看该作者
很好

使用特权

评论回复
388
tongjkl| | 2015-7-24 10:05 | 只看该作者

使用特权

评论回复
389
Jhomin| | 2015-7-30 22:31 | 只看该作者
本帖最后由 Jhomin 于 2015-7-30 22:52 编辑

楼主你好!我现在学习使用 MPU9150, 利用你的程序学习。程序运行后初始化通过,但自检测试通过,请问这可能是因为什么导致的?还有就是我是将你的代码直接移植到 STM32F103ZE 上的,会不会与平台有关,需要修改什么配置信息吗?如工作频率之类?   求助

2015-07-30_222801.png (12.25 KB )

2015-07-30_222801.png

使用特权

评论回复
390
williamma931| | 2015-7-31 15:54 | 只看该作者
楼主,我对代码有些不解之处,还请您能帮助一下,每次采样都需要传入一个Timestamp,时间戳,这个用到了吗?还有您在定时器哪里更新一个AHRS是需要的吗?

使用特权

评论回复
391
zkcaptain|  楼主 | 2015-7-31 18:01 | 只看该作者
Jhomin 发表于 2015-7-30 22:31
楼主你好!我现在学习使用 MPU9150, 利用你的程序学习。程序运行后初始化通过,但自检测试通过,请问这可能 ...

这是自检失败,自检时放平传感器,不要晃动

使用特权

评论回复
392
zkcaptain|  楼主 | 2015-7-31 18:03 | 只看该作者
williamma931 发表于 2015-7-31 15:54
楼主,我对代码有些不解之处,还请您能帮助一下,每次采样都需要传入一个Timestamp,时间戳,这个用到了吗 ...

没明白你的意思,请详细说明一下你所描述的时间戳和定时器ahrs

使用特权

评论回复
393
Jhomin| | 2015-7-31 22:32 | 只看该作者
本帖最后由 Jhomin 于 2015-7-31 22:38 编辑
zkcaptain 发表于 2015-7-31 18:01
这是自检失败,自检时放平传感器,不要晃动

放平了也没晃动,自检还是没通过。测试了下,发现自检函数  mpu_run_self_test  返回值值 result = 4, 再看看了自检函数内部代码,我觉得是由于mpu6050中的加速度和陀螺仪两个模块自检没通过导致的。还有就是把 自检部分 注释掉后mpu9150模块还是正常读取数据,当然转化后航向角依然有很大的误差。楼主有什么看法呢?

2015-07-31_222048.png (46.86 KB )

2015-07-31_222048.png

2015-07-31_222633.png (41.62 KB )

2015-07-31_222633.png

使用特权

评论回复
394
williamma931| | 2015-7-31 23:58 | 只看该作者
zkcaptain 发表于 2015-7-31 18:03
没明白你的意思,请详细说明一下你所描述的时间戳和定时器ahrs

很感谢你能回复我啊!!!怎么用KEIL4版本打不开你的代码呢?所以有些函数找起来很费劲,都是TXT看的,再AHRSupdate的处理函数中,GET_NOWTIME();        这个函数的功能是什么?为什么需要这个的函数?需要独立开一个定时器一直累加时间吗?

使用特权

评论回复
395
williamma931| | 2015-8-1 00:22 | 只看该作者
前面的我明白了,谢谢楼主,这里的我想问问
static uint32_t now=0; // 采样周期计数 单位 us
。。。
temp = (float)now / 2000000.0f; //换算成ms,再除以2得出采样周期的一半
前面是us,你说要换算为ms那么这里为什么要处以2000000,不应该是2000?

使用特权

评论回复
396
williamma931| | 2015-8-1 00:37 | 只看该作者
呵呵,楼主,我又来烦你啦,我初始化的数据是对的,后面就不对了,附上打印结果:
mpu initialization complete ......



mpu_set_sensor complete ......



set_mpu9150_ClockSource complete ......



mpu_set_gyro_fsr complete ......



mpu_set_accel_fsr complete ......



mpu_set_lpf complete ......



mpu_set_sample_rate complete ......

ax=-0.845703,   ay=-0.031250,   az=0.581543    mx=246.000000,   my=-177.404129,   mz=192.000000

    mx=239.000000,   my=-184.730560,   mz=188.000000

    mx=238.000000,   my=-185.777191,   mz=200.000000

    mx=238.000000,   my=-188.917084,   mz=198.000000

    mx=235.000000,   my=-178.450760,   mz=193.000000

    mx=239.000000,   my=-184.730560,   mz=201.000000

    mx=244.000000,   my=-184.730560,   mz=206.000000

    mx=243.000000,   my=-191.010345,   mz=191.000000

    mx=235.000000,   my=-196.243515,   mz=196.000000

    mx=237.000000,   my=-186.823822,   mz=199.000000

    mx=245.000000,   my=-191.010345,   mz=198.000000

    mx=247.000000,   my=-188.917084,   mz=200.000000

    mx=237.000000,   my=-186.823822,   mz=197.000000

    mx=253.000000,   my=-186.823822,   mz=199.000000

    mx=235.000000,   my=-178.450760,   mz=198.000000

初始化四元数:Yaw=119.785086, Pitch=-1.790785, Roll=55.485862

Yaw=180.013260, Pitch=0.099543, Roll=0.000092

Yaw=179.986740, Pitch=-0.235755, Roll=0.000065

Yaw=179.986740, Pitch=-0.091406, Roll=0.000014

Yaw=179.986740, Pitch=-0.055268, Roll=0.000006

Yaw=179.986740, Pitch=-0.042406, Roll=0.000004

使用特权

评论回复
397
williamma931| | 2015-8-1 00:38 | 只看该作者
williamma931 发表于 2015-8-1 00:37
呵呵,楼主,我又来烦你啦,我初始化的数据是对的,后面就不对了,附上打印结果:
mpu initialization comp ...

模块放在那里没有动的,就是初始化的那个角度Yaw=119.785086, Pitch=-1.790785, Roll=55.485862,这是什么问题?

使用特权

评论回复
398
williamma931| | 2015-8-1 16:17 | 只看该作者
感谢楼主大神啊,我搞出来了,不过,我有个问题,就是目前好像只有水平姿态的时候,YEW角是对的,倾斜以后就会偏,这个怎么解决呢?那块代码需要改进?

使用特权

评论回复
399
wuss1021521@163| | 2015-8-2 12:59 | 只看该作者
williamma931 发表于 2015-8-1 16:17
感谢楼主大神啊,我搞出来了,不过,我有个问题,就是目前好像只有水平姿态的时候,YEW角是对的,倾斜以后 ...

我的Yaw转动后,有时候会出现漂移

使用特权

评论回复
400
wuss1021521@163| | 2015-8-2 13:06 | 只看该作者
zkcaptain,你好,实在不好意思打扰了,我使用9150的过程中Yaw会出现漂移,如果可以的话,请留一个联系方式,可以付钱请你解决这个问题,如果你在深圳的话最好的。我的QQ号是: 250928250,非常感谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则