From 0e3101e0f36e1d865521a43e1c72570019724a39 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Sol=C3=A0?= <jsola@iri.upc.edu>
Date: Wed, 7 Aug 2019 22:38:52 +0200
Subject: [PATCH] Add standard API constructor

---
 include/laser/sensor/sensor_laser_2D.h |  3 ++-
 src/sensor/sensor_laser_2D.cpp         | 16 ++++++++++++++--
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/include/laser/sensor/sensor_laser_2D.h b/include/laser/sensor/sensor_laser_2D.h
index 0d52eb63a..6ea4595f2 100644
--- a/include/laser/sensor/sensor_laser_2D.h
+++ b/include/laser/sensor/sensor_laser_2D.h
@@ -82,7 +82,8 @@ class SensorLaser2D : public SensorBase
          **/
         SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, const laserscanutils::LaserScanParams& _params);
         SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, const IntrinsicsLaser2D& _params);
-        SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, IntrinsicsLaser2DPtr _params);
+        SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, const IntrinsicsLaser2DPtr _params);
+        SensorLaser2D(const Eigen::VectorXs& _extrinsics, const IntrinsicsLaser2DPtr _params);
 
         virtual ~SensorLaser2D();
 
diff --git a/src/sensor/sensor_laser_2D.cpp b/src/sensor/sensor_laser_2D.cpp
index 05b55a7e2..9c2918c68 100644
--- a/src/sensor/sensor_laser_2D.cpp
+++ b/src/sensor/sensor_laser_2D.cpp
@@ -30,8 +30,20 @@ SensorLaser2D::SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, const I
     //
 }
 
-SensorLaser2D::SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, IntrinsicsLaser2DPtr _params) :
-        SensorLaser2D(_p_ptr, _o_ptr, *_params)
+SensorLaser2D::SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, const IntrinsicsLaser2DPtr _params) :
+       SensorBase("LASER 2D", _p_ptr, _o_ptr, nullptr, 8),
+       scan_params_(_params->scan_params)
+{
+    //
+}
+
+SensorLaser2D::SensorLaser2D(const Eigen::VectorXs& _extrinsics, const IntrinsicsLaser2DPtr _params) :
+       SensorBase("LASER 2D",
+                  std::make_shared<StateBlock>(_extrinsics.head(2), false),
+                  std::make_shared<StateAngle>(_extrinsics(2), false),
+                  nullptr,
+                  8),
+       scan_params_(_params->scan_params)
 {
     //
 }
-- 
GitLab