diff --git a/include/vio.h b/include/vio.h index d5600b1..d525555 100755 --- a/include/vio.h +++ b/include/vio.h @@ -108,6 +108,8 @@ class VIOManager double img_point_cov, outlier_threshold, ncc_thre; + float plane_voxel_size; + SubSparseMap *visual_submap; std::vector> rays_with_sample_points; diff --git a/src/LIVMapper.cpp b/src/LIVMapper.cpp index 5e6861b..f09298d 100755 --- a/src/LIVMapper.cpp +++ b/src/LIVMapper.cpp @@ -138,6 +138,7 @@ void LIVMapper::initializeComponents() vio_manager->grid_n_width = grid_n_width; vio_manager->grid_n_height = grid_n_height; vio_manager->patch_pyrimid_level = patch_pyrimid_level; + vio_manager->plane_voxel_size = voxelmap_manager->config_setting_.max_voxel_size_; vio_manager->exposure_estimate_en = exposure_estimate_en; vio_manager->colmap_output_en = colmap_output_en; vio_manager->initializeVIO(); diff --git a/src/vio.cpp b/src/vio.cpp index 2ff8fd0..f119893 100755 --- a/src/vio.cpp +++ b/src/vio.cpp @@ -568,6 +568,11 @@ void VIOManager::retrieveFromVisualSparseMap(cv::Mat img, vector & } else { + for (int j = 0; j < 3; j++) + { + loc_xyz[j] = floor(sample_point_w[j] / plane_voxel_size); + if (loc_xyz[j] < 0) { loc_xyz[j] -= 1.0; } + } VOXEL_LOCATION sample_pos(loc_xyz[0], loc_xyz[1], loc_xyz[2]); auto iter = plane_map.find(sample_pos); if (iter != plane_map.end()) @@ -983,7 +988,7 @@ void VIOManager::updateReferencePatch(const unordered_map