设置选择器
本章节将根据您从触发图像采集到获得点云的时间预算,提供最佳的相机设置的详细指南。此处我们还会考虑您的电脑配置,因为数据传输和点云处理也依赖于硬件性能。我们将介绍用于获取高质量点云的 3D 捕获设置,以及用于获取高质量彩色图像的 2D 捕获设置。
您已经确定了适用于拆(码垛)应用的 Zivid 相机型号,并已正确安装和定位。下一步是根据您的电脑配置,选择能够满足循环时间要求的相机设置。如果您尚未配备电脑,本节还将帮助您确定所需的电脑配置,以确保在所选相机设置下满足图像捕获时间的要求。
3D 设置
对于简单的场景和简单的对象,请参考上图中的左侧托盘,使用 Z3 XL250 Fast 预设值。
对于包含混合 SKU 的复杂场景,请使用 Z3 XL250 Quality 预设值。
2D 设置
拆垛预设值包含了 2D 设置。
在远距离和强环境光条件下推荐使用的预设值采用了一种特殊的 RGB 模式,可增强色彩表现,但代价是捕获时间会有所增加。
避免闪烁光源的干扰
闪烁光源(10–1000 Hz),例如条码扫描器和荧光灯管,可能会对 Zivid 相机造成干扰。这种干扰可能表现为 彩色图像中的颜色不一致 。为防止此类干扰,请确保闪烁光源满足以下任一条件:
连续且频率与 Zivid 相机曝光时间相关
连续且频率与 Zivid 相机采样间隔相关
在Zivid相机采集期间处于非活动状态
在有光源的情况下进行配置
第一步是确定光源的频率。如果您不确定频率,可以使用 Zivid 相机进行测量。
检测和测量环境光频率
打开 Zivid Studio 并连接到您的相机。点击 Capture 部分中的三个点。然后点击 Measure scene lighting conditions 。软件将显示检测到的环境光闪烁频率。
或者,您可以使用 SDK 来测量环境光照条件。此方法将报告是否检测到明显的环境光闪烁,以及它是否对应于 50 Hz 或 60 Hz 的电网。
std::cout << "Measuring scene conditions" << std::endl;
auto sceneConditions = camera.measureSceneConditions();
auto flickerClassification = sceneConditions.ambientLight().flickerClassification().toString();
std::cout << "Flicker classification: " << flickerClassification << std::endl;
auto flickerFrequency = sceneConditions.ambientLight().flickerFrequency();
std::cout << "Measured flickering frequency in the scene: " << flickerFrequency << " Hz." << std::endl;
Console.WriteLine("Measuring scene conditions");
var sceneConditions = camera.MeasureSceneConditions();
var flickerClassification = sceneConditions.AmbientLight.FlickerClassification.ToString();
Console.WriteLine("Flicker classification: " + flickerClassification);
var flickerFrequency = sceneConditions.AmbientLight.FlickerFrequency;
Console.WriteLine($"Measured flickering frequency in the scene: {flickerFrequency} Hz.");
print("Measuring scene conditions")
scene_conditions = camera.measure_scene_conditions()
flicker_classification = scene_conditions.ambient_light.flicker_classification
print(f"Flicker classification: {flicker_classification}")
flicker_frequency = scene_conditions.ambient_light.flicker_frequency
print(f"The measured flickering frequency in the scene: {flicker_frequency} Hz.")
如果只测量一个光源(例如条形码扫描器),请关闭场景中的所有其他光源(例如环境光)。
然后,您可以选择配置主动光源或 Zivid 相机设置,以避免干扰。
使用以下方法将活动光源(例如,条形码扫描仪)频率( \(f_c\) )与 Zivid 相机曝光时间( \(t_z\) )进行匹配:
例如:
使用以下公式将 Zivid 相机的曝光时间 ( \(t_z\) ) 与活动光源(例如条形码扫描器)的频率 ( \(f_c\) ) 相匹配:
例如:
如果计算出的曝光时间不可行,则使用相同的公式将 2D 采样间隔 ( \(t_z\) ) 设置为与活动光源频率 ( \(f_c\) ) 相匹配:
例如:
例如,当为了补偿较长的曝光时间而过度降低投影仪亮度时,就会出现这种情况,从而导致彩色图像出现明显的噪点。这种情况在使用了 Settings2D::Sampling::Color 下的 rgb 模式时会出现,而使用 rgbStrongAmbientLight 模式则不会。另一个例子是过曝,如果无法通过其他采集设置(例如增益或投影仪亮度)充分补偿较长的曝光时间,就会发生过曝。
在同时存在活动和闪烁的交流电源的情况下进行配置
使用电网线频率调制(例如,美国为 60 Hz,欧盟为 50 Hz)的强且不可控的光源会带来额外的挑战。由于无法更改交流电源光源(例如荧光灯管)的频率,因此您需要调整 Zivid 相机的设置以及正在使用的光源的频率。
配置 Zivid 相机
为了减轻 环境光的干扰 ,应将 Zivid 相机的曝光时间设置为电网频率的倍数。
10 000 µs or 20 000 µs in the presence of 50 Hz grid frequency.
8 333 µs or 16 667 µs in the presence of 60 Hz grid frequency.
如果由于 2D 图像过度曝光而无法调整曝光时间以匹配电网频率,则启用 2D 采样间隔(sampling interval) 并将其与您所在区域的电网频率同步。
10 000 µs in the presence of 50 Hz grid frequency.
8 333 µs in the presence of 60 Hz grid frequency.
必须配置 2D 采集的曝光时间或 2D 采样间隔持续时间,以避免 颜色不一致(随机色调) 。对于3D 采集,除非观察到 环境光干扰产生的波纹 问题,否则无需进行此操作。
与 2D 采样间隔匹配相比,曝光时间匹配方案更受欢迎,因为它能提供更好的性能和更一致的捕获时间。
配置主动光源
最后,与 Zivid 相机曝光时间相匹配的主动闪烁光源的频率可按以下方式计算:
在下一章节中,我们将介绍如何通过使用多线程来 优化机器人循环时间 。