From 63b8a70501bd8860b597fd5e8877bf0e27067282 Mon Sep 17 00:00:00 2001
From: jcasals <jcasals@iri.upc.edu>
Date: Mon, 16 Mar 2020 12:56:21 +0100
Subject: [PATCH] Add check sensor type

---
 src/processor/processor_bundle_adjustment.cpp        | 3 ++-
 src/processor/processor_tracker_feature_image.cpp    | 3 ++-
 src/processor/processor_tracker_feature_trifocal.cpp | 2 ++
 src/processor/processor_tracker_landmark_image.cpp   | 4 ++++
 4 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/processor/processor_bundle_adjustment.cpp b/src/processor/processor_bundle_adjustment.cpp
index 627296b8b..d70e7e7dc 100644
--- a/src/processor/processor_bundle_adjustment.cpp
+++ b/src/processor/processor_bundle_adjustment.cpp
@@ -62,7 +62,8 @@ void ProcessorBundleAdjustment::configure(SensorBasePtr _sensor)
 {
     //TODO: Implement if needed
 	//Initialize camera sensor pointer
-	camera = std::static_pointer_cast<SensorCamera>(_sensor);
+	camera = std::dynamic_pointer_cast<SensorCamera>(_sensor);
+    assert(camera != nullptr && "Sensor is not of type Camera");
 
 }
 
diff --git a/src/processor/processor_tracker_feature_image.cpp b/src/processor/processor_tracker_feature_image.cpp
index 8d8149ba2..2f8d8195c 100644
--- a/src/processor/processor_tracker_feature_image.cpp
+++ b/src/processor/processor_tracker_feature_image.cpp
@@ -44,7 +44,8 @@ ProcessorTrackerFeatureImage::~ProcessorTrackerFeatureImage()
 
 void ProcessorTrackerFeatureImage::configure(SensorBasePtr _sensor)
 {
-    SensorCameraPtr camera = std::static_pointer_cast<SensorCamera>(_sensor);
+    SensorCameraPtr camera = std::dynamic_pointer_cast<SensorCamera>(_sensor);
+    assert(camera != nullptr && "Sensor is not of type Camera");
 
     image_.width_ = camera->getImgWidth();
     image_.height_ = camera->getImgHeight();
diff --git a/src/processor/processor_tracker_feature_trifocal.cpp b/src/processor/processor_tracker_feature_trifocal.cpp
index d170ec531..b67609dc4 100644
--- a/src/processor/processor_tracker_feature_trifocal.cpp
+++ b/src/processor/processor_tracker_feature_trifocal.cpp
@@ -448,6 +448,8 @@ void ProcessorTrackerFeatureTrifocal::setParams(const ProcessorParamsTrackerFeat
 
 void ProcessorTrackerFeatureTrifocal::configure(SensorBasePtr _sensor)
 {
+    SensorCameraPtr camera = std::dynamic_pointer_cast<SensorCamera>(_sensor);
+    assert(camera != nullptr && "Sensor is not of type Camera");
     _sensor->setNoiseStd(Vector2d::Ones() * params_tracker_feature_trifocal_->pixel_noise_std);
 }
 
diff --git a/src/processor/processor_tracker_landmark_image.cpp b/src/processor/processor_tracker_landmark_image.cpp
index 841d501c8..a0024e3ef 100644
--- a/src/processor/processor_tracker_landmark_image.cpp
+++ b/src/processor/processor_tracker_landmark_image.cpp
@@ -58,6 +58,10 @@ ProcessorTrackerLandmarkImage::~ProcessorTrackerLandmarkImage()
 
 void ProcessorTrackerLandmarkImage::configure(SensorBasePtr _sensor)
 {
+
+    auto sensor = std::dynamic_pointer_cast<SensorCamera>(_sensor);
+    assert(sensor != nullptr && "Sensor is not of type Camera");
+
     SensorCameraPtr camera(std::static_pointer_cast<SensorCamera>(_sensor));
     image_.width_ = camera->getImgWidth();
     image_.height_ = camera->getImgHeight();
-- 
GitLab