| 
 | 
6#
 
 
 樓主 |
發表於 2013-3-23 21:29:33
|
只看該作者
 
 
 
我在網上有看到關於卡爾曼濾波的資料。 
 
想請問 
 
以下這幾個值要怎麼得到啊?? 
譬如說: 
 
 
#include <math.h> 
 
class KalmanFilter 
{ 
   public: 
 
      KalmanFilter(double q,double r); 
      double Update(double); 
      double GetK(){return k;} 
 
   private: 
 
      double k; 
//kalman gain 
      double p; 
//estimation error cvariance 
      double q; 
//process noise cvariance 
      double r; 
//measurement noise covariance 
      double x; 
//value 
}; 
 
KalmanFilter::KalmanFilter(double q,double r):q(q),r(r),x(0.0) 
{ 
  p = sqrt(q * q + r * r); 
} 
 
double KalmanFilter::Update(double value) 
{ 
   p += q; 
   k = p / (p + r); 
   x += k * (value - x); 
   p *= (1 - k); 
 
   return x; 
} 
 
 
q是預測誤差 →請問怎麼"預測"??我在網路上都看到說要預測誤差值,但是我不太清楚它的意思,譬如陀螺儀如果放著不動時應該輸出0,但是確一直輸出5,那5不是就是誤差值嗎?也不需預測啊? 
 
r是感測器誤差 →為什麼有預測誤差和感測器誤差兩種誤差?? 
k是卡爾曼增益 →這是一個固定的數嗎?? 
x用來紀錄狀態值 
p直接取q與r的平方和開根號 →q與r是要加一起平方和開根號嗎?? |   
 
 
 
 |