STM32/STM8技术william hill官网
直播中

黄山

9年用户 32经验值
擅长:可编程逻辑
私信 关注
[问答]

关于mpu6050测量时角度和角速度变化的疑问?希望有人解答。

问大家一个关于mpu6050角度和角速度的问题:我将mpu6050(y轴方向)从-17度左右匀速转到9度左右,发现速度和角速度变化规律居然是一致的,按理说我的运动速度是匀速的(当然是粗糙的匀速),那么角速度应该为一个定值,但是我发现角速度随着角度减小而减小,而且我是朝着一个方向运动的,可是角度过零点时角速度正负也发生了变化。本人很是不解,希望知道的大神帮我解惑,谢谢了!发个图给大家。



  • 运动示意图
  • 串口测量数据

回帖(23)

newdavid.cool

2015-7-29 13:37:05
引用: hs伊红美蓝 发表于 2015-7-30 17:31
按你说的方法重新试了一下,没有加卡尔曼滤波,果然这次没有出现上面的错误,不过这个滤波程序是网上用得很流行的按理说应该不会有问题的呀!

那你再仔细看一下算法的各个参数是怎么回事,首先清楚各输入参数的具体含义,再逐个调试输入参数,确定参数的输入是正确的,如果这些都是对的,还出现问题,那就是算法本身的问题了。调算法的话就自己模拟数值进行验证。这一套走下来应该会发现问题所在。
举报

家家户户哥哥

2015-7-29 15:39:15
我也在研究并不太懂,我这有资料要吗
举报

newdavid.cool

2015-7-29 15:41:02
我想仔细问几个问题:
1.你是直接读取的寄存器,还是用采用了DMP数据处理;
2.你旋转是用什么旋转的,转台还是手动;
3.输出了哪些数据,角度是什么角度。
我有用过MPU9150,角速度会有漂移,但是没这么夸张,所以我想仔细询问一下。
举报

Murphy

2015-7-29 15:41:03
飞思卡尔直立车组吗????
举报

Murphy

2015-7-29 15:44:10
加速度的正负问题是自己程序里面定义的,以直立状态为零点,,向前为正,向后为负,至于角速度变化的问题,这个是原始数据还是滤波之后的数据?滤波用的什么???
举报

Murphy

2015-7-29 15:51:45
引用: ICHLIEBEDICH13 发表于 2015-7-29 15:44
加速度的正负问题是自己程序里面定义的,以直立状态为零点,,向前为正,向后为负,至于角速度变化的问题,这个是原始数据还是滤波之后的数据?滤波用的什么???

可以解析角加速度,趋势预测
举报

黄山

2015-7-29 20:04:33
引用: newdavid.cool 发表于 2015-7-29 15:41
我想仔细问几个问题:
1.你是直接读取的寄存器,还是用采用了DMP数据处理;
2.你旋转是用什么旋转的,转台还是手动;

回答:1.直接读取寄存器,通过加速度计得到y轴角度,通过陀螺仪得到y轴角速度,再通过卡尔曼融合得到角度Angle,和角速度Angle_dot
         2. 手动旋转
         3.输出的只有通过卡尔曼滤波后的角度Angle,和角速度Angle_dot。(只是y轴上的)
举报
  • 截图20150729195908.png

黄山

2015-7-29 20:06:19
引用: 家家户户哥哥 发表于 2015-7-29 15:39
我也在研究并不太懂,我这有资料要吗

我有也有很多资料,但讲的不深,全是理论,我需要实际的。谢谢!
举报

黄山

2015-7-29 20:07:31
引用: ICHLIEBEDICH13 发表于 2015-7-29 15:41
飞思卡尔直立车组吗????

不是我用的是stm32

举报

黄山

2015-7-29 20:11:45
引用: ICHLIEBEDICH13 发表于 2015-7-29 15:44
加速度的正负问题是自己程序里面定义的,以直立状态为零点,,向前为正,向后为负,至于角速度变化的问题,这个是原始数据还是滤波之后的数据?滤波用的什么???

通过卡尔曼滤波后的数据,角度Angle ,角速度Angle_dot 如下图。
举报
  • 截图20150729201127.png

Murphy

2015-7-29 21:06:00
引用: hs伊红美蓝 发表于 2015-7-29 20:11
通过卡尔曼滤波后的数据,角度Angle ,角速度Angle_dot 如下图。

说实话,卡尔曼滤波没用明白,后来就没用,直接用的PID和中值滤波,看着程序熟悉,但我也解释不清楚啊,而且我已经一年多没用了。。。
举报

黄山

2015-7-29 21:32:06
引用: ICHLIEBEDICH13 发表于 2015-7-29 21:06
说实话,卡尔曼滤波没用明白,后来就没用,直接用的PID和中值滤波,看着程序熟悉,但我也解释不清楚啊,而且我已经一年多没用了。。。

我也不明白原理,但只要会用就可以了。
举报

ptu33

2015-7-30 15:57:52
呃,只能来看看了,我才计划学习MPU6050的使用,正在找资料,楼主好好加油哈。
举报

newdavid.cool

2015-7-30 17:01:30
引用: hs伊红美蓝 发表于 2015-7-29 20:04
回答:1.直接读取寄存器,通过加速度计得到y轴角度,通过陀螺仪得到y轴角速度,再通过卡尔曼融合得到角度Angle,和角速度Angle_dot
         2. 手动旋转
         3.输出的只有通过卡尔曼滤波后的角度Angle,和角速度Angle_dot。(只是y轴上的) ...

我原来用的是DMP,但是没有出现过这种情况,我觉得先不要滤波,直接把数据读出来转换成浮点型看一下,如果还有错误,那看一下读的寄存器对不对,如果差别不大,那就说明是算法的问题。
举报

黄山

2015-7-30 17:31:43
引用: newdavid.cool 发表于 2015-7-30 17:01
我原来用的是DMP,但是没有出现过这种情况,我觉得先不要滤波,直接把数据读出来转换成浮点型看一下,如果还有错误,那看一下读的寄存器对不对,如果差别不大,那就说明是算法的问题。

按你说的方法重新试了一下,没有加卡尔曼滤波,果然这次没有出现上面的错误,不过这个滤波程序是网上用得很流行的按理说应该不会有问题的呀!
举报
  • 截图20150730172725.png

黄山

2015-8-2 17:05:59
引用: newdavid.cool 发表于 2015-7-29 13:37
那你再仔细看一下算法的各个参数是怎么回事,首先清楚各输入参数的具体含义,再逐个调试输入参数,确定参数的输入是正确的,如果这些都是对的,还出现问题,那就是算法本身的问题了。调算法的话就自己模拟数值进行验证。这一套走下来应该会发现问题所在。 ...

不好意思,这么久回复你,最近在忙另一件事,我按你的意见修改了卡尔曼滤波里面的参数,果然解决了问题,谢谢你了。
举报

黄山

2015-8-2 17:06:29
引用: newdavid.cool 发表于 2015-7-29 13:37
那你再仔细看一下算法的各个参数是怎么回事,首先清楚各输入参数的具体含义,再逐个调试输入参数,确定参数的输入是正确的,如果这些都是对的,还出现问题,那就是算法本身的问题了。调算法的话就自己模拟数值进行验证。这一套走下来应该会发现问题所在。 ...

不好意思,这么久回复你,最近在忙另一件事,我按你的意见修改了卡尔曼滤波里面的参数,果然解决了问题,谢谢你了。
举报

黄山

2015-8-2 17:07:28
引用: newdavid.cool 发表于 2015-7-29 13:37
那你再仔细看一下算法的各个参数是怎么回事,首先清楚各输入参数的具体含义,再逐个调试输入参数,确定参数的输入是正确的,如果这些都是对的,还出现问题,那就是算法本身的问题了。调算法的话就自己模拟数值进行验证。这一套走下来应该会发现问题所在。 ...

不好意思,这么久回复你,最近在忙另一件事,我按你的意见修改了卡尔曼滤波里面的参数,果然解决了问题,谢谢你了。
举报

黄山

2015-8-2 17:07:58
引用: newdavid.cool 发表于 2015-7-29 13:37
那你再仔细看一下算法的各个参数是怎么回事,首先清楚各输入参数的具体含义,再逐个调试输入参数,确定参数的输入是正确的,如果这些都是对的,还出现问题,那就是算法本身的问题了。调算法的话就自己模拟数值进行验证。这一套走下来应该会发现问题所在。 ...

不好意思,这么久回复你,最近在忙另一件事,我按你的意见修改了卡尔曼滤波里面的参数,果然解决了问题,谢谢你了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分