diff --git a/include/vision/processor/processor_visual_odometry.h b/include/vision/processor/processor_visual_odometry.h index aa006e1b905ac6b0957c7775730591fdaaf5957b..1d45c864d5c946f4f61fbd8d7a885ff9e53419ec 100644 --- a/include/vision/processor/processor_visual_odometry.h +++ b/include/vision/processor/processor_visual_odometry.h @@ -65,15 +65,20 @@ struct ParamsProcessorVisualOdometry : public ParamsProcessorTracker { int threshold_fast_; bool non_max_suppresion_; - unsigned int active_search_grid_nb_h_; - unsigned int active_search_grid_nb_v_; - unsigned int active_search_margin_; - unsigned int active_search_separation_; + }; + + struct GridParams + { + unsigned int nbr_cells_h_; + unsigned int nbr_cells_v_; + unsigned int margin_; + unsigned int separation_; }; double std_pix_; KltParams klt_params_; FastParams fast_params_; + GridParams grid_params_; unsigned int max_nb_tracks_; unsigned int min_track_length_for_landmark_; @@ -91,10 +96,11 @@ struct ParamsProcessorVisualOdometry : public ParamsProcessorTracker fast_params_.threshold_fast_ = _server.getParam<int>( prefix + _unique_name + "/fast_params/threshold_fast"); fast_params_.non_max_suppresion_ = _server.getParam<bool>(prefix + _unique_name + "/fast_params/non_max_suppresion"); - fast_params_.active_search_grid_nb_h_ = _server.getParam<unsigned int>(prefix + _unique_name + "/fast_params/active_search_grid_nb_h"); - fast_params_.active_search_grid_nb_v_ = _server.getParam<unsigned int>(prefix + _unique_name + "/fast_params/active_search_grid_nb_v"); - fast_params_.active_search_margin_ = _server.getParam<unsigned int>(prefix + _unique_name + "/fast_params/active_search_margin"); - fast_params_.active_search_separation_ = _server.getParam<unsigned int>(prefix + _unique_name + "/fast_params/active_search_separation"); + + grid_params_.nbr_cells_h_ = _server.getParam<unsigned int>(prefix + _unique_name + "/grid_params/nbr_cells_h"); + grid_params_.nbr_cells_v_ = _server.getParam<unsigned int>(prefix + _unique_name + "/grid_params/nbr_cells_v"); + grid_params_.margin_ = _server.getParam<unsigned int>(prefix + _unique_name + "/grid_params/margin"); + grid_params_.separation_ = _server.getParam<unsigned int>(prefix + _unique_name + "/grid_params/separation"); max_nb_tracks_ = _server.getParam<unsigned int>(prefix + _unique_name + "/max_nb_tracks"); min_track_length_for_landmark_ = _server.getParam<unsigned int>(prefix + _unique_name + "/min_track_length_for_landmark"); @@ -109,10 +115,10 @@ struct ParamsProcessorVisualOdometry : public ParamsProcessorTracker + "klt_params_.nlevels_pyramids_: " + std::to_string(klt_params_.nlevels_pyramids_) + "\n" + "fast_params_.threshold_fast_: " + std::to_string(fast_params_.threshold_fast_) + "\n" + "fast_params_.non_max_suppresion_: " + std::to_string(fast_params_.non_max_suppresion_) + "\n" - + "fast_params_.active_search_grid_nb_h_: " + std::to_string(fast_params_.active_search_grid_nb_h_) + "\n" - + "fast_params_.active_search_grid_nb_v_: " + std::to_string(fast_params_.active_search_grid_nb_v_) + "\n" - + "fast_params_.active_search_margin_: " + std::to_string(fast_params_.active_search_grid_nb_v_) + "\n" - + "fast_params_.active_search_separation_: " + std::to_string(fast_params_.active_search_grid_nb_v_) + "\n" + + "grid_params_.nbr_cells_h_: " + std::to_string(grid_params_.nbr_cells_h_) + "\n" + + "grid_params_.nbr_cells_v_: " + std::to_string(grid_params_.nbr_cells_v_) + "\n" + + "grid_params_.margin_: " + std::to_string(grid_params_.margin_) + "\n" + + "grid_params_.separation_: " + std::to_string(grid_params_.separation_) + "\n" + "max_nb_tracks_: " + std::to_string(max_nb_tracks_) + "\n" + "min_track_length_for_landmark_: " + std::to_string(min_track_length_for_landmark_) + "\n"; } diff --git a/src/processor/processor_visual_odometry.cpp b/src/processor/processor_visual_odometry.cpp index ce0a0bf47dc7ea93707982cb3f55790fb2908a16..90a91451797bd26c5a447bb267b49cf05acf5e9f 100644 --- a/src/processor/processor_visual_odometry.cpp +++ b/src/processor/processor_visual_odometry.cpp @@ -58,10 +58,10 @@ void ProcessorVisualOdometry::configure(SensorBasePtr _sensor) // Tessalation of the image cell_grid_ = ActiveSearchGrid(sen_cam_->getImgWidth(), sen_cam_->getImgHeight(), - params_visual_odometry_->fast_params_.active_search_grid_nb_h_, - params_visual_odometry_->fast_params_.active_search_grid_nb_v_, - params_visual_odometry_->fast_params_.active_search_margin_, - params_visual_odometry_->fast_params_.active_search_separation_); + params_visual_odometry_->grid_params_.nbr_cells_h_, + params_visual_odometry_->grid_params_.nbr_cells_v_, + params_visual_odometry_->grid_params_.margin_, + params_visual_odometry_->grid_params_.separation_); } TracksMap ProcessorVisualOdometry::mergeTracks(TracksMap tracks_prev_curr, TracksMap tracks_curr_next){ @@ -96,8 +96,8 @@ void ProcessorVisualOdometry::preProcess() // detector_->detect(img_incoming, kps_current); // We add all the detected KeyPoints to the cell, knowing that they are all empty at this point - for (int i=0; i < params_visual_odometry_->fast_params_.active_search_grid_nb_h_; i++){ - for (int j=0; j < params_visual_odometry_->fast_params_.active_search_grid_nb_v_; j++){ + for (int i=0; i < params_visual_odometry_->grid_params_.nbr_cells_h_; i++){ + for (int j=0; j < params_visual_odometry_->grid_params_.nbr_cells_v_; j++){ cv::Rect rect_roi; WOLF_INFO(i, j) Eigen::Vector2i cell_index; cell_index << i,j; @@ -279,13 +279,13 @@ void ProcessorVisualOdometry::preProcess() // Only keep tracks until it reaches a max nb of tracks // TODO: the strategy for keeping the best new tracks is dumb // -> should be improved for a better spatial repartition - unsigned int count_new_tracks = 0; +// unsigned int count_new_tracks = 0; for (auto & track: tracks_last_incoming_new){ - if ((n_tracks_origin + count_new_tracks) >= params_visual_odometry_->max_nb_tracks_){ - break; - } +// if ((n_tracks_origin + count_new_tracks) >= params_visual_odometry_->max_nb_tracks_){ +// break; +// } tracks_last_incoming_filtered[track.first] = track.second; - count_new_tracks++; +// count_new_tracks++; } WOLF_INFO("New total : ", n_tracks_origin, " + ", mwkps_incoming_new.size(), " = ", tracks_last_incoming_filtered.size(), " tracks");