Skip to content
Snippets Groups Projects
Commit f43f9f11 authored by Joan Vallvé Navarro's avatar Joan Vallvé Navarro
Browse files

not using avoidSingularCovariance

parent 9f45eb28
No related branches found
No related tags found
1 merge request!207FeatureBase: covariance, information, square root information upper matrices
Pipeline #
...@@ -91,11 +91,11 @@ void FeatureBase::setMeasurementCovariance(const Eigen::MatrixXs & _meas_cov) ...@@ -91,11 +91,11 @@ void FeatureBase::setMeasurementCovariance(const Eigen::MatrixXs & _meas_cov)
{ {
WOLF_ASSERT_COVARIANCE_MATRIX(_meas_cov); WOLF_ASSERT_COVARIANCE_MATRIX(_meas_cov);
// set (ensuring strong symmetry) // set (ensuring symmetry)
measurement_covariance_ = _meas_cov.selfadjointView<Eigen::Upper>(); measurement_covariance_ = _meas_cov.selfadjointView<Eigen::Upper>();
// Avoid singular covariance // Avoid singular covariance
avoidSingularCovariance(); //avoidSingularCovariance();
// compute square root information upper matrix // compute square root information upper matrix
measurement_sqrt_information_upper_ = computeSqrtUpper(measurement_covariance_.inverse()); measurement_sqrt_information_upper_ = computeSqrtUpper(measurement_covariance_.inverse());
...@@ -105,12 +105,12 @@ void FeatureBase::setMeasurementInformation(const Eigen::MatrixXs & _meas_info) ...@@ -105,12 +105,12 @@ void FeatureBase::setMeasurementInformation(const Eigen::MatrixXs & _meas_info)
{ {
WOLF_ASSERT_INFORMATION_MATRIX(_meas_info); WOLF_ASSERT_INFORMATION_MATRIX(_meas_info);
// set (ensuring strong symmetry) // set (ensuring symmetry)
measurement_covariance_ = _meas_info.inverse().selfadjointView<Eigen::Upper>(); measurement_covariance_ = _meas_info.inverse().selfadjointView<Eigen::Upper>();
WOLF_ASSERT_COVARIANCE_MATRIX(measurement_covariance_); WOLF_ASSERT_COVARIANCE_MATRIX(measurement_covariance_);
// Avoid singular covariance // Avoid singular covariance
avoidSingularCovariance(); //avoidSingularCovariance();
// compute square root information upper matrix // compute square root information upper matrix
measurement_sqrt_information_upper_ = computeSqrtUpper(_meas_info); measurement_sqrt_information_upper_ = computeSqrtUpper(_meas_info);
...@@ -119,8 +119,7 @@ void FeatureBase::setMeasurementInformation(const Eigen::MatrixXs & _meas_info) ...@@ -119,8 +119,7 @@ void FeatureBase::setMeasurementInformation(const Eigen::MatrixXs & _meas_info)
Eigen::MatrixXs FeatureBase::computeSqrtUpper(const Eigen::MatrixXs & _info) const Eigen::MatrixXs FeatureBase::computeSqrtUpper(const Eigen::MatrixXs & _info) const
{ {
// impose symmetry // impose symmetry
Eigen::MatrixXs info = ((_info + _info.transpose()) / 2); Eigen::MatrixXs info = _info.selfadjointView<Eigen::Upper>();
info = info.selfadjointView<Eigen::Upper>();
// Normal Cholesky factorization // Normal Cholesky factorization
Eigen::LLT<Eigen::MatrixXs> llt_of_info(info); Eigen::LLT<Eigen::MatrixXs> llt_of_info(info);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment