mkarklins

  • 15 Jan
  • Joined Jun 22, 2023
  • 1 best answer
  • To answer my own question: the factory calibration was incorrect. After doing homemade calibration using the tutorial in the docs, all of the problems were solved.

    The SLAM / VIO algorithms started producing accurate results.

  • Hello!

    I have an Oak-D Pro and I have been trying to calibrate camera for use with different VIO / SLAM algorithms. One such tutorial is here: https://qiita.com/nindanaoto/items/20858eca08aad90b5bab - where the author is using factory calibration data to perform the IMU-join calibration data.

    Here's where I'm struggling. My factory calibration data looks like this using the: depthai-python/examples/calibration/calibration_reader.py

    LEFT Camera resized intrinsics...  1280 x 720
    [[795.3659668    0.         653.66967773]
     [  0.         795.3659668  360.73144531]
     [  0.           0.           1.        ]]
    RIGHT Camera resized intrinsics... 1280 x 720
    [[789.00115967   0.         658.0480957 ]
     [  0.         789.00115967 368.67788696]
     [  0.           0.           1.        ]]

    When I use these intrinsics values for IMU-join calibration ( following the afformentioned tutorial ) the result is way off.

    When I manually try to calibrate my camera, the results are OK-ish.

    The intrinsic result I get for 1280x720 is:

    cam0
    -----
    Camera model: pinhole
    Focal length: [811.8962838372775, 810.4322047467663]
    Principal point: [656.0834229398739, 376.7710308758311]
    Distortion model: radtan
    Distortion coefficients: [0.069472969088674, -0.18754302018957594, 0.0024136241550151085, -0.00315Spacing 0.026399999999999996 [m]
    cam1
    -----
    Camera model: pinhole
    Focal length: [816.3263890377958, 815.0146477608145]
    Principal point: [652.6114688673215, 373.6497129019477]
    Distortion model: radtan
    Distortion coefficients: [0.05571492389202615, -0.15299472983663712, 0.0012144375156622092, -0.0019

    The reprojection error is within bounds:

    I wanted to understand - why is there such a difference between the factory calibration intrinsics and the ones I get with manual calibration?

    • To answer my own question: the factory calibration was incorrect. After doing homemade calibration using the tutorial in the docs, all of the problems were solved.

      The SLAM / VIO algorithms started producing accurate results.