>From 49ab2b8396dff5f0773e8b560297dae7037dc538 Mon Sep 17 00:00:00 2001 From: Ryan Pavlik Date: Wed, 5 May 2010 18:10:51 -0500 Subject: [PATCH 1/3] Compile fixes to kalman filter --- tag/kalmanfilter.h | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tag/kalmanfilter.h b/tag/kalmanfilter.h index 71bdc7d..1aeb62d 100644 --- a/tag/kalmanfilter.h +++ b/tag/kalmanfilter.h @@ -95,7 +95,8 @@ public: /// predicts the state by applying the process model over the time interval dt /// @param[in] dt time interval void predict(double dt){ - TooN::transformCovariance(model.getJacobian( state, dt ), state.covariance, state.covariance); + TooN::Matrix origCov(state.covariance); + TooN::transformCovariance(model.getJacobian( state, dt ), origCov, state.covariance); state.covariance += model.getNoiseCovariance( dt ); TooN::Symmetrize(state.covariance); model.updateState( state, dt ); @@ -106,7 +107,9 @@ public: template void filter(Measurement & m){ const TooN::Matrix & H = m.getMeasurementJacobian( state ); const TooN::Matrix & R = m.getMeasurementCovariance( state ); - TooN::Matrix I = TooN::transformCovariance(H, state.covariance) + R; + TooN::Matrix I = TooN::Zeros; + TooN::transformCovariance(H, state.covariance, I); + I += R; TooN::LU lu(I); TooN::Matrix K = state.covariance * H.T() * lu.get_inverse(); const TooN::Vector & innovation = m.getInnovation( state ); -- 1.7.1