CogHandEyeCalibratorRemoteCameras ClassCognex VisionPro
The CogHandEyeCalibratorRemoteCameras class performs a hand-eye calibration between one or more remote cameras and a motion stage.
Inheritance Hierarchy

System Object
  System MarshalByRefObject
    Cognex.VisionPro.Implementation CogObjectBase
      Cognex.VisionPro.Implementation CogSerializableObjectBase
        Cognex.VisionPro.Implementation CogSerializableChangedEventBase
          Cognex.VisionPro.CalibFix CogHandEyeCalibratorRemoteCameras

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

[SerializableAttribute]
public class CogHandEyeCalibratorRemoteCameras : CogSerializableChangedEventBase, 
	IDisposable

The CogHandEyeCalibratorRemoteCameras type exposes the following members.

Constructors

  NameDescription
Public methodCogHandEyeCalibratorRemoteCameras 
This constructor creates a default CogHandEyeCalibratorRemoteCameras object.
Public methodCogHandEyeCalibratorRemoteCameras(CogHandEyeCalibratorRemoteCameras)
Copy constructs a CogHandEyeCalibratorRemoteCameras object.
Protected methodCogHandEyeCalibratorRemoteCameras(SerializationInfo, StreamingContext)
Serialization construct a CogHandEyeCalibratorRemoteCameras object.
Top
Methods

  NameDescription
Public methodCreateObjRef
Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.
(Inherited from MarshalByRefObject.)
Public methodDispose 
Destruct this CogHandEyeCalibratorRemoteCameras.
Protected methodDispose(Boolean)
Public methodEquals
Determines whether the specified Object is equal to the current Object.
(Inherited from Object.)
Public methodExecute(CogFeatureCrspsMCamerasNPoses,  Rectangle ,  CogTransform2DRigid )
Compute the CogHandEyeCalibrationRemoteCamerasResults for the remote cameras based on the supplied the corresponded point pairs extracted from images of the separate calibration plates being shuffled between primary station and remote station captured with remote cameras, pelrects of remote cameras, and unCorrectedHome2DFromStage2Ds poses. This overload performs a full hand eye calibration on the remote station so that it doesn't require that the remote cameras and primary cameras to have overlapped or connected plate features in their FOVs when moving the calibration plates between primary station and remote station (via the highly repeatable motions).
Public methodExecute(CogFeaturePositionsMCamerasNPoses,  Rectangle ,  CogTransform2DRigid )
Compute the CogHandEyeCalibrationRemoteCamerasResults for the remote cameras based on the supplied tracked feature points on a part from the remote station, pelrects of the remote cameras, and uncorrectedHome2DFromStage2D poses. This overload performs a full hand eye calibration on the remote station so that it doesn't require that the remote cameras and primary cameras to have overlapped tracked features in their FOVs when moving the part between primary station and remote station (via the highly repeatable motions).
Public methodExecute(CogFeatureCrspsMCamerasNPoses,  Rectangle ,  CogTransform2DRigid ,  CogTransform2DCameraCalibration )
Reuse the internal camera parameters (from the supplied camera calibration results of the remote cameras) to compute CogHandEyeCalibrationRemoteCamerasResults for the remote cameras based on the supplied corresponded point pairs extracted from images of the separate calibration plates being shuffled between primary station and remote station captured with remote cameras, pelrects of remote cameras, and uncorrectedHome2DFromStage2D poses. This overload performs a full hand eye calibration on the remote station so that it doesn't require that the remote cameras and primary cameras to have overlapped/connected plate features in their FOVs when moving the calibration plates between primary station and remote station (via the highly repeatable motions).
Public methodExecute(CogFeaturePositionsMCamerasNPoses,  Rectangle ,  CogTransform2DRigid ,  CogTransform2DCameraCalibration )
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 tracked feature points on a part from the remote station, pelrects of the remote camera, and uncorrectedHome2DFromStage2D poses. This overload performs a full hand eye calibration on the remote station so that it doesn't require that the remote cameras and primary cameras to have overlapped tracked features in their FOVs when moving the part between primary station and remote station (via the highly repeatable motions).
Public methodExecute(CogHandEyeCalibrationResults, CogFeatureCrspsMCameras,  Rectangle , CogFeatureCrspsMCameras)
Compute the CogHandEyeCalibrationRemoteCamerasResults for the remote cameras based on the supplied hand-eye calibration results of the primary cameras, the corresponded point pairs (from the same calibration plate) for the primary cameras and the remote cameras, pelrects of the remote cameras, using the current parameter settings.
Public methodExecute(CogHandEyeCalibrationResults, CogFeaturePositionsMCamerasNPoses,  Rectangle , CogFeaturePositionsMCamerasNPoses)
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, and pelrects of remote cameras.

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 motion).

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

Public methodExecute(CogHandEyeCalibrationResults, CogFeatureCrspsMCameras,  Rectangle , CogFeatureCrspsMCameras,  CogTransform2DCameraCalibration )
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 corresponded point pairs (from the same calibration plate) for the primary cameras and the remote cameras, pelrects of the remote cameras, using the current parameter settings.
Public methodExecute(CogHandEyeCalibrationResults, CogFeaturePositionsMCamerasNPoses,  Rectangle , CogFeaturePositionsMCamerasNPoses,  CogTransform2DCameraCalibration )
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.

Protected methodFinalize
Finalize this CogHandEyeCalibratorRemoteCameras.
(Overrides Object Finalize .)
Protected methodGetAttributes
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetClassName
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetComponentName
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetConverter
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetDefaultEvent
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetDefaultProperty
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetEditor
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetEvents 
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetEvents( Attribute )
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Public methodGetHashCode
Serves as a hash function for a particular type.
(Inherited from Object.)
Public methodGetLifetimeService
Retrieves the current lifetime service object that controls the lifetime policy for this instance.
(Inherited from MarshalByRefObject.)
Protected methodGetObjectData
Implements the GetObjectData method of the ISerializable interface.
(Inherited from CogSerializableObjectBase.)
Protected methodGetProperties 
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetProperties( Attribute )
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Protected methodGetPropertyOwner
Implements the corresponding member of the ICustomTypeDescriptor interface. May be overridden in derived classes to provide custom type information.
(Inherited from CogObjectBase.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodInitializeLifetimeService
Obtains a lifetime service object to control the lifetime policy for this instance.
(Inherited from MarshalByRefObject.)
Protected methodMemberwiseClone 
Creates a shallow copy of the current Object.
(Inherited from Object.)
Protected methodMemberwiseClone(Boolean)
Creates a shallow copy of the current MarshalByRefObject object.
(Inherited from MarshalByRefObject.)
Protected methodOnChanged(Int64)
This method should be called internally whenever the object's state may have changed.
(Inherited from CogSerializableChangedEventBase.)
Protected methodOnChanged(CogChangedEventArgs)
This method may be called internally whenever a derived object's state may have changed and the derived object expresses this change via a derived CogChangedEventArgs class.
(Inherited from CogSerializableChangedEventBase.)
Public methodResumeAndRaiseChangedEvent
Re-enables raising of the Changed event after SuspendChangedEvent has been called, and raises the Changed event if the ChangedEventSuspended count is reduced to zero and any changes were made while events were suspended. Must be called once for each call to SuspendChangedEvent.
(Inherited from CogSerializableChangedEventBase.)
Public methodSuspendChangedEvent
Temporarily suspends the raising of the Changed event. May be called more than once, and a corresponding call to ResumeAndRaiseChangedEvent must be made for each call to SuspendChangedEvent.
(Inherited from CogSerializableChangedEventBase.)
Public methodToString
Returns a String that represents the current Object.
(Inherited from Object.)
Top
Fields

  NameDescription
Public fieldStatic memberSfDistortionModel
This bit will be set in the EventArgs of a Changed event every time the value returned by DistortionModel may have been changed.
Protected fieldStatic memberSfNextSf
Public fieldStatic memberSfTimeout
This bit will be set in the EventArgs of a Changed event every time the value returned by Timeout may have been changed.
Public fieldStatic memberSfTimeoutEnabled
This bit will be set in the EventArgs of a Changed event every time the value returned by TimeoutEnabled may have been changed.
Top
Properties

  NameDescription
Public propertyChangedEventSuspended
If nonzero, indicates that the raising of the Changed event has been suspended. This value is incremented when SuspendChangedEvent is called and decremented when ResumeAndRaiseChangedEvent is called.
(Inherited from CogSerializableChangedEventBase.)
Public propertyDistortionModel
The optical distortion model to be used in computing Raw2DFromCamera2D.
Public propertyHasChanged (Inherited from CogSerializableChangedEventBase.)
Public propertyStateFlags
Returns the complete set of state flags supported on this object. The flags may be indexed by name as shown in the following C# code snippet: if (changedObject.StateFlags["Color"] & eventArgs.StateFlags) { ... }
(Inherited from CogSerializableChangedEventBase.)
Public propertyTimeout
The maximum time in milliseconds that the Execute method will be allowed to run if TimeoutEnabled is true.
Public propertyTimeoutEnabled
Enable or disable timeout for the Execute methods.
Top
Events

  NameDescription
Public eventChanged
This event is raised when one or more parts of the object's state may have changed.
(Inherited from CogSerializableChangedEventBase.)
Top
Remarks

The CogHandEyeCalibratorRemoteCameras computes the mathematical transform to map image coordinate positions of remote cameras to and from their corresponding coordinates in the coordinate system defined by the motion axes of the stage. This is a 2-D transform. This operator provides no 3-D information.

The remote camera is always a stationary camera, the physical position of the cameras remains unchanged when the motion stage moves.

Coordinate Systems, Stage Pose and Systematic Errors in the Motion Stage See Remarks section of CogHandEyeCalibrator

The figure below shows the result of adding a remote camera (camera C) to an already calibrated system consisting of 2 primary cameras (camera A and camera B), using a single large calibration target that is simultaneously visible by all cameras. In this case the relative position of cameraC2D from Home2D reflects the actual spatial relationship of the system.

 remote camera                           primary cameras
---------------                        -------------------
  camera C                    camera A                     camera B
    __                           __                           __
   |__|                         |__|                         |__|
    /\                           /\                           /\ 


   ______________single_calibration_target_____________________________
  |                                             Plate2D                |
  |                                             +----->                |
  |                                             |                      |
  |                                             |                      |
  |                                             V                      |
  |____________________________________________________________________|

  cameraC2D                  cameraA2D                      cameraB2D     
     +----->                     +----->                    +----->
     |                           |                          |
     |                           |                          |
     V                           V                          V

                                             Home2D
                                              +----->                                 
                                              |                         
                                              |                           
                                              V

The figure below shows the result of adding a remote camera (camera C) to an already calibrated system consisting of 2 primary cameras (camera A and camera B), using a single calibration target that is moved into the field of view of each camera (via the highly repeatable motions between the stations, which is the same motion applied on the run time part between the stations). In this case the relative position of cameraC2D from Home2D does not reflect the actual spatial configuration of the system. This mode of operation is particularly useful if the remote cameras are far away or not on the same physical plane.

 remote camera                              primary cameras
---------------                             -------------------
  camera C                                  camera A      camera B
    __                                          __          __
   |__|                                        |__|        |__|
    /\                                          /\          /\ 


   _______________                            ________________
  |  Plate2D      |     Moved into field     |  Plate2D       |
  |  +----->      |         of view          |  +----->       |
  |  |            |     -----------------    |  |             |
  |  |            |                          |  |             |
  |  V            |                          |  V             |
  |_______________|                          |________________|

                             cameraA2D         cameraC2D     cameraB2D     
                                 +----->        +----->      +----->
                                 |              |            |
                                 |              |            |
                                 V              V            V

                                             Home2D                  
                                              +----->                              
                                              |                          
                                              |                            
                                              V

The figure below shows the result of adding a remote camera (camera C) to an already calibrated system consisting of 2 primary cameras (camera A and camera B), using a run time part that is moved into the field of view of the cameras at each station (via the highly repeatable motions between the stations). Tracked Raw2D feature based calibration can be used. In this case the relative position of cameraC2D from Home2D does not reflect the actual spatial configuration of the system. This mode of operation is particularly useful if the remote cameras are far away or not on the same physical plane, and it is not feasible to move a calibration plate between the stations.

              remote camera                           primary cameras
              ---------------                         -------------------
                 camera C                             camera A        camera B
                     __                                  __               __
                    |__|                                |__|             |__|
                     /\                                  /\               /\ 


          ____               _____                       ____               _____       
         /    \             /     \                     /    \             /     \ 
        /     * \          /  *   |                    /     * \          /  *   |  
       /   *    /_________/    *  |  Moved into field /   *    /_________/    *  |  
       |\___                    __/|     of view      |\___                    __/|
        \__/   Runtime part    /___/                   \__/   Runtime part    /___/
          /(Calibration Object)//   -----------------    /(Calibration Object)//
   ______/                    //                  ______/                    //
  /       _____________       *\                 /        _____________        *\ 
 /  *  * /_____________\    *   /|              /  *  *  / ___________  \   *   /|
|\_______//             \\______//              |\_______//             \\______//
 \_______/               \______/                \_______/               \______/

                             cameraA2D         cameraC2D     cameraB2D     
                                 +----->        +----->      +----->
                                 |              |            |
                                 |              |            |
                                 V              V            V

                                             Home2D                  
                                              +----->                              
                                              |                          
                                              |                            
                                              V

The above usages require that the primary cameras and remote cameras must have overlapped or connected features in their FOVs when moving the calibration plate(s) or part between the primary station and the remote station (via the highly repeatable motion). If this is not the case, CogHandEyeCalibratorRemoteCameras also supports full hand-eye calibration for the remote cameras using multiple stage poses.

See Also