====== Hand-eye calibration with SkiROS ====== Hand-eye calibration is currently implemented in the [[https://git.cs.lth.se/robotlab/rvmi/vision_skills/-/blob/master/src/vision_skills/handeye_calibration/handeye_calibration.py|handeye_calibration_coordinator]] skill in the [[https://git.cs.lth.se/robotlab/rvmi/vision_skills|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.