陀螺仪+加速度计卡尔曼.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
陀螺仪加速度计卡尔曼

//float gyro_m:陀螺仪测得的量(角速度) //float incAngle:加计测得的角度值 #define dt 0.0015//卡尔曼滤波采样频率 #define R_angle 0.69 //测量噪声的协方差(即是测量偏差) #define Q_angle 0.0001//过程噪声的协方差 #define Q_gyro 0.0003 //过程噪声的协方差 过程噪声协方差为一个一行两列矩阵 float kalmanUpdate(const float gyro_m,const float incAngle) { float K_0;//含有卡尔曼增益的另外一个函数,用于计算最优估计值 float K_1;//含有卡尔曼增益的函数,用于计算最优估计值的偏差 float Y_0; float Y_1 float Rate;//去除偏差后的角速度 float Pdot[4];//过程协方差矩阵的微分矩阵 float angle_err;//角度偏量 float E;//计算的过程量 static float angle = 0; //下时刻最优估计值角度 static float q_bias = 0; //陀螺仪的偏差 static float P[2][2] = {{ 1, 0 }, { 0, 1 }};//过程协方差矩阵 Rate = gyro_m - q_bias; //计算过程协方差矩阵的微分矩阵 Pdot[0] = Q_angle - P[0][1] - P[1][0];//?????? Pdot[1] = - P[1][1]; Pdot[2] = - P[1][1]; Pdot[3] = Q_gyro;//?????? angle += Rate * dt; //角速度积分得出角度 P[0][0] += Pdot[0] * dt; //计算协方差矩阵 P[0][1] += Pdot[1] * dt; P[1][0] += Pdot[2] * dt; P[1][1] += Pdot[3] * dt; angle_err = incAngle - angle; //计算角度偏差 E = R_angle + P[0][0]; K_0 = P[0][0] / E; //计算卡尔曼增益 K_1 = P[1][0] / E; Y_0 = P[0][0]; Y_1 = P[0][1]; P[0][0] -= K_0 * Y_0; //跟新协方差矩阵 P[0][1] -= K_0 * Y_1; P[1][0] -= K_1 * Y_0; P[1][1] -= K_1 * Y_1; angle += K_0 * angle_err; //给出最优估计值 q_bias += K_1 * angle_err;//跟新最优估计值偏差 return angle;}?加速度模块角度计算: ? ??如果传感器 x 轴朝下, y 轴朝前 ? ??那竖直方向弧度计算公式为: angle = atan2(y, z) ? //结果以弧度表示并介于 -pi 到 pi 之间(不包括 -pi) ? ??如果要换算成具体角度: ? ? angle = atan2(y, z) * (180/3.14)? ? ? ??陀螺仪角度计算: ? ??式中angle(n)为陀螺仪采样到第n次的角度值; ? ??angle(n-1)为陀螺仪第n-1次采样时的角度值; ? ??gyron为陀螺仪的第n次采样得到的瞬时角速率值; ? ??dt为运行一遍所用时间;? ?? ? ? ? angle_n += gy

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档