I believe the fpcs (also kfpcs) has big problem in PCL 1.80.
I download the source code from pcl-master https://github.com/PointCloudLibrary/pcl, and it turns out there is no necessary file name (like ia-fpcs.h, ia-kfpcs.h, matching_cadidate.h, etc) in CMake file list, but it does have in include folder.
However, when I add all the necessary name into the cmake list and compile, and got the latest lib/ dll file,
this algorithm is still not working!!! I am following the example on pcl document, if this algorithm is not work, why it appears on the official document???
The reason why the "crucial" part is commented is simply because the algorithm is random based. Hence there is a chance that the resulting alignment is incorrect, but the algorithm runs still smoothless/without errors.
Testing the algorithm including a comparison of the result could thus end in test errors, which is not the idea behind the test itself. Hope that this was clear enough ^^...
Since this algorithm crashed again even in the latest version pcl-1.80, I tried to debug source code of fpcs by creating my own class and following the source code's logic, it turns out the algorithm always crashed at the line "all_candidates[i] = candidates;" (181-184 in ia-fpcs.hpp).
The method would potentially crash at the specific position if the all_candidates vector is smaller than the variable i. But this should never happen, since i loops from 0 to nr_iterations - 1 and the all_candidates vector is initialized accordingly.
Can you run the code in DEBUG mode and OpenMP disabled and check the content of candidates (size, transformation matrices, ...) and report it here? Maybe I can help you then, or maybe it is even an unhandled expection case which should be corrected.