From bebdb9eeae1c37f60557eaaeb8fef12528c225c4 Mon Sep 17 00:00:00 2001
From: jcasals <jcasals@iri.upc.edu>
Date: Thu, 18 Jun 2020 15:32:18 +0200
Subject: [PATCH] Adapt SensorCamera to autoconf

---
 include/vision/sensor/sensor_camera.h | 16 ++++++----------
 src/sensor/sensor_camera.cpp          | 16 +---------------
 2 files changed, 7 insertions(+), 25 deletions(-)

diff --git a/include/vision/sensor/sensor_camera.h b/include/vision/sensor/sensor_camera.h
index 7ee6529d3..4af4641f6 100644
--- a/include/vision/sensor/sensor_camera.h
+++ b/include/vision/sensor/sensor_camera.h
@@ -25,11 +25,11 @@ struct ParamsSensorCamera : public ParamsSensorBase
     ParamsSensorCamera(std::string _unique_name, const ParamsServer& _server):
         ParamsSensorBase(_unique_name,  _server)
     {
-        width                   = _server.getParam<unsigned int>(_unique_name       + "/width");
-        height                  = _server.getParam<unsigned int>(_unique_name       + "/height");
-        pinhole_model_raw       = _server.getParam<Eigen::Vector4d>(_unique_name    + "/pinhole_model_raw");
-        pinhole_model_rectified = _server.getParam<Eigen::Vector4d>(_unique_name    + "/pinhole_model_rectified");
-        distortion              = _server.getParam<Eigen::VectorXd>(_unique_name    + "/distortion");
+        width                   = _server.getParam<unsigned int>(prefix + _unique_name       + "/width");
+        height                  = _server.getParam<unsigned int>(prefix + _unique_name       + "/height");
+        pinhole_model_raw       = _server.getParam<Eigen::Vector4d>(prefix + _unique_name    + "/pinhole_model_raw");
+        pinhole_model_rectified = _server.getParam<Eigen::Vector4d>(prefix + _unique_name    + "/pinhole_model_rectified");
+        distortion              = _server.getParam<Eigen::VectorXd>(prefix + _unique_name    + "/distortion");
     }
     std::string print() const
     {
@@ -52,6 +52,7 @@ class SensorCamera : public SensorBase
 
         SensorCamera(const Eigen::VectorXd & _extrinsics, const ParamsSensorCamera& _intrinsics);
         SensorCamera(const Eigen::VectorXd & _extrinsics, ParamsSensorCameraPtr _intrinsics_ptr);
+        WOLF_SENSOR_CREATE(SensorCamera, ParamsSensorCamera, 7);
 
         ~SensorCamera() override;
 
@@ -82,11 +83,6 @@ class SensorCamera : public SensorBase
 
     public:
         EIGEN_MAKE_ALIGNED_OPERATOR_NEW; // to guarantee alignment (see http://eigen.tuxfamily.org/dox-devel/group__TopicStructHavingEigenMembers.html)
-
-        static SensorBasePtr create(const std::string & _unique_name, //
-                                    const Eigen::VectorXd& _extrinsics, //
-                                    const ParamsSensorBasePtr _intrinsics);
-
 };
 
 inline bool SensorCamera::useRawImages()
diff --git a/src/sensor/sensor_camera.cpp b/src/sensor/sensor_camera.cpp
index 281953494..a236256e6 100644
--- a/src/sensor/sensor_camera.cpp
+++ b/src/sensor/sensor_camera.cpp
@@ -46,21 +46,6 @@ Eigen::Matrix3d SensorCamera::setIntrinsicMatrix(Eigen::Vector4d _pinhole_model)
     K.row(2) << 0, 0, 1;
     return K;
 }
-
-// Define the factory method
-SensorBasePtr SensorCamera::create(const std::string& _unique_name, //
-                                 const Eigen::VectorXd& _extrinsics_pq, //
-                                 const ParamsSensorBasePtr _intrinsics)
-{
-    assert(_extrinsics_pq.size() == 7 && "Bad extrinsics vector length. Should be 7 for 3d.");
-
-    std::shared_ptr<ParamsSensorCamera> intrinsics_ptr = std::static_pointer_cast<ParamsSensorCamera>(_intrinsics);
-    SensorCameraPtr sen_ptr = std::make_shared<SensorCamera>(_extrinsics_pq, intrinsics_ptr);
-    sen_ptr->setName(_unique_name);
-
-    return sen_ptr;
-}
-
 } // namespace wolf
 
 // Register in the FactorySensor
@@ -68,5 +53,6 @@ SensorBasePtr SensorCamera::create(const std::string& _unique_name, //
 namespace wolf
 {
 WOLF_REGISTER_SENSOR(SensorCamera)
+WOLF_REGISTER_SENSOR_AUTO(SensorCamera)
 } // namespace wolf
 
-- 
GitLab