public KalmanFilter() { pX = &Xa; pXprev = &Xb; pP = &Pa; pPprev = &Pb; Xa.zero(); Xb.zero(); Z.zero(); F.zero(); F[0][1] = 1.0f; F[1][2] = -1.0f; Phi.identity(); // Depends on time PhiTranspose.identity(); // Depends on time G.zero(); G[1][0] = 1.0f; G[2][1] = 1.0f; GTranspose.zero(); GTranspose[0][1] = 1.0f; GTranspose[1][2] = 1.0f; H.zero(); H[0][0] = 1.0f; HTranspose.zero(); HTranspose[0][0] = 1.0f; K.zero(); // gain // The above will not change for our filter. For a general filter they will. // These are the intial covariance estimates, feel free to muck with them. Pa.zero(); Pa[0][0] = 0.05f * 0.05f; Pa[1][1] = 0.5f * 0.5f; Pa[2][2] = 10.0f * 10.0f; Pb = Pa; // The following will change to appropriate values for noise. timePropNoiseVector[0] = 0.01f; // m / s^2 timePropNoiseVector[1] = 0.10f; // m / s^2 / s measurmentNoiseVector[0] = 0.005f; // =1/2 cm; }