Skip to content

Optimizer Eigen assertion when calibrating with "none" distortion models #236

Closed
@caselitz

Description

@caselitz

Hi all,

I experienced the following issue when trying to kalibr_calibrate_cameras:

kalibr_calibrate_cameras --bag ~/Downloads/BF2M2020S23-1.bag --topics /cam0/image_raw --models ds-none --target ~/Desktop/target.yaml --verbose
importing libraries
Initializing cam0:
	Camera model:	  ds-none
	Dataset:          /home/caselitz/Downloads/BF2M2020S23-1.bag
	Topic:            /cam0/image_raw
	Number of images: 253
Extracting calibration target corners

... 

  Extracted corners for 253 images (of 253 images)                              
[DEBUG] [1540407694.373795]: calibrateIntrinsics: intrinsics guess: [  0.           0.5        328.19045165 328.19045165 639.5
 511.5       ]
[DEBUG] [1540407694.378700]: calibrateIntrinsics: distortion guess: []
[DEBUG] [1540407694.387976]: calibrateIntrinsics: adding camera error terms for 253 calibration targets
[DEBUG] [1540407703.494753]: calibrateIntrinsics: added 35793 camera error terms
No linear system solver set in the options. Defaulting to the sparse_cholesky solver
Using the sparse_cholesky linear system solver
Using the levenberg_marquardt trust region policy
[DEBUG] [1540407703.499829]: Before optimization:
[DEBUG] [1540407705.404647]:  Reprojection error squarred (camL):  mean 49.7943951178, median 3.70118328943, std: 171.027015386
No linear system solver set in the options. Defaulting to the sparse_cholesky solver
Using the sparse_cholesky linear system solver
Using the levenberg_marquardt trust region policy
Initializing
Optimization problem initialized with 508 design variables and 35793 error terms
The Jacobian matrix is 71586 x 1524
[0.0]: J: 1.78229e+06
python: /usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:408: Eigen::DenseCoeffsBase<Derived, 1>::Scalar& Eigen::DenseCoeffsBase<Derived, 1>::operator[](Eigen::Index) [with Derived = Eigen::Matrix<double, -1, 1>; Eigen::DenseCoeffsBase<Derived, 1>::Scalar = double; Eigen::Index = long int]: Assertion `index >= 0 && index < size()' failed.
Aborted (core dumped)

So I guess the assertion is raised somewhere in this function.

I tried the available camera models (except pinhole) and all *-none models gave me the error. Interestingly, omni-radtan did not!

I tried with my own dataset but then switched to another one from this site (BF2M2020S23). Error also occurs here, so I guess the dataset is not the reason.

Do you think it might be related to the OS (Ubuntu 18.04) or Eigen version (3.3.4)?
@VladyslavUsenko and @NikolausDemmel - when you did the calibrations for your paper, e.g. ds-none, which versions did you use? Do you think the issue could be related to none distortion model, as - if I remember correctly - this was introduced with the PR for the new camera models (thanks for contributing this to kalibr!)?

Thanks for your help!
Best, Tim

PS: I will investigate were the assertion is raised exactly and see if using an older Eigen version helps. Just wanted to open this issue in case someone with more insight can help already. :)

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