diff --git a/GPU_version/vio/launch/Px30.launch b/GPU_version/vio/launch/Px30.launch index d1bf289..cda2ecb 100644 --- a/GPU_version/vio/launch/Px30.launch +++ b/GPU_version/vio/launch/Px30.launch @@ -1,6 +1,6 @@ - + diff --git a/GPU_version/vio/src/frame_handler_mono.cpp b/GPU_version/vio/src/frame_handler_mono.cpp index 24d0f4e..d40723b 100644 --- a/GPU_version/vio/src/frame_handler_mono.cpp +++ b/GPU_version/vio/src/frame_handler_mono.cpp @@ -172,11 +172,11 @@ FrameHandlerBase::UpdateResult FrameHandlerMono::processFrame() if(img_align.run(last_frame_, new_frame_)==0)return RESULT_FAILURE; //reprojector_.reprojectMap(new_frame_, overlap_kfs_); // reprojector_.reprojectMap1(new_frame_, last_frame_, overlap_kfs_); - std::cerr<<"new frame\n"; reprojector_.reprojectMap2(new_frame_, last_frame_,overlap_kfs_); //assert (false); - - std::cerr<<"Reprojection Map nPoint: "<T_f_w_.se2().translation()-new_frame_->T_f_w_.se2().translation()).norm()<<'\n'; diff --git a/GPU_version/vio/src/reprojector.cpp b/GPU_version/vio/src/reprojector.cpp index 57b5ff2..57c267b 100644 --- a/GPU_version/vio/src/reprojector.cpp +++ b/GPU_version/vio/src/reprojector.cpp @@ -217,7 +217,7 @@ void Reprojector::reprojectMap( resetGrid(); cv::Mat descriptors_cur; std::vector keypoints_cur; - cv::Ptr extractor = cv::xfeatures2d::FREAK::create(true, true, 50.0f, 4); + cv::Ptr extractor = cv::xfeatures2d::FREAK::create(true, true, 22.0f, 4); cv::Ptr matcher = cv::BFMatcher::create(cv::NORM_HAMMING, true); cv::FAST(frame->img(),keypoints_cur,50); extractor->compute(frame->img(), keypoints_cur, descriptors_cur); @@ -228,8 +228,7 @@ void Reprojector::reprojectMap( boost::bind(&std::pair::second, _2)); overlap_kfs.reserve(options_.max_n_kfs); for(auto&& it_frame:_for(close_kfs)) { - //if(it_frame.index>options_.max_n_kfs)continue; - std::cerr<id_<<'\n'; + if(it_frame.index>options_.max_n_kfs)continue; std::vector keypoints_kfs; std::vector matches; cv::Mat descriptors_ref; @@ -245,11 +244,15 @@ void Reprojector::reprojectMap( // f.item->point->last_projected_kf_id_ = it_frame.item.first->id_; for(auto&& match:matches){ if(match.queryIdx!=f.index)continue; - //if(match.distance>100.0)continue; assert(keypoints_cur.size()>match.trainIdx); - if(reprojectPoint1(frame, f.item->point, &keypoints_cur.at(match.trainIdx))==true) { - overlap_kfs.back().second++; - } + const int k = static_cast(keypoints_cur.at(match.trainIdx).pt.y / grid_.cell_size) * grid_.grid_n_cols + + static_cast(keypoints_cur.at(match.trainIdx).pt.x / grid_.cell_size); + assert(grid_.cells.at(k)!= nullptr); + if(f.item->point==NULL)continue; + Vector2d px((int)keypoints_cur.at(match.trainIdx).pt.x,(int)keypoints_cur.at(match.trainIdx).pt.y); + grid_.cells.at(k)->push_back(Candidate(f.item->point,px)); + overlap_kfs.back().second++; + break; } } } @@ -296,7 +299,7 @@ bool Reprojector::reprojectCell(Cell& cell, FramePtr frame) { it = cell.erase(it); continue; - } + }/* bool found_match = true; if(options_.find_match_direct) found_match = matcher_.findMatchDirect(*it->pt, *frame, it->px); @@ -309,7 +312,7 @@ bool Reprojector::reprojectCell(Cell& cell, FramePtr frame) map_.point_candidates_.deleteCandidatePoint(it->pt); it = cell.erase(it); continue; - } + }*/ it->pt->n_succeeded_reproj_++; if(it->pt->type_ == Point::TYPE_UNKNOWN && it->pt->n_succeeded_reproj_ > 10) it->pt->type_ = Point::TYPE_GOOD;