楼主: zkcaptain
收起左侧

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

[复制链接]
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-2-12 14:00 | 显示全部楼层 |返回版面
本帖最后由 zkcaptain 于 2014-2-12 14:05 编辑
wuzhiliang1234 发表于 2014-2-12 10:28
我用的mpu6050没有磁力计,以下是我向上抬起mpu6050,理想的结果是只有pitch从0°~90°增长,但是在pitch ...

上面我回复过你了啊,这是欧拉角的奇异点,本来就会出现你说这个的情况,除非做过全姿态欧拉角的处理,不然谁都会有这种情况发生,正常现象,你百度一下“万向节死锁”或者“欧拉角奇异点”

评分

参与人数 1威望 +1 收起 理由
wuzhiliang1234 + 1 赞一个!

1

主题

20

帖子

60

积分

初级技术员

发表于 2014-2-12 14:46 | 显示全部楼层 |返回版面
zkcaptain 发表于 2014-2-12 14:00
上面我回复过你了啊,这是欧拉角的奇异点,本来就会出现你说这个的情况,除非做过全姿态欧拉角的处理,不 ...

哦,我以为只是在90°这个值的时候出现数据异常,谢谢楼主!因为我做的东西,必须要求0~90°pitch和yaw的值都可用。
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-2-12 15:08 | 显示全部楼层 |返回版面
本帖最后由 zkcaptain 于 2014-2-12 15:10 编辑
wuzhiliang1234 发表于 2014-2-12 14:46
哦,我以为只是在90°这个值的时候出现数据异常,谢谢楼主!因为我做的东西,必须要求0~90°pitch和yaw的 ...

理论上来说,如果加速度计校准的很好,没有零点漂移,每一个轴在正负1g下的绝对值都相等,每个轴之间的灵敏度又都一样,那么当pitch非常接近+90度或者-90度时,才会出现欧拉角的奇异点,像你说的在pitch=80度以上时就出现了这个奇异点,那么应该就是你的加速度计校准的不好,或者芯片焊接位置不准确也会造成加速度计读数有误差。

如果你要求pitch要能达到90度,那么就要对欧拉角进行全角度处理。这个我也不是很清楚

1

主题

20

帖子

60

积分

初级技术员

发表于 2014-2-12 15:48 | 显示全部楼层 |返回版面
zkcaptain 发表于 2014-2-12 15:08
理论上来说,如果加速度计校准的很好,没有零点漂移,每一个轴在正负1g下的绝对值都相等,每个轴之间的灵 ...

嗯,我试试你说的方法,非常感谢楼主指点迷津

11

主题

129

帖子

393

积分

资深技术员

发表于 2014-2-12 22:25 | 显示全部楼层 |返回版面
关注楼主更新

0

主题

1

帖子

3

积分

实习生

发表于 2014-2-13 13:22 | 显示全部楼层 |返回版面
小白请教,欧拉角转四元数的时候,那个角度值为什么要除2的。
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-2-13 15:45 | 显示全部楼层 |返回版面
天毅破天 发表于 2014-2-13 13:22
小白请教,欧拉角转四元数的时候,那个角度值为什么要除2的。

公式推导来的,固定系数

还有,那个单位是弧度,不是角度

1

主题

20

帖子

60

积分

初级技术员

发表于 2014-2-20 11:13 | 显示全部楼层 |返回版面
wuzhiliang1234 发表于 2014-2-12 15:48
嗯,我试试你说的方法,非常感谢楼主指点迷津

楼主,你所用的带磁力计的传感器,通过
        Yaw   = -(0.9 * (-Yaw + init_gz*2*halfT) + 5.73 * atan2(init_mx*cos(Roll) + init_my*sin(Roll)*sin(Pitch) + init_mz*sin(Roll)*cos(Pitch), init_my*cos(Pitch) - init_mz*sin(Pitch)));
求出的yaw角度,在pitch 0~+90或-90任何角度都是很准确的吗?
我用的传感器没有带磁力计的。

1

主题

20

帖子

60

积分

初级技术员

发表于 2014-2-20 15:02 | 显示全部楼层 |返回版面
楼主,你所用的带磁力计的传感器,通过
        Yaw   = -(0.9 * (-Yaw + init_gz*2*halfT) + 5.73 * atan2(init_mx*cos(Roll) + init_my*sin(Roll)*sin(Pitch) + init_mz*sin(Roll)*cos(Pitch), init_my*cos(Pitch) - init_mz*sin(Pitch)));
求出的yaw角度,在pitch 0~+90或-90任何角度都是很准确的吗?
我用的传感器没有带磁力计的。
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-2-20 16:17 | 显示全部楼层 |返回版面
本帖最后由 zkcaptain 于 2014-2-20 16:18 编辑
wuzhiliang1234 发表于 2014-2-20 15:02
楼主,你所用的带磁力计的传感器,通过
        Yaw   = -(0.9 * (-Yaw + init_gz*2*halfT) + 5.73 * atan2 ...

0~90度不敢保证,至少pitch 0~+-80度时,yaw都是准确的
   
一方面pitch也到不了90度,这是奇点
另一方面,我也没打算让pitch到90度,会限制到正负20度或30度之内

磁力计很容易受到干扰,跟所在环境也有关系

1

主题

20

帖子

60

积分

初级技术员

发表于 2014-2-21 10:53 | 显示全部楼层 |返回版面
zkcaptain 发表于 2014-2-20 16:17
0~90度不敢保证,至少pitch 0~+-80度时,yaw都是准确的
   
一方面pitch也到不了90度,这是奇点

我必须解决奇点问题和Yaw值80°以上不准确问题,不然产品达不到客户要求。既然磁力计影响大,那就不用了,我是看磁力计能解决这方面问题不。非常感谢楼主……

2

主题

117

帖子

357

积分

资深技术员

发表于 2014-2-22 14:17 | 显示全部楼层 |返回版面
赞一下子

0

主题

2

帖子

6

积分

实习生

发表于 2014-2-25 22:00 | 显示全部楼层 |返回版面
UP主,MPU9150的dmp是输出欧拉角的变化量还是相对初始定义坐标系的欧拉角?
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-2-26 09:10 | 显示全部楼层 |返回版面
orangebe 发表于 2014-2-25 22:00
UP主,MPU9150的dmp是输出欧拉角的变化量还是相对初始定义坐标系的欧拉角?

dmp只能输出四元数,需要自己转欧拉角,转化后的欧拉角是相对自定义坐标系的角度

0

主题

2

帖子

6

积分

实习生

发表于 2014-2-27 23:02 | 显示全部楼层 |返回版面
zkcaptain 发表于 2014-2-26 09:10
dmp只能输出四元数,需要自己转欧拉角,转化后的欧拉角是相对自定义坐标系的角度 ...

谢谢Up主解答,小白初学,请多指教!
     

6

主题

78

帖子

244

积分

中级技术员

发表于 2014-3-6 08:49 | 显示全部楼层 |返回版面
zkcaptain 发表于 2013-9-2 18:04
上位机别人做的都很好了,我想的是先用串口助手看看数据,行了就拿别人的上位机来看漂亮的效果。。 ...

楼主,你的MPU6050的数据西安传给stm32芯片,芯片处理后再通过串口传给PC机吗 ?
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-3-6 09:26 | 显示全部楼层 |返回版面
bennik 发表于 2014-3-6 08:49
楼主,你的MPU6050的数据西安传给stm32芯片,芯片处理后再通过串口传给PC机吗 ? ...

评分

参与人数 1威望 +1 收起 理由
bennik + 1

0

主题

26

帖子

78

积分

初级技术员

发表于 2014-3-6 12:12 | 显示全部楼层 |返回版面
我前几天成功得到欧拉角,9轴的融合,使用Imu算法。我使用dmp和在初始位置给了一个与标准值差的一个偏移值校准。零点校准和零点漂移校准都在程序中对加速剂校准了,但数据与实际的有点偏差。比如Roll在垂直时显示60-80之间,经过几次运动才有80多的参数。,还有就是芯片在手上的时候,手轻微的抖动也影响数据的变化,我想微小的抖动可以忽略,这怎么设置呢?
     

64

主题

255

帖子

340

积分

禁止发言

 楼主| 发表于 2014-3-6 13:15 | 显示全部楼层 |返回版面
baoliguo 发表于 2014-3-6 12:12
我前几天成功得到欧拉角,9轴的融合,使用Imu算法。我使用dmp和在初始位置给了一个与标准值差的一个偏移值 ...

你看看你的加速度计z轴指天时数据是多少?z轴指地时数据是多少?
同理x,y轴

去抖动,一个是用软件滤波,另一个试试设置一下传感器的低通滤波
过分的滤波会产生滞后
     

6

主题

78

帖子

244

积分

中级技术员

发表于 2014-3-6 16:19 | 显示全部楼层 |返回版面
zkcaptain 发表于 2014-3-6 09:26

谢谢楼主,那么发送数据的格式(协议)都是固定死的?
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

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