当前位置:网站首页>Performance comparison between Ceres solver and g2o

Performance comparison between Ceres solver and g2o

2022-07-07 06:32:00 chennuo0125-HIT

Preface

ceres-solver and g2o yes slam Common optimizers in the field , among ceres-solver By vins-mono Use , and g2o By orb-slam3 Use , So which optimizer is more suitable for slam Used in algorithm development ?

test

Based on these two optimizers BA The process , Then test the same simulation data set , Test program link : https://github.com/chennuo0125-HIT/test/tree/main/ceres_g2o_comparer, Press readme The following results can be obtained by compiling and running :

************** solve ba by g2o ***************
# Using EigenSparseCholesky poseDim 6 landMarkDim 3 blockordering 1
Performing full BA:
iteration= 0	 chi2= 238086189.574891	 time= 0.00782969	 cumTime= 0.00782969	 edges= 9135	 schur= 1	 lambda= 5991.771138	 levenbergIter= 1
iteration= 1	 chi2= 12982651.993440	 time= 0.00342487	 cumTime= 0.0112546	 edges= 9135	 schur= 1	 lambda= 1997.257046	 levenbergIter= 1
iteration= 2	 chi2= 657425.312444	 time= 0.00318212	 cumTime= 0.0144367	 edges= 9135	 schur= 1	 lambda= 665.752349	 levenbergIter= 1
iteration= 3	 chi2= 124163.255742	 time= 0.00287256	 cumTime= 0.0173092	 edges= 9135	 schur= 1	 lambda= 221.917450	 levenbergIter= 1
iteration= 4	 chi2= 75275.286988	 time= 0.00304911	 cumTime= 0.0203584	 edges= 9135	 schur= 1	 lambda= 73.972483	 levenbergIter= 1
iteration= 5	 chi2= 34439.999175	 time= 0.00264852	 cumTime= 0.0230069	 edges= 9135	 schur= 1	 lambda= 24.657494	 levenbergIter= 1
iteration= 6	 chi2= 22057.399494	 time= 0.00309912	 cumTime= 0.026106	 edges= 9135	 schur= 1	 lambda= 16.438330	 levenbergIter= 1
iteration= 7	 chi2= 18344.890824	 time= 0.00295518	 cumTime= 0.0290612	 edges= 9135	 schur= 1	 lambda= 5.479443	 levenbergIter= 1
iteration= 8	 chi2= 17868.574026	 time= 0.00397518	 cumTime= 0.0330364	 edges= 9135	 schur= 1	 lambda= 7.305924	 levenbergIter= 2
iteration= 9	 chi2= 17333.014982	 time= 0.00399876	 cumTime= 0.0370351	 edges= 9135	 schur= 1	 lambda= 9.741232	 levenbergIter= 2

point error before optimize: 2.96158
point error  after optimize: 0.462318


************** solve ba by ceres **************

Solver Summary (v 2.0.0-eigen-(3.3.7)-lapack-suitesparse-(5.7.1)-cxsparse-(3.2.0)-eigensparse-no_openmp)

                                     Original                  Reduced
Parameter blocks                          708                      706
Parameters                               2184                     2170
Effective parameters                     2169                     2157
Residual blocks                          9135                     9135
Residuals                               18270                    18270

Minimizer                        TRUST_REGION

Sparse linear algebra library    SUITE_SPARSE
Trust region strategy     LEVENBERG_MARQUARDT

                                        Given                     Used
Linear solver                    SPARSE_SCHUR             SPARSE_SCHUR
Threads                                     1                        1
Linear solver ordering              AUTOMATIC                   693,13
Schur structure                         2,3,6                    2,3,6

Cost:
Initial                          1.217168e+09
Final                            7.973251e+03
Change                           1.217160e+09

Minimizer iterations                        7
Successful steps                            7
Unsuccessful steps                          0

Time (in seconds):
Preprocessor                         0.005044

  Residual only evaluation           0.004244 (7)
  Jacobian & residual evaluation     0.010863 (7)
  Linear solver                      0.034270 (7)
Minimizer                            0.053454

Postprocessor                        0.000078
Total                                0.058576

Termination:                      CONVERGENCE (Function tolerance reached. |cost_change|/cost: 4.362464e-08 <= 1.000000e-06)


point error before optimize: 2.96158
point error  after optimize: 0.0354349

************** cost time **************
g2o cost time: 68.4571 [ms]
ceres cost time: 63.1568 [ms]

Conclusion

be based on " explain " Simulation data set in , It can be preliminarily determined ceres-solver It is superior to g2o.

explain

  1. The simulation data in the test program comes from g2o Medium ba_demo.cpp,g2o The test case is also based on the program .
  2. This test case only uses a set of simulation data sets , Not enough to reach a more comprehensive conclusion , If you have good test cases or other conclusions , Can maintain communication , My mailbox : [email protected]
原网站

版权声明
本文为[chennuo0125-HIT]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207070153165789.html