一个基于STM32F429的姿态检测系统,也就是俗称的AHRS,被很多人用来做四轴飞行器的,不过本人对四轴飞行器不是很感兴趣,主要用来检测人体姿态和仿生控制的。采用MPU6050进行数据融合,得到空间姿态信息,从而完成手势检测,动作检测,人体姿态检测。基于MEMS的三轴陀螺仪,加速度计。目前AHRS内部采用的多传感器数据融合进行的航姿解算单元为卡尔曼滤波器。
特点:高精度360 度全方位位置姿态输出,数据融合算法快速动态响应与长时间稳定性(无漂移,无积累误差)
输出:三维全姿态数据(四元数 / 欧拉角 / 旋转矩阵/原始数据)三维加速度 / 三维角速度
完整源码:
空间姿态检测.zip
(611.82 KB, 售价: 3 E币)
简介:
1) 如何计算积分
对角速度积分得到角度,但是会累积误差,dt为积分时间s秒,最好放在中断运行.中断每隔
dt秒进入一次中断并进行计算,必须确保在1个中断周期内能够完成全部计算.
Example:
Axis.GyroY = getGyroY(); //获取Y轴角速度,单位为度
Angle += Axis.GyroY * dt; //离散信号的积分即为求黎曼和.
2) 互补滤波器
原理是取当前倾角和加速度,做差获得倾角差值并进行放大,然后与陀螺仪角速度
叠加后再积分,从而使倾角跟踪为加速度获得的角度.
2为放大倍数,可调节补偿度;0.01为系统周期10ms.
Example:
FilterAngle = FilterAngle + (((Gesture.Angle_FY - FilterAngle)*2 + Axis.GyroY)*0.01);
3) 卡尔曼滤波器
原理请百度
Example:
Kalman_Filter(Gesture.Angle_FY,Axis.GyroY,&FilterAngle);
4) AHRS数据融合
通过四元数矩阵运算把加速度计和陀螺仪的数据进行融合计算出欧拉角.
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|