Skip to content
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

teaser and loop closure in MULLS #3

Closed
chengwei0427 opened this issue Dec 17, 2020 · 4 comments
Closed

teaser and loop closure in MULLS #3

chengwei0427 opened this issue Dec 17, 2020 · 4 comments

Comments

@chengwei0427
Copy link

chengwei0427 commented Dec 17, 2020

hi, @YuePanEdward ,thanks for your hardwork!
I didn't find the loop closure in your code ,Is it not finished yet? Or maybe I didn't find!
I want to know how your loop closure detects works , is it work likes the mulls_reg(scan-to-scan) moudle, use teaser to get coarse registration, then use lls to get the refine result?

Thanks!

@YuePanEdward
Copy link
Owner

YuePanEdward commented Dec 17, 2020

Thank you a lot for the feedback.
The loop closure module has already been invloved in MULLS.
The processing unit is submap. It works as the submap-to-submap registration. TEASER provides the initial guess and then LLS refine the result. TEASER is quite fast (10-20ms) and certificable. If TEASER fails, the loop closure edge would be rejected.
You can enable the loop closure by setting --loop_closure_detection_on=true in the config file. The prerequisite is that TEASER is properly installed.

@chengwei0427
Copy link
Author

chengwei0427 commented Dec 18, 2020

sorry for taking your time.
I'm trying to run the mulls_reg now ,however,when the program run into "creg.mm_llu_icp", there will be an error as follows:
Segmentation fault (core dumped)
2020-12-18 16-10-01屏幕截图
the debug core
2020-12-18 16-36-56屏幕截图
the test data
data.zip

@YuePanEdward
Copy link
Owner

Thanks for your feedback.
I've tried mulls_reg on your data and it works from my side.

feature points extracted from target (left) and source (right) point cloud

test_feature_points

Point cloud before (left) and after (right) mulls_icp registration

test_reg_before_after

For your issue, It's a bit strange that a segfault occur after the output of final transformation matrix. It seems that there's some problem of the automatic free up of the smart pointer.
So maybe you can add the following lines in the end of mm_lls_icp and see if it would work.

	        LOG(INFO) << "Final tran. matrix:\n"
				  << registration_cons.Trans1_2;
        
		//free mannually
		corrs_ground.reset(new pcl::Correspondences);
		corrs_pillar.reset(new pcl::Correspondences);
		corrs_beam.reset(new pcl::Correspondences);
		corrs_facade.reset(new pcl::Correspondences);
		corrs_roof.reset(new pcl::Correspondences);
		corrs_vertex.reset(new pcl::Correspondences);

		return process_code;

@chengwei0427
Copy link
Author

chengwei0427 commented Dec 23, 2020

I'm sorry to reply you so late, I'm debugging the core dumped problem.
I want you to know that ,the problem disappeared after re-build Eigen(3.3.9) and pcl(1.9.1),now I can run your program in my pc.
Thank you very much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants