OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7608|回复: 21

mpu6050的航向角的问题?

[复制链接]

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
发表于 2017-9-13 11:02:29 | 显示全部楼层 |阅读模式
20金钱
各位大神,我在用mpu6050模块给小车做转弯导航。调试时候用手模拟小车转弯的角度,测了好多遍都是正常的。实际安装在小车上,发现转着转着,yaw角度会一直自增或者自减,即使小车停下也是。
在自增或者自减的时候,我用手拿模块,腾空于小车主体,还是在自增自减。只有手大幅度变化,yaw值变化的快才会稳定。请问这是什么原因?是零点漂移吗?
我代码是移植原子哥的四元数计算代码。角度的观察全是在debug中看的。

最佳答案

查看完整内容[请看2#楼]

航向角需要磁力计进行校准。否则会有很大误差。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

42

主题

358

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2014-8-16
在线时间
193 小时
发表于 2017-9-13 11:02:30 | 显示全部楼层
BigDiong 发表于 2017-9-13 14:54
貌似是因为mpu6050在运动过程中,dpm通过加速度计算的yaw角会有很大误差。求问是不是这个原因?

航向角需要磁力计进行校准。否则会有很大误差。
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-13 13:03:03 | 显示全部楼层
没有人吗??自顶~~~
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-13 14:54:58 | 显示全部楼层
貌似是因为mpu6050在运动过程中,dpm通过加速度计算的yaw角会有很大误差。求问是不是这个原因?
回复

使用道具 举报

4

主题

9

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2017-9-1
在线时间
22 小时
发表于 2017-9-13 16:24:19 | 显示全部楼层
Theone 发表于 2017-9-13 16:21
航向角需要磁力计进行校准。否则会有很大误差。

mpu6050 应该是一个重力和地磁一起的一个二合一
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3565
金钱
3565
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-9-13 16:41:36 | 显示全部楼层
正常,试试卡尔曼滤波,或者互补滤波,DMP是官方的,要是那么好用都用这个了,所以还是要由算法的
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-13 16:41:59 | 显示全部楼层
Theone 发表于 2017-9-13 16:21
航向角需要磁力计进行校准。否则会有很大误差。

我的应用环境是初始角度加上转向的角度等于终点角度。我只要一直检测当前角度是否到终点角度。目前调下来发现,self_test函数比较重要。它不过整个在运动过程中很容易歪。
大神,你有self_test函数的资料吗?
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-13 16:44:37 | 显示全部楼层
桌上的猫 发表于 2017-9-13 16:24
mpu6050 应该是一个重力和地磁一起的一个二合一

为了省成本啊!为了加陀螺仪跟老板提了好多次。。。我的应用环境是初始角度加上转向的角度等于终点角度。我只要一直检测当前角度是否到终点角度。对于误差,我这个系统还有其他校准方法。关键是我在角度变化过程中,这个趋势要一致,不能偏的太离谱。
回复

使用道具 举报

42

主题

358

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2014-8-16
在线时间
193 小时
发表于 2017-9-13 16:47:12 | 显示全部楼层
BigDiong 发表于 2017-9-13 16:41
我的应用环境是初始角度加上转向的角度等于终点角度。我只要一直检测当前角度是否到终点角度。目前调下来 ...

我已经好长时间没有搞过了。self_test我记得好像是用来检测初始位置的函数。反正不管怎么样,想要yaw准确的话,必须要用磁力计。
回复

使用道具 举报

42

主题

358

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2014-8-16
在线时间
193 小时
发表于 2017-9-13 16:49:28 | 显示全部楼层
BigDiong 发表于 2017-9-13 16:44
为了省成本啊!为了加陀螺仪跟老板提了好多次。。。我的应用环境是初始角度加上转向的角度等于终点角度。 ...

如果你只是需要航向角,并且使用环境是水平状态的话,直接用磁力计也可以。
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3565
金钱
3565
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-9-13 17:04:36 | 显示全部楼层
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-13 17:27:43 | 显示全部楼层
Sun_Fly 发表于 2017-9-13 16:41
正常,试试卡尔曼滤波,或者互补滤波,DMP是官方的,要是那么好用都用这个了,所以还是要由算法的

卡尔曼滤波算法的资料哪里有?网上搜到的都不怎么详细。鄙人数学不咋地。
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-13 17:28:17 | 显示全部楼层
Theone 发表于 2017-9-13 16:49
如果你只是需要航向角,并且使用环境是水平状态的话,直接用磁力计也可以。

磁力计的话有什么推荐?
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3565
金钱
3565
注册时间
2016-1-8
在线时间
543 小时
发表于 2017-9-13 17:41:51 | 显示全部楼层
回复

使用道具 举报

42

主题

358

帖子

0

精华

高级会员

Rank: 4

积分
890
金钱
890
注册时间
2014-8-16
在线时间
193 小时
发表于 2017-9-13 17:42:49 | 显示全部楼层
BigDiong 发表于 2017-9-13 17:28
磁力计的话有什么推荐?

磁力计大把,我之前用过HMC5983,你可以试试看。
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-14 10:35:33 | 显示全部楼层
Theone 发表于 2017-9-13 17:42
磁力计大把,我之前用过HMC5983,你可以试试看。

还有个问题,我问你一下,磁力计工作在室内环境,抗干扰能力怎么样?
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-14 14:36:25 | 显示全部楼层
各位大侠,gy-521模块(mpu6050)执行run_self_test()一直失败,是怎么回事??
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2016-1-10
在线时间
27 小时
发表于 2017-9-19 16:34:51 | 显示全部楼层
BigDiong 发表于 2017-9-14 14:36
各位大侠,gy-521模块(mpu6050)执行run_self_test()一直失败,是怎么回事??

看下get_st_biases这个函数中 fifo是否溢出,溢出的话好像不行,,,主控芯片用的是什么?
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-20 08:57:13 | 显示全部楼层
明踪 发表于 2017-9-19 16:34
看下get_st_biases这个函数中 fifo是否溢出,溢出的话好像不行,,,主控芯片用的是什么?

主控用的stm32f405
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-20 09:00:18 | 显示全部楼层
明踪 发表于 2017-9-19 16:34
看下get_st_biases这个函数中 fifo是否溢出,溢出的话好像不行,,,主控芯片用的是什么?

实测下来,get_st_biases没有溢出。是accel_self_test或者gyro_self_test返回值有一个为0 或两个都为0。
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
142
金钱
142
注册时间
2016-1-10
在线时间
27 小时
发表于 2017-9-20 10:40:21 | 显示全部楼层
BigDiong 发表于 2017-9-20 09:00
实测下来,get_st_biases没有溢出。是accel_self_test或者gyro_self_test返回值有一个为0 或两个都为0。

为0 那自检不是没问题吗  你说的run_self_test()一直失败,是指什么现象
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2017-9-20 13:16:44 | 显示全部楼层
明踪 发表于 2017-9-20 10:40
为0 那自检不是没问题吗  你说的run_self_test()一直失败,是指什么现象

我说错了,不是两个都为0,有一个会不为0,或者两个都不为0。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-18 11:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表