Hand-eye calibration¶
This tutorial guides you through the hand-eye calibration process with Roboception’s URCap. During this procedure, the spatial relationship between the camera and the robot system is established.
The camera can be used in two ways: either statically mounted in the workspace or attached directly to the robot. This choice determines how the calibration is performed and the type of transformation established. For detailed information on the calibration principles, refer to the Hand-eye calibration documentation.
Before you begin, ensure that you have completed the tutorials Getting started and Tuning of image parameters.
Static camera¶
In this configuration, the camera is mounted statically in the workspace, and the calibration grid is attached to the robot. The hand-eye calibration determines the transformation between the camera and the robot base frame. Ensure the camera is mounted rigidly, completely stable, and unaffected by robot movements or vibrations.
Mounting the calibration grid¶
The calibration grid includes has mounting holes in its upper-right corner for attachment to the robot’s flange. This location maximizes the robot’s range of motion during calibration. Secure the grid using four M6 screws (16 mm length), ensuring it is firmly fixed. Tighten each screw to exactly 4 Nm. The positioning hole in the robot flange should face the middle of the calibration grid’s shorter side for proper alignment.
Warning
Over-tightening the screws can bend the grid and impair calibration accuracy. Use a torque wrench to apply the correct torque of 4 Nm.
Note
The grid’s mounting position on the robot flange does not affect the calibration results, as the transformation between the grid and the flange is automatically calculated during the process. Using a mounting adapter (as shown in the calibration video) can provide significant advantages. It ensures that the robot’s joint configuration during calibration closely matches its configuration during picking operations, thereby reducing the impact of robot kinematic inaccuracies. Additionally, the adapter allows the grid to be positioned farther from the camera system, increasing the usable workspace and enabling a more diverse range of calibration poses.
End effector configuration¶
Before starting the calibration, the correct payload and Tool Center Point (TCP) must be configured. A correct payload configuration ensures precise robot positioning and makes the free drive mode more responsive for teaching poses during calibration.
- Navigate to Installation → General → TCP in the UR menu. Create a new TCP with the name ‘Calibration Grid’. An arbitrary TCP-transformation could be used, but a zero-transformation is recommended for an overlap with the robot flange.
- Navigate to Installation → General → Payload in the UR menu. Use the UR’s built-in payload measurement function to determine the calibration grid payload and apply the measured settings.
- Click ‘Save…’ in the top bar → ‘Save Installation as…’ and name it ‘Calibration Grid’.
Note
For more information on TCP and payload configuration, please refer to the official Universal Robots YouTube tutorial on Tool Configuration: TCP, orientation, payload & center of gravity.
Robot-mounted camera¶
In this configuration, the camera is mounted on the robot, while the calibration grid is fixed in the workspace. The hand-eye calibration determines the transformation between the camera and the TCP selected during the calibration.
Warning
The transformation between the TCP and the camera will be used to compute object poses relative to the robot’s base frame when triggering detections, using the robot’s current pose. Therefore, it is crucial to use the same TCP during calibration and subsequent detection applications.
The camera must be mounted securely to the robot flange using appropriate mounting hardware. The mounting must be rigid and stable, free from any movement or play, and capable of withstanding robot accelerations without shifting.
Mounting the calibration grid¶
Securely fixate the calibration grid in the workspace, ensuring it remains immobile during calibration. Position the grid so it is clearly visible to the camera and allows ample space for robot movement.
End effector configuration¶
- Mount the end effector required for your application.
- Navigate to Installation → General → TCP in the UR menu. Verify that the correct end-effector TCP is selected.
- Navigate to Installation → General → Payload and use the built-in payload measurement function to measure the complete payload (including end effector and mounted camera).
- Click ‘Save…’ → ‘Save Installation as…’ → name it ‘Gripper with Camera’.
Note
For more information on TCP and payload configuration, please refer to the official Universal Robots YouTube tutorial on Tool Configuration: TCP, orientation, payload & center of gravity.
Using the hand-eye calibration program¶
The calibration process uses a program node that guides the robot through a series of poses. During calibration, the robot moves with linear tool-space motion, a tool speed of 0.5 m/s, and a tool acceleration of 0.5 m/s².
For convenience, the checkbox ‘Use Roboception TCP and payload’ is enabled by default. This setting assumes the calibration grid is mounted directly to the robot flange. However:
- For static camera: It is recommended to configure a tool center point installation (because of the benefits in free drive mode) and disable the checkbox.
- For robot-mounted camera: This checkbox must be disabled, and a TCP configuration and payload measurement is required.
Step-by-step calibration¶
- Create an empty program
- Add the ‘rc hand-eye calibration’ program node
- In the node, select your sensor and configure the calibration parameters (Setting parameters in the rc hand-eye calibration node)
- For each of the eight ‘Set pose’ nodes:
- Refer to the reference image in the program node for guidance.
- Move the robot to achieve a similar grid position in the live camera view
- Click ‘Store pose’ once positioned
- Execute the program at 10% speed initially to react to potential collisions.
- After successful calibration:
- Review the results in the ‘Calibration result’ node
- Store the calibration if error values are acceptable (typically less than 2mm)
Note
While positioning the robot, use the free drive mode while remaining in the calibration pose node to adjust the position. This keeps the live view visible during adjustment. Consider using the constraint-free drive mode for easier positioning in certain cases.
Note
The reference images provided only serve as guidance. What is crucial is capturing eight distinctly different poses of the calibration grid.