-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Single frame registration problem! #36
Comments
我也碰到你类似的问题。我认为:1)在之前的issue中作者也提到过目前的std对于ds_size_参数十分敏感,没办法很好确保关键点提取的一致性;2)只用一帧当前帧的点云与你的局部地图进行匹配可能是太少了,可以尝试累积多帧或者让车辆动起来,实现local-to-local map的匹配,在开源的代码中也是用到了类似的做法。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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. ds_size_);
down_sampling_voxel (* onescand_cloud dev, config_setting. ds_size_);
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:: vectorstds_vec_;
std_manager ->GenerateSTDescs (onescanc_cloud dev, stds vec_);
Finally, I attempted to use SearchLoop to obtain translation rotation and print
std_manager ->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!
The text was updated successfully, but these errors were encountered: