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.