6174浏览
查看: 6174|回复: 2

[已解决] 卡尔曼 陀螺仪、倾角传感器融合 C代码 一段语句看不懂

[复制链接]
本帖最后由 Ricky 于 2014-5-8 14:10 编辑
  1. void stateUpdate(const float q_m){
  2.         float q;
  3.         float Pdot[4];
  4.         /* Unbias our gyro */
  5.         q = q_m - q_bias;
  6.         /*
  7.          * Compute the derivative of the covariance matrix
  8.          * (equation 22-1)
  9.          *        Pdot = A*P + P*A' + Q //????????????
  10.          *
  11.          */
  12.         Pdot[0] = Q_angle - P[0][1] - P[1][0];        /* 0,0 */
  13.         Pdot[1] = - P[1][1];                        /* 0,1 */
  14.         Pdot[2] = - P[1][1];                         /* 1,0 */
  15.         Pdot[3] = Q_gyro;                        /* 1,1 */
  16.         /* Store our unbias gyro estimate */
  17.         rate = q;
  18.         /*
  19.          * Update our angle estimate
  20.          * angle += angle_dot * dt
  21.          *       += (gyro - gyro_bias) * dt
  22.          *       += q * dt
  23.          */
  24.         angle += q * dt;
  25.         /* Update the covariance matrix */
  26.         P[0][0] += Pdot[0] * dt;
  27.         P[0][1] += Pdot[1] * dt;
  28.         P[1][0] += Pdot[2] * dt;
  29.         P[1][1] += Pdot[3] * dt;
  30. }
复制代码


上面一串问号开始到最后,不太懂。

卡尔曼 陀螺仪、倾角传感器融合 C代码 一段语句看不懂图1

卡尔曼公式 (原文件名:QQ截图未命名4.png)
不是应该向上边1.10式那样么,那样直接就能算出协方差啊,怎么程序中还要先算出Pdot = A*P + P*A' + Q ,再P[0][0] += Pdot[0] * dt;来更新协方差?angle += q * dt;中的dt是积分求角度,可P[0][0] += Pdot[0] * dt;不知道怎么理解了。P.S.从“(equation 22-1)” 看出这个程序应该出自哪篇文章,找了好久没找到,谁知道发一下。谢啦!

lauren  高级技师

发表于 2014-5-7 20:26:50

我说,用卡尔曼滤波,看懂太累了。不如知道导入哪几个量之后输出啥近似实际值=。=
回复

使用道具 举报

曹惊博  学徒

发表于 2014-10-19 19:36:03

呵呵,对我帮助很大
:lol:lol:lol:lol:lol:lol:lol
:D:D:D:D:D:D:D:D:D
;P;P;P;P;P;P;P;P;P
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail