diff --git a/svo/include/svo/frame_handler_base.h b/svo/include/svo/frame_handler_base.h index 50afc14..66d4595 100644 --- a/svo/include/svo/frame_handler_base.h +++ b/svo/include/svo/frame_handler_base.h @@ -87,9 +87,6 @@ public: /// Get the number of feature observations of the last frame. size_t lastNumObservations() const { return num_obs_last_; } - /// Access the depth filter. - DepthFilter* depthFilter() const { return depth_filter_; } - protected: Stage stage_; //!< Current stage of the algorithm. bool set_reset_; //!< Flag that the user can set. Will reset the system before the next iteration. @@ -101,7 +98,6 @@ protected: vk::RingBuffer acc_num_obs_; //!< Number of observed features of the last 10 frames, used to give some user feedback on the tracking performance. size_t num_obs_last_; //!< Number of observations in the previous frame. TrackingQuality tracking_quality_; //!< An estimate of the tracking quality based on the number of tracked features. - DepthFilter* depth_filter_; //!< Depth estimation algorithm runs in a parallel thread and is used to initialize new 3D points. /// Before a frame is processed, this function is called. bool startFrameProcessingCommon(const double timestamp); diff --git a/svo/include/svo/frame_handler_mono.h b/svo/include/svo/frame_handler_mono.h index 2887713..9024394 100644 --- a/svo/include/svo/frame_handler_mono.h +++ b/svo/include/svo/frame_handler_mono.h @@ -47,6 +47,9 @@ public: const vector& initFeatureTrackRefPx() const { return klt_homography_init_.px_ref_; } const vector& initFeatureTrackCurPx() const { return klt_homography_init_.px_cur_; } + /// Access the depth filter. + DepthFilter* depthFilter() const { return depth_filter_; } + protected: vk::AbstractCamera* cam_; //!< Camera model, can be ATAN, Pinhole or Ocam (see vikit). Reprojector reprojector_; //!< Projects points from other keyframes into the current frame @@ -55,6 +58,7 @@ protected: set core_kfs_; //!< Keyframes in the closer neighbourhood. vector< pair > overlap_kfs_; //!< All keyframes with overlapping field of view. the paired number specifies how many common mappoints are observed TODO: why vector!? initialization::KltHomographyInit klt_homography_init_; //!< Used to estimate pose of the first two keyframes by estimating a homography. + DepthFilter* depth_filter_; //!< Depth estimation algorithm runs in a parallel thread and is used to initialize new 3D points. /// Processes the first frame and sets it as a keyframe. UpdateResult processFirstFrame(); diff --git a/svo/src/frame_handler_base.cpp b/svo/src/frame_handler_base.cpp index 504890a..c3568d5 100644 --- a/svo/src/frame_handler_base.cpp +++ b/svo/src/frame_handler_base.cpp @@ -25,8 +25,7 @@ #include #include #include -#include - + namespace svo { @@ -42,8 +41,7 @@ FrameHandlerBase::FrameHandlerBase() : acc_frame_timings_(10), acc_num_obs_(10), num_obs_last_(0), - tracking_quality_(TRACKING_BAD), - depth_filter_(NULL) + tracking_quality_(TRACKING_BAD) { #ifdef SVO_TRACE // Initialize Performance Monitor @@ -75,20 +73,12 @@ FrameHandlerBase::FrameHandlerBase() : g_permon->init(Config::traceName(), Config::traceDir()); #endif - // create depth filter and set callback - feature_detection::DetectorPtr feature_detector(new feature_detection::FastDetector()); - DepthFilter::callback_t depth_filter_cb = boost::bind(&MapPointCandidates::newCandidatePoint, &map_.point_candidates_, _1, _2); - depth_filter_ = new DepthFilter(feature_detector, depth_filter_cb); - depth_filter_->startThread(); - SVO_INFO_STREAM("NanoSlam initialized"); } FrameHandlerBase::~FrameHandlerBase() { SVO_INFO_STREAM("SVO destructor invoked."); - delete depth_filter_; - SVO_INFO_STREAM("SVO destructed."); } bool FrameHandlerBase::startFrameProcessingCommon(const double timestamp) @@ -149,7 +139,6 @@ void FrameHandlerBase::resetCommon() set_reset_ = false; set_start_ = false; tracking_quality_ = TRACKING_BAD; - depth_filter_->reset(); num_obs_last_ = 0; SVO_INFO_STREAM("RESET"); } diff --git a/svo/src/frame_handler_mono.cpp b/svo/src/frame_handler_mono.cpp index 641bb14..5804057 100644 --- a/svo/src/frame_handler_mono.cpp +++ b/svo/src/frame_handler_mono.cpp @@ -33,11 +33,20 @@ namespace svo { FrameHandlerMono::FrameHandlerMono(vk::AbstractCamera* cam) : FrameHandlerBase(), cam_(cam), - reprojector_(cam_, map_) -{} + reprojector_(cam_, map_), + depth_filter_(NULL) +{ + // create depth filter and set callback + feature_detection::DetectorPtr feature_detector(new feature_detection::FastDetector()); + DepthFilter::callback_t depth_filter_cb = boost::bind(&MapPointCandidates::newCandidatePoint, &map_.point_candidates_, _1, _2); + depth_filter_ = new DepthFilter(feature_detector, depth_filter_cb); + depth_filter_->startThread(); +} FrameHandlerMono::~FrameHandlerMono() -{} +{ + delete depth_filter_; +} void FrameHandlerMono::addImage(const cv::Mat& img, const double timestamp) { @@ -225,6 +234,7 @@ void FrameHandlerMono::resetAll() new_frame_.reset(); core_kfs_.clear(); overlap_kfs_.clear(); + depth_filter_->reset(); } bool FrameHandlerMono::needNewKf(double scene_depth_mean)