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