From df2bf5aa00ca3634f1b51e128db5b934554eede5 Mon Sep 17 00:00:00 2001
From: Joan Sola <jsola@iri.upc.edu>
Date: Wed, 21 Mar 2018 12:30:15 +0100
Subject: [PATCH] Remove Intrinsics constructors. Add virtual destructors.

---
 src/sensor_GPS.h                |  1 +
 src/sensor_GPS_fix.h            |  1 +
 src/sensor_IMU.h                | 23 ++++++++---------------
 src/sensor_base.h               |  7 +++----
 src/sensor_camera.h             |  2 ++
 src/sensor_laser_2D.h           |  2 ++
 src/sensor_odom_2D.h            |  4 +++-
 src/sensor_odom_3D.h            |  9 ++-------
 src/sensors/sensor_diff_drive.h | 26 ++------------------------
 9 files changed, 24 insertions(+), 51 deletions(-)

diff --git a/src/sensor_GPS.h b/src/sensor_GPS.h
index b36d09ae0..c43cd13cb 100644
--- a/src/sensor_GPS.h
+++ b/src/sensor_GPS.h
@@ -20,6 +20,7 @@ namespace wolf {
 struct IntrinsicsGPS : public IntrinsicsBase
 {
         // add GPS parameters here
+        virtual ~IntrinsicsGPS() = default;
 };
 
 WOLF_PTR_TYPEDEFS(SensorGPS);
diff --git a/src/sensor_GPS_fix.h b/src/sensor_GPS_fix.h
index 9cb5583a0..b2423e71a 100644
--- a/src/sensor_GPS_fix.h
+++ b/src/sensor_GPS_fix.h
@@ -15,6 +15,7 @@ namespace wolf {
 struct IntrinsicsGPSFix : public IntrinsicsBase
 {
         // Empty -- it acts only as a typedef for IntrinsicsBase, but allows future extension with parameters
+        virtual ~IntrinsicsGPSFix() = default;
 };
 
 WOLF_PTR_TYPEDEFS(SensorGPSFix);
diff --git a/src/sensor_IMU.h b/src/sensor_IMU.h
index 823c18507..a9509188f 100644
--- a/src/sensor_IMU.h
+++ b/src/sensor_IMU.h
@@ -15,25 +15,18 @@ WOLF_STRUCT_PTR_TYPEDEFS(IntrinsicsIMU);
 struct IntrinsicsIMU : public IntrinsicsBase
 {
         //noise std dev
-        wolf::Scalar w_noise; //standard deviation of Gyroscope noise (same for all the axis) in rad/sec/ sqrt(s)
-        wolf::Scalar a_noise; //standard deviation of Acceleration noise (same for all the axis) in m/s2/sqrt(s)
+        wolf::Scalar w_noise = 0.001; //standard deviation of Gyroscope noise (same for all the axis) in rad/sec/ sqrt(s)
+        wolf::Scalar a_noise = 0.04; //standard deviation of Acceleration noise (same for all the axis) in m/s2/sqrt(s)
 
         //Initial biases std dev
-        wolf::Scalar ab_initial_stdev; //accelerometer micro_g/sec
-        wolf::Scalar wb_initial_stdev; //gyroscope rad/sec
+        wolf::Scalar ab_initial_stdev = 0.01; //accelerometer micro_g/sec
+        wolf::Scalar wb_initial_stdev = 0.01; //gyroscope rad/sec
 
         // bias rate of change std dev
-        Scalar ab_rate_stdev;
-        Scalar wb_rate_stdev;
-
-        IntrinsicsIMU() :
-            w_noise(0.001),
-            a_noise(0.04),
-            ab_initial_stdev(0.00001),
-            wb_initial_stdev(0.00001),
-            ab_rate_stdev(0.00001),
-            wb_rate_stdev(0.00001)
-        {}
+        Scalar ab_rate_stdev = 0.00001;
+        Scalar wb_rate_stdev = 0.00001;
+
+        virtual ~IntrinsicsIMU() = default;
 };
 
 WOLF_PTR_TYPEDEFS(SensorIMU);
diff --git a/src/sensor_base.h b/src/sensor_base.h
index 3a2de9957..a1befcf79 100644
--- a/src/sensor_base.h
+++ b/src/sensor_base.h
@@ -24,11 +24,10 @@ namespace wolf {
  */
 struct IntrinsicsBase
 {
-  IntrinsicsBase()          = default;
-  virtual ~IntrinsicsBase() = default;
+        virtual ~IntrinsicsBase() = default;
 
-  std::string type;
-  std::string name;
+        std::string type;
+        std::string name;
 };
 
 class SensorBase : public NodeBase, public std::enable_shared_from_this<SensorBase>
diff --git a/src/sensor_camera.h b/src/sensor_camera.h
index 7c61c98e2..4b3d565da 100644
--- a/src/sensor_camera.h
+++ b/src/sensor_camera.h
@@ -15,6 +15,8 @@ struct IntrinsicsCamera : public IntrinsicsBase
         unsigned int height;                ///< Image height in pixels
         Eigen::Vector4s pinhole_model;      ///< k = [u_0, v_0, alpha_u, alpha_v]  vector of pinhole intrinsic parameters
         Eigen::VectorXs distortion;         ///< d = [d_1, d_2, d_3, ...] radial distortion coefficients
+
+        virtual ~IntrinsicsCamera() = default;
 };
 
 WOLF_PTR_TYPEDEFS(SensorCamera);
diff --git a/src/sensor_laser_2D.h b/src/sensor_laser_2D.h
index b1e3e9b2a..8c2aa8576 100644
--- a/src/sensor_laser_2D.h
+++ b/src/sensor_laser_2D.h
@@ -17,6 +17,8 @@ WOLF_STRUCT_PTR_TYPEDEFS(IntrinsicsLaser2D);
 
 struct IntrinsicsLaser2D : public IntrinsicsBase
 {
+        virtual ~IntrinsicsLaser2D() = default;
+
         laserscanutils::LaserScanParams scan_params;
 };
 
diff --git a/src/sensor_odom_2D.h b/src/sensor_odom_2D.h
index ad3b02ae5..b906bce9b 100644
--- a/src/sensor_odom_2D.h
+++ b/src/sensor_odom_2D.h
@@ -7,10 +7,12 @@
 
 namespace wolf {
 
-WOLF_STRUCT_PTR_TYPEDEFS(IntrinsicsOdom2D)
+WOLF_STRUCT_PTR_TYPEDEFS(IntrinsicsOdom2D);
 
 struct IntrinsicsOdom2D : public IntrinsicsBase
 {
+        virtual ~IntrinsicsOdom2D() = default;
+
         Scalar k_disp_to_disp; ///< ratio of displacement variance to displacement, for odometry noise calculation
         Scalar k_rot_to_rot; ///< ratio of rotation variance to rotation, for odometry noise calculation
 };
diff --git a/src/sensor_odom_3D.h b/src/sensor_odom_3D.h
index c676edc95..9ffef8d23 100644
--- a/src/sensor_odom_3D.h
+++ b/src/sensor_odom_3D.h
@@ -23,13 +23,8 @@ struct IntrinsicsOdom3D : public IntrinsicsBase
         Scalar min_disp_var;
         Scalar min_rot_var;
 
-        IntrinsicsOdom3D() :
-            k_disp_to_disp(0),
-            k_disp_to_rot(0),
-            k_rot_to_rot(0),
-            min_disp_var(0),
-            min_rot_var(0)
-        {}
+        virtual ~IntrinsicsOdom3D() = default;
+
 };
 
 WOLF_PTR_TYPEDEFS(SensorOdom3D);
diff --git a/src/sensors/sensor_diff_drive.h b/src/sensors/sensor_diff_drive.h
index 334fea389..f4556a84a 100644
--- a/src/sensors/sensor_diff_drive.h
+++ b/src/sensors/sensor_diff_drive.h
@@ -16,30 +16,6 @@ namespace wolf {
 
 struct IntrinsicsDiffDrive : public IntrinsicsBase
 {
-  IntrinsicsDiffDrive() = default;
-
-  IntrinsicsDiffDrive(const Scalar _left_radius,
-                      const Scalar _right_radius,
-                      const Scalar _separation,
-                      const DiffDriveModel _model,
-                      const Eigen::VectorXs& _factors,
-                      const Scalar _left_resolution,
-                      const Scalar _right_resolution,
-                      const Scalar _left_gain,
-                      const Scalar _right_gain) :
-    left_radius_(_left_radius),
-    right_radius_(_right_radius),
-    separation_(_separation),
-    model_(_model),
-    factors_(_factors),
-    left_resolution_(_left_resolution),
-    right_resolution_(_right_resolution),
-    left_gain_(_left_gain),
-    right_gain_(_right_gain)
-  {
-    //
-  }
-
   Scalar left_radius_;
   Scalar right_radius_;
   Scalar separation_;
@@ -53,6 +29,8 @@ struct IntrinsicsDiffDrive : public IntrinsicsBase
 
   Scalar left_gain_  = 0.01;
   Scalar right_gain_ = 0.01;
+
+  virtual ~IntrinsicsDiffDrive() = default;
 };
 
 typedef std::shared_ptr<IntrinsicsDiffDrive> IntrinsicsDiffDrivePtr;
-- 
GitLab