diff --git a/hello_wolf/processor_range_bearing.cpp b/hello_wolf/processor_range_bearing.cpp index d12fa8b159203afac4067e7c87dc12f4857c58cc..37c740b4205387be20683601d49fff399de1d70b 100644 --- a/hello_wolf/processor_range_bearing.cpp +++ b/hello_wolf/processor_range_bearing.cpp @@ -99,19 +99,6 @@ void ProcessorRangeBearing::processCapture(CaptureBasePtr _capture) } -ProcessorBasePtr ProcessorRangeBearing::create(const std::string& _unique_name, - const ProcessorParamsBasePtr _params) -{ - auto params = std::static_pointer_cast<ProcessorParamsRangeBearing>(_params); - - // construct processor - auto prc = std::make_shared<ProcessorRangeBearing>(params); - - // setup processor - prc->setName(_unique_name); - - return prc; -} Eigen::Vector2s ProcessorRangeBearing::observe(const Eigen::Vector2s& lmk_w) const { diff --git a/hello_wolf/processor_range_bearing.h b/hello_wolf/processor_range_bearing.h index 4752972086b1473dc33b2bc382773b2f45b051e0..527efd1f60afc7f1f688b795dbe0bf7fd4546628 100644 --- a/hello_wolf/processor_range_bearing.h +++ b/hello_wolf/processor_range_bearing.h @@ -50,9 +50,7 @@ class ProcessorRangeBearing : public ProcessorBase virtual void configure(SensorBasePtr _sensor) override; // Factory method for high level API - static ProcessorBasePtr create(const std::string& _unique_name, - const ProcessorParamsBasePtr _params); - WOLF_CREATE_PROCESSOR_AUTO(ProcessorRangeBearing, ProcessorParamsRangeBearing); + WOLF_PROCESSOR_CREATE(ProcessorRangeBearing, ProcessorParamsRangeBearing); protected: // Implementation of pure virtuals from ProcessorBase diff --git a/include/core/processor/processor_base.h b/include/core/processor/processor_base.h index da7089c17e3d854b31014cdda3b318dea47037f2..fdbd88974f34df0326e16808c5b82378dfa73249 100644 --- a/include/core/processor/processor_base.h +++ b/include/core/processor/processor_base.h @@ -28,20 +28,30 @@ namespace wolf { * In order to use this macro, the derived processor class, ProcessorClass, * must have a constructor available with the API: * - * ProcessorClass(const SensorClassPtr _sensor, const ProcessorParamsClassPtr _params); + * ProcessorClass(const ProcessorParamsClassPtr _params); */ -#define WOLF_CREATE_PROCESSOR_AUTO(ProcessorClass, ProcessorParamsClass) \ -static ProcessorBasePtr createAutoConf(const std::string& _unique_name, \ - const ParamsServer& _server) \ -{ \ - auto params = std::make_shared<ProcessorParamsClass>(_unique_name, _server); \ - \ - auto processor = std::make_shared<ProcessorClass>(params); \ - \ - processor ->setName(_unique_name); \ - \ - return processor; \ -} +#define WOLF_PROCESSOR_CREATE(ProcessorClass, ProcessorParamsClass) \ +static ProcessorBasePtr createAutoConf(const std::string& _unique_name, \ + const ParamsServer& _server) \ +{ \ + auto params = std::make_shared<ProcessorParamsClass>(_unique_name, _server); \ + \ + auto processor = std::make_shared<ProcessorClass>(params); \ + \ + processor ->setName(_unique_name); \ + \ + return processor; \ +} \ +static ProcessorBasePtr create(const std::string& _unique_name, const ProcessorParamsBasePtr _params) \ +{ \ + auto params = std::static_pointer_cast<ProcessorParamsClass>(_params); \ + \ + auto processor = std::make_shared<ProcessorClass>(params); \ + \ + processor ->setName(_unique_name); \ + \ + return processor; \ +} \ diff --git a/include/core/processor/processor_diff_drive.h b/include/core/processor/processor_diff_drive.h index 297ce7a38c139387aac80a987137ee61bb18202f..d4aa5a792ef4d571a057824099d4430696088c86 100644 --- a/include/core/processor/processor_diff_drive.h +++ b/include/core/processor/processor_diff_drive.h @@ -38,9 +38,7 @@ class ProcessorDiffDrive : public ProcessorOdom2D virtual void configure(SensorBasePtr _sensor) override; // Factory method for high level API - static ProcessorBasePtr create(const std::string& _unique_name, - const ProcessorParamsBasePtr _params); - WOLF_CREATE_PROCESSOR_AUTO(ProcessorDiffDrive, ProcessorParamsDiffDrive); + WOLF_PROCESSOR_CREATE(ProcessorDiffDrive, ProcessorParamsDiffDrive); protected: // Motion integration diff --git a/include/core/processor/processor_odom_2D.h b/include/core/processor/processor_odom_2D.h index 9d9c8096a6c5af7b641e7885d6a41d28175e123b..27d180d437f06f38423a8cae9c3ae83d350d60c5 100644 --- a/include/core/processor/processor_odom_2D.h +++ b/include/core/processor/processor_odom_2D.h @@ -45,9 +45,7 @@ class ProcessorOdom2D : public ProcessorMotion virtual void configure(SensorBasePtr _sensor) override { }; // Factory method for high level API - static ProcessorBasePtr create(const std::string& _unique_name, - const ProcessorParamsBasePtr _params); - WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom2D, ProcessorParamsOdom2D); + WOLF_PROCESSOR_CREATE(ProcessorOdom2D, ProcessorParamsOdom2D); virtual bool voteForKeyFrame() override; diff --git a/include/core/processor/processor_odom_3D.h b/include/core/processor/processor_odom_3D.h index ce97160321f22053f926c959089fa2444d300000..62128c90469b8883f8350b16e8e02e7d654d4c8f 100644 --- a/include/core/processor/processor_odom_3D.h +++ b/include/core/processor/processor_odom_3D.h @@ -65,9 +65,7 @@ class ProcessorOdom3D : public ProcessorMotion virtual void configure(SensorBasePtr _sensor) override; // Factory method for high level API - static ProcessorBasePtr create(const std::string& _unique_name, - const ProcessorParamsBasePtr _params); - WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom3D, ProcessorParamsOdom3D); + WOLF_PROCESSOR_CREATE(ProcessorOdom3D, ProcessorParamsOdom3D); public: // Motion integration diff --git a/src/processor/processor_diff_drive.cpp b/src/processor/processor_diff_drive.cpp index 07bf75b344e1c9ccbafea0c5dfee8e1179b6e4b8..52cf7ebd9550fb1938b6d80983b60789d9db0e8e 100644 --- a/src/processor/processor_diff_drive.cpp +++ b/src/processor/processor_diff_drive.cpp @@ -31,16 +31,6 @@ ProcessorDiffDrive::~ProcessorDiffDrive() // } -ProcessorBasePtr ProcessorDiffDrive::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params) -{ - auto params = std::static_pointer_cast<ProcessorParamsDiffDrive>(_params); - - auto prc_ptr = std::make_shared<ProcessorDiffDrive>(params); - - prc_ptr->setName(_unique_name); - - return prc_ptr; -} void ProcessorDiffDrive::configure(SensorBasePtr _sensor) { diff --git a/src/processor/processor_odom_2D.cpp b/src/processor/processor_odom_2D.cpp index e9b7dd34ac9ed073f6c68120b34293cd477e5fb1..25e45242af0d6a52eb77adb8ba0f26c8517b08a3 100644 --- a/src/processor/processor_odom_2D.cpp +++ b/src/processor/processor_odom_2D.cpp @@ -167,16 +167,6 @@ FeatureBasePtr ProcessorOdom2D::emplaceFeature(CaptureMotionPtr _capture_motion) return key_feature_ptr; } -ProcessorBasePtr ProcessorOdom2D::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params) -{ - auto params = std::static_pointer_cast<ProcessorParamsOdom2D>(_params); - - auto prc_ptr = std::make_shared<ProcessorOdom2D>(params); - - prc_ptr->setName(_unique_name); - - return prc_ptr; -} } /* namespace wolf */ diff --git a/src/processor/processor_odom_3D.cpp b/src/processor/processor_odom_3D.cpp index e519b9470cf857e050b4afe8a5af52f66cfba017..6486554ec2e0e1af49dbe14683b3b9d074c4b945 100644 --- a/src/processor/processor_odom_3D.cpp +++ b/src/processor/processor_odom_3D.cpp @@ -333,19 +333,6 @@ Motion ProcessorOdom3D::interpolate(const Motion& _ref1, } -ProcessorBasePtr ProcessorOdom3D::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params) -{ - // cast inputs to the correct type - auto params = std::static_pointer_cast<ProcessorParamsOdom3D>(_params); - - // construct processor - auto prc_odo = std::make_shared<ProcessorOdom3D>(params); - - // setup processor - prc_odo->setName(_unique_name); - - return prc_odo; -} bool ProcessorOdom3D::voteForKeyFrame() {