ethz-asl / kalibr

The Kalibr visual-inertial calibration toolbox
Other
4.28k stars 1.39k forks source link

[calibrate_imu_camera] with too big camera reprojection error! #559

Closed SongkunChen closed 1 year ago

SongkunChen commented 2 years ago

Hi friends:

I try to calibrate a MPU6050 with a depth camera; I got the good state for the camera calibration alone, with reprojection erros to be about 0.4-0.5 pixel ( in the moving state); But when I try to calibrate the camera and IMU as a whole, the camera reprojection error is too big ( to nearly 3-4 pixels). I try to increase the noise property of the IMU (with 2x noise density and 10x randwalk), but the result does not get any improvent.

Here is the calibration result. Any suggestions for the further modification? Sincere thanks in advance! test_420_kalibr-report-cam.pdf test_420_kalibr-report-imucam.pdf

SongkunChen commented 2 years ago

Update:

  1. I finally found that , my camera model was not well chosen. Refer to the following repo, I managed to validate the camera model, and choose a better one for my camera, which shows a better result. Hope the information will help someone else. https://github.com/ethz-asl/image_undistort#loading-camera-information-from-ros-parameters
  1. I am a little confused by the following optimization options. Could someone share some light on it ,so that I can get better simulation results between body-estimation and measured data? iCal.buildProblem(splineOrder=6, poseKnotsPerSecond=100, biasKnotsPerSecond=100, doPoseMotionError=False, doBiasMotionError=True, blakeZisserCam=-1, huberAccel=-1, huberGyro=-1, noTimeCalibration=parsed.no_time, noChainExtrinsics=(not parsed.recompute_chain_extrinsics), maxIterations=parsed.max_iter, timeOffsetPadding=parsed.timeoffset_padding, verbose = parsed.verbose) image
SongkunChen commented 1 year ago

Issue Resolved; Due to the wrong set of my own camera.

foemre commented 1 year ago

Issue Resolved; Due to the wrong set of my own camera.

What did you change in your final calibration? What was wrong in your previous setup?