生产准备过程

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

  • 预热

  • 现场标定

  • 手眼标定

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

  • 降采样

  • 坐标系转换和ROI盒过滤

机器人标定

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

预热

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

预热

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

示例: warmup.py

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

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

小技巧

如果您的相机长时间未捕获且持续时间超过10分钟,那么我们建议您启用 Thermal Stabilization(热稳定功能)

现场标定

现场标定是一个维护工具,可用于验证和校正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

示例和性能

这是一个使用低端PC(配备Nvidia MX 250笔记本 GPU 和 1G 网卡)进行大规模点云处理的例子,在此场景中 ROI 框区域过滤技术极为有益。

想象一下,一个机器人用固定安装的 Zivid 2+ M130 相机从 600 x 400 x 300 毫米的箱子中拾取物品。为了给机器人留出足够的空间,相机安装在距离箱子顶部 1700 毫米的位置,提供大约 1000 x 800 毫米的视场。当相机安装在这个距离时,大部分视场都在 ROI 之外,因此可以从每一侧裁剪约 20/25% 的像素列/行。从下表可以看出,使用 ROI 框过滤可以显著缩短捕获时间。

预设值

采集时间

捕获时间

未设置 ROI

设置了 ROI

未设置 ROI

设置了 ROI

Consumer Goods Quality

0.90 s

0.88 s

5.0 s

3.0 s

降采样

备注

如果使用 Monochrome Capture(单色捕获) ,则可能不需要进行降采样。单色捕获( Monochrome capture)是一种基于硬件的子采样方法,可在捕获过程中降低点云的分辨率,同时缩短采集和捕获时间。

有些应用不需要高密度点云数据。例如,通过将平面拟合到盒子表面来进行盒子检测以及 CAD 匹配,其中对象具有独特且易于识别的特征。此外,对于机器视觉算法来说,这样的数据量通常太大,无法以应用程序所需的速度进行处理。点云降采样正是在此类应用中发挥作用。

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

使用 Zivid SDK 对点云进行降采样有两种方法:

  1. 通过设置 Settings::Processing::ResamplingResampling(重采样) )实现,这意味着它是通过捕获设置进行控制的。

  2. 通过 API PointCloud::downsample 实现。

这两种方法都对点云应用了相同的操作。通过 API 的方法,您可以选择就地降采样或使用降采样数据获取新的点云实例。

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 ,支持多次执行降采样操作。

要对点云进行降采样,您可以运行我们的代码示例:

示例: 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有关的内容了。接下来的章节是 维护 ,里面包含了我们建议执行的所有流程,以确保单品拣选单元能在最小停机时间的情况下保持稳定运行。

版本历史

SDK

变更

2.12.0

新增了内容用于说明 ROI 框过滤如何加快数据捕获时间。现在也可以通过 Zivid::Settings::Resampling 进行降采样。请注意,Zivid One+已达到其生命周期终点,不再提供支持。

2.10.0

Monochrome Capture(单色捕获) 引入了比 降采样 更快的替代方案。