colmap / glomap

GLOMAP - Global Structured-from-Motion Revisited
BSD 3-Clause "New" or "Revised" License
1.3k stars 77 forks source link

Error in evaluating the ResidualBlock #35

Closed daijicheng closed 1 month ago

daijicheng commented 1 month ago

I replaced PoseLib with version 233a92632d2f9fc0a572e3df6b92b62124403338 to support fisheye cameras, but after completing the relative pose estimation, the following error occurred:

Error in evaluating the ResidualBlock.

There are two possible reasons. Either the CostFunction did not evaluate and fill all
residual and jacobians that were requested or there was a non-finite value (nan/infinite)
generated during the or jacobian computation.

Residual Block size: 3 parameter blocks x 3 residuals

For each parameter block, the value of the parameters are printed in the first column
and the value of the jacobian under the corresponding residual. If a ParameterBlock was
held constant then the corresponding jacobian is printed as 'Not Computed'. If an entry
of the Jacobian/residual array was requested but was not written to by user code, it is
indicated by 'Uninitialized'. This is an error. Residuals or Jacobian values evaluating
to Inf or NaN is also an error.

Residuals:        -nan(ind)    -nan(ind)    -nan(ind)

Parameter Block 0, size: 3

    -89.3321 |            1            0            0
     9.42058 |            0            1            0
     89.6795 |            0            0            1

Parameter Block 1, size: 3

     70.8141 |           -1            0            0
    -14.4669 |            0           -1            0
    -96.0798 |            0            0           -1

Parameter Block 2, size: 1

           1 |     -160.146      23.8875      185.759

E20240805 17:50:19.098311 72260 trust_region_minimizer.cc:71] Terminating: Residual and Jacobian evaluation failed.
I20240805 17:50:19.110324 72260 global_positioning.cc:77] Ceres Solver Report: Iterations: 0, Initial cost: -1.000000e+00, Final cost: -1.000000e+00, Termination: FAILURE
I20240805 17:50:19.167412 72260 global_mapper.cc:81] Reconstruction done in 465.329 seconds
I20240805 17:50:19.528967 72260 global_mapper.cc:86] Export to COLMAP reconstruction done

I don't know if the current global position module still doesn't support the fisheye model. Here is my database data. database.zip

ahojnnes commented 1 month ago

This should be fixed here: https://github.com/colmap/glomap/pull/58

The reconstructed model doesn't look good but at least the crash is not happening. I did not look into why the reconstruction fails to produce meaningful geometry.