We are trying to perform hand eye calibration with a mounted Zed X and are getting small errors which we suspect may have to do with our use of the intrinsic calibration. To that end, a number of clarifying questions:
When taking rectified RGB images with the Zed X, the intrinsics returned by get_camera_information().camera_configuration.calibration_parameters.left_cam have zero distortion parameters, but the focal lengths and center points change between camera invocations. We are using these intrinsic parameters “as is”, and trying to calibrate the extrinsics based on these numbers. If the rectification is performed based on some factory calibration, why aren’t these constant? Do the changes reflect an error in calibration or simply a choice made on what parameters to rectify the image with?
Is some sort of RGB image stabilization being performed? there’s mention of depth stabilization, but not of RGB.
If we use unrectified images, how do we get the factory calibration paramaters? it seems that get_camera_information().camera_configuration.calibration_parameters.left_cam again contains zero distortion, which can’t be right.
When the ZED SDK opens the camera, it performs a quick camera parameters tuning to correct little modifications due to temperature or vibrations over time.
You can disable this behavior to always have the same parameters by setting camera_disable_self_calib to false in sl::InitParameters:
So which is more accurate? using the unrectified images with the factory calibrated intrinsics, or the rectified images with the “tuning” done when camera_disable_self_calib is false? In other words, do we expect the tuning to increase accuracy?