Thank you very much for your excellent work!
I am trying to use STC to match the current scanned point cloud with a part of the point cloud established by Fastlio, achieving rapid map repositioning.
I extracted a point cloud within a range of 50 meters around a center point on the map and used one frame of the point cloud from that center point for operation.
The first step is to perform a self set translation and rotation transformation on a frame of point cloud, and then downsample the scanned point cloud and some point clouds:
down_sampling_voxel ( center_cloud, config_setting. dssize);
down_sampling_voxel ( onescand_cloud dev, config_setting. dssize);
Step 2, I generated a local point cloud descriptor and added it to STDescs:
std:: vectorstds_vec;
std_manager ->GenerateSTDescs (temp_cloud, stds vec);
std_manager ->AddSTDescs (stds vec);
Step 3: I will scan the point cloud to generate a descriptor
std:: vectorstdsvec;
std_manager ->GenerateSTDescs (onescanccloud dev, stds vec);
Finally, I attempted to use SearchLoop to obtain translation rotation and print
stdmanager ->SearchLoop (stdsvec, search_result, loop_transform, loop_std_pair);
std::cout << ANSI_COLOR_RED << "loop_Translation: " << loop_transform.first << std::endl;
std::cout << ANSI_COLOR_RED << "loop_rotation: " << loop_transform.second << std::endl;
std:: cout<<std:: endl;
I found that the translation is 0 0 0 0 and the rotation is the unit matrix.
More importantly, I performed translation and rotation transformations on the local point cloud and matched the results with itself, but still failed
How can I set parameters to increase the number of key points in a point cloud to improve registration accuracy? Or is my usage incorrect?
Thank you very much for your excellent work! I am trying to use STC to match the current scanned point cloud with a part of the point cloud established by Fastlio, achieving rapid map repositioning.
I extracted a point cloud within a range of 50 meters around a center point on the map and used one frame of the point cloud from that center point for operation.
The first step is to perform a self set translation and rotation transformation on a frame of point cloud, and then downsample the scanned point cloud and some point clouds: down_sampling_voxel ( center_cloud, config_setting. dssize); down_sampling_voxel ( onescand_cloud dev, config_setting. dssize);
Step 2, I generated a local point cloud descriptor and added it to STDescs: std:: vectorstds_vec;
std_manager ->GenerateSTDescs (temp_cloud, stds vec);
std_manager ->AddSTDescs (stds vec);
Step 3: I will scan the point cloud to generate a descriptor std:: vectorstdsvec;
std_manager ->GenerateSTDescs (onescanccloud dev, stds vec);
Finally, I attempted to use SearchLoop to obtain translation rotation and print stdmanager ->SearchLoop (stdsvec, search_result, loop_transform, loop_std_pair); std::cout << ANSI_COLOR_RED << "loop_Translation: " << loop_transform.first << std::endl; std::cout << ANSI_COLOR_RED << "loop_rotation: " << loop_transform.second << std::endl; std:: cout<<std:: endl;
I found that the translation is 0 0 0 0 and the rotation is the unit matrix.
More importantly, I performed translation and rotation transformations on the local point cloud and matched the results with itself, but still failed
How can I set parameters to increase the number of key points in a point cloud to improve registration accuracy? Or is my usage incorrect?
Looking forward to your reply!