中易网

谁能给我讲解一下卡尔曼滤波,我最近在用mpu6050,把陀螺仪和加速度的值通过卡尔曼滤波融合。求C程序!

答案:2  悬赏:70  
解决时间 2021-01-19 17:20
谁能给我讲解一下卡尔曼滤波,我最近在用mpu6050,把陀螺仪和加速度的值通过卡尔曼滤波融合。求C程序!
最佳答案
给你arduino的卡尔曼滤波融合算法,非原创,我只是封装了算法。
另外你这么难的问题应该给点分才厚道啊!

H文件:


#ifndef KalmanFilter_h
#define KalmanFilter_h

#include

class KalmanFilter
{
public:
KalmanFilter();


void getValue(double angle_m, double gyro_m, double dt, double &outAngle, double &outAngleDot);

private:
double C_0, Q_angle, Q_gyro, R_angle;
double q_bias, angle_err, PCt_0, PCt_1, E, K_0, K_1, t_0, t_1;
double angle, angle_dot;
double P[2][2];
double Pdot[4];
};

CPP文件:


#include "KalmanFilter.h"

KalmanFilter::KalmanFilter()
{
C_0 = 1.0f;
Q_angle = 0.001f;
Q_gyro = 0.003f;
R_angle = 0.5f;
q_bias = angle_err = PCt_0 = PCt_1 = E = K_0 = K_1 = t_0 = t_1 = 0.0f;
angle = angle_dot = 0.0f;
P[0][0] = 1.0f;
P[0][1] = 0.0f;
P[1][0] = 0.0f;
P[1][1] = 1.0f;
Pdot[0] = 0.0f;
Pdot[1] = 0.0f;
Pdot[2] = 0.0f;
Pdot[3] = 0.0f;
}

voidKalmanFilter::getValue(double angle_m, double gyro_m, double dt, double &outAngle, double &outAngleDot)
{


angle+=(gyro_m-q_bias) * dt;
angle_err = angle_m - angle;
Pdot[0] = Q_angle - P[0][1] - P[1][0];
Pdot[1] = -P[1][1];
Pdot[2] = -P[1][1];
Pdot[3] = Q_gyro;
P[0][0] += Pdot[0] * dt;
P[0][1] += Pdot[1] * dt;
P[1][0] += Pdot[2] * dt;
P[1][1] += Pdot[3] * dt;
PCt_0 = C_0 * P[0][0];
PCt_1 = C_0 * P[1][0];
E = R_angle + C_0 * PCt_0;
K_0 = PCt_0 / E;
K_1 = PCt_1 / E;
t_0 = PCt_0;
t_1 = C_0 * P[0][1];
P[0][0] -= K_0 * t_0;
P[0][1] -= K_0 * t_1;
P[1][0] -= K_1 * t_0;
P[1][1] -= K_1 * t_1;
angle += K_0 * angle_err;
q_bias += K_1 * angle_err;
angle_dot = gyro_m-q_bias;

outAngle = angle;
outAngleDot = angle_dot;

}
#endif
全部回答
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
手感和触摸屏有什么区别?
高考失利 被逼当兵 担心考不上军校回来又没学
力佳4105气门摇背上机油少没劲,润滑不了摇臂
刘焉在三国演义中有什么典故???
在五类ig发挥局部粘膜免疫作用的是
染庄小学怎么去啊,我要去那办事
(-5/12)x8/15÷11/2x(-21/4)
全新胜达这个建是干什么的啊??p上面的那个
用“沉默不语”造句
1986属虎生日2.28
无意在微博看到一部漫画片段,叫(办公室的死
大家有没有发现一个问题,生的猪肉,肥肉和瘦
过去佛、现世佛和未来佛的资料在哪能找到?
一个男人不喜欢你,却一直观察你的动态?Why
700除以多少能除清
推荐资讯
you can be well this evening
有人找你 说给做免费纹眉,你敢去吗?
保定二环以内的新民居靠谱的有么!
3.6÷0.5等于36÷5等于7余一对不对
男孩2018年6月4号16点14分出生,取名周成霖可
什么蘑菇,
根据2010年8月1日文化部推行的《网络游戏管理
谁借我个CSOL雷神鹰眼号 最好是电1
果粉们iPhone8到底定没定
小孩胳膊上出的这是什么
二手房房龄30年动迁后房龄怎么算
s cute438演员叫什么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?