diff --git a/src/modules/local_position_estimator/sensors/flow.cpp b/src/modules/local_position_estimator/sensors/flow.cpp index 67079b72d1..7613e42344 100644 --- a/src/modules/local_position_estimator/sensors/flow.cpp +++ b/src/modules/local_position_estimator/sensors/flow.cpp @@ -170,7 +170,7 @@ void BlockLocalPositionEstimator::flowCorrect() Vector r = y - C * _x; // residual covariance - Matrix S = C * _P * C.transpose()) + R; + Matrix S = C * _P * C.transpose() + R; // publish innovations _pub_innov.get().flow_innov[0] = r(0); @@ -179,7 +179,7 @@ void BlockLocalPositionEstimator::flowCorrect() _pub_innov.get().flow_innov_var[1] = S(1, 1); // residual covariance, (inverse) - Matrix S_I = inv(C); + Matrix S_I = inv(S); // fault detection float beta = (r.transpose() * (S_I * r))(0, 0); diff --git a/src/modules/local_position_estimator/sensors/gps.cpp b/src/modules/local_position_estimator/sensors/gps.cpp index da900faadb..3f951b5a43 100644 --- a/src/modules/local_position_estimator/sensors/gps.cpp +++ b/src/modules/local_position_estimator/sensors/gps.cpp @@ -185,7 +185,7 @@ void BlockLocalPositionEstimator::gpsCorrect() Vector r = y - C * x0; // residual covariance - Matrix S = C * _P * C.transpose()) + R; + Matrix S = C * _P * C.transpose() + R; // publish innovations for (int i = 0; i < 6; i ++) { @@ -194,7 +194,7 @@ void BlockLocalPositionEstimator::gpsCorrect() } // residual covariance, (inverse) - Matrix S_I = inv(C); + Matrix S_I = inv(S); // fault detection float beta = (r.transpose() * (S_I * r))(0, 0); diff --git a/src/modules/local_position_estimator/sensors/lidar.cpp b/src/modules/local_position_estimator/sensors/lidar.cpp index 29d08fedd3..72a7e32240 100644 --- a/src/modules/local_position_estimator/sensors/lidar.cpp +++ b/src/modules/local_position_estimator/sensors/lidar.cpp @@ -85,15 +85,18 @@ void BlockLocalPositionEstimator::lidarCorrect() R(0, 0) = cov; } + // residual + Vector r = y - C * _x; // residual covariance - Matrix S = C * _P * C.transpose()) + R; - // residual covariance, (inverse) - Matrix S_I = inv(C); + Matrix S = C * _P * C.transpose() + R; // publish innovations _pub_innov.get().hagl_innov = r(0); _pub_innov.get().hagl_innov_var = S(0, 0); + // residual covariance, (inverse) + Matrix S_I = inv(S); + // fault detection float beta = (r.transpose() * (S_I * r))(0, 0); diff --git a/src/modules/local_position_estimator/sensors/mocap.cpp b/src/modules/local_position_estimator/sensors/mocap.cpp index 5c04afad60..c5ad80e8ec 100644 --- a/src/modules/local_position_estimator/sensors/mocap.cpp +++ b/src/modules/local_position_estimator/sensors/mocap.cpp @@ -76,7 +76,7 @@ void BlockLocalPositionEstimator::mocapCorrect() // residual Vector r = y - C * _x; // residual covariance - Matrix S = C * _P * C.transpose()) + R; + Matrix S = C * _P * C.transpose() + R; // publish innovations for (int i = 0; i < 3; i ++) { @@ -89,7 +89,7 @@ void BlockLocalPositionEstimator::mocapCorrect() } // residual covariance, (inverse) - Matrix S_I = inv(C); + Matrix S_I = inv(S); // fault detection float beta = (r.transpose() * (S_I * r))(0, 0); diff --git a/src/modules/local_position_estimator/sensors/sonar.cpp b/src/modules/local_position_estimator/sensors/sonar.cpp index 7d12daf4c9..245edb0fa1 100644 --- a/src/modules/local_position_estimator/sensors/sonar.cpp +++ b/src/modules/local_position_estimator/sensors/sonar.cpp @@ -106,14 +106,14 @@ void BlockLocalPositionEstimator::sonarCorrect() // residual Vector r = y - C * _x; // residual covariance - Matrix S = C * _P * C.transpose()) + R; + Matrix S = C * _P * C.transpose() + R; // publish innovations _pub_innov.get().hagl_innov = r(0); _pub_innov.get().hagl_innov_var = S(0, 0); // residual covariance, (inverse) - Matrix S_I = inv(C); + Matrix S_I = inv(S); // fault detection float beta = (r.transpose() * (S_I * r))(0, 0);