koide3 / fast_gicp

A collection of GICP-based fast point cloud registration algorithms
BSD 3-Clause "New" or "Revised" License
1.23k stars 316 forks source link

support arbitrary search method in fast_gicp #120

Closed themightyoarfish closed 11 months ago

themightyoarfish commented 1 year ago

There is nothing in the code that assumes more than the pcl::search::Search interface of the search objects. So one might use others such as OrganizedNeighbor which is much faster for organized clouds.

The code distinguishes between source and target methods, but since swap() is called on their pointers, I think in practice only PointSource == PointTarget is supported.

koide3 commented 1 year ago

Thanks for your PR! I think this functionality is reasonable and nice. I'll take a quick look at the updates.

themightyoarfish commented 11 months ago

I've restored align.cpp and added the SMID flags based on PCL, which I believe is necessary as you don't know how the user installed PCL.

I also realized that OrganizedNeighbour does not in fact work for all organized point clouds, but just for image-like ones such as from depth cameras. Still useful to have this templated though I think, hopefully some day PCL will add an organized search method for rotating LIDARs.

koide3 commented 11 months ago

Thanks a lot for your contribution. All changes look good now. I'll merge this PR once the small conflict caused by https://github.com/SMRT-AIST/fast_gicp/pull/134 is resolved.

themightyoarfish commented 11 months ago

Fixed.

koide3 commented 11 months ago

Thank you a lot!