From 9d3ecd8f1877ed73aee6f6ab0df018f0aca7a889 Mon Sep 17 00:00:00 2001 From: gfuse Date: Sat, 25 Sep 2021 11:00:41 +0200 Subject: [PATCH] debug --- GPU_version/vio/doc/notation.ipe | 312 --- GPU_version/vio/doc/notation.pdf | Bin 50379 -> 0 bytes GPU_version/vio/doc/notation.png | Bin 27376 -> 30336 bytes GPU_version/vio/frame_handler_log.txt | 2449 +++++++---------- GPU_version/vio/include/vio/global.h | 1 - .../vio/include/vio/global_optimizer.h | 4 - GPU_version/vio/src/frame_handler_mono.cpp | 7 +- GPU_version/vio/src/global_optimizer.cpp | 13 - GPU_version/vio/src/initialization.cpp | 4 +- GPU_version/vio/src/point.cpp | 19 +- GPU_version/vio/src/reprojector.cpp | 2 - 11 files changed, 1034 insertions(+), 1777 deletions(-) delete mode 100644 GPU_version/vio/doc/notation.ipe delete mode 100644 GPU_version/vio/doc/notation.pdf diff --git a/GPU_version/vio/doc/notation.ipe b/GPU_version/vio/doc/notation.ipe deleted file mode 100644 index f8c1efe..0000000 --- a/GPU_version/vio/doc/notation.ipe +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - -0 0 m --1 0.333 l --1 -0.333 l -h - - - - -0 0 m --1 0.333 l --1 -0.333 l -h - - - - -0.6 0 0 0.6 0 0 e -0.4 0 0 0.4 0 0 e - - - - -0.6 0 0 0.6 0 0 e - - - - - -0.6 0 0 0.6 0 0 e -0.4 0 0 0.4 0 0 e - - -0.4 0 0 0.4 0 0 e - - - - - --0.6 -0.6 m -0.6 -0.6 l -0.6 0.6 l --0.6 0.6 l -h --0.4 -0.4 m -0.4 -0.4 l -0.4 0.4 l --0.4 0.4 l -h - - - - --0.6 -0.6 m -0.6 -0.6 l -0.6 0.6 l --0.6 0.6 l -h - - - - - --0.6 -0.6 m -0.6 -0.6 l -0.6 0.6 l --0.6 0.6 l -h --0.4 -0.4 m -0.4 -0.4 l -0.4 0.4 l --0.4 0.4 l -h - - --0.4 -0.4 m -0.4 -0.4 l -0.4 0.4 l --0.4 0.4 l -h - - - - - - --0.43 -0.57 m -0.57 0.43 l -0.43 0.57 l --0.57 -0.43 l -h - - --0.43 0.57 m -0.57 -0.43 l -0.43 -0.57 l --0.57 0.43 l -h - - - - - -0 0 m --1 0.333 l --1 -0.333 l -h - - - - -0 0 m --1 0.333 l --0.8 0 l --1 -0.333 l -h - - - - -0 0 m --1 0.333 l --0.8 0 l --1 -0.333 l -h - - - - --1 0.333 m -0 0 l --1 -0.333 l - - - - -0 0 m --1 0.333 l --1 -0.333 l -h --1 0 m --2 0.333 l --2 -0.333 l -h - - - - -0 0 m --1 0.333 l --1 -0.333 l -h --1 0 m --2 0.333 l --2 -0.333 l -h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -$_w\mathtt{p}$ -$\overrightarrow{\mathcal{F}}_w$ - -64 576 m -96 576 l - - -64 576 m -64 608 l - - -64 576 m -80 592 l - - -144 688 m -176 688 l - - -144 688 m -144 720 l - - -144 688 m -160 704 l - - -285.262 759.615 m -162.017 735.456 -129.232 628.801 s - - -$\mathtt{T}_{f,w}$ - -128.441 626.745 m -320.625 647.224 l - - -331.681 587.399 m -331.681 587.399 l - -$x$ -$z$ -$y$ - -256 736 m -224 704 l -320 704 l -352 736 l -h - - -285.262 759.265 m -322.176 651.119 l - -$\mathtt{px}$ - -285.612 758.915 m -315.723 669.632 l - -$\mathtt{f}$ -$\overrightarrow{\mathcal{F}}_f$ - -255.668 719.918 m -274.728 719.957 l - - -256.107 720.028 m -246.655 710.527 l - -$v$ -$u$ - -$\mathbf{p}$ -$_f\mathtt{p}$ - - diff --git a/GPU_version/vio/doc/notation.pdf b/GPU_version/vio/doc/notation.pdf deleted file mode 100644 index 3bc3fcd1e26432ecb0bbd75ccac1399691cf3da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50379 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 diff --git a/GPU_version/vio/doc/notation.png b/GPU_version/vio/doc/notation.png index d613b70c287aff422211aaede98b677578c69bda..fece18e25c1ecd1226ecf60e94606e87760d011e 100644 GIT binary patch literal 30336 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 P7WMRzykwF1tGE9TP>}#! literal 27376 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 = init_f.first; // sparse image align SparseImgAlignGpu img_align(Config::kltMaxLevel(), Config::kltMinLevel(),30, SparseImgAlignGpu::GaussNewton, false,gpu_fast_); - feature_detection_mut_.lock(); size_t err=img_align.run(last_frame_, new_frame_, log_); - feature_detection_mut_.unlock(); if(err==-1){ #if VIO_DEBUG fprintf(log_,"[%s] Image Alignment failed -1\n",vio::time_in_HH_MM_SS_MMM().c_str()); @@ -211,6 +209,7 @@ FrameHandlerBase::UpdateResult FrameHandlerMono::processFrame() pose_optimizer::optimizeGaussNewton( Config::poseOptimThresh(), 70, false, new_frame_, sfba_thresh, sfba_error_init, sfba_error_final, sfba_n_edges_final,log_); + optimizeStructure(new_frame_, Config::structureOptimMaxPts(), Config::structureOptimNumIter()); #if VIO_DEBUG fprintf(log_,"[%s] After pose optimization, distance between ekf and vo x:%f ,z=%f,angle between two frames:%f\n",vio::time_in_HH_MM_SS_MMM().c_str(), new_frame_->T_f_w_.se2().translation().x()-init_f.second.se2().translation().x(), @@ -218,7 +217,7 @@ FrameHandlerBase::UpdateResult FrameHandlerMono::processFrame() fabs(new_frame_->T_f_w_.pitch()-init_f.second.pitch())); #endif if((init_f.second.se2().translation()-new_frame_->T_f_w_.se2().translation()).norm()>0.5 || - fabs(new_frame_->T_f_w_.pitch()-init_f.second.pitch())>0.25*M_PI_2 || sfba_n_edges_final<5){ + fabs(new_frame_->T_f_w_.pitch()-init_f.second.pitch())>0.25*M_PI_2 || sfba_n_edges_final<10){ new_frame_=last_frame_; return RESULT_FAILURE; } @@ -236,7 +235,6 @@ FrameHandlerBase::UpdateResult FrameHandlerMono::processFrame() return RESULT_NO_KEYFRAME; } - optimizeStructure(new_frame_, Config::structureOptimMaxPts(), Config::structureOptimNumIter()); double depth_mean=0.0, depth_min=0.0; frame_utils::getSceneDepth(new_frame_, depth_mean, depth_min); new_frame_->setKeyframe(); @@ -268,7 +266,6 @@ void FrameHandlerMono::resetAll() last_frame_.reset(); new_frame_.reset(); overlap_kfs_.clear(); - ba_glob_->reset(); } bool FrameHandlerMono::needNewKf() { diff --git a/GPU_version/vio/src/global_optimizer.cpp b/GPU_version/vio/src/global_optimizer.cpp index fe1e904..441f146 100644 --- a/GPU_version/vio/src/global_optimizer.cpp +++ b/GPU_version/vio/src/global_optimizer.cpp @@ -66,19 +66,6 @@ namespace vio { #endif } - - void BA_Glob::reset() - { - seeds_updating_halt_ = true; - { - } - seeds_updating_halt_ = false; - -#if VIO_DEBUG - fprintf(log_,"[%s] DepthFilter: RESET.\n",vio::time_in_HH_MM_SS_MMM().c_str()); -#endif - } - void BA_Glob::updateLoop() { while(!boost::this_thread::interruption_requested()) diff --git a/GPU_version/vio/src/initialization.cpp b/GPU_version/vio/src/initialization.cpp index 9bb9b57..7896f7c 100644 --- a/GPU_version/vio/src/initialization.cpp +++ b/GPU_version/vio/src/initialization.cpp @@ -132,11 +132,11 @@ void detectFeatures( Features& new_features, opencl* gpu_fast) { - feature_detection_mut_.lock(); + feature_detection::FastDetector detector( frame->img().cols, frame->img().rows, Config::gridSize(), gpu_fast,Config::nPyrLevels()); detector.detect(frame, frame->img_pyr_, Config::triangMinCornerScore(), new_features); - feature_detection_mut_.unlock(); + // now for all maximum corners, initialize a new seed px_vec.clear(); for(auto&& ftr:new_features){ diff --git a/GPU_version/vio/src/point.cpp b/GPU_version/vio/src/point.cpp index 2175789..d60b38f 100644 --- a/GPU_version/vio/src/point.cpp +++ b/GPU_version/vio/src/point.cpp @@ -59,7 +59,7 @@ Point::~Point() void Point::addFrameRef(std::shared_ptr ftr) { - + boost::unique_lock lock(point_mut_); obs_.push_front(ftr); ++n_obs_; } @@ -138,6 +138,7 @@ bool Point::getCloseViewObs(const Vector2d& framepos, std::shared_ptr& void Point::optimize(const size_t n_iter) { + boost::unique_lock lock(point_mut_); Vector3d old_point = pos_; double chi2 = 0.0; Matrix3d A; @@ -167,33 +168,21 @@ void Point::optimize(const size_t n_iter) // check if error increased if((i > 0 && new_chi2 > chi2) || (bool) std::isnan((double)dp[0])) { -#ifdef POINT_OPTIMIZER_DEBUG - cout << "it " << i - << "\t FAILURE \t new_chi2 = " << new_chi2 << endl; -#endif + pos_ = old_point; // roll-back break; } - // update the model Vector3d new_point = pos_ + dp; old_point = pos_; pos_ = new_point; chi2 = new_chi2; -#ifdef POINT_OPTIMIZER_DEBUG - cout << "it " << i - << "\t Success \t new_chi2 = " << new_chi2 - << "\t norm(b) = " << vk::norm_max(b) - << endl; -#endif // stop when converged if(vk::norm_max(dp) <= EPS) break; } -#ifdef POINT_OPTIMIZER_DEBUG - cout << endl; -#endif + } } // namespace vio diff --git a/GPU_version/vio/src/reprojector.cpp b/GPU_version/vio/src/reprojector.cpp index 0f3dd6c..df53ce3 100644 --- a/GPU_version/vio/src/reprojector.cpp +++ b/GPU_version/vio/src/reprojector.cpp @@ -76,11 +76,9 @@ namespace vio { Features keypoints_cur; cv::Ptr extractor = cv::xfeatures2d::FREAK::create(true, true, 22.0f, 4); cv::Ptr matcher = cv::BFMatcher::create(cv::NORM_HAMMING, true); - feature_detection_mut_.lock(); feature_detection::FastDetector detector( frame->img().cols, frame->img().rows, Config::gridSize(), gpu_fast_,Config::nPyrLevels()); detector.detect(frame, frame->img_pyr_, Config::triangMinCornerScore(), keypoints_cur,&descriptors_cur); - feature_detection_mut_.unlock(); list > close_kfs; map_.getCloseKeyframes(frame, close_kfs); if (!last_frame->fts_.empty())