提问:关于MPU6050加速度姿态解算
ww2023/01/11航空技术 IP:河南

想用arduino加MPU6050搞一个火箭飞控,具体就是用mpu 6050读取三轴的角速度和加速度,然后解算姿态,用卡尔曼滤波融合,再用舵机输出,但是在研究加速度解算姿态时遇到了问题。

首先先说一下加速度解算姿态的原理,在传感器水平放置且静止不动的条件下,总会有一个重力加速度指向下,与传感器z轴方向重合。当传感器不是水平放置时,重力加速度方向仍向下,但不与传感器z轴方向重合,这时,在传感器xyz三轴上会有重力加速度的分量

IMG_20230111_212841_edit_900403089837608.jpg

(差不多就是这个样子)

然后再根据旋转矩阵解方程组

IMG_20230111_214551.jpg

这个矩阵是这么来的

IMG_20230111_214100.jpg IMG_20230111_214052.jpg IMG_20230111_214046.jpg

然后就可以用三轴加速度的数据解算角度了。但是这里有一个问题,他这个解算加速度的原理是在大地坐标系上,加速度的x和y方向的分量均为零(gx,gy=0),但是在火箭上,显然这一条件是难以实现的,所以这样解算似乎并不十分准确,我在网上找关于用mpu6050写无人机飞控的文章也有提到这一点,比如说加速度计在动态条件下的准确度不高,或者说加速度解算的时候需要忽略运动之类的。无人机的飞控或许可以做到忽略其他加速度,但是火箭的显然不行啊,我刚刚又用程序试了一下mpu 6050有向上加速度时的数据(模拟火箭发射),发现有较大的偏差

IMG_20230111_215901.jpg

另附上程序

attachment icon huojianzuizhong.ino 2.64KB INO 29次下载

请教一下各位大佬怎么解决?是要调整滤波器?还是说要加入新的模块?感激不尽!

来自:航空航天 / 航空技术特殊话题:提问/求助
10
1
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
ww 作者
1年3个月前 IP:河南
914180

还是说我程序里的卡尔曼滤波参数有问题?其实是可以直接用滤波算法用陀螺仪的动态稳定来弥补加速度计的静态缺陷的?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
WernerPleischner
1年3个月前 修改于 1年3个月前 IP:广东
914181

飞起来之后用陀螺仪数据积分就行了,几分钟漂移不会很大的。或者加入三轴磁场/GPS/气压之类更多数据源来融合。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ww作者
1年3个月前 IP:河南
914184

所以说要弃用加速度吗?我倒是想过只用陀螺仪积分,应该是可行的,等考完试试试。航电上打算加气压计磁力计和GPS,气压计算高度可以和mpu6050还有GPS融合一波,但是磁力计好像只能解算偏航角,这样的话对于pitch和roll角就只有陀螺仪的数据了,希望漂移别太大吧


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
sd196821
1年3个月前 IP:重庆
914192

我记得6050里陀螺还是加速度计的z轴数据可靠性极低,照楼主的结果来看是加计

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
量子隧道
1年3个月前 IP:广东
914194

6050在加速度计量程16G。在火箭加速度下会饱和,其积分出来的速度,或二阶积分出来的位置,都会误差极大,尤其是位置。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ww作者
1年3个月前 IP:河南
914203
引用量子隧道发表于5楼的内容
6050在加速度计量程16G。在火箭加速度下会饱和,其积分出来的速度,或二阶积分出来的位置,都会误差...

我这个用openrocket模拟的加速度最大是6g左右,应该不会超量程,以后可能会设计速度更高的再考虑这个因素。所以加速度计好像在火箭上的准确度不高是吗?那我就不加加速度计数据了吧

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ww作者
1年3个月前 IP:中国
914232

刚刚又试了一下只有陀螺仪积分算角度,5分钟漂移大概6度,不算多,我就是怕上pid控制之后会偏的多一些,只用陀螺仪积分应该也勉强能用。


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ww作者
1年2个月前 IP:河南
915355
引用量子隧道发表于5楼的内容
6050在加速度计量程16G。在火箭加速度下会饱和,其积分出来的速度,或二阶积分出来的位置,都会误差...

确实误差很大,我刚才试了一下二阶积分位置,不到十分钟已经飘出1000多米了,就算跟气压计数据融合也不好使了

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
東亜重工
1年2个月前 IP:美国
917036

或许有需要可以试试这个库,jrowberg大佬写的,内置了卡尔曼滤波器和坐标转换,自己的代码用的就是这个,感觉还挺准的

XXXXXXXXXXXXXXXXXX/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050

引用
评论
2
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
Vanguard_Marx
1年1个月前 IP:福建
917322

mpu6050会有抖动偏移,用卡尔曼滤波算法

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}