diff --git a/include/laser/processor/processor_odom_icp.h b/include/laser/processor/processor_odom_icp.h index 5c6c16e25c2db253a23a52b07184997df8ca94a1..221160f8fe2f3a9543f5d7eac75ed5a9186f3deb 100644 --- a/include/laser/processor/processor_odom_icp.h +++ b/include/laser/processor/processor_odom_icp.h @@ -88,9 +88,8 @@ class ProcessorOdomICP : public ProcessorTracker public: ProcessorOdomICP(ProcessorParamsOdomICPPtr _params); + WOLF_PROCESSOR_CREATE(ProcessorOdomICP, ProcessorParamsOdomICP); virtual ~ProcessorOdomICP(); - static ProcessorBasePtr create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr); - static ProcessorBasePtr createAutoConf(const std::string& _unique_name, const ParamsServer& _server, const SensorBasePtr sensor_ptr); virtual void configure(SensorBasePtr _sensor) override; protected: diff --git a/include/laser/processor/processor_tracker_feature_polyline_2D.h b/include/laser/processor/processor_tracker_feature_polyline_2D.h index 90eb72e10483ae5d2f2f7447885f7870019e94f7..f50d33fd87074be6dd234990a63ba2cc50787a33 100644 --- a/include/laser/processor/processor_tracker_feature_polyline_2D.h +++ b/include/laser/processor/processor_tracker_feature_polyline_2D.h @@ -38,6 +38,18 @@ typedef std::map<Scalar,LandmarkMatchPolyline2DPtr> LandmarkMatchPolyline2DScala struct ProcessorParamsTrackerFeaturePolyline2D : public ProcessorParamsTrackerFeature { + ProcessorParamsTrackerFeaturePolyline2D() = default; + ProcessorParamsTrackerFeaturePolyline2D(std::string _unique_name, const wolf::ParamsServer & _server) : + ProcessorParamsTrackerFeature(_unique_name, _server) + { + // TODO write parser! + } + std::string print() + { + return "\n" + ProcessorParamsTrackerFeature::print(); + // TODO write printer! + } + laserscanutils::LineFinderIterativeParams line_finder_params; Scalar match_feature_position_sq_norm_max; Scalar match_feature_orientation_sq_norm_max; @@ -83,6 +95,7 @@ class ProcessorTrackerFeaturePolyline2D : public ProcessorTrackerFeature public: ProcessorTrackerFeaturePolyline2D(ProcessorParamsTrackerFeaturePolyline2DPtr _params); + WOLF_PROCESSOR_CREATE(ProcessorTrackerFeaturePolyline2D, ProcessorParamsTrackerFeaturePolyline2D); virtual ~ProcessorTrackerFeaturePolyline2D(); @@ -244,14 +257,6 @@ class ProcessorTrackerFeaturePolyline2D : public ProcessorTrackerFeature public: - /// @brief Factory method - static ProcessorBasePtr create(const std::string& _unique_name, - const ProcessorParamsBasePtr _params); - - static ProcessorBasePtr createAutoConf(const std::string& _unique_name, - const ParamsServer& _server, - const SensorBasePtr _sensor_ptr); - const FeatureBasePtrList& getLastNewFeatures() const { return untracked_features_last_; diff --git a/include/laser/sensor/sensor_laser_2D.h b/include/laser/sensor/sensor_laser_2D.h index 23ffe2cda1bea63202620dda4607d489434973e2..fa4913736945bf2a620db3ae4f08d90570052be4 100644 --- a/include/laser/sensor/sensor_laser_2D.h +++ b/include/laser/sensor/sensor_laser_2D.h @@ -84,6 +84,7 @@ class SensorLaser2D : public SensorBase SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, const IntrinsicsLaser2D& _params); SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, IntrinsicsLaser2DPtr _params); SensorLaser2D(const Eigen::VectorXs& _extrinsics, IntrinsicsLaser2DPtr _params); + WOLF_SENSOR_CREATE(SensorLaser2D, IntrinsicsLaser2D, 3); virtual ~SensorLaser2D(); @@ -104,9 +105,7 @@ class SensorLaser2D : public SensorBase const laserscanutils::LaserScanParams & getScanParams() const; public: - static SensorBasePtr create(const std::string& _unique_name, const Eigen::VectorXs& _extrinsics_po, const IntrinsicsBasePtr _intrinsics); - static SensorBasePtr createAutoConf(const std::string& _unique_name, const ParamsServer& _server); - static IntrinsicsBasePtr createParams(const std::string& _filename_dot_yaml); +// static IntrinsicsBasePtr createParams(const std::string& _filename_dot_yaml); }; diff --git a/src/processor/processor_odom_icp.cpp b/src/processor/processor_odom_icp.cpp index f581f09018bd670f22afaaac2f78a7f6401b7255..0e0102c4e628136731716b4e39be20763c08e15b 100644 --- a/src/processor/processor_odom_icp.cpp +++ b/src/processor/processor_odom_icp.cpp @@ -221,45 +221,9 @@ FactorBasePtr ProcessorOdomICP::emplaceFactor(FeatureBasePtr _feature) } - -/// FACTORY METHODS -- to be replaced by macro after PR !313 addressing issue #248 is merged. -ProcessorBasePtr ProcessorOdomICP::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr) -{ - ProcessorOdomICPPtr prc_ptr; - - ProcessorParamsOdomICPPtr params; - if (_params) - params = std::static_pointer_cast<ProcessorParamsOdomICP>(_params); - else - params = std::make_shared<ProcessorParamsOdomICP>(); - - prc_ptr = std::make_shared<ProcessorOdomICP>(params); - prc_ptr->setName(_unique_name); - - return prc_ptr; -} - -ProcessorBasePtr ProcessorOdomICP::createAutoConf(const std::string& _unique_name, const ParamsServer& _server, const SensorBasePtr sensor_ptr) -{ - - ProcessorOdomICPPtr prc_ptr; - auto params = std::make_shared<ProcessorParamsOdomICP>(_unique_name, _server); - prc_ptr = std::make_shared<ProcessorOdomICP>(params); - // WOLF_TRACE("\n", params->print()); - prc_ptr->setName(_unique_name); - WOLF_TRACE("\n", prc_ptr->proc_params_->print()); - - return prc_ptr; -} - - - // Register in the SensorFactory #include "core/processor/processor_factory.h" namespace wolf { -WOLF_REGISTER_PROCESSOR("ODOM ICP", ProcessorOdomICP) -} /* namespace wolf */ -#include "core/processor/autoconf_processor_factory.h" -namespace wolf { - WOLF_REGISTER_PROCESSOR_AUTO("ODOM ICP", ProcessorOdomICP) + WOLF_REGISTER_PROCESSOR("ODOM ICP", ProcessorOdomICP); + WOLF_REGISTER_PROCESSOR_AUTO("ODOM ICP", ProcessorOdomICP); } // namespace wolf diff --git a/src/processor/processor_tracker_feature_polyline_2D.cpp b/src/processor/processor_tracker_feature_polyline_2D.cpp index dad12aaf7d615a9c09c12532fc5448815e3cdc74..404889898031bf5e548ef957625c071c0b8fe08f 100644 --- a/src/processor/processor_tracker_feature_polyline_2D.cpp +++ b/src/processor/processor_tracker_feature_polyline_2D.cpp @@ -1363,32 +1363,12 @@ void ProcessorTrackerFeaturePolyline2D::computeTransformations() //std::cout << "R_last_incoming_ " << std::endl << R_last_incoming_ << std::endl; } -ProcessorBasePtr ProcessorTrackerFeaturePolyline2D::create(const std::string& _unique_name, - const ProcessorParamsBasePtr _params) -{ - auto params = std::static_pointer_cast<ProcessorParamsTrackerFeaturePolyline2D>(_params); - - auto prc_ptr = std::make_shared<ProcessorTrackerFeaturePolyline2D>(params); - - prc_ptr->setName(_unique_name); - - return prc_ptr; -} -ProcessorBasePtr ProcessorTrackerFeaturePolyline2D::createAutoConf(const std::string& _unique_name, - const ParamsServer& _server, - const SensorBasePtr _sensor_ptr) -{ - return nullptr; -} } /* namespace wolf */ // Register in the SensorFactory #include "core/processor/processor_factory.h" namespace wolf { -WOLF_REGISTER_PROCESSOR("TRACKER FEATURE POLYLINE", ProcessorTrackerFeaturePolyline2D) -} /* namespace wolf */ -#include "core/processor/autoconf_processor_factory.h" -namespace wolf { - WOLF_REGISTER_PROCESSOR_AUTO("TRACKER FEATURE POLYLINE", ProcessorTrackerFeaturePolyline2D) -} // namespace wolf \ No newline at end of file + WOLF_REGISTER_PROCESSOR("TRACKER FEATURE POLYLINE", ProcessorTrackerFeaturePolyline2D); + WOLF_REGISTER_PROCESSOR_AUTO("TRACKER FEATURE POLYLINE", ProcessorTrackerFeaturePolyline2D); +} // namespace wolf diff --git a/src/sensor/sensor_laser_2D.cpp b/src/sensor/sensor_laser_2D.cpp index 173208479a9bc6c2dcea8bfa5babf97762eed8d0..a31115ef3c51761ad991d1a79fb97022ba8bf4a1 100644 --- a/src/sensor/sensor_laser_2D.cpp +++ b/src/sensor/sensor_laser_2D.cpp @@ -50,13 +50,6 @@ SensorLaser2D::SensorLaser2D(const Eigen::VectorXs& _extrinsics, const Intrinsic // } -SensorLaser2D::SensorLaser2D(const Eigen::VectorXs& _extrinsics, IntrinsicsLaser2DPtr _params) : - SensorLaser2D(std::make_shared<StateBlock>(_extrinsics.head(2), true, nullptr), - std::make_shared<StateAngle>(_extrinsics(2), true), - _params) -{ -} - SensorLaser2D::~SensorLaser2D() { // @@ -85,43 +78,11 @@ const laserscanutils::LaserScanParams& SensorLaser2D::getScanParams() const return scan_params_; } -// Define the factory method -SensorBasePtr SensorLaser2D::create(const std::string& _unique_name, const Eigen::VectorXs& _extrinsics_po, - const IntrinsicsBasePtr _intrinsics) -{ - // decode extrinsics vector - assert(_extrinsics_po.size() == 3 && "Bad extrinsics vector length. Should be 3 for 2D."); - StateBlockPtr pos_ptr = std::make_shared<StateBlock>(_extrinsics_po.head(2), true); - StateBlockPtr ori_ptr = std::make_shared<StateBlock>(_extrinsics_po.tail(1), true); - // cast intrinsics into derived type - IntrinsicsLaser2DPtr params = std::static_pointer_cast<IntrinsicsLaser2D>(_intrinsics); - SensorLaser2DPtr sen = std::make_shared<SensorLaser2D>(pos_ptr, ori_ptr, params->scan_params); - sen->setName(_unique_name); - return sen; -} - -SensorBasePtr SensorLaser2D::createAutoConf(const std::string& _unique_name, const ParamsServer& _server) -{ - // decode extrinsics vector - Eigen::VectorXs _extrinsics_po = _server.getParam<Eigen::VectorXs>(_unique_name + "/extrinsic/pos"); - assert(_extrinsics_po.size() == 3 && "Bad extrinsics vector length. Should be 3 for 2D."); - StateBlockPtr pos_ptr = std::make_shared<StateBlock>(_extrinsics_po.head(2), true); - StateBlockPtr ori_ptr = std::make_shared<StateBlock>(_extrinsics_po.tail(1), true); - - SensorLaser2DPtr sen; - IntrinsicsLaser2D params; - - sen = std::make_shared<SensorLaser2D>(pos_ptr, ori_ptr, params.scan_params); - - sen->setName(_unique_name); - return sen; -} } // namespace wolf // Register in the SensorFactory and the ParameterFactory #include "core/sensor/sensor_factory.h" -//#include "intrinsics_factory.h" namespace wolf { WOLF_REGISTER_SENSOR("LASER 2D", SensorLaser2D) WOLF_REGISTER_SENSOR_AUTO("LASER 2D", SensorLaser2D)