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

GICP speed? #1

Open
antithing opened this issue Jan 22, 2018 · 2 comments
Open

GICP speed? #1

antithing opened this issue Jan 22, 2018 · 2 comments

Comments

@antithing
Copy link

antithing commented Jan 22, 2018

Hi, and thank you for making this code available. I have a question regarding the gicp implementation.

In a one-shot test project, it gives a huge speed increase over the pcl::gicp. However, when i actually integrate it into my application (with streaming data), the speed jumps around, 21ms some frames, then 255 the next. Could you think of any reason for this?

Do I need to set the num_threads variable for gicp, as you do for NDT?

I am running it like this:

 pclomp::GeneralizedIterativeClosestPoint<POINT_TYPE, POINT_TYPE> icp;

	  icp.setTransformationEpsilon(params_.tf_epsilon);
	  icp.setMaxCorrespondenceDistance(params_.corr_dist);
	  icp.setMaximumIterations(params_.iterations);

	  icp.setInputSource(query);
	  icp.setInputTarget(reference);

	  PointCloud unused;
	  icp.align(unused);

	  // Retrieve transformation and estimate and update.
	 Eigen::Matrix4f   T = icp.getFinalTransformation();
@koide3
Copy link
Owner

koide3 commented Jan 24, 2018

Hi antighing,

I'm not sure what actually causes the speed changes of GCIP.

  • Did you see such speed changes when you used the original pcl::GICP? If so, it might be the algorithm's problem rather than multi-threading problem.
  • Did you run another program with your program using GICP? By default, pclomp::GICP uses as many threads as possible. If some CPU cores are occupied by other processes, it would slow down.

@antithing
Copy link
Author

Hi! thank you for getting back to me. It is strange, your NDT implementation is definitely faster, it runs at 25 - 30 ms a frame on DIRECT7. But it is not accurate enough, I am seeing huge drifts in translation and rotation. ( I get the same drift with the pcl implementation) GICP is much more accurate, but even though your optimized version is slightly faster than the original, it is too slow for my purposes.

Can you think of anything I can look at to either speed up the gicp, or improve the accuracy of the ndt? Thank you again for making this code available!

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