Teach more than five (e.g. seven to eleven give more accurate results). Follow the naming scheme and extend the pose sequence in wenglorCalibration.runCalibration().
Pose variation
Vary the pose angles as much as possible — motions with non-parallel rotation axes give the most accurate results.
Calibration plate visibility
Make sure the plate covers as much of the camera image as possible and is fully visible.
Calibration plate type
Prefer the wenglor ZVZJ calibration plate over a printed version — its reprojection error is typically five times smaller. If printing, print the PDF at actual size on flat, stiff material.
Reprojection error
Check the value returned by calibration:calculate. Typical values are 0.1 for ZVZJ calibration plates and 0.5 for printed ones — higher values indicate a poor calibration.
Verify that W_VISION_DEVICE_IP and W_VISION_DEVICE_PORT match the network configuration of the wenglor vision device (default 192.168.100.1, port 32006).
RapidSockets
In RobotStudio, adjust the network settings of the ABB robot controller for the public network and make sure RapidSockets is set to YES (Communication → Firewall Manager).
Robot server status
Ensure the robot server on the vision device is active (device website → tab Jobs → Robot Server), with ABB selected as the robot manufacturer.
Network/firewall
Check general network connectivity and firewall rules between the controller and the device.
If the robot server returns a negative error code (-5001 … -5010), the example maps it to a readable message in wenglorGlobal.setReturnError and shows it on the FlexPendant before exiting. For the meaning of each code, see the Generic Robot Vision Interface → Error codes in the wenglor robot vision manual.