|  | 
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是要加一起平方和開根號嗎??
 | 
 |