• OAK-D Pro Wide Calibration Error

I am trying to re-calibrate my OAK-D Pro Wide but not able to successfully complete the calibration process, it would be great if you could advise what I have probably done wrong:

Printed the charuco pattern and pasted on the cardboard. I ran the calibration script with "python3 calibrate.py -s 2.473 -db -brd OAK-D-PRO-W -c 1"

Datasets from the calibration process (Left):

There are high chances that the calibration.py script exit and throw an exception with:

Device closed in exception..
division by zero
Traceback (most recent call last):
File "/home/nelson/depthai/calibrate.py", line 955, in calibrate
status, result_config = stereo_calib.calibrate(
File "/home/nelson/depthai/depthai_helpers/calibration_utils.py", line 179, in calibrate
left_cam_info['extrinsics']['epipolar_error'] = self.test_epipolar_charuco(
File "/home/nelson/depthai/depthai_helpers/calibration_utils.py", line 1050, in test_epipolar_charuco
avg_epipolar = epi_error_sum / len(imgpoints_r)
ZeroDivisionError: division by zero

Out of a few tries, sometimes I manage to see the calibrated result for the left camera(attached some of the image here):




Is this how the result should looks like for a wide camera?

rgb camera normally ends up with high Reprojection Error:

Is this the correct calibration script/mode to run with OAK-D Pro Wide?

  • erik replied to this.

    Hi kaichie ,
    I'd try with a larger calibration board - we use one with 6cm squares (whereas you have 2.47cm), and it provides much better results. You can also try with the peripheral_calibration branch (on depthai repo), which should provide better wide fov calibration.
    Thoughts?
    Thanks, Erik

      Hi erik , Thanks for the suggestion - I have tested it with a larger calibration board (printed in A0 with square size of about 9.855cm), and I am still facing the same errors as my previous comments.

      I have also tried the peripheral_calibration branch and also calibrate with iPad but still could not successfully finish the calibration process.
      First can we confirm if the calibrate.py script is supposed to work for OAK-D Pro Wide camera? Because the result looks odd to me(I changed the traceLevel to 3 to view the undistorted image).

      • erik replied to this.

        Hi kaichie ,
        Looking above, did you only take 13 images? Usually, I take 39 (which is also the default I think?), just so calibration accuracy can be the best, and the calibration board is a bit closer to the target (so at least 1/2 of pixels are from calib board, whereas in your dataset it's more like 1/6).

          6 days later

          erik
          Yes, I was trying with 13 images to see if I can successfully finish the calibration process.
          Thanks for the advice, I have tried placing the board closer and test the default 39 images calibration but still could not manage to successfully calibrate it. Do you mind sharing a sample set for the 39 images (left,right,rgb) so that I can follow more closely on the position of the calibration board please?

          • erik replied to this.