Skip to content

BundleShotPoses possibly broken #1083

@kielnino

Description

@kielnino

I have a simple setup with some images to reconstruct, all taken by the same camera. As I understand the code, individual shots are added to a fake rig instance that only contains the one shot.

In the reconstruction step grow_reconstruction the newly added shots are passed to bundle_shot_poses.

As the newly added shot has the fake rig_instance_id with the same id as the shot_id, rig_instances_ids now only contains the newly added shot. In Line 481 the rig_instances_ids are iterated and the corresponding shots are added to the bundle problem (Line 516).

As part of this it is checked if the found shot_id is in the list of the newly-added shots (which are supposed to be bundled), and this is always the case. So all shots are fixed and the BA only consists of constant blocks. See the ceres summary full-report:

Solver Summary (v 2.1.0-eigen-(3.4.0)-lapack-eigensparse-no_openmp)

                                     Original                  Reduced
Parameter blocks                           67                        0
Parameters                                216                        0
Residual blocks                            65                        0
Residuals                                 140                        0

Minimizer                        TRUST_REGION

Sparse linear algebra library    EIGEN_SPARSE
Trust region strategy     LEVENBERG_MARQUARDT

                                        Given                     Used
Linear solver                        DENSE_QR   SPARSE_NORMAL_CHOLESKY
Threads                                    20                       20
Linear solver ordering              AUTOMATIC                AUTOMATIC

Cost:
Initial                          9.919183e-01
Final                            9.919183e-01
Change                           0.000000e+00

Minimizer iterations                       -2
Successful steps                           -1
Unsuccessful steps                         -1

Time (in seconds):
Preprocessor                         0.000770

  Residual only evaluation          -1.000000 (-1)
  Jacobian & residual evaluation    -1.000000 (-1)
  Linear solver                     -1.000000 (-1)
Minimizer                            0.000000

Postprocessor                        0.000002
Total                                0.000772

Termination:                      CONVERGENCE (Function tolerance reached. No non-constant parameter blocks found.)

As I see this, the newly added shot is always set to fixed and the complete bundle of the newly added shots-poses never work. How the whole thing works when real rigs are used, I can not foresee, but even with single shots the BundleShotPoses should do something.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions