Closed LimHyungTae closed 1 year ago
Dear @LimHyungTae, thank you for your contribution and PR. Quatro is a great paper that uses TEASER++. Will take a look soon.
Dear @jingnanshi Thank you for your reply and your kind service as well :) But there are two issues; cloud you provide some advice to me for a successful PR?
TEST(RegistrationTest, CliqueFinderModes)
part is not relevant to what I modified. (in test/teaser/registration-test.cc
). So, I'm not sure why the test failed.root@286b2d5d57c8:/home/git/TEASER-plusplus# cd build && ctest all
Test project /home/git/TEASER-plusplus/build
Start 1: UtilsTest.RandomSample
1/48 Test #1: UtilsTest.RandomSample ............................... Passed 0.00 sec
Start 2: UtilsTest.EigenMatrixRemoveRowColumn
2/48 Test #2: UtilsTest.EigenMatrixRemoveRowColumn ................. Passed 0.00 sec
Start 3: UtilsTest.CalculatePointClusterDiameter
3/48 Test #3: UtilsTest.CalculatePointClusterDiameter .............. Passed 0.00 sec
Start 4: IOTest.ImportPLY
4/48 Test #4: IOTest.ImportPLY ..................................... Passed 0.00 sec
Start 5: IOTest.ImportBigPLY
5/48 Test #5: IOTest.ImportBigPLY .................................. Passed 0.25 sec
Start 6: PointXYZTest.SimpleOperations
6/48 Test #6: PointXYZTest.SimpleOperations ........................ Passed 0.00 sec
Start 7: PointCloudTest.SimpleOperations
7/48 Test #7: PointCloudTest.SimpleOperations ...................... Passed 0.00 sec
Start 8: TLSTest.TLSEstimate
8/48 Test #8: TLSTest.TLSEstimate .................................. Passed 0.00 sec
Start 9: TLSTest.TLSEstimateTiled
9/48 Test #9: TLSTest.TLSEstimateTiled ............................. Passed 0.02 sec
Start 10: ScaleSolverTest.UnknownScale
10/48 Test #10: ScaleSolverTest.UnknownScale ......................... Passed 0.00 sec
Start 11: ScaleSolverTest.FixedScale
11/48 Test #11: ScaleSolverTest.FixedScale ........................... Passed 0.00 sec
Start 12: RotationSolverTest.FGRRotation
12/48 Test #12: RotationSolverTest.FGRRotation ....................... Passed 0.00 sec
Start 13: RotationSolverTest.GNCTLS
13/48 Test #13: RotationSolverTest.GNCTLS ............................ Passed 0.00 sec
Start 14: TranslationTest.TLSTranslation
14/48 Test #14: TranslationTest.TLSTranslation ....................... Passed 0.00 sec
Start 15: RegistrationTest.LargeModel
15/48 Test #15: RegistrationTest.LargeModel .......................... Passed 0.02 sec
Start 16: RegistrationTest.SolveForScale
16/48 Test #16: RegistrationTest.SolveForScale ....................... Passed 0.02 sec
Start 17: RegistrationTest.SolveForRotation
17/48 Test #17: RegistrationTest.SolveForRotation .................... Passed 0.00 sec
Start 18: RegistrationTest.SolveRegistrationProblemDecoupled
18/48 Test #18: RegistrationTest.SolveRegistrationProblemDecoupled ... Passed 0.03 sec
Start 19: RegistrationTest.OutlierDetection
19/48 Test #19: RegistrationTest.OutlierDetection .................... Passed 0.00 sec
Start 20: RegistrationTest.NoMaxClique
20/48 Test #20: RegistrationTest.NoMaxClique ......................... Passed 0.01 sec
Start 21: RegistrationTest.CliqueFinderModes
21/48 Test #21: RegistrationTest.CliqueFinderModes ................... Passed 0.03 sec
Start 22: GraphTest.BasicFunctions
22/48 Test #22: GraphTest.BasicFunctions ............................. Passed 0.00 sec
Start 23: PMCTest.FindMaximumClique1
23/48 Test #23: PMCTest.FindMaximumClique1 ........................... Passed 0.00 sec
Start 24: PMCTest.FindMaximumClique2
24/48 Test #24: PMCTest.FindMaximumClique2 ........................... Passed 0.00 sec
Start 25: PMCTest.FindMaximumClique3
25/48 Test #25: PMCTest.FindMaximumClique3 ........................... Passed 0.00 sec
Start 26: MaxCliqueSolverTest.FindMaxClique
26/48 Test #26: MaxCliqueSolverTest.FindMaxClique .................... Passed 0.00 sec
Start 27: DRSCertifierTest.GetOmega1
27/48 Test #27: DRSCertifierTest.GetOmega1 ........................... Passed 0.03 sec
Start 28: DRSCertifierTest.GetBlockDiagOmega
28/48 Test #28: DRSCertifierTest.GetBlockDiagOmega ................... Passed 0.03 sec
Start 29: DRSCertifierTest.GetQCost
29/48 Test #29: DRSCertifierTest.GetQCost ............................ Passed 0.03 sec
Start 30: DRSCertifierTest.GetLambdaGuess
30/48 Test #30: DRSCertifierTest.GetLambdaGuess ...................... Passed 0.03 sec
Start 31: DRSCertifierTest.GetLinearProjection
31/48 Test #31: DRSCertifierTest.GetLinearProjection ................. Passed 0.03 sec
Start 32: DRSCertifierTest.GetOptimalDualProjection
32/48 Test #32: DRSCertifierTest.GetOptimalDualProjection ............ Passed 0.03 sec
Start 33: DRSCertifierTest.ComputeSubOptimalityGap
33/48 Test #33: DRSCertifierTest.ComputeSubOptimalityGap ............. Passed 0.03 sec
Start 34: DRSCertifierTest.Certify
34/48 Test #34: DRSCertifierTest.Certify ............................. Passed 0.09 sec
Start 35: DRSCertifierTest.LargeInstance
35/48 Test #35: DRSCertifierTest.LargeInstance ....................... Passed 16.75 sec
Start 36: DRSCertifierTest.Random100Points
36/48 Test #36: DRSCertifierTest.Random100Points ..................... Passed 0.72 sec
Start 37: DRSCertifierTest.RandomLargeInstsances
37/48 Test #37: DRSCertifierTest.RandomLargeInstsances ............... Passed 15.50 sec
Start 38: LinalgTest.HatMap
38/48 Test #38: LinalgTest.HatMap .................................... Passed 0.00 sec
Start 39: LinalgTest.VectorKronFixedSize
39/48 Test #39: LinalgTest.VectorKronFixedSize ....................... Passed 0.01 sec
Start 40: LinalgTest.VectorKronDynamicSize
40/48 Test #40: LinalgTest.VectorKronDynamicSize ..................... Passed 0.02 sec
Start 41: LinalgTest.GetNearestPSDRandom
41/48 Test #41: LinalgTest.GetNearestPSDRandom ....................... Passed 0.17 sec
Start 42: LinalgTest.GetNearestPSDSimple
42/48 Test #42: LinalgTest.GetNearestPSDSimple ....................... Passed 0.00 sec
Start 43: RegistrationBenchmark.Benchmark1
43/48 Test #43: RegistrationBenchmark.Benchmark1 ..................... Passed 0.72 sec
Start 44: RegistrationBenchmark.Benchmark2
44/48 Test #44: RegistrationBenchmark.Benchmark2 ..................... Passed 0.71 sec
Start 45: RegistrationBenchmark.Benchmark3
45/48 Test #45: RegistrationBenchmark.Benchmark3 ..................... Passed 0.62 sec
Start 46: RegistrationBenchmark.Benchmark4
46/48 Test #46: RegistrationBenchmark.Benchmark4 ..................... Passed 1.45 sec
Start 47: RegistrationBenchmark.Benchmark5
47/48 Test #47: RegistrationBenchmark.Benchmark5 ..................... Passed 0.52 sec
Start 48: RegistrationBenchmark.Benchmark6
48/48 Test #48: RegistrationBenchmark.Benchmark6 ..................... Passed 0.58 sec
100% tests passed, 0 tests failed out of 48
You don't need to be hurry to respond to it. I'm looking forward to your prompt reply.
@LimHyungTae I rerun the tests and it seems to be passing right now. It might be a timeout error.
Before merging, is it possible for you to add a few unit tests for the Quatro code? Something basic is fine, for example generating random points with random rotations. Thanks!
Dear Jingnashi, I upload the following content:
75710df
)9cdb561
)teaser_cpp_fpfh.cc
is wrong, so I modified it. The one additional issue is that I realized that TEASER++ in teaser_cpp_fpfh.cc
fails to estimate the rotation. Please check it (please kindly note that it is not my fault, but it originally estimates the wrong rotation).And we don't need to hurry, so please check them after the submission of CVPR! Thanks, bro~
@LimHyungTae Can you try this branch for the fpfh example: https://github.com/MIT-SPARK/TEASER-plusplus/tree/bugfix/examples I also noticed the problem and it seems to be due to the noise being too high.
Dear @jingnanshi, sorry for the late reply. In fact, after finishing my dense, currently, I'm working for Prof. Stachniss lab as a visiting scholar, so I have little time to implement that codes...So please check for a moment. Anw, I'll check that codes and do PR ASAP. Have a merry Christmas!
Hey @jingnanshi Hope you having nice days. I modified the codes following your bugfix commit. And I checked the performance as follows:
From teaser_cpp_fpfh.cc
=====================================
TEASER++ Results
=====================================
Expected rotation:
0.996927 0.0668736 -0.0406664
-0.066129 0.997618 0.0194009
0.0418676 -0.0166518 0.998978
Estimated rotation:
0.997015 0.0662911 -0.0395803
-0.0655119 0.997638 0.0206715
0.0408572 -0.0180169 0.999003
Error (rad): 0.004494
Expected translation:
-0.115577
-0.0387705
0.114875
Estimated translation:
-0.115578
-0.0388336
0.114961
Error (m): 0.000106482
Number of correspondences: 1889
Number of outliers: 1700
Time taken (s): 0.001061
From teaser_cpp_ply.cc
=====================================
TEASER++ Results
=====================================
Expected rotation:
0.996927 0.0668736 -0.0406664
-0.066129 0.997618 0.0194009
0.0418676 -0.0166518 0.998978
Estimated rotation:
0.99692 0.0670416 -0.0406821
-0.066302 0.997614 0.0192679
0.0418768 -0.0165112 0.998986
Error (rad): 0.004128
Expected translation:
-0.115577
-0.0387705
0.114875
Estimated translation:
-0.115577
-0.0387808
0.11487
Error (m): 1.12306e-05
Number of correspondences: 1889
Number of outliers: 1700
Time taken (s): 0.187157
In summary, the errors are resolved! :) Take your time and please check my commit! Thanks
Hello @jingnanshi , hope you are doing well.
I'd like to request this PR to add Quatro to your repository.
Originally, we used the PCL library, however, I think it would be great cooperation if my method is provided in your repository as well. (our original repo: https://github.com/url-kaist/Quatro)
There's no contributing file, so I just tried to follow your coding styles, the way to describe references, and so on.
In addition, I did thorough tests to check whether our implementation operates well or not: https://github.com/LimHyungTae/quatro-cpp-fpfh.
Thank you in advance!