完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
来来回回折腾了很久,一直没搞定姿态融合算法,算出来的欧拉角怎么都不对。
说明:我用的传感器是mpu9150,定义的板子的坐标是:x轴指向北,y轴指向东,z轴指向地。陀螺仪、加速度计和磁力计的轴向经过旋转都保持这个朝向。 问题:我用的是AHRSupdate这个程序,但是算出来的欧拉角只有Roll是对的,Yaw和Pitch都不对,其中,当我把Roll旋转+90度时,Yaw的数据是对的,但是Pitch的怎么都不对,举个栗子:板子水平放置的时候Pitch保持为0,板子x轴倾斜+60度左右并保持此姿态的时候,Pitch只是在正负20之间来回震荡几次就又回到0。 我程序如下: 先初始化四元数,其中init_ax/init_ay/init_az的单位是g,比如z轴和重力方向重合时的读数是1;init_mx/init_my/init_mz的单位就是磁力计输出的单位,未经过任何改变:
然后循环调用AHRSupdate()更新四元数,并用下面的公式结算欧拉角:
一直都找不到问题到底出在哪,感觉可能是我定义的坐标轴方向不能套用上面的公式来计算?可是为什么Roll的数据是对的呢? |
|
相关推荐
10个回答
|
|
初始角度是正確的嗎?
|
|
|
|
|
|
|
|
|
|
|
|
AHRSupdata是含电子罗盘的。 IMUupdata是不含电子罗盘的,我之前试过,好像也不行 |
|
|
|
看程序感觉好像是电子罗盘没有校准的原因
|
|
|
|
用不带电子罗盘的IMUupdate程序试了一下,结果如下: 1. Pitch和Roll数据都对,只不过Pitch到不了90度,最多也就正负80度,这个在我的程序里应该算正常。 2. Yaw完全不受控制,它表示自己很随意。。。。。想是多少就是多少,看了下规律,是在-180到+180之间快速递减或递增,不像别人四轴飘的那么慢。 我的电子罗盘没有校准,不校准的话确实会差很多吗?应该不会导致Yaw和Pitch的数据都不对,而只有Roll的数据对这种现象吧。 改天校准一下试试,下周一给出测试结果和校准方法,以便大家参考和指出错误。 |
|
|
|
1. Pitch和Roll数据都对,只不过Pitch到不了90度,最多也就正负80度,这个在我的程序里应该算正常。
》加速计和陀螺仪有校正过吗? 2. Yaw完全不受控制,它表示自己很随意。。。。。想是多少就是多少,看了下规律,是在-180到+180之间快速递减或递增,不像别人四轴飘的那么慢。 》大部分四轴上都是直接用PID的D控制器的( Yaw = Kd*Gyro_Z ), 所以不会飘得很严重 3. 我的电子罗盘没有校准,不校准的话确实会差很多吗? 》这个要看周围环境的磁场干扰大不大,若没有干扰,影响不大,否则就有影响 4. 应该不会导致Yaw和Pitch的数据都不对,而只有Roll的数据对这种现象吧 》IMUupdate 的方法并没有用到电子罗盘, 所以若理论正确, Pitch , Roll 的误差来源应该是加速计或陀螺仪 |
|
|
|
算法有这么简单吗
|
|
|
|
|
|
|
|
44669464994.7979676494964
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2005 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1858 浏览 3 评论
4442 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2007 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2513 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 02:55 , Processed in 0.575859 second(s), Total 61, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号