CogHandEyeCalibratorRemoteCameras Execute Method (CogHandEyeCalibrationResults, CogFeaturePositionsMCamerasNPoses,  Rectangle , CogFeaturePositionsMCamerasNPoses,  CogTransform2DCameraCalibration )Cognex VisionPro
Reuse the internal camera parameters (from the supplied camera calibration results of the remote cameras) to compute the CogHandEyeCalibrationRemoteCamerasResults for the remote cameras based on the supplied hand-eye calibration results of the primary cameras, the tracked feature points on a part from both primary station and remote station, pelrects of remote camera.

Note that it requires the primary cameras and remote cameras must have overlapped tracked features in their FOVs when moving the part between primary station and remote station (via the highly repeatable motions).

Note that the tracked Raw2D features' order must be the same over all primary/remote cameras and over all poses.

Namespace: Cognex.VisionPro.CalibFix
Assembly: Cognex.VisionPro.CalibFixPlus (in Cognex.VisionPro.CalibFixPlus.dll) Version: 65.1.0.0
Syntax

public CogHandEyeCalibrationRemoteCameraResults Execute(
	CogHandEyeCalibrationResults primaryCamerasCalibResults,
	CogFeaturePositionsMCamerasNPoses primaryCamerasTrackedRaw2DFeatures,
	Rectangle[] remoteCamerasPelRects,
	CogFeaturePositionsMCamerasNPoses remoteCamerasTrackedRaw2DFeatures,
	CogTransform2DCameraCalibration[] remoteCameraRaw2DFromCamera2Ds
)

Parameters

primaryCamerasCalibResults
Type: Cognex.VisionPro.CalibFix CogHandEyeCalibrationResults
The primary cameras' hand-eye calibration results.
primaryCamerasTrackedRaw2DFeatures
Type: Cognex.VisionPro CogFeaturePositionsMCamerasNPoses
The tracked Raw2D feature positions from the images acquired by the primary cameras. Each tracked Raw2D feature includes x,y coordinates and a validation value. For different poseID of i, primaryCamerasTrackedRaw2DFeatures[i][cameraID][featureID] (with the same cameraID and featureID) should always correspond to the same physical feature. The validation value indicates whether this feature is visible in current camera under current pose.
remoteCamerasPelRects
Type:  System.Drawing Rectangle 
The pelrects of the remote cameras. There should be one pelrect for each camera. There is no relationship between the pelrects of two separate cameras. It is used to define the camera coordinate system (i.e. Camera2D) to be at the center of the pelrect.
remoteCamerasTrackedRaw2DFeatures
Type: Cognex.VisionPro CogFeaturePositionsMCamerasNPoses
The tracked Raw2D feature positions from the images acquired by the remote cameras. Each tracked Raw2D feature includes x,y coordinates and a validation value. For different poseID of i, remoteCamerasTrackedRaw2DFeatures[i][cameraID][featureID] (with the same cameraID and featureID) should always correspond to the same physical feature. The validation value indicates whether this feature is visible in current camera under current pose.
remoteCameraRaw2DFromCamera2Ds
Type:  Cognex.VisionPro CogTransform2DCameraCalibration 
The remote cameras' previously computed calibration results which are expected to have better accuracy (e.g., using calibration plate). The intrinsic parameters of input camera calibrations are kept during computing the hand-eye calibration, while the extrinsic parameter are recalculated based on the tracked Raw2D features.

Return Value

Type: CogHandEyeCalibrationRemoteCameraResults
A CogHandEyeCalibrationRemoteCameraResults containing the results of the calibration, i.e. a CogHandEyeCalibrationRemoteCameraResult object for each camera.
Exceptions

ExceptionCondition
ArgumentNullException If the primaryCamerasCalibResults argument is null.
ArgumentNullException If the primaryCamerasTrackedRaw2DFeatures argument is null.
ArgumentNullException If the remoteCamerasPelRects argument is null.
ArgumentNullException If the remoteCamerasTrackedRaw2DFeatures argument is null.
ArgumentNullException If the remoteCameraRaw2DFromCamera2Ds argument is null.
ArgumentNullException The Raw2DFromCamera2D transform for any of the items in remoteCameraRaw2DFromCamera2Ds is null.
CogTimeoutExpiredException If TimeoutEnabled is true and this method does not complete within Timeout milliseconds.
ArgumentException If any of the following is true:
  • Any of the input arguments is empty.
  • primaryCamerasTrackedRaw2DFeatures[i].Count != primaryCamerasCalibResults.Count for any pose i.
  • primaryCamerasTrackedRaw2DFeatures.Count != remoteCamerasTrackedRaw2DFeatures.Count
  • remoteCamerasTrackedRaw2DFeatures[i].Count != remoteCamerasPelRects.Count for any pose i
  • primaryCamerasTrackedRaw2DFeatures[i1][j].Count != primaryCamerasTrackedRaw2DFeatures[i2][j].Count for any j.
  • remoteCamerasTrackedRaw2DFeatures[i1][j].Count != remoteCamerasTrackedRaw2DFeatures[i2][j].Count for any j.
  • remoteCamerasTrackedRaw2DFeatures[i].Count != remoteCameraRaw2DFromCamera2Ds.Count for any pose i.
  • primaryCamerasTrackedRaw2DFeatures[i1][j1].Count != remoteCamerasTrackedRaw2DFeatures [i2][j2].Count for any i1, j1, i2, j2.
ArgumentException If any Raw2D feature position in the remoteCamerasTrackedRaw2DFeatures argument falls outside its corresponding pelrect.
ArgumentException If the supplied remoteCameraRaw2DFromCamera2Ds is using a lens distortion model different from the one set in this calibrator.
ArgumentException If the input data is degenerate.
Remarks

The purpose of this overload is to support previously-calibrated remote cameras, and calibrating the camera extrinsic poses using potentially sparse feature correspondences.

Requires:

  • Between the previous and current calibration, there should be no change to the cameras' intrinsic parameters, e.g. focal length, focus, aperture, lens unit, camera body.
  • Between the previous and current calibration, the cameras' extrinsic parameters changes such as in-plane rotation and translation, are to be expected. Small changes to non-in-plane rotation and translation that cause changes in perspective are also allowed.

See Also