• 欢迎光临国盛科技!
  • 设为首页 设为首页 收藏 收藏本站
  • 首页
  • 业界聚焦
  • 互联网络
  • 国盛专题
  • 科技前沿
  • 风云人物
  • 媒体动态
  • 产业经济
  • 移动通信
  • 数码电子
  • 主页 > 数码电子 >
  • 关于stm32进行卡尔曼滤波制做均衡车的一些和理解转载于51黑电子

  • 发布时间:2019-09-10 13:52
  •   关于stm32进行卡尔曼滤波制做均衡车的一些和理解转载于51黑电子论坛

      关于卡尔曼滤波也是方才起头研究,很侥幸能和大师一路会商进修,新浪微博:的饕餮 但愿能和大师一路进修~~

      我们是操纵角速度传感器和加快度传感器丈量获得角度和角速度,可是因为车子是活动的,我们操纵加快度获得的角度并不完全准确,因为噪声干扰,我们对角速度传感器的丈量值也存正在思疑。于是我们就要进行滤波,通过两个传感器数值上的彼此关系来获得我们想要的成果。我们利用卡尔曼滤波器毗连这两个丈量值。

      假 设我们要研究的对象是一个房间的温度。按照你的经验判断,这个房间的温度是恒定的,也就是下一分钟的温度等于现正在这一分钟的温度(假设我们用一分钟来做时 间单元)。假设你对你的经验不是100%的相信,可能会有上下误差几度。我们把这些误差当作是高斯白噪声(White Gaussian Noise),也就是这些误差跟前后时间是没相关系的并且合适高斯分派(Gaussian Distribution)。别的,我们正在房间里放一个温度计,可是这个温度计也不精确的,丈量值会比现实值误差。我们也把这些误差当作是高斯白噪声。

      好了,现正在对于某一分钟我们有两个相关于该房间的温度值:你按照经验的预测值(系统的预测值)和温度计的值(丈量值)。下面我们要用这两个值连系他们各自的噪声来估算出房间的现实温度值。

      假 如我们要估算k时辰的是现实温度值。起首你要按照k-1时辰的温度值,来预测k时辰的温度。由于你相信温度是恒定的,所以你会获得k时辰的温度预测值是跟 k-1时辰一样的,假设是23度,同时该值的高斯噪声的误差是5度(5是如许获得的:若是k-1时辰估算出的最优温度值的误差是3,你对本人预测的不确定 度是4度,他们平方相加再开方,就是5)。然后,你从温度计那里获得了k时辰的温度值,假设是25度,同时该值的误差是4度。

      因为我们用 于估算k时辰的现实温度有两个温度值,别离是23度和25度。事实现实温度是几多呢?相信本人仍是相信温度计呢?事实相信谁多一点,我们能够用他们的 covariance来判断。由于Kg^2=5^2/(5^2+4^2),所以Kg=0.78,我们能够估算出k时辰的现实温度值是:23+0.78* (25-23)=24.56度。能够看出,由于温度计的covariance比力小(比力相信温度计),所以估算出的最优温度值方向温度计的值。

      现 正在我们曾经获得k时辰的最优温度值了,下一步就是要进入k+1时辰,进行新的最优估算。到现正在为止,仿佛还没看到什么自回归的工具呈现。对了,正在进入 k+1时辰之前,我们还要算出k时辰阿谁最优值(24.56度)的误差。算法如下:((1-Kg)*5^2)^0.5=2.35。这里的5就是的k时 刻你预测的阿谁23度温度值的误差,得出的2.35就是进入k+1时辰当前k时辰估算出的最优温度值的误差(对应于的3)。

      就是如许,卡尔曼滤波器就不竭的把covariance递归,从而估算出最优的温度值。他运转的很快,并且它只保留了上一时辰的covariance。的Kg,就是卡尔曼增益(Kalman Gain)。他能够随分歧的时辰而改变他本人的值,是不是很奇异!

      float Q_angle=0.001, Q_gyro=0.003, R_angle=0.5, dt=0.005;

      float q_bias, angle_err, PCt_0, PCt_1, E, K_0, K_1, t_0, t_1;

      //-------------------------------------------------------

      void Kalman_Filter(float angle_m,float gyro_m)

      Pdot[0]=Q_angle - P[0][1] - P[1][0];// Pk- 先验估量误差协方差的微分

      P[0][0] += Pdot[0] * dt;// Pk- 先验估量误差协方差微分的积分 = 先验估量误差协方差

      angle_dot = gyro_m-q_bias;//输出值(后验估量)的微分 = 角速度

      起首我们要操纵系统的过程模子,来预测下一形态的系统。假设现正在的系统形态是k,按照系统的模子,能够基于系统的上一形态而预测呈现正在形态:

      Pdot[0]=Q_angle - P[0][1] - P[1][0];// Pk- 先验估量误差协方差的微分

      P[0][0] += Pdot[0] * dt;// Pk- 先验估量误差协方差微分的积分 = 先验估量误差协方差

      到现正在为止,我们的系统成果曾经更新了,可是,对应于X(kk-1)的covariance还没更新。我们用P暗示covariance:

      积分后协方差就算出来了,同样留意也是P(kk-1)。具体怎样算~~~好吧我认可我线代没有学好~~~算了很久。。。。

      到现正在为止,我们曾经获得了k形态下最优的估算值X(kk)。可是为了要另卡尔曼滤波器不竭的运转下去曲到系统过程竣事,我们还要更新k形态下X(kk)的covariance:

      angle_dot = gyro_m-q_bias;//输出值(后验估量)的微分 = 角速度

      现正在我们有了现正在形态的预测成果,然后我们再收集现正在形态的丈量值。连系预测值和丈量值,我们能够获得现正在形态(k)的最优化估算值X(kk):

      X(kk)= X(kk-1)+Kg(k) (Z(k)-H X(kk-1)) ……… (3)

      察看一下K_1计较过程,再联系到协方差矩阵的性质就能够晓得为什么角速度误差量用P[1][0]算了~~

    上一篇:名表论坛—名表玩家的乐土
    下一篇:电子版书是什么意义
  • 首页 | 免责声明 | 业界聚焦 | 互联网络 | 国盛专题 | 科技前沿 | 风云人物 | 媒体动态 | 产业经济 | 移动通信 | 数码电子 |
  • 2008-2019 国盛科技 版权所有