diff --git a/src/examples/test_image.cpp b/src/examples/test_image.cpp index e79354c92eb1a51b38692985f03986ef4dc688ff..d4733afce5d9af93617663ca5db0d26b8169d8f4 100644 --- a/src/examples/test_image.cpp +++ b/src/examples/test_image.cpp @@ -139,7 +139,6 @@ int main(int argc, char** argv) // PROCESSOR // one-liner API ProcessorImageFeaturePtr prc_img_ptr = std::static_pointer_cast<ProcessorImageFeature>( wolf_problem_->installProcessor("IMAGE FEATURE", "ORB", "PinHole", wolf_root + "/src/examples/processor_image_ORB.yaml") ); - prc_img_ptr->setup(camera_ptr); std::cout << "sensor & processor created and added to wolf problem" << std::endl; //===================================================== diff --git a/src/hello_wolf/processor_range_bearing.h b/src/hello_wolf/processor_range_bearing.h index 0706bc145f732176ba89da29a8904590aafce149..2c5d4702c513217530dbcbed4723312d8cf379cb 100644 --- a/src/hello_wolf/processor_range_bearing.h +++ b/src/hello_wolf/processor_range_bearing.h @@ -35,6 +35,7 @@ class ProcessorRangeBearing : public ProcessorBase ProcessorRangeBearing(const SensorRangeBearingPtr _sensor_ptr, const Scalar& _time_tolerance = 0); virtual ~ProcessorRangeBearing() {/* empty */} + virtual void configure(SensorBasePtr _sensor) { /* empty */} // Factory method for high level API static ProcessorBasePtr create(const std::string& _unique_name, diff --git a/src/problem.cpp b/src/problem.cpp index 11852deb2469e4b8e8861d4a90fcd3fe119894d9..f1f2558ef2bd0723ce1000607ff203afc1f19f51 100644 --- a/src/problem.cpp +++ b/src/problem.cpp @@ -118,6 +118,7 @@ ProcessorBasePtr Problem::installProcessor(const std::string& _prc_type, // } ProcessorBasePtr prc_ptr = ProcessorFactory::get().create(uppercase(_prc_type), _unique_processor_name, _prc_params, _corresponding_sensor_ptr); + prc_ptr->configure(_corresponding_sensor_ptr); _corresponding_sensor_ptr->addProcessor(prc_ptr); // setting the origin in all processor motion if origin already setted diff --git a/src/processor_GPS.h b/src/processor_GPS.h index 7a72dbadedd9290300758aef7dedc17ccefbce98..b846ac414f56692e64ab93212ff848acdcfbc339 100644 --- a/src/processor_GPS.h +++ b/src/processor_GPS.h @@ -26,6 +26,7 @@ class ProcessorGPS : public ProcessorBase public: ProcessorGPS(); virtual ~ProcessorGPS(Scalar time_tolerance_); + virtual void configure(SensorBasePtr _sensor) { /* empty */} virtual void init(CaptureBasePtr _capture_ptr); virtual void process(CaptureBasePtr _capture_ptr); virtual bool voteForKeyFrame(); diff --git a/src/processor_IMU.h b/src/processor_IMU.h index 3954d5ac18b600a5ef4a5f40aaf6fa46115f81d3..499c9399701ef1b100ecbfcbfd2284e4bb1f8e95 100644 --- a/src/processor_IMU.h +++ b/src/processor_IMU.h @@ -25,6 +25,7 @@ class ProcessorIMU : public ProcessorMotion{ public: ProcessorIMU(const ProcessorParamsIMU& _params = ProcessorParamsIMU()); virtual ~ProcessorIMU(); + virtual void configure(SensorBasePtr _sensor) { /* empty */} protected: virtual void computeCurrentDelta(const Eigen::VectorXs& _data, diff --git a/src/processor_base.h b/src/processor_base.h index de6ecd94b37291e0c85f9b067fa0c35a2eb9b4ab..e3990f51f895f257bd154f91ee726f0109bfc397 100644 --- a/src/processor_base.h +++ b/src/processor_base.h @@ -133,6 +133,7 @@ class ProcessorBase : public NodeBase, public std::enable_shared_from_this<Proce public: ProcessorBase(const std::string& _type, const Scalar& _time_tolerance); virtual ~ProcessorBase(); + virtual void configure(SensorBasePtr _sensor) = 0; void remove(); unsigned int id(); diff --git a/src/processor_capture_holder.h b/src/processor_capture_holder.h index 43eeab833691abdb458980773713ebf8e1ae0206..b07823cb6907207a9f08432d9f8470768e3b59de 100644 --- a/src/processor_capture_holder.h +++ b/src/processor_capture_holder.h @@ -35,6 +35,7 @@ public: ProcessorCaptureHolder(const Scalar& _buffer_size = 1); virtual ~ProcessorCaptureHolder() = default; + virtual void configure(SensorBasePtr _sensor) { /* empty */} virtual void process(CaptureBasePtr _capture_ptr) override; diff --git a/src/processor_frame_nearest_neighbor_filter.h b/src/processor_frame_nearest_neighbor_filter.h index 16c3985e035ce795e116fadec3e2ae1a83e224da..a2234628375acb80ccafa9d1379e3a0dc0acb3e5 100644 --- a/src/processor_frame_nearest_neighbor_filter.h +++ b/src/processor_frame_nearest_neighbor_filter.h @@ -40,6 +40,7 @@ struct ProcessorParamsFrameNearestNeighborFilter : public ProcessorParamsLoopClo } virtual ~ProcessorParamsFrameNearestNeighborFilter() = default; + virtual void configure(SensorBasePtr _sensor) { /* empty */} int buffer_size_; int sample_step_degree_; diff --git a/src/processor_image_feature.h b/src/processor_image_feature.h index aa007e00780b8372c1493e15541a264d5fbe68e1..47632ad97dde96ae28d2a31ee2a799ef9f321908 100644 --- a/src/processor_image_feature.h +++ b/src/processor_image_feature.h @@ -70,6 +70,7 @@ class ProcessorImageFeature : public ProcessorTrackerFeature public: ProcessorImageFeature(ProcessorParamsImage _params); virtual ~ProcessorImageFeature(); + virtual void configure(SensorBasePtr _sensor) { /* empty */} virtual void setup(SensorCameraPtr _camera_ptr); diff --git a/src/processor_image_landmark.h b/src/processor_image_landmark.h index 489502b529eaf72dead7ff4938b3c32514ca437c..0aa32aea3555d95f2f708cc9e307fc7a6de0c180 100644 --- a/src/processor_image_landmark.h +++ b/src/processor_image_landmark.h @@ -91,6 +91,7 @@ class ProcessorImageLandmark : public ProcessorTrackerLandmark public: ProcessorImageLandmark(const ProcessorParamsImage& _params); virtual ~ProcessorImageLandmark(); + virtual void configure(SensorBasePtr _sensor) { /* empty */} virtual void setup(SensorCameraPtr _camera_ptr); diff --git a/src/processor_loopclosure_base.h b/src/processor_loopclosure_base.h index 1dd3becb335af5c26227465f605bec95e466949e..54cbd57a10ba5528ea06a3dee8f264f5121b2b05 100644 --- a/src/processor_loopclosure_base.h +++ b/src/processor_loopclosure_base.h @@ -46,8 +46,8 @@ protected: public: ProcessorLoopClosureBase(const std::string& _type, const Scalar _time_tolerance); - virtual ~ProcessorLoopClosureBase() = default; + virtual void configure(SensorBasePtr _sensor) { /* empty */} /** \brief Full processing of an incoming Capture. * diff --git a/src/processor_odom_2D.h b/src/processor_odom_2D.h index 4434b2a84f1a0d186c0ad9e6c7041a5cc2f73a08..48e8dcdc6cc03470bf13cf70e120b2289da739ef 100644 --- a/src/processor_odom_2D.h +++ b/src/processor_odom_2D.h @@ -33,6 +33,7 @@ class ProcessorOdom2D : public ProcessorMotion public: ProcessorOdom2D(const ProcessorParamsOdom2D& _params = ProcessorParamsOdom2D()); virtual ~ProcessorOdom2D(); + virtual void configure(SensorBasePtr _sensor) { /* empty */} virtual bool voteForKeyFrame() override; diff --git a/src/processor_odom_3D.cpp b/src/processor_odom_3D.cpp index 8165797715f213d27459eff3ad86944beaff495e..8ee85a73cdf9ad8cc06e3a8b5ade87d267dcee28 100644 --- a/src/processor_odom_3D.cpp +++ b/src/processor_odom_3D.cpp @@ -11,7 +11,6 @@ ProcessorOdom3D::ProcessorOdom3D(const ProcessorParamsOdom3D& _params, SensorOdo p1_(nullptr), p2_(nullptr), p_out_(nullptr), q1_(nullptr), q2_(nullptr), q_out_(nullptr) { - setup(_sensor_ptr); delta_ = deltaZero(); delta_integrated_ = deltaZero(); jacobian_delta_preint_.setZero(delta_cov_size_, delta_cov_size_); @@ -23,10 +22,12 @@ ProcessorOdom3D::~ProcessorOdom3D() { } -void ProcessorOdom3D::setup(SensorOdom3DPtr sen_ptr) +void ProcessorOdom3D::configure(SensorBasePtr _sensor) { - if (sen_ptr) + if (_sensor) { + SensorOdom3DPtr sen_ptr = std::static_pointer_cast<SensorOdom3D>(_sensor); + // we steal the parameters from the provided odom3D sensor. k_disp_to_disp_ = sen_ptr->getDispVarToDispNoiseFactor(); k_disp_to_rot_ = sen_ptr->getDispVarToRotNoiseFactor(); diff --git a/src/processor_odom_3D.h b/src/processor_odom_3D.h index 1dbbf2ad3658c48cf5cf0bc257ade424d6e1f9b2..cf7167073a34faafe2cf184b4746e3af1aaa153b 100644 --- a/src/processor_odom_3D.h +++ b/src/processor_odom_3D.h @@ -58,7 +58,7 @@ class ProcessorOdom3D : public ProcessorMotion public: ProcessorOdom3D(const ProcessorParamsOdom3D& _params = ProcessorParamsOdom3D(), SensorOdom3DPtr _sensor_ptr = nullptr); virtual ~ProcessorOdom3D(); - void setup(SensorOdom3DPtr sen_ptr); + virtual void configure(SensorBasePtr _sensor); public: virtual void computeCurrentDelta(const Eigen::VectorXs& _data, diff --git a/src/processor_tracker_feature_corner.h b/src/processor_tracker_feature_corner.h index 7fe63a9ef664db4b5f57f5aa8fbd0beef0d3f4d0..a6fb69bb8babd0d57a5446252bceb8032314b45e 100644 --- a/src/processor_tracker_feature_corner.h +++ b/src/processor_tracker_feature_corner.h @@ -67,6 +67,7 @@ class ProcessorTrackerFeatureCorner : public ProcessorTrackerFeature ProcessorTrackerFeatureCorner(const laserscanutils::LineFinderIterativeParams& _line_finder_params, const unsigned int& _n_corners_th); virtual ~ProcessorTrackerFeatureCorner(); + virtual void configure(SensorBasePtr _sensor) { /* empty */} protected: diff --git a/src/processor_tracker_feature_dummy.h b/src/processor_tracker_feature_dummy.h index f6a917cf12cd5ed09bc62afdc88a7b207df9ffb0..38df13c74bb0f37261003d640b561e3fb1a2aeb8 100644 --- a/src/processor_tracker_feature_dummy.h +++ b/src/processor_tracker_feature_dummy.h @@ -24,6 +24,7 @@ class ProcessorTrackerFeatureDummy : public ProcessorTrackerFeature public: ProcessorTrackerFeatureDummy(const Scalar _time_tolerance, const unsigned int _max_new_features, const unsigned int _min_feat_for_keyframe); virtual ~ProcessorTrackerFeatureDummy(); + virtual void configure(SensorBasePtr _sensor) { /* empty */} protected: diff --git a/src/processor_tracker_landmark_corner.h b/src/processor_tracker_landmark_corner.h index 734acc5083260b65e1933d897d7fb1214f9ae075..74373f5c5141f221320a158d16dc8c322f1161c5 100644 --- a/src/processor_tracker_landmark_corner.h +++ b/src/processor_tracker_landmark_corner.h @@ -88,8 +88,8 @@ class ProcessorTrackerLandmarkCorner : public ProcessorTrackerLandmark ProcessorTrackerLandmarkCorner(const laserscanutils::LineFinderIterativeParams& _line_finder_params, const unsigned int& _new_corners_th, const unsigned int& _loop_frames_th); - virtual ~ProcessorTrackerLandmarkCorner(); + virtual void configure(SensorBasePtr _sensor) { /* empty */} protected: diff --git a/src/processor_tracker_landmark_dummy.h b/src/processor_tracker_landmark_dummy.h index 835fa27ce8a323ea71583166673ee903b2fa1973..b53326176cde094250a4763413768ec6f387d0eb 100644 --- a/src/processor_tracker_landmark_dummy.h +++ b/src/processor_tracker_landmark_dummy.h @@ -20,6 +20,7 @@ class ProcessorTrackerLandmarkDummy : public ProcessorTrackerLandmark public: ProcessorTrackerLandmarkDummy(const Scalar _time_tolerance, const unsigned int& _max_new_features); virtual ~ProcessorTrackerLandmarkDummy(); + virtual void configure(SensorBasePtr _sensor) { /* empty */} protected: diff --git a/src/processor_tracker_landmark_polyline.h b/src/processor_tracker_landmark_polyline.h index 795e4627c1b6d491527eb242baa9006caed112ed..8236cb65e6744be35c11945f8ec675bf06d050af 100644 --- a/src/processor_tracker_landmark_polyline.h +++ b/src/processor_tracker_landmark_polyline.h @@ -114,8 +114,8 @@ class ProcessorTrackerLandmarkPolyline : public ProcessorTrackerLandmark EIGEN_MAKE_ALIGNED_OPERATOR_NEW; // to guarantee alignment (see http://eigen.tuxfamily.org/dox-devel/group__TopicStructHavingEigenMembers.html) ProcessorTrackerLandmarkPolyline(const ProcessorParamsPolyline& _params); - virtual ~ProcessorTrackerLandmarkPolyline(); + virtual void configure(SensorBasePtr _sensor) { /* empty */} const FeatureBaseList& getLastPolylines() const; diff --git a/src/processors/processor_diff_drive.h b/src/processors/processor_diff_drive.h index 6daba603107608f25cbd79db659ca5de30b850ea..f47873b227b1df0a448f86d4d55946d6682d2d15 100644 --- a/src/processors/processor_diff_drive.h +++ b/src/processors/processor_diff_drive.h @@ -56,8 +56,8 @@ class ProcessorDiffDrive : public ProcessorMotion public: ProcessorDiffDrive(const ProcessorParamsDiffDrive& params); - virtual ~ProcessorDiffDrive() = default; + virtual void configure(SensorBasePtr _sensor) { /* empty */} virtual bool voteForKeyFrame() override;