• About how to calibrate OAK-FFC-3P

Before requesting support, please see: https://docs.luxonis.com/en/latest/pages/support/

Hello Team.  

My questions are about how to calibrate OAK-FFC-3P.

I have OAK-FFC-3P device (see pic.1).

Pic.1 Cameras placement

My OAK-FFC-3P modular camera consist of two Global Shutter Grayscale OV9282 cameras and one Global Shutter Color OV9782.

The Global Shutter Grayscale OV9282 has DFOV / HFOV / VFOV 89° / 80° / 55° (https://docs.luxonis.com/projects/hardware/en/latest/pages/BG0250TG/#oak-ffc-ov9282).

The Global Shutter Color OV9782 has DFOV / HFOV / VFOV 89.5° / 80° / 55°

(https://docs.luxonis.com/projects/hardware/en/latest/pages/articles/sensors/ov9782/).

I want to calibrate my OAK-FFC-3P device. So I should prepare config (*.json) file for calibration.

I would like take the “board_config” file from https://docs.luxonis.com/en/latest/pages/calibration/?highlight=calibration#modular-cameras-calibration  and replacing FOV and distance data.

I want to clarify fields meaning from “board_config” file.

What the name "ACME01" means? It is the *.json file name?

What the revision "V1.2" means? Might it be on my own choice?

How should I define "swap_left_and_right_cameras" value if I have cameras placement as on pic.1?

What is the value of "left_fov_deg" and "rgb_fov_deg"? Are they value of DFOV or HFOV or VFOV?

How should I define "left_to_right_distance_cm" value if the distance from left to right camera is equal 28.5 cm? Should it be 28.5 or -28.5?

How should I define "left_to_rgb_distance_cm" value if the distance from left to color camera is equal (28.5 – 14.9) = 13.6 cm? Should it be 13.6 or -13.6?

My ACME01. Json file might has this look?

My calibration charuco pattern look is on the pic.2.

Pic.2 Charuco pattern. The size of a big square is 3.4 cm x 3.4 cm, the size of a small square is 2.1 cm x 2.1 cm.

How should I define my calibration command?

It might be like this: python calibrate.py -s 3.4 -db -brd ACME01.json -ih

If the calibration command is wrong give me right variant please.

Thanks

First off, I've been fighting to calibrate one of these for a while and recently managed it, I've not worked with camera kit like this before though so if you've more experience you may avoid a load of the issues I hit… My thread is here though, if you get stuck you may want to have a look through it as I may have already hit whatever problem you are.

What branch are you trying to calibrate from? That looks like the older format of config file is all, there are loads of updates to the calibration procedure since then on depthai\main.

For the command line, you also need to specify the size of the markers. the -ih option is just for your preference, it mirrors the video
python calibrate.py -s 3.4 -ms 2.1 -brd FFC-3P -nx 11 -ny 8

I have a 3P I've been learning to calibrate and my board definition is below for you to use as a reference:

FFC-3P.json

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

    kneave

    Thanks a lot. I had calibrated my OAK-FFC-3P. But 3D-images is not good as compared with OAK-D. 3D-images of OAK-FFC-3P and OAK-D are similar. I am going to redo calibration using monitor surface as template. I think that calibration procedure (calibration.py) needs quite a bit of cameras source parameters: extrinsics, FOV. Will be a calibration quality good enought If I define extrinsics and FOV with a little bit of inaccurate? For example if I define rotation as equal 0 but rotation is about several degrees.

    Hi ostepan2006 ,
    FOV is not used (and will be removed), as it gets calculated from intrinsic anyway. Extrinsics don't need to be sub-mm accurate, as IIRC it's only a starting point, and get calculated from images afterward anyways.

      erik Thanks

      But what will be if initial rotation has difference with real value in (say) 3 deg? This situation is quit possible. Thanks

      • erik replied to this.

        ostepan2006 That's what calibration finds out - initial values inside json are only for known (large) rotations/translations.

          erik Thanks

          Am I right in thinking that calibration algorithm overcome (say) 3 deg inaccuracy in initial rotation? Thanks

          • erik replied to this.

            ostepan2006 Yes, you are correct, likely even more, but the downside would be that image would be cut and you'd loose some information - as camera would try to align (rectify) left/right frames.