未能检测到 Zivid 标定板
问题
Zivid SDK 在手眼标定或现场标定/验证期间无法检测到棋盘格。
可能原因及解决方法
When using the Zivid calibration board, the fiducial/ArUco marker must be visible in the image. Otherwise, the checkerboard detection will fail when performing infield correction or hand-eye calibration. We recommend using the Zivid calibration board, since it is a qualified product. Support for the older 9x6 grey-white checkerboards, which had no fiducial marker and so had no such requirement, was removed in SDK 2.14.
小技巧
使用 Zivid Studio 检查捕获结果是否良好
Note that the SDK does not throw an error if the function is not able to detect any feature points.
It will instead return an empty list.
The reasoning is that not finding a checkerboard in a point cloud is considered a normal failure and not an (exceptional) error.
Therefore, we recommend validating the detection result after capturing using Calibration::DetectionResult::valid().
The code below illustrates how to implement this in a program.
const auto detectionResult = Zivid::Calibration::detectCalibrationBoard(frame);
if(detectionResult.valid())
{
std::cout << "Calibration board detected " << std::endl;
handEyeInput.emplace_back(robotPose, detectionResult);
currentPoseId++;
}
else
{
std::cout << "Failed to detect calibration board. " << detectionResult.statusDescription() << std::endl;
}
using (var frame = camera.Capture2D3D(settings))
{
var detectionResult = Detector.DetectCalibrationBoard(frame);
if (detectionResult.Valid())
{
Console.WriteLine("Calibration board detected");
handEyeInput.Add(new HandEyeInput(robotPose, detectionResult));
++currentPoseId;
}
else
{
Console.WriteLine("Failed to detect calibration board, ensure that the entire board is in the view of the camera");
}
}
detection_result = zivid.calibration.detect_calibration_board(frame)
if detection_result.valid():
print("Calibration board detected")
hand_eye_input.append(zivid.calibration.HandEyeInput(robot_pose, detection_result))
current_pose_id += 1
else:
print(f"Failed to detect calibration board. {detection_result.status_description()}")