slambook2(ch9)—— Ubuntu18.04安装MeshLab + 排错 + 例程演示
一、MeshLab安装
1.方式一:
sudo add-apt-repository ppa:zarquon42/meshlab
##### 然后按Enter键,继续
sudo apt-get install meshlab
报错:(直接方式二下载)
W: 无法下载 http://ppa.launchpad.net/zarquon42/meshlab/ubuntu/dists/bionic/InRelease 无法发起与 ppa.launchpad.net:80 (2001:67c:1560:8008::19) 的连接 - connect (101: 网络不可达) 无法连接上 ppa.launchpad.net:80 (91.189.95.85)。 - connect (111: 拒绝连接)
W: 部分索引文件下载失败。如果忽略它们,那将转而使用旧的索引文件。
2.方式二:
软件中心安装
二、bundle_adjustment_ceres
1.CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(bundle_adjustment)
set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-O3 -std=c++14")
LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package(fmt REQUIRED)
Find_Package(G2O REQUIRED)
Find_Package(Eigen3 REQUIRED)
Find_Package(Ceres REQUIRED)
Find_Package(Sophus REQUIRED)
Find_Package(CSparse REQUIRED)
set(FMT_LIBRARIES fmt::fmt)
SET(G2O_LIBS g2o_csparse_extension g2o_stuff g2o_core cxsparse)
include_directories(${PROJECT_SOURCE_DIR} ${EIGEN3_INCLUDE_DIR} ${CSPARSE_INCLUDE_DIR})
add_library(bal_common common.cpp)
add_executable(bundle_adjustment_g2o bundle_adjustment_g2o.cpp)
add_executable(bundle_adjustment_ceres bundle_adjustment_ceres.cpp)
target_link_libraries(bundle_adjustment_ceres ${CERES_LIBRARIES} bal_common)
target_link_libraries(bundle_adjustment_g2o ${G2O_LIBS} bal_common)
target_link_libraries(bundle_adjustment_g2o ${G2O_LIBS} ${FMT_LIBRARIES} bal_common)
2.结果
$ ./bundle_adjustment_ceres ../problem-16-22106-pre.txt
Header: 16 22106 83718bal problem file loaded...
bal problem have 16 cameras and 22106 points.
Forming 83718 observations.
Solving ceres BA ...
iter cost cost_change |gradient| |step| tr_ratio tr_radius ls_iter iter_time total_time
0 1.842900e+07 0.00e+00 2.04e+06 0.00e+00 0.00e+00 1.00e+04 0 6.58e-02 2.36e-01
1 1.449093e+06 1.70e+07 1.75e+06 2.16e+03 1.84e+00 3.00e+04 1 1.68e-01 4.04e-01
2 5.848543e+04 1.39e+06 1.30e+06 1.55e+03 1.87e+00 9.00e+04 1 1.27e-01 5.31e-01
3 1.581483e+04 4.27e+04 4.98e+05 4.98e+02 1.29e+00 2.70e+05 1 1.23e-01 6.54e-01
4 1.251823e+04 3.30e+03 4.64e+04 9.96e+01 1.11e+00 8.10e+05 1 1.21e-01 7.75e-01
5 1.240936e+04 1.09e+02 9.78e+03 1.33e+01 1.42e+00 2.43e+06 1 1.24e-01 8.99e-01
6 1.237699e+04 3.24e+01 3.91e+03 5.04e+00 1.70e+00 7.29e+06 1 1.22e-01 1.02e+00
7 1.236187e+04 1.51e+01 1.96e+03 3.40e+00 1.75e+00 2.19e+07 1 1.20e-01 1.14e+00
8 1.235405e+04 7.82e+00 1.03e+03 2.40e+00 1.76e+00 6.56e+07 1 1.22e-01 1.26e+00
9 1.234934e+04 4.71e+00 5.04e+02 1.67e+00 1.87e+00 1.97e+08 1 1.22e-01 1.39e+00
10 1.234610e+04 3.24e+00 4.31e+02 1.15e+00 1.88e+00 5.90e+08 1 1.22e-01 1.51e+00
11 1.234386e+04 2.24e+00 3.27e+02 8.44e-01 1.90e+00 1.77e+09 1 1.23e-01 1.63e+00
12 1.234232e+04 1.54e+00 3.44e+02 6.69e-01 1.82e+00 5.31e+09 1 1.21e-01 1.75e+00
13 1.234126e+04 1.07e+00 2.21e+02 5.45e-01 1.91e+00 1.59e+10 1 1.21e-01 1.87e+00
14 1.234047e+04 7.90e-01 1.12e+02 4.84e-01 1.87e+00 4.78e+10 1 1.22e-01 2.00e+00
15 1.233986e+04 6.07e-01 1.02e+02 4.22e-01 1.95e+00 1.43e+11 1 1.21e-01 2.12e+00
16 1.233934e+04 5.22e-01 1.03e+02 3.82e-01 1.97e+00 4.30e+11 1 1.22e-01 2.24e+00
17 1.233891e+04 4.25e-01 1.07e+02 3.46e-01 1.93e+00 1.29e+12 1 1.23e-01 2.36e+00
18 1.233855e+04 3.59e-01 1.04e+02 3.15e-01 1.96e+00 3.87e+12 1 1.23e-01 2.48e+00
19 1.233825e+04 3.06e-01 9.27e+01 2.88e-01 1.98e+00 1.16e+13 1 1.23e-01 2.61e+00
20 1.233799e+04 2.61e-01 1.17e+02 2.16e-01 1.97e+00 3.49e+13 1 1.22e-01 2.73e+00
21 1.233777e+04 2.18e-01 1.22e+02 1.15e-01 1.97e+00 1.05e+14 1 1.27e-01 2.86e+00
22 1.233760e+04 1.73e-01 1.10e+02 9.67e-02 1.89e+00 3.14e+14 1 1.24e-01 2.98e+00
23 1.233746e+04 1.37e-01 1.14e+02 1.11e-01 1.98e+00 9.41e+14 1 1.21e-01 3.10e+00
24 1.233735e+04 1.13e-01 1.17e+02 1.96e-01 1.96e+00 2.82e+15 1 1.20e-01 3.22e+00
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1224 16:08:32.052875 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
25 1.233735e+04 0.00e+00 1.17e+02 0.00e+00 0.00e+00 1.41e+15 1 4.76e-02 3.27e+00
26 1.233725e+04 9.50e-02 1.20e+02 3.98e-01 1.99e+00 4.24e+15 1 1.19e-01 3.39e+00
W1224 16:08:32.218746 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
27 1.233725e+04 0.00e+00 1.20e+02 0.00e+00 0.00e+00 2.12e+15 1 4.67e-02 3.43e+00
W1224 16:08:32.262396 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
28 1.233725e+04 0.00e+00 1.20e+02 0.00e+00 0.00e+00 5.30e+14 1 4.36e-02 3.48e+00
29 1.233718e+04 6.92e-02 5.76e+01 1.59e-01 1.70e+00 1.59e+15 1 1.18e-01 3.60e+00
30 1.233714e+04 3.65e-02 5.80e+01 6.25e-01 1.93e+00 4.77e+15 1 1.23e-01 3.72e+00
W1224 16:08:32.550280 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
31 1.233714e+04 0.00e+00 5.80e+01 0.00e+00 0.00e+00 2.38e+15 1 4.75e-02 3.77e+00
W1224 16:08:32.593500 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
32 1.233714e+04 0.00e+00 5.80e+01 0.00e+00 0.00e+00 5.96e+14 1 4.32e-02 3.81e+00
33 1.233711e+04 3.32e-02 5.99e+01 2.01e-01 2.00e+00 1.79e+15 1 1.22e-01 3.93e+00
34 1.233708e+04 3.14e-02 6.02e+01 3.64e-01 2.00e+00 5.36e+15 1 1.24e-01 4.06e+00
W1224 16:08:32.885481 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
35 1.233708e+04 0.00e+00 6.02e+01 0.00e+00 0.00e+00 2.68e+15 1 4.57e-02 4.10e+00
W1224 16:08:32.928736 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
36 1.233708e+04 0.00e+00 6.02e+01 0.00e+00 0.00e+00 6.70e+14 1 4.32e-02 4.14e+00
37 1.233705e+04 2.50e-02 2.04e+01 1.37e-01 1.68e+00 2.01e+15 1 1.20e-01 4.26e+00
38 1.233704e+04 1.58e-02 2.01e+01 4.77e-01 1.95e+00 6.03e+15 1 1.23e-01 4.39e+00
W1224 16:08:33.218616 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
39 1.233704e+04 0.00e+00 2.01e+01 0.00e+00 0.00e+00 3.02e+15 1 4.69e-02 4.43e+00
W1224 16:08:33.262526 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
40 1.233704e+04 0.00e+00 2.01e+01 0.00e+00 0.00e+00 7.54e+14 1 4.39e-02 4.48e+00
41 1.233702e+04 1.51e-02 2.07e+01 3.02e-01 2.00e+00 2.26e+15 1 1.21e-01 4.60e+00
42 1.233701e+04 1.48e-02 2.00e+01 1.14e+00 1.99e+00 6.79e+15 1 1.26e-01 4.73e+00
W1224 16:08:33.556674 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
43 1.233701e+04 0.00e+00 2.00e+01 0.00e+00 0.00e+00 3.39e+15 1 4.72e-02 4.77e+00
W1224 16:08:33.600188 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
44 1.233701e+04 0.00e+00 2.00e+01 0.00e+00 0.00e+00 8.48e+14 1 4.35e-02 4.82e+00
45 1.233700e+04 1.42e-02 2.09e+01 2.20e-01 1.99e+00 2.54e+15 1 1.23e-01 4.94e+00
46 1.233698e+04 1.39e-02 1.88e+01 1.65e+00 2.00e+00 7.63e+15 1 1.24e-01 5.06e+00
W1224 16:08:33.894613 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
47 1.233698e+04 0.00e+00 1.88e+01 0.00e+00 0.00e+00 3.82e+15 1 4.74e-02 5.11e+00
W1224 16:08:33.938587 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
48 1.233698e+04 0.00e+00 1.88e+01 0.00e+00 0.00e+00 9.54e+14 1 4.40e-02 5.15e+00
49 1.233697e+04 1.36e-02 2.14e+01 3.81e-01 2.00e+00 2.86e+15 1 1.23e-01 5.28e+00
W1224 16:08:34.107534 18868 levenberg_marquardt_strategy.cc:115] Linear solver failure. Failed to compute a step: CHOLMOD warning: Matrix not positive definite.
50 1.233697e+04 0.00e+00 2.14e+01 0.00e+00 0.00e+00 1.43e+15 1 4.63e-02 5.32e+00
Solver Summary (v 2.0.0-eigen-(3.3.4)-lapack-suitesparse-(5.1.2)-cxsparse-(3.1.9)-eigensparse-no_openmp)
Original Reduced
Parameter blocks 22122 22122
Parameters 66462 66462
Residual blocks 83718 83718
Residuals 167436 167436
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 22106,16
Schur structure 2,3,9 2,3,9
Cost:
Initial 1.842900e+07
Final 1.233697e+04
Change 1.841667e+07
Minimizer iterations 51
Successful steps 37
Unsuccessful steps 14
Time (in seconds):
Preprocessor 0.169962
Residual only evaluation 0.507175 (36)
Jacobian & residual evaluation 1.776603 (37)
Linear solver 2.374681 (50)
Minimizer 5.156110
Postprocessor 0.005225
Total 5.331297
Termination: NO_CONVERGENCE (Maximum number of iterations reached. Number of iterations: 50.)
initial.ply
meshlab initial.ply
final.ply
meshlab final.ply
报错:(没找到解决办法,不影响结果,忽略)
$ cmake ..
-- Found required Ceres dependency: Eigen version 3.3.4 in /usr/lib/cmake/eigen3
-- Found required Ceres dependency: glog
-- Found required Ceres dependency: gflags
-- Found Ceres version: 2.0.0 installed in: /usr/local with components: [EigenSparse, SparseLinearAlgebraLibrary, LAPACK, SuiteSparse, CXSparse, SchurSpecializations, Multithreading]
CMake Warning (dev) at /usr/local/share/cmake-3.18/Modules/FindPackageHandleStandardArgs.cmake:273 (message):
The package name passed to `find_package_handle_standard_args` (CSPARSE)
does not match the name of the calling package (CSparse). This can lead to
problems in calling code that expects `find_package` result variables
(e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
cmake/FindCSparse.cmake:24 (find_package_handle_standard_args)
CMakeLists.txt:14 (Find_Package)
This warning is for project developers. Use -Wno-dev to suppress it.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/sfann/sf_slam_temp_code/ch9/build
三、bundle_adjustment_g2o
CMakeLists.txt
和上面一样
1.结果:
$ ./bundle_adjustment_g2o ../problem-16-22106-pre.txt
Header: 16 22106 83718iteration= 0 chi2= 8894423.022949 time= 0.26843 cumTime= 0.26843 edges= 83718 schur= 1 lambda= 227.832660 levenbergIter= 1
iteration= 1 chi2= 1772145.050517 time= 0.237252 cumTime= 0.505682 edges= 83718 schur= 1 lambda= 75.944220 levenbergIter= 1
iteration= 2 chi2= 752585.293391 time= 0.235268 cumTime= 0.74095 edges= 83718 schur= 1 lambda= 25.314740 levenbergIter= 1
iteration= 3 chi2= 402814.243627 time= 0.237712 cumTime= 0.978662 edges= 83718 schur= 1 lambda= 8.438247 levenbergIter= 1
iteration= 4 chi2= 284879.378894 time= 0.236198 cumTime= 1.21486 edges= 83718 schur= 1 lambda= 2.812749 levenbergIter= 1
iteration= 5 chi2= 238356.214415 time= 0.235483 cumTime= 1.45034 edges= 83718 schur= 1 lambda= 0.937583 levenbergIter= 1
iteration= 6 chi2= 193550.755079 time= 0.238393 cumTime= 1.68874 edges= 83718 schur= 1 lambda= 0.312528 levenbergIter= 1
iteration= 7 chi2= 146859.909574 time= 0.246289 cumTime= 1.93502 edges= 83718 schur= 1 lambda= 0.104176 levenbergIter= 1
iteration= 8 chi2= 122887.700218 time= 0.238307 cumTime= 2.17333 edges= 83718 schur= 1 lambda= 0.069451 levenbergIter= 1
iteration= 9 chi2= 97810.139925 time= 0.235658 cumTime= 2.40899 edges= 83718 schur= 1 lambda= 0.046300 levenbergIter= 1
iteration= 10 chi2= 80329.940265 time= 0.235279 cumTime= 2.64427 edges= 83718 schur= 1 lambda= 0.030867 levenbergIter= 1
iteration= 11 chi2= 65663.994405 time= 0.240875 cumTime= 2.88514 edges= 83718 schur= 1 lambda= 0.020578 levenbergIter= 1
iteration= 12 chi2= 55960.726637 time= 0.236792 cumTime= 3.12193 edges= 83718 schur= 1 lambda= 0.013719 levenbergIter= 1
iteration= 13 chi2= 53275.547797 time= 0.236035 cumTime= 3.35797 edges= 83718 schur= 1 lambda= 0.009146 levenbergIter= 1
iteration= 14 chi2= 35983.312124 time= 0.287437 cumTime= 3.64541 edges= 83718 schur= 1 lambda= 0.006097 levenbergIter= 2
iteration= 15 chi2= 32091.891518 time= 0.343953 cumTime= 3.98936 edges= 83718 schur= 1 lambda= 0.016259 levenbergIter= 3
iteration= 16 chi2= 31156.262647 time= 0.295334 cumTime= 4.28469 edges= 83718 schur= 1 lambda= 0.021679 levenbergIter= 2
iteration= 17 chi2= 30773.139623 time= 0.240047 cumTime= 4.52474 edges= 83718 schur= 1 lambda= 0.014453 levenbergIter= 1
iteration= 18 chi2= 29079.563460 time= 0.294675 cumTime= 4.81942 edges= 83718 schur= 1 lambda= 0.012488 levenbergIter= 2
iteration= 19 chi2= 28484.154313 time= 0.291629 cumTime= 5.11104 edges= 83718 schur= 1 lambda= 0.016651 levenbergIter= 2
iteration= 20 chi2= 28445.405201 time= 0.236969 cumTime= 5.34801 edges= 83718 schur= 1 lambda= 0.011101 levenbergIter= 1
iteration= 21 chi2= 27170.592543 time= 0.291943 cumTime= 5.63996 edges= 83718 schur= 1 lambda= 0.011118 levenbergIter= 2
iteration= 22 chi2= 26748.191194 time= 0.28838 cumTime= 5.92834 edges= 83718 schur= 1 lambda= 0.014824 levenbergIter= 2
iteration= 23 chi2= 26675.118188 time= 0.235429 cumTime= 6.16377 edges= 83718 schur= 1 lambda= 0.009883 levenbergIter= 1
iteration= 24 chi2= 26087.985781 time= 0.287631 cumTime= 6.4514 edges= 83718 schur= 1 lambda= 0.010281 levenbergIter= 2
iteration= 25 chi2= 25875.818536 time= 0.286971 cumTime= 6.73837 edges= 83718 schur= 1 lambda= 0.013708 levenbergIter= 2
iteration= 26 chi2= 25831.564925 time= 0.236271 cumTime= 6.97464 edges= 83718 schur= 1 lambda= 0.009139 levenbergIter= 1
iteration= 27 chi2= 25568.344873 time= 0.287858 cumTime= 7.2625 edges= 83718 schur= 1 lambda= 0.011118 levenbergIter= 2
iteration= 28 chi2= 25455.865005 time= 0.292309 cumTime= 7.55481 edges= 83718 schur= 1 lambda= 0.011781 levenbergIter= 2
iteration= 29 chi2= 25454.942053 time= 0.235278 cumTime= 7.79009 edges= 83718 schur= 1 lambda= 0.007854 levenbergIter= 1
iteration= 30 chi2= 25260.709796 time= 0.288416 cumTime= 8.0785 edges= 83718 schur= 1 lambda= 0.009148 levenbergIter= 2
iteration= 31 chi2= 25171.392636 time= 0.287608 cumTime= 8.36611 edges= 83718 schur= 1 lambda= 0.009425 levenbergIter= 2
iteration= 32 chi2= 25104.160294 time= 0.288567 cumTime= 8.65468 edges= 83718 schur= 1 lambda= 0.008637 levenbergIter= 2
iteration= 33 chi2= 25042.986799 time= 0.286902 cumTime= 8.94158 edges= 83718 schur= 1 lambda= 0.008765 levenbergIter= 2
iteration= 34 chi2= 24984.677998 time= 0.287927 cumTime= 9.2295 edges= 83718 schur= 1 lambda= 0.005949 levenbergIter= 2
iteration= 35 chi2= 24943.879912 time= 0.287299 cumTime= 9.5168 edges= 83718 schur= 1 lambda= 0.007933 levenbergIter= 2
iteration= 36 chi2= 24886.075504 time= 0.289046 cumTime= 9.80585 edges= 83718 schur= 1 lambda= 0.005674 levenbergIter= 2
iteration= 37 chi2= 24868.088225 time= 0.28819 cumTime= 10.094 edges= 83718 schur= 1 lambda= 0.007565 levenbergIter= 2
iteration= 38 chi2= 24833.053138 time= 0.292635 cumTime= 10.3867 edges= 83718 schur= 1 lambda= 0.008448 levenbergIter= 2
iteration= 39 chi2= 24815.047826 time= 0.287168 cumTime= 10.6738 edges= 83718 schur= 1 lambda= 0.009766 levenbergIter= 2
initial.ply
meshlab initial.ply
final.ply
meshlab final.ply