documentation:vision:hand_eye_calibration

Hand-eye calibration with SkiROS

Hand-eye calibration is currently implemented in the handeye_calibration_coordinator skill in the vision_skills repository.

Required world model elements:

  • Arm - the arm to which the camera is attached.
  • Gripper - the end-effector attached to the arm.
  • Camera - the camera to calibrate.
  • CameraEstimate - Estimate of camera position.
  • ViewFrame - the camera's view TF frame.
  • Marker - the AruCO marker.
  • MarkerEstimate - Estimate of marker's position.

Required world model relations:

  • Arm skiros:hasA Gripper
  • Gripper skiros:contain Camera
  • Camera skiros:spatiallyRelated ViewFrame
  • CameraEstimate scalable:estimateOf Camera
  • MarkerEstimate scalable:estimateOf Marker

The Arm needs the following properties set in the world model:

  • skiros:LinkedToFrameId
  • skiros:MotionExe
  • skiros:MoveItGroup (when using MoveIt implementation)
  • skiros:MoveItReferenceFrame (when using MoveIt implementation)
  • skiros:MoveItTCPLink (when using MoveIt implementation)

The Camera needs the following properties set in the world model:

  • skiros:DriverAddress

The Gripper needs the following properties set in the world model:

  • skiros:SizeY (when using the Kuka implementation)

When running, the skill will update the position of MarkerEstimate and CameraEstimate. The Camera position with be updated periodically based on CameraEstimate. Finally, the skill will terminate when the CameraEstimate is considered converged.

To-Do list for Hand-Eye calibration skill

  • Investigate how to improve the half-sphere pose generator.
  • Investigate why the pose generator generates weird poses over time.
  • Investigate why the estimated camera pose is inaccurate.
  • Investigate whether the same skill can be re-used for fixed-camera calibration.
  • Add a parameter to allow the user to select which ArUco dictionary is used.
  • documentation/vision/hand_eye_calibration.txt
  • Last modified: 2023/01/27 14:50
  • by simonkl