diff --git a/src/examples/test_kf_callback.cpp b/src/examples/test_kf_callback.cpp index 5101341c0a3ac7ea06a6245361dfac35ed1cde26..75d0c293951a09c467096297062d60ba1b0ce9f0 100644 --- a/src/examples/test_kf_callback.cpp +++ b/src/examples/test_kf_callback.cpp @@ -25,7 +25,7 @@ int main() prc_odo->setTimeTolerance(0.1); SensorBasePtr sen_ftr = problem->installSensor ("ODOM 2D", "other odometer", (Vector3s()<<0,0,0).finished(),""); - shared_ptr<ProcessorTrackerFeatureDummy> prc_ftr = make_shared<ProcessorTrackerFeatureDummy>(7, 4); + shared_ptr<ProcessorTrackerFeatureDummy> prc_ftr = make_shared<ProcessorTrackerFeatureDummy>(0.5, 7, 4); prc_ftr->setName("tracker"); sen_ftr->addProcessor(prc_ftr); prc_ftr->setTimeTolerance(0.1); diff --git a/src/examples/test_processor_tracker_feature.cpp b/src/examples/test_processor_tracker_feature.cpp index 15655bce2e5f2553974f5278127117169dcd65dd..fcf29c545f2cdd837f5190f0c123e8bde25835d7 100644 --- a/src/examples/test_processor_tracker_feature.cpp +++ b/src/examples/test_processor_tracker_feature.cpp @@ -31,7 +31,7 @@ int main() std::make_shared<StateBlock>(Eigen::VectorXs::Zero(1)), std::make_shared<StateBlock>(Eigen::VectorXs::Zero(2)), 2); - shared_ptr<ProcessorTrackerFeatureDummy> processor_ptr_ = make_shared<ProcessorTrackerFeatureDummy>(7, 4); + shared_ptr<ProcessorTrackerFeatureDummy> processor_ptr_ = make_shared<ProcessorTrackerFeatureDummy>(.25, 7, 4); wolf_problem_ptr_->addSensor(sensor_ptr_); sensor_ptr_->addProcessor(processor_ptr_); diff --git a/src/examples/test_processor_tracker_landmark.cpp b/src/examples/test_processor_tracker_landmark.cpp index bc5955a56a0cc50f0daffc85b455a9bfa9179898..6f828298d8147e1bba28f373558d8eda96c04276 100644 --- a/src/examples/test_processor_tracker_landmark.cpp +++ b/src/examples/test_processor_tracker_landmark.cpp @@ -66,7 +66,7 @@ int main() std::make_shared<StateBlock>(Eigen::VectorXs::Zero(1)), std::make_shared<StateBlock>(Eigen::VectorXs::Zero(2)), 2); - std::shared_ptr<ProcessorTrackerLandmarkDummy> processor_ptr_ = std::make_shared< ProcessorTrackerLandmarkDummy>(5); + std::shared_ptr<ProcessorTrackerLandmarkDummy> processor_ptr_ = std::make_shared< ProcessorTrackerLandmarkDummy>(.25, 5); wolf_problem_ptr_->addSensor(sensor_ptr_); sensor_ptr_->addProcessor(processor_ptr_); diff --git a/src/processor_base.h b/src/processor_base.h index f9b33533bfa3dd85a0025ed481320c0cda493227..0d10721f910fd04a119c6864ee50f285ea75d258 100644 --- a/src/processor_base.h +++ b/src/processor_base.h @@ -106,9 +106,6 @@ class KFPackBuffer */ struct ProcessorParamsBase { - ProcessorParamsBase() {time_tolerance = 0;}; - virtual ~ProcessorParamsBase() = default; - std::string type; std::string name; Scalar time_tolerance; @@ -129,7 +126,7 @@ class ProcessorBase : public NodeBase, public std::enable_shared_from_this<Proce static unsigned int processor_id_count_; public: - ProcessorBase(const std::string& _type, const Scalar& _time_tolerance = 0); + ProcessorBase(const std::string& _type, const Scalar& _time_tolerance); virtual ~ProcessorBase(); void remove(); diff --git a/src/processor_frame_nearest_neighbor_filter.cpp b/src/processor_frame_nearest_neighbor_filter.cpp index a9c1205653bd6f19c55c85c49058fdb75be22b9d..8d23b6d4e7270db98b84778abdcf610815901d74 100644 --- a/src/processor_frame_nearest_neighbor_filter.cpp +++ b/src/processor_frame_nearest_neighbor_filter.cpp @@ -4,7 +4,7 @@ namespace wolf { ProcessorFrameNearestNeighborFilter::ProcessorFrameNearestNeighborFilter(const Params& _params): - ProcessorLoopClosureBase("FRAME NEAREST NEIGHBOR FILTER"), + ProcessorLoopClosureBase("FRAME NEAREST NEIGHBOR FILTER", _params.time_tolerance), params_(_params) { // area of ellipse based on the Chi-Square Probabilities diff --git a/src/processor_image_feature.cpp b/src/processor_image_feature.cpp index c728686d73a4d9ce85ef5c61cf6dfd381522a1b6..56f331f86618154df9b36eb21163694f1c556aa5 100644 --- a/src/processor_image_feature.cpp +++ b/src/processor_image_feature.cpp @@ -13,7 +13,7 @@ namespace wolf #if defined (HAVE_OPENCV3) ProcessorImageFeature::ProcessorImageFeature(ProcessorParamsImage _params) : - ProcessorTrackerFeature("IMAGE", _params.algorithm.max_new_features), + ProcessorTrackerFeature("IMAGE", _params.time_tolerance, _params.algorithm.max_new_features), params_(_params), active_search_grid_() { @@ -81,7 +81,7 @@ ProcessorImageFeature::ProcessorImageFeature(ProcessorParamsImage _params) : #else ProcessorImageFeature::ProcessorImageFeature(ProcessorParamsImage _params) : - ProcessorTrackerFeature("IMAGE", _params.algorithm.max_new_features), + ProcessorTrackerFeature("IMAGE", _params.time_tolerance, _params.algorithm.max_new_features), matcher_ptr_(nullptr), detector_descriptor_ptr_(nullptr), params_(_params), diff --git a/src/processor_loopclosure_base.cpp b/src/processor_loopclosure_base.cpp index f1a2a3c649ab3295ca5400834015a1dd6dc3f3ef..3369b5bc53b0b4a24e35813b122139f0ea1e975b 100644 --- a/src/processor_loopclosure_base.cpp +++ b/src/processor_loopclosure_base.cpp @@ -10,8 +10,8 @@ namespace wolf { -ProcessorLoopClosureBase::ProcessorLoopClosureBase(const std::string& _type): - ProcessorBase(_type) +ProcessorLoopClosureBase::ProcessorLoopClosureBase(const std::string& _type, const Scalar _time_tolerance): + ProcessorBase(_type, _time_tolerance) { // } diff --git a/src/processor_loopclosure_base.h b/src/processor_loopclosure_base.h index 8c5f1493865816820ace7e78b4e556a7ccd8bde2..8de42fa59b6beea14f0e7209f5de8c15b6c9fe49 100644 --- a/src/processor_loopclosure_base.h +++ b/src/processor_loopclosure_base.h @@ -45,7 +45,7 @@ protected: public: - ProcessorLoopClosureBase(const std::string& _type); + ProcessorLoopClosureBase(const std::string& _type, const Scalar _time_tolerance); virtual ~ProcessorLoopClosureBase() = default; diff --git a/src/processor_tracker.cpp b/src/processor_tracker.cpp index 1268c2debc5c2a7320e1479009657820f728ddcb..45718021a33625a45d08d116b2042dce179ee189 100644 --- a/src/processor_tracker.cpp +++ b/src/processor_tracker.cpp @@ -14,7 +14,7 @@ namespace wolf { -ProcessorTracker::ProcessorTracker(const std::string& _type, const unsigned int _max_new_features, const Scalar& _time_tolerance) : +ProcessorTracker::ProcessorTracker(const std::string& _type, const Scalar& _time_tolerance, const unsigned int _max_new_features) : ProcessorBase(_type, _time_tolerance), processing_step_(FIRST_TIME_WITHOUT_PACK), origin_ptr_(nullptr), diff --git a/src/processor_tracker.h b/src/processor_tracker.h index d4c63b71f56091e9ec770fefaf0d99f7a7e32b4b..d8b39bf39422d59b3b73f46339d08685b4c08f5d 100644 --- a/src/processor_tracker.h +++ b/src/processor_tracker.h @@ -87,7 +87,7 @@ class ProcessorTracker : public ProcessorBase FeatureBaseList new_features_incoming_; ///< list of the new features of \b last successfully tracked in \b incoming public: - ProcessorTracker(const std::string& _type, const unsigned int _max_new_features = 0, const Scalar& _time_tolerance = 0.1); + ProcessorTracker(const std::string& _type, const Scalar& _time_tolerance, const unsigned int _max_new_features); virtual ~ProcessorTracker(); /** \brief Full processing of an incoming Capture. diff --git a/src/processor_tracker_feature.cpp b/src/processor_tracker_feature.cpp index e7da3b55749c25a00a0027772f6483d659d8a9f7..9c1efa23330838108b68d07e4d0f0b7f95ebcab5 100644 --- a/src/processor_tracker_feature.cpp +++ b/src/processor_tracker_feature.cpp @@ -10,8 +10,8 @@ namespace wolf { -ProcessorTrackerFeature::ProcessorTrackerFeature(const std::string& _type, const unsigned int _max_new_features) : - ProcessorTracker(_type, _max_new_features) +ProcessorTrackerFeature::ProcessorTrackerFeature(const std::string& _type, const Scalar _time_tolerance, const unsigned int _max_new_features) : + ProcessorTracker(_type, _time_tolerance, _max_new_features) { } diff --git a/src/processor_tracker_feature.h b/src/processor_tracker_feature.h index 302d5f41699c9345913f316f3cef0e5c0a4d7844..f196ddfa7a1570e3c14663e5e02f6bec5aa690ba 100644 --- a/src/processor_tracker_feature.h +++ b/src/processor_tracker_feature.h @@ -76,7 +76,7 @@ class ProcessorTrackerFeature : public ProcessorTracker /** \brief Constructor with type */ - ProcessorTrackerFeature(const std::string& _type, const unsigned int _max_new_features = 0); + ProcessorTrackerFeature(const std::string& _type, const Scalar _time_tolerance, const unsigned int _max_new_features); virtual ~ProcessorTrackerFeature(); protected: diff --git a/src/processor_tracker_feature_dummy.h b/src/processor_tracker_feature_dummy.h index 6fa449695f09a56fa93932dddf4d359e29000369..f6a917cf12cd5ed09bc62afdc88a7b207df9ffb0 100644 --- a/src/processor_tracker_feature_dummy.h +++ b/src/processor_tracker_feature_dummy.h @@ -22,7 +22,7 @@ class ProcessorTrackerFeatureDummy : public ProcessorTrackerFeature { public: - ProcessorTrackerFeatureDummy(const unsigned int _max_new_features, const unsigned int _min_feat_for_keyframe); + ProcessorTrackerFeatureDummy(const Scalar _time_tolerance, const unsigned int _max_new_features, const unsigned int _min_feat_for_keyframe); virtual ~ProcessorTrackerFeatureDummy(); protected: @@ -73,8 +73,8 @@ class ProcessorTrackerFeatureDummy : public ProcessorTrackerFeature }; -inline ProcessorTrackerFeatureDummy::ProcessorTrackerFeatureDummy(const unsigned int _max_new_features, const unsigned int _min_feat_for_keyframe) : - ProcessorTrackerFeature("TRACKER FEATURE DUMMY", _max_new_features), +inline ProcessorTrackerFeatureDummy::ProcessorTrackerFeatureDummy(const Scalar _time_tolerance, const unsigned int _max_new_features, const unsigned int _min_feat_for_keyframe) : + ProcessorTrackerFeature("TRACKER FEATURE DUMMY", _time_tolerance, _max_new_features), n_feature_(0), min_feat_for_keyframe_(_min_feat_for_keyframe) { // diff --git a/src/processor_tracker_landmark.cpp b/src/processor_tracker_landmark.cpp index 9c06036595520a7c30fb65fcb1b0a91f26310ba3..9fd9bd499d3e60395ed331eff03570cda8ca12b2 100644 --- a/src/processor_tracker_landmark.cpp +++ b/src/processor_tracker_landmark.cpp @@ -14,8 +14,8 @@ namespace wolf { -ProcessorTrackerLandmark::ProcessorTrackerLandmark(const std::string& _type, const unsigned int& _max_new_features, const Scalar& _time_tolerance) : - ProcessorTracker(_type, _max_new_features, _time_tolerance) +ProcessorTrackerLandmark::ProcessorTrackerLandmark(const std::string& _type, const Scalar& _time_tolerance, const unsigned int& _max_new_features) : + ProcessorTracker(_type, _time_tolerance, _max_new_features) { } diff --git a/src/processor_tracker_landmark.h b/src/processor_tracker_landmark.h index 44db01813ba1002ded7dc1309f10a3bb964164c8..8f6c5c3e63fa14e8e9b1321fc97f481b89a74620 100644 --- a/src/processor_tracker_landmark.h +++ b/src/processor_tracker_landmark.h @@ -72,7 +72,7 @@ WOLF_PTR_TYPEDEFS(ProcessorTrackerLandmark); class ProcessorTrackerLandmark : public ProcessorTracker { public: - ProcessorTrackerLandmark(const std::string& _type, const unsigned int& _max_new_features = 0, const Scalar& _time_tolerance = 0.1); + ProcessorTrackerLandmark(const std::string& _type, const Scalar& _time_tolerance, const unsigned int& _max_new_features); virtual ~ProcessorTrackerLandmark(); protected: diff --git a/src/processor_tracker_landmark_dummy.cpp b/src/processor_tracker_landmark_dummy.cpp index 71051458bfdd9ef5b5f4013984e20de93c4370b8..02d5f9893fdd4df0ba791e649448f703861a71b6 100644 --- a/src/processor_tracker_landmark_dummy.cpp +++ b/src/processor_tracker_landmark_dummy.cpp @@ -12,8 +12,10 @@ namespace wolf { -ProcessorTrackerLandmarkDummy::ProcessorTrackerLandmarkDummy(const unsigned int& _max_new_features) : - ProcessorTrackerLandmark("TRACKER LANDMARK DUMMY", _max_new_features, 0.1), n_feature_(0), landmark_idx_non_visible_(0) +ProcessorTrackerLandmarkDummy::ProcessorTrackerLandmarkDummy(const Scalar _time_tolerance, const unsigned int& _max_new_features) : + ProcessorTrackerLandmark("TRACKER LANDMARK DUMMY", _time_tolerance, _max_new_features), + n_feature_(0), + landmark_idx_non_visible_(0) { // diff --git a/src/processor_tracker_landmark_dummy.h b/src/processor_tracker_landmark_dummy.h index 4c8a2b8c8d09477a9ea27ba2020ac8151e9f28e0..835fa27ce8a323ea71583166673ee903b2fa1973 100644 --- a/src/processor_tracker_landmark_dummy.h +++ b/src/processor_tracker_landmark_dummy.h @@ -18,7 +18,7 @@ WOLF_PTR_TYPEDEFS(ProcessorTrackerLandmarkDummy); class ProcessorTrackerLandmarkDummy : public ProcessorTrackerLandmark { public: - ProcessorTrackerLandmarkDummy(const unsigned int& _max_new_features); + ProcessorTrackerLandmarkDummy(const Scalar _time_tolerance, const unsigned int& _max_new_features); virtual ~ProcessorTrackerLandmarkDummy(); protected: diff --git a/src/processors/processor_diff_drive.cpp b/src/processors/processor_diff_drive.cpp index 43eb7fed018937d7eae6228e92b5bc1a4558fc6a..535cd5c178b0f184d23cfcc95d3689683a8464cb 100644 --- a/src/processors/processor_diff_drive.cpp +++ b/src/processors/processor_diff_drive.cpp @@ -242,16 +242,11 @@ FeatureBasePtr ProcessorDiffDrive::createFeature(CaptureMotionPtr _capture_motio return key_feature_ptr; } -//bool ProcessorDiffDrive::keyFrameCallback(FrameBasePtr _keyframe_ptr, const Scalar& _time_tol) -//{ -// return ProcessorMotion::keyFrameCallback(_keyframe_ptr, _time_tol); -//} - ProcessorBasePtr ProcessorDiffDrive::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr _sensor_ptr) { - const auto params = std::dynamic_pointer_cast<ProcessorParamsDiffDrive>(_params); + const auto params = std::static_pointer_cast<ProcessorParamsDiffDrive>(_params); if (params == nullptr) { diff --git a/src/processors/processor_diff_drive.h b/src/processors/processor_diff_drive.h index 030cb9516036bfbae7fd22c2a79073c3a3400146..6daba603107608f25cbd79db659ca5de30b850ea 100644 --- a/src/processors/processor_diff_drive.h +++ b/src/processors/processor_diff_drive.h @@ -17,7 +17,8 @@ WOLF_STRUCT_PTR_TYPEDEFS(ProcessorParamsDiffDrive); struct ProcessorParamsDiffDrive : public ProcessorParamsBase { - ProcessorParamsDiffDrive(const Scalar _dist_travel_th, + ProcessorParamsDiffDrive(const Scalar _time_tolerance, + const Scalar _dist_travel_th, const Scalar _theta_traveled_th, const Scalar _cov_det_th, const Scalar _unmeasured_perturbation_std = 0.0001) : @@ -26,7 +27,7 @@ struct ProcessorParamsDiffDrive : public ProcessorParamsBase cov_det_th_(_cov_det_th), unmeasured_perturbation_std_(_unmeasured_perturbation_std) { - // + time_tolerance = _time_tolerance; } Scalar dist_traveled_th_; @@ -110,8 +111,6 @@ protected: virtual FeatureBasePtr createFeature(CaptureMotionPtr _capture_motion) override; -// bool keyFrameCallback(FrameBasePtr _keyframe_ptr, const Scalar& _time_tol) override; - public: /// @brief Factory method diff --git a/src/test/gtest_problem.cpp b/src/test/gtest_problem.cpp index 0bbcf9d1872735c5bf6b41aa29405b255f7dd7eb..98459c49d85397f64ea619316e867be11440d45f 100644 --- a/src/test/gtest_problem.cpp +++ b/src/test/gtest_problem.cpp @@ -79,7 +79,7 @@ TEST(Problem, Installers) SensorBasePtr S = P->installSensor ("ODOM 3D", "odometer", xs, wolf_root + "/src/examples/sensor_odom_3D.yaml"); // install processor tracker (dummy installation under an Odometry sensor -- it's OK for this test) - ProcessorBasePtr pt = std::make_shared<ProcessorTrackerFeatureDummy>(ProcessorTrackerFeatureDummy(5, 10)); + ProcessorBasePtr pt = std::make_shared<ProcessorTrackerFeatureDummy>(ProcessorTrackerFeatureDummy(0.1, 5, 10)); S->addProcessor(pt); @@ -218,7 +218,7 @@ TEST(Problem, StateBlocks) ASSERT_EQ(P->getStateBlockList().size(), 2 + 3); ASSERT_EQ(P->getStateBlockNotificationList().size(), 2 + 3); - ProcessorBasePtr pt = std::make_shared<ProcessorTrackerFeatureDummy>(ProcessorTrackerFeatureDummy(5, 10)); + ProcessorBasePtr pt = std::make_shared<ProcessorTrackerFeatureDummy>(ProcessorTrackerFeatureDummy(0.1, 5, 10)); St->addProcessor(pt); ProcessorBasePtr pm = P->installProcessor("ODOM 3D", "odom integrator", "odometer", wolf_root + "/src/examples/processor_odom_3D.yaml"); @@ -247,7 +247,7 @@ TEST(Problem, Covariances) SensorBasePtr Sm = P->installSensor ("ODOM 3D", "odometer",xs, wolf_root + "/src/examples/sensor_odom_3D.yaml"); SensorBasePtr St = P->installSensor ("CAMERA", "camera", xs, wolf_root + "/src/examples/camera_params_ueye_sim.yaml"); - ProcessorBasePtr pt = std::make_shared<ProcessorTrackerFeatureDummy>(ProcessorTrackerFeatureDummy(5, 10)); + ProcessorBasePtr pt = std::make_shared<ProcessorTrackerFeatureDummy>(ProcessorTrackerFeatureDummy(0.1, 5, 10)); St->addProcessor(pt); ProcessorBasePtr pm = P->installProcessor("ODOM 3D", "odom integrator", "odometer", wolf_root + "/src/examples/processor_odom_3D.yaml"); diff --git a/src/test/gtest_processor_base.cpp b/src/test/gtest_processor_base.cpp index ce31eeed39d927a660b33e249c76981c5c0bef50..fd5648149f8f576372b2a2cd31e31de97665f3c6 100644 --- a/src/test/gtest_processor_base.cpp +++ b/src/test/gtest_processor_base.cpp @@ -42,8 +42,7 @@ TEST(ProcessorBase, KeyFrameCallback) SensorBasePtr sens_trk = make_shared<SensorBase>("FEATURE", std::make_shared<StateBlock>(Eigen::VectorXs::Zero(2)), std::make_shared<StateBlock>(Eigen::VectorXs::Zero(1)), std::make_shared<StateBlock>(Eigen::VectorXs::Zero(2)), 2); - shared_ptr<ProcessorTrackerFeatureDummy> proc_trk = make_shared<ProcessorTrackerFeatureDummy>(5, 5); - proc_trk->setTimeTolerance(dt/2); + shared_ptr<ProcessorTrackerFeatureDummy> proc_trk = make_shared<ProcessorTrackerFeatureDummy>(dt/2, 5, 5); problem->addSensor(sens_trk); sens_trk->addProcessor(proc_trk);