生产准备过程

我们在Zivid SDK中有多个流程和工具可帮助您设置好系统并为生产做好准备。我们建议在部署之前进行的必要的操作包括:

  • 预热

  • 现场标定

  • 手眼标定

我们可以通过执行这些流程模仿生产条件来优化相机的工作温度、距离和 :abbr:` FOV(视野)` 。其它可能帮助您减少生产过程中的处理时间从而最大限度地提高抓取率的工具包括:

  • 降采样

  • 坐标系转换和ROI盒过滤

机器人标定

在开始生产之前,您应该确保您的机器人经过良好校正,并展现出良好的定位精度。关于何如进行机器人运动学校正和机器人校正零点的信息,请联系您的机器人供应商。

预热

对Zivid 3D相机进行预热并达到热平衡,可以提高应用的整体准确性和成功率。如果应用有着严格的公差要求,则建议使用此方法,例如,距离相机每米距离的公差<5毫米的3D抓取应用。使用预热过的相机进行现场标定和手眼标定能够获得更好的结果。

预热

如需对您的相机进行预热,您可以运行我们的代码示例,您需要输入循环时间和相机设置路径。

示例: warmup.py

python /path/to/warmup.py --settings-path /path/to/settings.yml --capture-cycle 6.0

如需了解为什么需要预热以及如何使用SDK进行预热,请阅读 预热

小技巧

If your camera encounters prolonged periods without capturing that last longer than 10 minutes, it is highly beneficial to enable Thermal Stabilization. Thermal Stabilization(热稳定功能) is available for Zivid 2+ and Zivid 2 cameras and is enabled by default from Zivid SDK 2.9.

现场标定

现场标定是一个维护工具,可用于验证和校正Zivid相机的尺寸准确度。用户可以检查视场 (FOV) 中不同区域的点云的尺寸准确度,并确定验证结果是否符合您的应用要求。如果发现验证结果对于应用来说不够准确,则可以执行校正以增加点云的尺寸准确度。多次测量的平均尺寸准确度误差的预期值接近于零 (<0.1%)。

为什么这是必要的?

我们的相机被设计为可以在工业工作环境中工作并持续输出高质量的点云。然而,与大多数高精密电子仪器一样,有时可能需要进行一些调整以确保它们能够一直保持最佳性能。当相机在其环境中经历重大改动或繁重的装卸时,可能需要进行校正才能在新的设置中以最佳状况执行工作。

如果您第一次进行这些操作,请阅读有关 现场标定 的更多信息。

进行现场验证时,需要确保料箱顶部和底部的尺寸准确度都是良好的。对于相机安装在手臂上的应用,在进行现场验证时,将机器人移动到捕获位姿。如果验证结果良好,则无需运行内场校正。

fig_inf_t

fig_inf_b

Calibration board at bin top for infield verification

Calibration board at bin bottom for infield verification

当需要进行现场标定时,覆盖整个工作立体区域可以获得最佳的结果。这意味着需要将 Zivid calibration board 先后放置给定距离处的多个不同位置执行校正,并在不同的拍照距离重复以上操作,在这个过程中,请确保整个标定板一直都在相机的 FOV 中。选定箱子底部的数个位置和箱子顶部的数个位置进行校正足以满足单品拣选的要求。您可以查看 进行现场标定的准则 来了解更多信息。

如需在相机上运行现场标定的验证和/或校正功能,您可以使用:

  • Zivid Studio

  • CLI工具

  • SDK

小技巧

如果您是第一次使用现场标定,我们建议使用Zivid Studio。

查看 运行现场标定 以获得有关运行现场校正的分步指南。

手眼标定

视觉引导机器人系统的拾取精度取决于相机,手眼标定,机器视觉软件和机器人定位的综合精度。 机器人通常具有很高的重复定位精度,但是准确度较差。 温度,关节摩擦,有效载荷和零件的制造公差是导致机器人偏离其预编程位置的一些因素。 但是,可以通过对机器人本身进行标定来提升机器人的位姿准确度,对于可能存在多重因素影响拾取精度的复杂应用,强烈建议对机器人进行标定。 如果机器人的标定失效,则拾取精度将下降。 再次进行标定(机器人标定和/或手眼标定)可以补偿这种恶化的性能。 另外,如果从固定机构或机器人上卸下相机并将其重新安装,也需要重新进行手眼标定。

../../../_images/hand-eye-poses.png

我们提供了代码示例,您可以轻松地执行手眼标定:

或者,可以使用CLI工具计算手眼坐标转换:

完成手眼标定后,您可能需要验证生成的变换矩阵是否正确并在精度要求内。我们提供了两种选择:

触碰测试的预期结果。

如需了解有关该主题的更多信息,请查看 手眼标定

色彩平衡

在SDK中有调整红色、绿色和蓝色通道的颜色平衡值的功能。非完全白色和/或非常强的环境光会影响彩色图像的RGB值。如果您的应用需要使用准确的RGB值,请在相机上运行色彩平衡。如果您没有使用Zivid相机的投影仪来捕获彩色图像,通常更需要进行色彩平衡的调整。 在 SDK 中,我们具有调整红色、绿色和蓝色通道的颜色平衡值的功能。不是完全白色和/或非常强的环境光会影响彩色图像的 RGB 值。如果您的应用程序需要正确的 RGB,请在相机上运行色彩平衡。如果您不使用 Zivid 相机投影仪捕捉彩色图像,情况尤其如此。

fig_bef_b

fig_aft_b

Point cloud before color balance

Point cloud after color balance

如需平衡2D图像的颜色,您可以运行我们的代码示例,您还需要提供2D采集设置的路径。

示例: color_balance.py

python color_balance.py /path/to/settings.yml

作为输出,具有新色彩平衡增益的2D采集设置会被保存到文件中。

请查看我们的 调整色彩平衡 页面以获取进一步的说明,如何使用SDK执行它以及代码示例演练。

ROI盒过滤

相机视野通常大于我们的 感兴趣区域 (ROI),例如料箱。如果我们想进一步减少检测算法使用的数据点的数量,我们可以在料箱周围设置一个ROI盒,并根据它来裁剪点云,只获取料箱内区域的点。减少数据点的数量不会减少捕获时间,因为ROI过滤是一个后处理步骤。然而,它可以加快目标检测算法,从而减少总循环时间。

小技巧

较小的点云可以使检测速度更快,总抓取周期时间更短。

料箱坐标系

如需了解实施示例,请查看 通过棋盘格定义的ROI盒 。该教程展示了如何使用 Zivid calibration board 根据相对于棋盘格给定的ROI盒来过滤点云。

fig_bef_c

fig_aft_c

Point cloud before ROI cropping

Point cloud after ROI cropping

降采样

备注

Downsampling may not be necessary if Monochrome Capture is employed. Monochrome capture is a hardware-based subsample method that reduces the resolution of the point cloud during capture while also reducing the capture time.

Some applications do not require high-density point cloud data. Examples are box detection by fitting a plane to the box surface and CAD matching, where the object has distinct and easily identifiable features. In addition, this amount of data is often too large for machine vision algorithms to process with the speed required by the application. It is such applications where point cloud downsampling comes into play.

点云上下文中的降采样是在保持相同3D表征的情况下降低空间分辨率。它通常用于将数据转换为更易于管理的大小,从而减少存储和处理要求。

fig_bef_d

fig_aft_d

ROI cropped point cloud before downsampling

ROI cropped point cloud after downsampling

降采样可以就地完成,该功能会修改当前的点云。

跳转到源码

源码

pointCloud.downsample(Zivid::PointCloud::Downsampling::by2x2);
跳转到源码

源码

pointCloud.Downsample(Zivid.NET.PointCloud.Downsampling.By2x2);
跳转到源码

源码

point_cloud.downsample(zivid.PointCloud.Downsampling.by2x2)

也可以将降采样点云作为新的点云实例,这样就不会改变现有的点云了。

跳转到源码

源码

auto downsampledPointCloud = pointCloud.downsampled(Zivid::PointCloud::Downsampling::by2x2);
跳转到源码

源码

var downsampledPointCloud = pointCloud.Downsampled(Zivid.NET.PointCloud.Downsampling.By2x2);
跳转到源码

源码

downsampled_point_cloud = point_cloud.downsampled(zivid.PointCloud.Downsampling.by2x2)

Zivid SDK 支持以下降采样率 by2x2by3x3by4x4 ,支持多次执行降采样操作。

To downsample a point cloud, you can run our code sample:

示例: downsample.py

python /path/to/downsample.py --zdf-path /path/to/file.zdf

如果您没有ZDF文件,则可以运行以下代码示例。它将使用您的设置来捕获Zivid点云,并保存到文件中。

示例: capture_with_settings_from_yml

python /path/to/capture_with_settings_from_yml.py --settings-path /path/to/settings.yml

如需阅读有关降减采样的更多信息,请转到 降采样

祝贺您已经阅读完关于将您的单品拣选系统投入生产的准备工作中的所有与Zivid有关的内容了。接下来的章节是 维护 ,里面包含了我们建议执行的所有流程,以确保单品拣选单元能在最小停机时间的情况下保持稳定运行。

Version History

SDK

Changes

2.10.0

Monochrome Capture introduces a faster alternative to 降采样.