当前位置:网站首页>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
- The simulation data in the test program comes from g2o Medium ba_demo.cpp,g2o The test case is also based on the program .
- 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]
边栏推荐
- VIM mapping large K
- Jmeter自带函数不够用?不如自己动手开发一个
- Redis(二)—Redis通用命令
- 程序员的日常 | 每日趣闻
- Swagger3 configuration
- 360 Zhiyu released 7.0 new products to create an exclusive "unified digital workspace" for the party, government and army, and central and state-owned enterprises
- QT console output in GUI applications- Console output in a Qt GUI app?
- 线性代数(一)
- Developers don't miss it! Oar hacker marathon phase III chain oar track registration opens
- How can I check the DOI number of a foreign document?
猜你喜欢
Etcd database source code analysis -- starting from the start function of raftnode
[SOC FPGA] custom IP PWM breathing lamp
地质学类比较有名的外文期刊有哪些?
Overview of FlexRay communication protocol
Apache ab 压力测试
[SOC FPGA] peripheral PIO button lights up
BindingException 异常(报错)处理
Doctoral application | Professor Hong Liang, Academy of natural sciences, Shanghai Jiaotong University, enrolls doctoral students in deep learning
A program lets you understand what static inner classes, local inner classes, and anonymous inner classes are
Test the foundation of development, and teach you to prepare for a fully functional web platform environment
随机推荐
谷歌 Chrome 浏览器发布 103.0.5060.114 补丁修复 0-day 漏洞
c语言(结构体)定义一个User结构体,含以下字段:
win系统下安装redis以及windows扩展方法
When we talk about immutable infrastructure, what are we talking about
Implementation of VGA protocol based on FPGA
laravel 使用腾讯云 COS5全教程
软件测试的几个关键步骤,你需要知道
JWT 认证
Basic DOS commands
对称的二叉树【树的遍历】
BindingException 异常(报错)处理
Overview of FlexRay communication protocol
HKUST & MsrA new research: on image to image conversion, fine tuning is all you need
Three updates to build applications for different types of devices | 2022 i/o key review
Force deduction 62 different paths (the number of all paths from the upper left to the lower right of the matrix) (dynamic planning)
【OpenCV】形态学滤波(2):开运算、形态学梯度、顶帽、黑帽
项目实战 五 拟合直线 获得中线
3428. Put apples
docker-compose启动redis集群
[shell] summary of common shell commands and test judgment statements