Hi, I am using an OAK-FFC 4P module with two IMX378 FF sensors. I am trying to calibrate it but I get always the same error of "High equipolar error between".

I don't know if I'm doing something wrong. I am trying to take the photos as it says on the Luxonis page.

This is the dataset of photos taken for calibration:

The line to run the script is: python calibrate.py -s 2.25 -ms 1.7 -nx 13 -ny 7 -ih -brd Calibration_config2.json -osf 0.15

And here is the json file used to calibrate:

{

    "board_config":

    {

        "cameras":{

            "CAM_A": {

                "name": "cam1a",

                "hfov":  69,

                "type": "color",

                "extrinsics": {

                    "to_cam": "CAM_D",

                    "specTranslation": {

                        "x": 3.6,

                        "y": 0,

                        "z": 0

                    },

                    "rotation":{

                        "r": 0,

                        "p": 0,

                        "y": 0

                    }

                }

            },

            "CAM_D": {

                "name": "cam1b",

                "hfov":  69,

                "type": "color"

            }

        },

        "stereo_config":{            "left_cam": "CAM_A",            "right_cam": "CAM_D"        }    }}

Any suggestions?

    Hi jakaskerl

    I do what you say in this thread but I still get that "high equipolar error" and "high reprojection error".

    This is the line to run the script that I'm using:

    python calibrate.py -s 2.3 -nx 13 -ny 7 -brd Calibration_config2.json -db charuco_24inch_13x7 -ih -osf 0.15

    I think maybe the problem is that I'm not taking the photos correctly. I wonder if it is possible to give public access to the links to the example photos that appear in the camera positioning during calibration section, only some of these photos can be seen.

    As I am using only two cameras (I don't have a central one) when taking the pictures and aligning them with the edges, should I consider the edges of one camera (even if part of the charuco is outside the FOV of the other camera)? Or should I consider that the charuco is completely visible in both cameras?

      MartinTous As I am using only two cameras (I don't have a central one) when taking the pictures and aligning them with the edges, should I consider the edges of one camera (even if part of the charuco is outside the FOV of the other camera)? Or should I consider that the charuco is completely visible in both cameras?

      When I do calibrations, I don't align to the edges. Just make sure to follow rough orientations of the shape on screen. Also, have you tried using the stock charuco board and increasing the display brightness? Both cameras must see the whole charuco board (i think it will give an error anyway).

      Thoughts?
      Jaka

      Which camera is left and which is right? It looks as though you have CAM_A as left but I think the X: 3.6 value means it's defined as 3.6cm to the right of the right camera. Try changing it to -3.6 and see if the error changes.

      Here's the definition from my 3P board for comparison, the layout as viewed from behind the camera

      In reality:
      left <--> 2.89cm <--> centre <--> 2.89cm <--> right

      In the definition:
      left is -5.78cm from the right
      centre is -2.89 from the right

      I've no idea why but it gets cranky if I don't reference the positions from the right camera. I think I've messed around with the calibration_utils script a bit too much though so all bets are off. I can calibrate fine though so it's working at least.

      {
          "board_config": {
              "name": "FFC-3P",
              "revision": "R1M0E1",
              "cameras": {
                  "CAM_A": {
                      "name": "rgb",
                      "hfov": 90,
                      "type": "color",
                      "extrinsics": {
                          "to_cam": "CAM_C",
                          "specTranslation": {
                              "x": -2.89,
                              "y": 0,
                              "z": -9.45
                          },
                          "rotation": {
                              "r": 0,
                              "p": 0,
                              "y": 0
                          }
                      }
                  },
                  "CAM_B": {
                      "name": "left",
                      "hfov": 110,
                      "type": "color",
                      "extrinsics": {
                          "to_cam": "CAM_C",
                          "specTranslation": {
                              "x": -5.78,
                              "y": 0,
                              "z": 0
                          },
                          "rotation": {
                              "r": 0,
                              "p": 0,
                              "y": 0
                          }
                      }
                  },
                  "CAM_C": {
                      "name": "right",
                      "hfov": 110,
                      "type": "color"
                  }
              },
              "stereo_config": {
                  "left_cam": "CAM_B",
                  "right_cam": "CAM_C"
              }
          }
      }

      Hi MartinTous
      On a second thought, I think the problem might stem from the fact that the two IMX cameras are not synced properly. According to this information from https://docs.luxonis.com/projects/hardware/en/latest/pages/guides/sync_frames/#sensor-fsync-support: IMX378 is a rolling shutter camera that can only accept FSYNC, not drive it. This means you can't sync these two together unless you use some external source (perhaps even another camera).
      I was also told that rolling shutter cameras might not perform best in stereo setups due to the nature of their image acquisition process.

      Thanks,
      Jaka