打印

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

[复制链接]
楼主: zkcaptain
手机看帖
扫描二维码
随时随地手机跟帖
321
zkcaptain|  楼主 | 2014-12-22 17:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
whoyzf 发表于 2014-12-22 16:55
楼主请问下,你的代码中:初始化欧拉角和四元数解算欧拉角前的正负号为什么是不一样的,以及这个正负号的确 ...

时间有点久了,自己写的代码也得看半天才能看明白。。。

应该是yaw、roll和pitch这三个参数的正方向是你自己规定的,定好以后,你运行代码,看实际输出的yaw、pitch、roll的正负与你定义的正方向是否一致,如果不一致则在公式前面加负号即可。该正负号不影响最后结果,只跟你自己定义的正方向有关。

对于init_Roll、init_yaw、init_pitch,这只是你先假定你的飞机静止时处于一个什么姿态,然后结合你定义的正方向,来写公式就行。比如假定飞机静止时init_Roll、init_yaw、init_pitch都比0点稍微偏移了一些。

结合我代码中的所有注释还有帖子内容多看看吧

使用特权

评论回复
322
whoyzf| | 2014-12-22 20:35 | 只看该作者
zkcaptain 发表于 2014-12-22 17:01
那个公式都是些基本的数**算,只需要空间想象能力,因为当机体放在地上静止时,你不能保证机体与地平面是 ...

多谢你的回答。我还有点疑惑关于init_Pitch,为什么不是init_Pitch = asin(ay /az)而是
init_Pitch = asin(ay / 1)。这个1g重力矢量不要投影到yoz平面上吗?(init_Roll 是投影到了X0Z平面上可以理解。init_Roll = -atan2(init_ax, init_az);  )

使用特权

评论回复
323
qq18202743030| | 2014-12-28 13:18 | 只看该作者
楼主 ,请问AHRSupdate算法中的Kp和Ki怎么调,调了很长时间,但是yaw交还是会过冲,不要知道怎么回事,目前kp是2.9 ki是0.00001

使用特权

评论回复
324
zkcaptain|  楼主 | 2014-12-29 12:29 | 只看该作者
qq18202743030 发表于 2014-12-28 13:18
楼主 ,请问AHRSupdate算法中的Kp和Ki怎么调,调了很长时间,但是yaw交还是会过冲,不要知道怎么回事,目前 ...

减小P试试,P太大系统容易震荡,引起过冲
I可以放在0.00x的数量级上调一调

使用特权

评论回复
325
qq18202743030| | 2014-12-30 01:29 | 只看该作者
zkcaptain 发表于 2014-12-29 12:29
减小P试试,P太大系统容易震荡,引起过冲
I可以放在0.00x的数量级上调一调 ...

谢谢楼主指导,原先是因为我把传感器放在了桌子上,桌子下面有金属,对他干扰很大,后来把传感器抬高就好多了。但是现在还有几个小问题需要麻烦你一下1,每次上电结算姿态yaw角都会从初始值减小1度左右,2,每次转动传感器然后停止,如果是向角度减小的方向转动停止后yaw就会继续减小0.5~1度,3,每次pitch或者roll角增加或者减小10度左右yaw也会变1度左右。请问以上三种情况算不算正常,如果不正常应该怎么调,求楼主解读一下

使用特权

评论回复
326
zkcaptain|  楼主 | 2014-12-30 12:22 | 只看该作者
磁场干扰是一方面,
是否使用精密转台来进行旋转的?要是用手来旋转,那么你这些误差都不能算是误差。就按正常的算吧

使用特权

评论回复
327
qq18202743030| | 2014-12-30 12:34 | 只看该作者
zkcaptain 发表于 2014-12-30 12:22
磁场干扰是一方面,
是否使用精密转台来进行旋转的?要是用手来旋转,那么你这些误差都不能算是误差。就按 ...

谢谢楼主耐心解答,我用手调的。终于可以用这个程序了飞了,原先都是用的DMP

使用特权

评论回复
328
fairlyme| | 2014-12-30 19:58 | 只看该作者
lz 我想问问 传感器是怎么校准的 我才做到传感器校准 嗯....  才第一个 坑爹的HMC5883L  老板给我的文档是错的 被弄的要死要活的..

使用特权

评论回复
329
zkcaptain|  楼主 | 2014-12-31 15:24 | 只看该作者
fairlyme 发表于 2014-12-30 19:58
lz 我想问问 传感器是怎么校准的 我才做到传感器校准 嗯....  才第一个 坑爹的HMC5883L  老板给我的文档是 ...

一般3轴的传感器有2个误差:
1.单一轴的零点误差
2.正交轴的灵敏度误差

理想中,传感器的数值分布应当是一个圆球,而没校准过的传感器的数值分布是一个椭球,校准的目的就是将这个椭球校准成圆球,方法就是消除1和2这两个误差,具体公式可以去一些著名的传感器公司官网看看,或者百度,或者参考我代码中的方法。

校准也分现场校准和离线校准,比如磁力计和加速度计,可能你在南半球校准后,拿到北半球如果不校准就会发现飞行有偏角。因为南半球和北半球的磁场分布不一定一样,重力加速度计也不一定一样。

使用特权

评论回复
330
龙锐陈| | 2015-1-1 21:23 | 只看该作者
牛X

使用特权

评论回复
331
988810233| | 2015-1-24 16:15 | 只看该作者
看了楼主的帖子受益匪浅,不过我还是想知道  init_Yaw   = -atan2(init_mx*cos(init_Roll) + init_my*sin(init_Roll)*sin(init_Pitch) + init_mz*sin(init_Roll)*cos(init_Pitch), init_my*cos(init_Pitch) - init_mz*sin(init_Pitch));  这句是怎么来的, 公式的依据是什么?如果楼主有PDF的话,麻烦楼主共享一下,谢谢!

使用特权

评论回复
332
zkcaptain|  楼主 | 2015-1-26 09:50 | 只看该作者
988810233 发表于 2015-1-24 16:15
看了楼主的帖子受益匪浅,不过我还是想知道  init_Yaw   = -atan2(init_mx*cos(init_Roll) + init_my*sin(i ...




直接套公式Equation1和Equation2是不行的,必须要根据自己情况修改公式,或者自己推导公式。
基本的就是Equation 1。

使用特权

评论回复
333
988810233| | 2015-1-29 08:25 | 只看该作者
非常感谢!

使用特权

评论回复
334
laogong5894| | 2015-2-6 11:46 | 只看该作者

您好,能参考下你的9150 的程序吗?
我的也出现
mpu initialization error.....

这个问题了,而且调I2C延迟也没解决。

使用特权

评论回复
335
laogong5894| | 2015-2-9 11:19 | 只看该作者
zkcaptain 发表于 2015-1-26 09:50
直接套公式Equation1和Equation2是不行的,必须要根据自己情况修改公式,或者自己推导公式。
基本的就 ...

请问这几张图出自哪一本PDF呢?我上网下一下~
谢谢楼主

使用特权

评论回复
336
zhangxuefei| | 2015-2-11 10:28 | 只看该作者
我用的MPU6050+HMC5883L做姿态采集,不做飞行器,卡尔曼滤波,目前还没做完,谢谢您的分享,学习了

使用特权

评论回复
337
dongchenyu163| | 2015-2-11 10:47 | 只看该作者
如此详细的教程,马克一下。

使用特权

评论回复
338
JasonLee98612| | 2015-2-11 16:26 | 只看该作者
看着都醉了

使用特权

评论回复
339
whoyzf| | 2015-3-20 22:03 | 只看该作者
本帖最后由 whoyzf 于 2015-3-20 22:22 编辑

楼主你好,我想问下,在邓正隆书中的两个方向余弦函数式7.2.1 和式1.4.24。他们的旋转顺序都一样,为什么式子相差这么大?哦,不好意思。看错了,旋转顺序是不同的。:handshake7.2.1是Z-Y-X,而1.4.24是Z-X-Y。

使用特权

评论回复
340
whoyzf| | 2015-3-20 23:20 | 只看该作者
本帖最后由 whoyzf 于 2015-3-20 23:35 编辑
zkcaptain 发表于 2015-1-26 09:50
直接套公式Equation1和Equation2是不行的,必须要根据自己情况修改公式,或者自己推导公式。
基本的就 ...

这初始化的公式,我觉得用方向余弦矩阵来推导,更容易理解一点。求初始的俯仰角和翻滚角时,用n系(地球坐标系)的归一化的重力向量【0 0 1】,旋转至b系(机体坐标系),再与加速度计测得的值进行比较来求出,就可求出的初始俯仰角和翻滚角。
对于偏航角,类似地先将测量值从b系转到n系上,再求解反正切。
但是,我看您的程序中,初始化四元数的函数里面,没有对加计和磁力计测出的值归一化,请问是不是有点问题?此外我看有的文献上的公式也有归一化的。

使用特权

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

本版积分规则