|
@@ -12,7 +12,7 @@ namespace bbiwarg.Utility
|
|
|
class Kalman2DPositionFilter
|
|
|
{
|
|
|
private Kalman kalman;
|
|
|
- private float measurementNoiseFactor, processNoiseFactor;
|
|
|
+ private float mXX, mXY, mYY, processNoiseFactor;
|
|
|
private float fps;
|
|
|
|
|
|
public bool Initialized { get; private set; }
|
|
@@ -24,9 +24,11 @@ namespace bbiwarg.Utility
|
|
|
// v_y: velocity in y direction
|
|
|
// a_x: acceleration in x direction
|
|
|
// a_y: acceleration in y direction
|
|
|
- public Kalman2DPositionFilter(float measurementNoiseFactor = 1.0e-1f, float processNoiseFactor = 1.0e-4f, int fps = 30)
|
|
|
+ public Kalman2DPositionFilter(float mXX, float mXY, float mYY, float processNoiseFactor = 1.0e-4f, int fps = 30)
|
|
|
{
|
|
|
- this.measurementNoiseFactor = measurementNoiseFactor;
|
|
|
+ this.mXX = mXX;
|
|
|
+ this.mXY = mXY;
|
|
|
+ this.mYY = mYY;
|
|
|
this.processNoiseFactor = processNoiseFactor;
|
|
|
this.fps = fps;
|
|
|
reset();
|
|
@@ -59,7 +61,11 @@ namespace bbiwarg.Utility
|
|
|
|
|
|
// measurement noise covariance matrix
|
|
|
Matrix<float> measurementNoiseCovarianceMatrix = new Matrix<float>(2, 2);
|
|
|
- measurementNoiseCovarianceMatrix.SetIdentity(new MCvScalar(measurementNoiseFactor));
|
|
|
+
|
|
|
+ measurementNoiseCovarianceMatrix[0, 0] = mXX;
|
|
|
+ measurementNoiseCovarianceMatrix[0, 1] = measurementNoiseCovarianceMatrix[1, 0] = mXY;
|
|
|
+ measurementNoiseCovarianceMatrix[1, 1] = mYY;
|
|
|
+
|
|
|
kalman.MeasurementNoiseCovariance = measurementNoiseCovarianceMatrix;
|
|
|
|
|
|
// process noise covariance matrix
|