ethz-asl / kalibr

The Kalibr visual-inertial calibration toolbox
Other
4.4k stars 1.4k forks source link

Baseline results mismatch #137

Closed Chiasung closed 1 year ago

Chiasung commented 7 years ago

Hello All,

I am new to Kalibr. Yesterday, I ran two different calibration methods to calibrate my stereo camera with built-in IMU using the same bag file. The outcome of camera baselines are differnt. One estimation by kalibr_calibrate_cameras is close to the camera spec (6cm), however, the result from kalibr_calibrate_imu_camera is 11cm. That is not reasonable. Could anybody give a hint to sovle this issue. I will greatly appricate. Following is the commands I used and resuts.

1) kalibr_calibrate_cameras --bag 2017-10-25-23-07-52.bag --bag-from-to 4 9 --topics /stereo/left/image_raw /stereo/right/image_raw --models radtan radtan --target target.yaml 2) kalibr_calibrate_imu_camera --target target.yaml --cam camchain.yaml --imu imu0.yaml --bag 2017-10-25-23-07-52.bag --bag-from-to 4 9

1)"kalibr_calibrate_cameras" Calibration results

Camera-system parameters:

cam0 (/stereo/left/image_raw):
 type: <class 'aslam_cv.libaslam_cv_python.DistortedPinholeCameraGeometry'>
 distortion: [ 0.08982447 -0.10728168  0.0010053  -0.0015931 ] +- [ 0.00424448  0.01826095  0.00037677  0.00043009]
 projection: [ 753.53041302  752.68502831  305.75204258  259.78825978] +- [ 0.08965215  0.0831327   0.68836144  0.614528  ]
 reprojection error: [-0.000037, 0.000009] +- [0.167784, 0.161655]

cam1 (/stereo/right/image_raw):
 type: <class 'aslam_cv.libaslam_cv_python.DistortedPinholeCameraGeometry'>
 distortion: [ 0.08490426 -0.10763327 -0.00053635 -0.0014541 ] +- [ 0.00490586  0.02443987  0.00039266  0.00042505]
 projection: [ 756.7709099   756.05422708  304.3187416   252.66928682] +- [ 0.0800266   0.0810337   0.70287441  0.58984044]
 reprojection error: [-0.000030, 0.000016] +- [0.176381, 0.164031]

baseline T_1_0:
 q: [ 0.00059181 -0.00114144 -0.00000764  0.99999917] +- [ 0.00141457  0.00173934  0.000089  ]
 t: [-0.05934035 -0.00044085  0.00079437] +- [ 0.00037338  0.00037877  0.00028811]

    Target configuration:
       Type: aprilgrid
       Tags: 
       Rows: 6
       Cols: 6
       Size: 0.055 [m]
       Spacing 0.0165 [m]

2)"kalibr_calibrate_imu_cameras" Calibration results

Normalized Residuals

Reprojection error (cam0): mean 20.3406304542, median 21.3975997685, std: 4.9424453469 Reprojection error (cam1): mean 20.7587335015, median 20.0094473571, std: 4.26173415853 Gyroscope error (imu0): mean 1.26781864517, median 1.11599698412, std: 0.916665181779 Accelerometer error (imu0): mean 1.12501488855, median 1.09159884222, std: 0.512601978485

Residuals

Reprojection error (cam0) [px]: mean 20.3406304542, median 21.3975997685, std: 4.9424453469 Reprojection error (cam1) [px]: mean 20.7587335015, median 20.0094473571, std: 4.26173415853 Gyroscope error (imu0) [rad/s]: mean 0.0755390138638, median 0.066493194414, std: 0.0546166315968 Accelerometer error (imu0) [m/s^2]: mean 0.134060996163, median 0.130079014676, std: 0.061083575489

Transformation (cam0):

T_ci: (imu0 to cam0): [[-0.09456731 0.99492168 0.03446566 0.02660472] [-0.99547097 -0.09484432 0.00648929 0.03579494] [ 0.00972521 -0.03369589 0.99938481 0.0105476 ] [ 0. 0. 0. 1. ]]

T_ic: (cam0 to imu0): [[-0.09456731 -0.99547097 0.00972521 0.03804618] [ 0.99492168 -0.09484432 -0.03369589 -0.02271926] [ 0.03446566 0.00648929 0.99938481 -0.01169034] [ 0. 0. 0. 1. ]]

timeshift cam0 to imu0: [s] (t_imu = t_cam + shift) 0.0

Transformation (cam1):

T_ci: (imu0 to cam1): [[-0.09667503 0.99456145 0.0387486 -0.08331105] [-0.99507375 -0.09743712 0.01828228 0.03631671] [ 0.0219584 -0.03679028 0.99908173 0.00936346] [ 0. 0. 0. 1. ]]

T_ic: (cam1 to imu0): [[-0.09667503 -0.99507375 0.0219584 0.0278781 ] [ 0.99456145 -0.09743712 -0.03679028 0.08674104] [ 0.0387486 0.01828228 0.99908173 -0.00679062] [ 0. 0. 0. 1. ]]

timeshift cam1 to imu0: [s] (t_imu = t_cam + shift) 0.0

Baselines:

Baseline (cam0 to cam1): [[ 0.99998854 0.00216014 0.00427195 -0.11003785] [-0.00221074 0.99992702 0.01187697 0.00045792] [-0.00424598 -0.01188627 0.99992034 -0.00064487] [ 0. 0. 0. 1. ]] baseline norm: 0.110040692385 [m]

Gravity vector in target coords: [m/s^2] [ 0.86302785 -9.14407545 -3.43649385]

Calibration configuration

cam0

Camera model: pinhole Focal length: [711.963634284882, 711.963634284882] Principal point: [374.86409066481804, 244.78405571004106] Distortion model: radtan Distortion coefficients: [0.07888409273935, -0.11353901155482328, -0.0004560888399720081, 8.736957158911675e-05] Type: aprilgrid Tags: Rows: 6 Cols: 6 Size: 0.055 [m] Spacing 0.0165 [m]

cam1

Camera model: pinhole Focal length: [711.963634284882, 711.963634284882] Principal point: [372.5024610181662, 236.71572961443084] Distortion model: radtan Distortion coefficients: [0.08185918506773818, -0.12296212768690189, -0.0022227781335232093, 0.0006978538097984978] Type: aprilgrid Tags: Rows: 6 Cols: 6 Size: 0.055 [m] Spacing 0.0165 [m]

IMU configuration

IMU0:

Model: calibrated Update rate: 142.0 Accelerometer: Noise density: 0.01 Noise density (discrete): 0.119163752878 Random walk: 0.0002 Gyroscope: Noise density: 0.005 Noise density (discrete): 0.0595818764391 Random walk: 4e-06 T_i_b [[ 1. 0. 0. 0.] [ 0. 1. 0. 0.] [ 0. 0. 1. 0.] [ 0. 0. 0. 1.]] time offset with respect to IMU0: 0.0 [s]

xukuanHIT commented 7 years ago

Mark. I have the same problem, and this issue may help you : https://github.com/ethz-asl/kalibr/issues/101