From 96d630481c66cb5a1f95098c316c2fda46e1d17c Mon Sep 17 00:00:00 2001
From: mederic_fourmy <mederic.fourmy@gmail.com>
Date: Fri, 18 Jan 2019 16:39:14 +0100
Subject: [PATCH] Processor apriltag adapted to feature taking information
 matrix instead of covariance

---
 src/feature_base.cpp                                   | 4 ++--
 src/feature_base.h                                     | 2 +-
 src/features/feature_apriltag.cpp                      | 7 ++++---
 src/features/feature_apriltag.h                        | 2 +-
 src/processors/processor_tracker_landmark_apriltag.cpp | 2 +-
 5 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/feature_base.cpp b/src/feature_base.cpp
index ef70986b1..c63fd2a98 100644
--- a/src/feature_base.cpp
+++ b/src/feature_base.cpp
@@ -6,7 +6,7 @@ namespace wolf {
 
 unsigned int FeatureBase::feature_id_count_ = 0;
 
-FeatureBase::FeatureBase(const std::string& _type, const Eigen::VectorXs& _measurement, const Eigen::MatrixXs& _meas_uncertainty, UncertaintyType _uncertainty_is_info) :
+FeatureBase::FeatureBase(const std::string& _type, const Eigen::VectorXs& _measurement, const Eigen::MatrixXs& _meas_uncertainty, UncertaintyType _uncertainty_type) :
 	NodeBase("FEATURE", _type),
     capture_ptr_(),
     is_removing_(false),
@@ -15,7 +15,7 @@ FeatureBase::FeatureBase(const std::string& _type, const Eigen::VectorXs& _measu
     landmark_id_(0),
 	measurement_(_measurement)
 {
-    switch (_uncertainty_is_info )
+    switch (_uncertainty_type)
     {
         case UNCERTAINTY_IS_INFO :
             setMeasurementInformation(_meas_uncertainty);
diff --git a/src/feature_base.h b/src/feature_base.h
index 1ea3f475d..1f3a5c063 100644
--- a/src/feature_base.h
+++ b/src/feature_base.h
@@ -50,7 +50,7 @@ class FeatureBase : public NodeBase, public std::enable_shared_from_this<Feature
          * \param _measurement the measurement
          * \param _meas_covariance the noise of the measurement
          */
-        FeatureBase(const std::string& _type, const Eigen::VectorXs& _measurement, const Eigen::MatrixXs& _meas_uncertainty, UncertaintyType _uncertainty_is_info = UNCERTAINTY_IS_COVARIANCE);
+        FeatureBase(const std::string& _type, const Eigen::VectorXs& _measurement, const Eigen::MatrixXs& _meas_uncertainty, UncertaintyType _uncertainty_type = UNCERTAINTY_IS_COVARIANCE);
 
         virtual ~FeatureBase();
         void remove();
diff --git a/src/features/feature_apriltag.cpp b/src/features/feature_apriltag.cpp
index d1e05118c..17eb4146c 100644
--- a/src/features/feature_apriltag.cpp
+++ b/src/features/feature_apriltag.cpp
@@ -4,10 +4,11 @@
 namespace wolf {
 
 FeatureApriltag::FeatureApriltag(const Eigen::Vector7s & _measurement,
-                                 const Eigen::Matrix6s & _meas_covariance,
+                                 const Eigen::Matrix6s & _meas_uncertainty,
                                  const int _tag_id,
-                                 const apriltag_detection_t & _det) :
-    FeatureBase("APRILTAG", _measurement, _meas_covariance),
+                                 const apriltag_detection_t & _det,
+                                 UncertaintyType _uncertainty_type) :
+    FeatureBase("APRILTAG", _measurement, _meas_uncertainty, _uncertainty_type),
     tag_id_     (_tag_id),
     tag_corners_(4),
     detection_  (_det)
diff --git a/src/features/feature_apriltag.h b/src/features/feature_apriltag.h
index 2a181bd6a..24225ae81 100644
--- a/src/features/feature_apriltag.h
+++ b/src/features/feature_apriltag.h
@@ -22,7 +22,7 @@ class FeatureApriltag : public FeatureBase
 {
     public:
 
-        FeatureApriltag(const Eigen::Vector7s & _measurement, const Eigen::Matrix6s & _meas_covariance, const int _tag_id, const apriltag_detection_t & _det);
+        FeatureApriltag(const Eigen::Vector7s & _measurement, const Eigen::Matrix6s & _meas_covariance, const int _tag_id, const apriltag_detection_t & _det, UncertaintyType _uncertainty_type = UNCERTAINTY_IS_INFO);
         virtual ~FeatureApriltag();
         
         /** \brief Returns tag id
diff --git a/src/processors/processor_tracker_landmark_apriltag.cpp b/src/processors/processor_tracker_landmark_apriltag.cpp
index 52c260c84..83289659a 100644
--- a/src/processors/processor_tracker_landmark_apriltag.cpp
+++ b/src/processors/processor_tracker_landmark_apriltag.cpp
@@ -184,7 +184,7 @@ void ProcessorTrackerLandmarkApriltag::preProcess()
         }
         WOLF_TRACE("cov \n", cov);
         // add to detected features list
-        detections_incoming_.push_back(std::make_shared<FeatureApriltag>(pose, cov, tag_id, *det));
+        detections_incoming_.push_back(std::make_shared<FeatureApriltag>(pose, cov.inverse(), tag_id, *det, FeatureBase::UncertaintyType::UNCERTAINTY_IS_INFO));
     }
 
     apriltag_detections_destroy(detections);
-- 
GitLab