VoxelMap
VoxelMap copied to clipboard
`update_plane` in released code does not check the plane consistancy as described in paper
Hi, thanks for releasing the code.
After carefully comparing the codes and the paper, I found:
-
init_plane
function, calculate the plane's (n,q) and cov, when initalizating or updating the octree, which is the same as paper's description. -
update_plane
function, calculate the plane's (n,q) without cov. This function is only called inupdateOctoTree
when (the node is the largest layer & not a plane & no-updating the cov). But as the paper descirbed, there should be a function that "check the plane consistancy, and then only update the (n,q) if the same plane. Theupdate_plane
doesn't do this.
Thus, I think there are two issues that incosistant with the paper:
- The
update_plane
function should check plane consistancy first, but not directly re-calcuate the paramter. I can still find some "old" variables here:
Eigen::Matrix3d old_covariance = plane->covariance;
in Line 247 of "voxel_map_util.hpp"
- The
update_plane
should be called in another place (Line 402 inUpdateOctoTree
:
if (new_points_num_ > update_size_threshold_) {
if (update_cov_enable_) {
init_plane(temp_points_, plane_ptr_);
}
//** there should be "update_plane" if `update_cov_enable_` is false. **//
new_points_num_ = 0;
}
In this cases, the cov do not need to be update, but only update the (n,q).
Could someone explain what's the motivation that the code is not consistant with the original paper. Thanks.