hengli / camodocal

CamOdoCal: Automatic Intrinsic and Extrinsic Calibration of a Rig with Multiple Generic Cameras and Odometry
Other
1.16k stars 389 forks source link

error to run extrinsic_calib #79

Open LeatherWang opened 6 years ago

LeatherWang commented 6 years ago

Hi, I am clibrating the extrinsic of one monocular and wheel encoder mounted on a indoor service robot, but I have these errors below,

my parameters are: camera-count: 1 keydist: 0.01 motions: 300

I collect the all inout data in a room of ten meters by ten meters in three minutes with 6000 pictures.

I can't understand the parameters begin-stage and focal, and I use the default value. How I should modify these parameters? Thank you very much!


# INFO: P3P RANSAC yielded 100 inliers with a reprojection error of 0.58 px.
# INFO: Found 54 new feature correspondences.
# INFO: Triangulated 45 new points.
# INFO: Window reprojection error before optimization: min = 0 | max = 10.5056 | avg = 0.199166
# INFO: Window reprojection error after optimization: min = 5.73329e-10 | max = 10.5025 | avg = 0.184622
# INFO: Feature detection took 0.0275359s.
# INFO: Descriptor computation took 0.00580645s.
# INFO: Descriptor matching took 0.00310922s.
# INFO: Removed 3 matches via cross-checking.
# INFO: # good matches: 148
# INFO: Added frame 14.
# INFO: Found 146 feature correspondences in last 2 frames.
# INFO: Using 107 scene points to compute pose via P3P RANSAC.
# INFO: Computed pose in frame 14:
  0.970967  0.0648157   0.230263  -0.874598
 -0.062423   0.997893 -0.0176689  0.0934642
 -0.230923  0.0027822   0.972968  0.0029632
        -0         -0         -0          1
# INFO: P3P RANSAC yielded 107 inliers with a reprojection error of 0.36 px.
# INFO: Found 35 new feature correspondences.
# INFO: Triangulated 34 new points.
# INFO: Window reprojection error before optimization: min = 0 | max = 10.5025 | avg = 0.190155
# INFO: Window reprojection error after optimization: min = 0 | max = 10.5025 | avg = 0.184659
# INFO: Use provided odometry estimate for camera 0...
Rotation: 
 0.00263442    0.247987     0.96876
  -0.999987 -0.00366104  0.00365651
 0.00445343   -0.968756    0.247974
Translation: 
100 0 0
# INFO: Reprojection error for camera 0: avg = 2.40404 px | max = 62043 px
# INFO: Completed camera-odometry calibration for all cameras.
# INFO: Saving intermediate data... Done. Took 2.31s.
# INFO: Running camera rig calibration.
# INFO: # segments = 11
# INFO:   Segment 0: # frame sets = 15
# INFO:   Segment 1: # frame sets = 26
# INFO:   Segment 2: # frame sets = 73
# INFO:   Segment 3: # frame sets = 35
# INFO:   Segment 4: # frame sets = 37
# INFO:   Segment 5: # frame sets = 18
# INFO:   Segment 6: # frame sets = 30
# INFO:   Segment 7: # frame sets = 28
# INFO:   Segment 8: # frame sets = 16
# INFO:   Segment 9: # frame sets = 16
# INFO:   Segment 10: # frame sets = 14
# INFO: Reprojection error: avg = 0.52 px | max = 293.33 px | # obs = 56000
# INFO: Triangulating feature correspondences... 
# INFO: Reprojection error after triangulation: avg = 2.55 px | max = 1097.19 px | # obs = 31736
# INFO: # 3D scene points: 8118
# INFO: Checking the validity of the graph...
# INFO: Finished checking the validity of the graph.
# INFO: Reprojection error after pruning: avg = 2.55 px | max = 1097.19 px | # obs = 31736
# INFO: # 3D scene points: 8118
# INFO: Running BA on odometry data... 
# INFO: Loss parameter = 25
# INFO: sqrt precision matrix (keypoint position):
5 0
0 5
E0614 20:46:52.475142 14033 solver.cc:487] Terminating: Can't use SPARSE_NORMAL_CHOLESKY as sparse_linear_algebra_library_type is NO_SPARSE.
Ceres Solver Report: Iterations: -2, Initial cost: -1.000000e+00, Final cost: -1.000000e+00, Termination: FAILURE
# INFO: Done.
# INFO: Reprojection error after BA (odometry): avg = 2.55 px | max = 1097.19 px | # obs = 31736
# INFO: # 3D scene points: 8118
# INFO: Running robust pose graph optimization... 
# INFO: Building odometry edges...
# INFO: Built 297 odometry edges.
# INFO: Building loop closure edges...
terminate called after throwing an instance of 'std::string'
E0614 20:46:55.799499 14033 extrinsic_calib.cc:42] *** Aborted at 1528980415 (unix time) try "date -d @1528980415" if you are using GNU date ***
E0614 20:46:55.807651 14033 extrinsic_calib.cc:42] PC: @     0x7f7c98c7cc37 (unknown)
E0614 20:46:55.814091 14033 extrinsic_calib.cc:42] *** SIGABRT (@0x3e8000036d1) received by PID 14033 (TID 0x7f7c9ed85a40) from PID 14033; stack trace: ***
E0614 20:46:55.821746 14033 extrinsic_calib.cc:42]     @     0x7f7c99539330 (unknown)
E0614 20:46:55.822572 14033 extrinsic_calib.cc:42]     @     0x7f7c98c7cc37 (unknown)
E0614 20:46:55.823309 14033 extrinsic_calib.cc:42]     @     0x7f7c98c80028 (unknown)
E0614 20:46:55.823938 14033 extrinsic_calib.cc:42]     @     0x7f7c99285535 (unknown)
E0614 20:46:55.824537 14033 extrinsic_calib.cc:42]     @     0x7f7c992836d6 (unknown)
E0614 20:46:55.825163 14033 extrinsic_calib.cc:42]     @     0x7f7c99283703 (unknown)
E0614 20:46:55.825762 14033 extrinsic_calib.cc:42]     @     0x7f7c99283922 (unknown)
E0614 20:46:55.826261 14033 extrinsic_calib.cc:42]     @     0x7f7c94d75359 DBoW2::TemplatedVocabulary<>::load()
E0614 20:46:55.826752 14033 extrinsic_calib.cc:42]     @     0x7f7c94d68219 camodocal::LocationRecognition::setup()
E0614 20:46:55.848026 14033 extrinsic_calib.cc:42]     @     0x7f7c98679723 camodocal::PoseGraph::findLoopClosures()
E0614 20:46:55.849459 14033 extrinsic_calib.cc:42]     @     0x7f7c9867a352 camodocal::PoseGraph::buildEdges()
E0614 20:46:55.858290 14033 extrinsic_calib.cc:42]     @     0x7f7c9e2d01cd camodocal::CameraRigBA::run()
E0614 20:46:55.859398 14033 extrinsic_calib.cc:42]     @     0x7f7c9e30bdb4 camodocal::CamRigOdoCalibration::start()
E0614 20:46:55.859500 14033 extrinsic_calib.cc:42]     @           0x456604 main
E0614 20:46:55.860219 14033 extrinsic_calib.cc:42]     @     0x7f7c98c67f45 (unknown)
E0614 20:46:55.860437 14033 extrinsic_calib.cc:42]     @           0x457167 (unknown)
E0614 20:46:55.861268 14033 extrinsic_calib.cc:42]     @                0x0 (unknown)

That is all. I am looking forward to your reply.

Unlingius commented 6 years ago

I have also only one camera and crash at loop closure stage. Have you solved your problem?

singhsonam2509 commented 5 years ago

In case if you are still looking for solution, according to the shared error log by you, the problem is with loading the voc data provided by the author. One thing you could try is to extract the surf64.yml file from the provided .gz file and provide the absolute path to the voc.load function in locationRecognition.

debuleilei commented 4 years ago

@LeatherWang hello ,I just want to test extrinsic_calib ,but without effective dataset. Can you give me some help.thank you all the same.

jd110145derek commented 3 years ago

@LeatherWang hi, have you solve this problem, i also encounter the same problem

GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=-0.863899, qw=0.503665 [297399]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=0.868302, qw=-0.496036 [297599]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=0.87087, qw=-0.491513 [297799]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=0.866787, qw=-0.498679 [297999]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=0.872353, qw=-0.488876 [298199]
IMG: 297999 -> ../dataset2/input//frames_0/camera_0_1490.png
Pose : 298199
-0.517796  0.846075         0
-0.846075 -0.517796        -0
       -0         0         1
LOC: 4685949.624653 277054.318119 0.000000
# INFO: Feature detection took 0.0792429s.
# INFO: Descriptor computation took 0.0520101s.
# INFO: Descriptor matching took 0.00974917s.
# INFO: Removed 67 matches via cross-checking.
# INFO: # good matches: 983
# INFO: Added frame 4.
# INFO: Found 982 feature correspondences in last 2 frames.
# INFO: Using 60 scene points to compute pose via P3P RANSAC.
# INFO: Computed pose in frame 4:
  0.996381 -0.0227528  0.0818955    -3.1859
 0.0514799   0.928223  -0.368444    -1.5801
-0.0676342   0.371327   0.926036   -4.85823
        -0         -0         -0          1
# INFO: P3P RANSAC yielded 48 inliers with a reprojection error of 1.89 px.
# INFO: Found 742 new feature correspondences.
# INFO: Triangulated 449 new points.
# INFO: Window reprojection error before optimization: min = 0 | max = 2.01112 | avg = 0.395658
# INFO: Pruned 11 scene points that had too high reprojection errors.
# INFO: Window reprojection error after optimization: min = 2.37761e-08 | max = 5.42281 | avg = 0.283391
IMG: 297999 -> ../dataset2/input//frames_1/camera_1_1490.png
Pose : 298199
-0.517796  0.846075         0
-0.846075 -0.517796        -0
       -0         0         1
# INFO: Feature detection took 0.0822718s.
# INFO: Descriptor computation took 0.0892906s.
# INFO: Descriptor matching took 0.0398977s.
# INFO: Removed 44 matches via cross-checking.
# INFO: # good matches: 334
# INFO: Added frame 1.
# INFO: Found 332 feature correspondences in last 2 frames.
# INFO: Computed pose in frame 0 wrt pose in frame 1 with 149 inliers:
[0.9999062979523855, -0.01176855610885814, -0.006992596246588958;
 0.01165237131711372, 0.9997971165830093, -0.0164300917522674;
 0.007184536021429336, 0.01634707189109105, 0.9998405651316336]
[-0.05993969186897249;
 0.9878905100649813;
 -0.1431068602904961]
# INFO: Triangulated 113 points.
# INFO: Window reprojection error before optimization: min = 0 | max = 1.94441 | avg = 0.431082
# INFO: Window reprojection error after optimization: min = 1.85527e-10 | max = 1.49945 | avg = 0.362262
IMG: 297999 -> ../dataset2/input//frames_2/camera_2_1490.png
Pose : 298199
-0.517796  0.846075         0
-0.846075 -0.517796        -0
       -0         0         1
# INFO: Feature detection took 0.0853186s.
# INFO: Descriptor computation took 0.0242233s.
# INFO: Descriptor matching took 0.00135827s.
# INFO: Removed 44 matches via cross-checking.
# INFO: # good matches: 366
# INFO: Added frame 3.
# INFO: Found 366 feature correspondences in last 2 frames.
# INFO: Using 166 scene points to compute pose via P3P RANSAC.
# INFO: Computed pose in frame 3:
  0.997037  0.0762402  0.0101883   0.317112
-0.0744665    0.98993  -0.120387   -1.77095
-0.0192641   0.119272   0.992675 -0.0119976
        -0         -0         -0          1
# INFO: P3P RANSAC yielded 159 inliers with a reprojection error of 0.99 px.
# INFO: Found 124 new feature correspondences.
# INFO: Triangulated 77 new points.
# INFO: Window reprojection error before optimization: min = 0 | max = 1.98643 | avg = 0.390315
# INFO: Window reprojection error after optimization: min = 1.15576e-08 | max = 1.96048 | avg = 0.310322
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=0.866787, qw=-0.498678 [298399]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=0.86689, qw=-0.498499 [298599]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=-0.863364, qw=0.504581 [298799]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=-0.854565, qw=0.519345 [298999]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=-0.861657, qw=0.507491 [299199]
IMG: 298999 -> ../dataset2/input//frames_0/camera_0_1495.png
Pose : 299199
 -0.48093  0.867396         0
-0.867396  -0.48093        -0
       -0         0         1
LOC: 4685949.584666 277055.576118 0.000000
# INFO: Feature detection took 0.0845788s.
# INFO: Descriptor computation took 0.0510938s.
# INFO: Descriptor matching took 0.00772309s.
# INFO: Removed 89 matches via cross-checking.
# INFO: # good matches: 996
# INFO: Added frame 5.
# INFO: Found 996 feature correspondences in last 2 frames.
# INFO: Using 376 scene points to compute pose via P3P RANSAC.
# INFO: Computed pose in frame 5:
  0.998718 -0.0335195  0.0379415   -1.65021
 0.0436284   0.950026  -0.309108   -1.66997
-0.0256842   0.310367    0.95027   -3.28222
        -0         -0         -0          1
# INFO: P3P RANSAC yielded 174 inliers with a reprojection error of 7.40 px.
# INFO: Found 365 new feature correspondences.
# INFO: Triangulated 129 new points.
# INFO: Window reprojection error before optimization: min = 0 | max = 5.42281 | avg = 0.38259
# INFO: Pruned 5 scene points that had too high reprojection errors.
# INFO: Window reprojection error after optimization: min = 7.341e-12 | max = 5.34693 | avg = 0.341953
IMG: 298999 -> ../dataset2/input//frames_1/camera_1_1495.png
Pose : 299199
 -0.48093  0.867396         0
-0.867396  -0.48093        -0
       -0         0         1
# INFO: Feature detection took 0.0825782s.
# INFO: Descriptor computation took 0.0868769s.
# INFO: Descriptor matching took 0.0353603s.
# INFO: Removed 32 matches via cross-checking.
# INFO: # good matches: 421
# INFO: Added frame 2.
# INFO: Found 421 feature correspondences in last 2 frames.
# INFO: Using 29 scene points to compute pose via P3P RANSAC.
# INFO: Computed pose in frame 2:
    0.999883  0.000989127   -0.0152823     0.172974
-0.000634962     0.999732    0.0231623      2.40866
   0.0153011   -0.0231499     0.999615     -0.55871
          -0           -0           -0            1
# INFO: P3P RANSAC yielded 16 inliers with a reprojection error of 3.05 px.
# INFO: Found 273 new feature correspondences.
# INFO: Triangulated 169 new points.
# INFO: Window reprojection error before optimization: min = 0 | max = 1.96551 | avg = 0.424391
# INFO: Pruned 6 scene points that had too high reprojection errors.
# INFO: Window reprojection error after optimization: min = 3.1801e-10 | max = 1.72911 | avg = 0.369844
IMG: 298999 -> ../dataset2/input//frames_2/camera_2_1495.png
Pose : 299199
 -0.48093  0.867396         0
-0.867396  -0.48093        -0
       -0         0         1
# INFO: Feature detection took 0.0851276s.
# INFO: Descriptor computation took 0.0247226s.
# INFO: Descriptor matching took 0.0011642s.
# INFO: Removed 35 matches via cross-checking.
# INFO: # good matches: 460
# INFO: Added frame 4.
# INFO: Found 460 feature correspondences in last 2 frames.
# INFO: Using 206 scene points to compute pose via P3P RANSAC.
# INFO: Computed pose in frame 4:
  0.997453   0.070402  0.0114099   0.389267
 -0.068981   0.992948 -0.0964192   -1.44085
-0.0181176  0.0953866   0.995275 -0.0165284
        -0         -0         -0          1
# INFO: P3P RANSAC yielded 195 inliers with a reprojection error of 0.80 px.
# INFO: Found 105 new feature correspondences.
# INFO: Triangulated 85 new points.
# INFO: Window reprojection error before optimization: min = 0 | max = 1.97811 | avg = 0.367037
# INFO: Window reprojection error after optimization: min = 4.54747e-13 | max = 1.97004 | avg = 0.32006
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=-0.853059, qw=0.521815 [299399]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=-0.851815, qw=0.523843 [299599]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=-0.851405, qw=0.524509 [299799]
GPS: lat=42.2939, lon=-83.7044, alt=0, qx=0, qy=0, qz=-0.847723, qw=0.530439 [299999]
# INFO: Before refinement:
H_cam_odo = 
 0.550015  0.667254  -0.50225 -0.938575
-0.755231  0.140657 -0.640188  -1.85668
-0.356524  0.731428  0.581295         0
        0         0         0         1
scales = 
0.606285 0.0236088 1.24614 
# INFO: Before refinement:
H_cam_odo = 
 -0.116968    0.98172   0.150146   -1.61226
0.00468886   0.151728  -0.988411    1.42772
 -0.993125  -0.114908 -0.0223505          0
         0          0          0          1
scales = 
0.114315 3.63548 1.56326 0.00815201 
Ceres Solver Report: Iterations: 12, Initial cost: 5.678176e+01, Final cost: 4.951073e+01, Termination: FUNCTION_TOLERANCE.
# INFO: After refinement:
H_cam_odo = 
 0.0812597   0.994488 -0.0662576  -0.766051
 -0.410784 -0.0271519  -0.911328   -2.91914
 -0.908104   0.101272   0.406314          0
         0          0          0          1
scales = 
0.522771 -0.00559585 1.1143 
# INFO: Calibrating odometry - camera 1...
Rotation: 
 0.0812597   0.994488 -0.0662576
 -0.410784 -0.0271519  -0.911328
 -0.908104   0.101272   0.406314
Translation: 
-0.766051  -2.91914         0
# INFO: Before refinement:
H_cam_odo = 
 -0.190661   0.980977  0.0364991    3.24889
 -0.391874 -0.0419686  -0.919061   -4.75121
 -0.900046  -0.189532   0.392421          0
         0          0          0          1
scales = 
2.34522 0.264317 0.0434796 
Ceres Solver Report: Iterations: 15, Initial cost: 1.233887e+02, Final cost: 9.860917e+01, Termination: FUNCTION_TOLERANCE.
# INFO: After refinement:
H_cam_odo = 
 0.356935  0.740433  0.569524   -2.0829
 0.443375  0.402345  -0.80096   1.64746
-0.822202  0.538403 -0.184678         0
        0         0         0         1
scales = 
-0.106856 -3.25947 0.890406 0.00244523 
# INFO: Calibrating odometry - camera 0...
Rotation: 
 0.356935  0.740433  0.569524
 0.443375  0.402345  -0.80096
-0.822202  0.538403 -0.184678
Translation: 
-2.0829 1.64746       0
# INFO: Reprojection error for camera 1: avg = 0.35336 px | max = 3.14553 px
Ceres Solver Report: Iterations: 7, Initial cost: 6.798111e+01, Final cost: 6.626897e+01, Termination: FUNCTION_TOLERANCE.
# INFO: After refinement:
H_cam_odo = 
-0.125612  0.991919 0.0178653   3.00557
-0.713659 -0.077836 -0.696156  -4.86509
-0.689139 -0.100195  0.717669         0
        0         0         0         1
scales = 
2.31404 0.141733 -0.00951979 
# INFO: Calibrating odometry - camera 2...
Rotation: 
-0.125612  0.991919 0.0178653
-0.713659 -0.077836 -0.696156
-0.689139 -0.100195  0.717669
Translation: 
 3.00557 -4.86509        0
# INFO: Reprojection error for camera 2: avg = 0.387265 px | max = 20.3658 px
# INFO: Reprojection error for camera 0: avg = 0.453998 px | max = 27.8478 px
# INFO: Completed camera-odometry calibration for all cameras.
# INFO: Saving intermediate data... Done. Took 6.35s.
# INFO: Running camera rig calibration.
# INFO: # segments = 4
# INFO:   Segment 0: # frame sets = 21
# INFO:   Segment 1: # frame sets = 27
# INFO:   Segment 2: # frame sets = 36
# INFO:   Segment 3: # frame sets = 20
# INFO: Reprojection error: avg = 0.41 px | max = 27.85 px | # obs = 73927
# INFO: Triangulating feature correspondences... 
# INFO: Reprojection error after triangulation: avg = 783.22 px | max = 12175254.80 px | # obs = 48104
# INFO: # 3D scene points: 15118
# INFO: Checking the validity of the graph...
# INFO: Finished checking the validity of the graph.
# INFO: Reprojection error after pruning: avg = 208.67 px | max = 528456.13 px | # obs = 44423
# INFO: # 3D scene points: 14518
# INFO: Running BA on odometry data... 
# INFO: Loss parameter = 25
# INFO: sqrt precision matrix (keypoint position):
5 0
0 5
Ceres Solver Report: Iterations: 89, Initial cost: 2.616784e+07, Final cost: 4.234443e+06, Termination: PARAMETER_TOLERANCE.
# INFO: Done.
# INFO: Reprojection error after BA (odometry): avg = 13.20 px | max = 182.59 px | # obs = 44312
# INFO: # 3D scene points: 14481
# INFO: Running robust pose graph optimization... 
# INFO: Building odometry edges...
# INFO: Built 100 odometry edges.
# INFO: Building loop closure edges...
terminate called after throwing an instance of 'std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >'
Aborted (core dumped)
chunxiaoqiao commented 3 years ago

@jd110145derek Hi, Can I try your dataset ? My e-mail is [chxqiao@gmail.com ] Thanks!

jd110145derek commented 3 years ago

Sure, I am using the NCLT dataset from http://robots.engin.umich.edu/nclt/ The reason why the error occurs is that I put the surf64.yml.gz in the wrong direction. If you have any suggestions, please let me know, thanks!

Best Regards, Derek Lee

chunxiaoqiao @.***> 於 2021年5月18日 週二 上午9:05寫道:

@jd110145derek https://github.com/jd110145derek Hi, Can I try your dataset ? My e-mail is @.*** ] Thanks!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/hengli/camodocal/issues/79#issuecomment-842745345, or unsubscribe https://github.com/notifications/unsubscribe-auth/AO2YQUBDM65YPS2MJWNF5G3TOG4NPANCNFSM4FE7XHQQ .

Vslamer commented 2 years ago

hi, have you solve this problem, i also encounter the same problem

hello, have you solve this problem, i also hace the same problem

Vslamer commented 2 years ago

In case if you are still looking for solution, according to the shared error log by you, the problem is with loading the voc data provided by the author. One thing you could try is to extract the surf64.yml file from the provided .gz file and provide the absolute path to the voc.load function in locationRecognition.

I solve this problem according your way. `void LocationRecognition::setup(const SparseGraph& graph) { m_frameTags.clear(); m_frames.clear(); m_frameMap.clear();

Surf64Vocabulary voc;
//Change to absolute path
voc.load("/home/{your path}/camodocal/data/vocabulary/surf64.yml.gz");

m_db.setVocabulary(voc);`
sandeepnmenon commented 2 years ago

In case if you are still looking for solution, according to the shared error log by you, the problem is with loading the voc data provided by the author. One thing you could try is to extract the surf64.yml file from the provided .gz file and provide the absolute path to the voc.load function in locationRecognition.

Replaced the below line https://github.com/hengli/camodocal/blob/b399fa9ee81b5182e59f717e67a8ddd6503cdcb4/src/location_recognition/LocationRecognition.cc#L19 with voc.load("/root/camodocal/data/vocabulary/surf64.yml.gz");

The error is resolved