mhalber / Fine-To-Coarse-Registration

Implementation of the Fine-To-Coarse Registration algorithm:
http://scanregistration.cs.princeton.edu
MIT License
49 stars 17 forks source link

Assertion error while running fetregister.exe #6

Open hayzeshi1230 opened 5 years ago

hayzeshi1230 commented 5 years ago

Hi, when I run fetregister.exe with the command "fetregister fet/5_0.05.fcb hv_c11_2_initial.conf -v", I get this error and running terminated:

"inital Done Reading configuration file... Done in 0.319 sec.

Frames = 875(875)

Correspondences = 360

Color Directory = image

Depth Directory = depth

Reading reconstruction file... Done in 16.741 sec.

Shapes = 875

Features = 607581

Reading Done Alignment with world took 2.076310 sec. Alignment with world took 2.010047 sec. initialize_optimization Done

Iteration 0 Weights -> CP: 1500.000000 ; Trajectory : 1000.000000 ; Inertia : 1.000000 ; Geometry: 1500.000000 ; Hierarchy : 1500.000000 Creating closest point correspondences -- Segment Length: 3.000 / 15.014 -- Distance Threshold: 0.500 m -- Angle Threshold: 0.500 rad(28.647890 deg) Launching threads: -- Launching thread 0 -- Thread 0 Finished! | Shapes 0 to 875 ( 875) | Created 43748 out of 43750 allocated correspondences. -- Threads Finished! GAPS FATAL ERROR. ABORTING:: No error _Assertion error correspondence->reconstruction == this->reconstruction at line 208 in file _FETFeature.cpp__"

My operating system is window10 with visual studio 2015, GTX960M. I run with debug and find that the line 1040 in file optimization.h is " seq_data->cp_corrs.push_back(new FETCorrespondence(NULL, tsc.feature1, tsc.feature2, tsc.affinity, COINCIDENT_RELATIONSHIP)); " I am confused why passing the reconstruction with NULL and asserting while the reconstruction in line 33 in file FETCorrespondence.cpp and line 208 in FETFeature.cpp. Is it a bug or some thing else error with my running environment ?

What is the problem ? Thank you!

mhalber commented 5 years ago

Hi,

Thanks for filing the issue. The code was never tested in Windows environment. I just rebuilt the code under Linux and I am unable to reproduce this issue.

It has been a while, however my gut feeling (and this is embarrassing) is that gaps has been always treated as a black box and always compiled in release with asserts disabled. Since I have been really hijacking how FET package of gaps was dealing with memory, the code might be violating some of asserts in the FET package. I don't have time to dig into this further right now, but my advice would be to try building gaps in release and then trying to run the code.

If that is the case I will need to disable these asserts in gaps, as they are not required.

hayzeshi1230 commented 5 years ago

Thanks you for your replying! Unfortunately, I build the gaps and fetregister in release and get the same error. Since it works well under Linux, it maybe be the problem with my configuration under vs2015. The fetregister has the same configuration as conf2fet and the conf2fet works.

mhalber commented 5 years ago

I am unfamiliar with Visual Studio, however I'd check the Release configuration and ensure that -DNDEBUG ( or /DNDEBUG ) is passed in release. Only then the asserts would be disabled.

hayzeshi1230 commented 5 years ago

I am unfamiliar with Visual Studio, however I'd check the Release configuration and ensure that -DNDEBUG ( or /DNDEBUG ) is passed in release. Only then the asserts would be disabled.

It works after disabled the asserts and rebuilt the gaps in release. Thanks a lot!