生产准备过程

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

  • 预热

  • Infield Correction(现场标定)

  • 手眼标定

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

  • 坐标系转换和 ROI 盒过滤

  • 掩膜

  • 下采样

机器人标定

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

固件更新

新相机出厂时搭载的固件版本可能比您应用程序所使用的 SDK 版本更新,尤其是当应用程序被锁定为特定 SDK 版本时。在将新相机投入生产之前,请将其固件更新为与您应用程序所使用的 SDK 版本相匹配的版本。

有关更多详细信息,请参阅 固件升级 。

预热

对 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(热稳定功能) 处于启用状态非常有益。

Infield Correction(现场标定)

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

尺寸正确度是相机测量误差中的系统性部分,是准确度的两个组成部分之一;另一个是点精确度。有关准确度、正确度和精确度的定义及其相互关系,请参阅 Zivid 规格术语 。

为什么这是必要的?

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

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

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

标定板放置于箱子顶部用于现场标定 标定板放置于箱子顶部用于现场标定
标定板放置于箱子底部用于现场标定 标定板放置于箱子底部用于现场标定

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

现场验证和校正用于测量并校正尺寸正确度,即相机准确度中的系统性成分。有关准确度、正确度和精确度的定义,请参阅 Zivid 规格术语 。

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

  • Zivid Studio

  • CLI 工具

  • SDK

小技巧

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

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

手眼标定

下表列出了我们根据您的目标和需求推荐的手眼标定工具。有关这些工具及其功能的详细说明,请参阅 如何运行和集成 Zivid 手眼标定 。

目标

推荐工具

引导式、无代码工作流程

手眼图形用户界面

最小集成示例

程序化手眼标定

现有数据集

手眼图形用户界面

任何机器人

手眼图形用户界面 或 RoboDK 手眼示例

UR 机器人

手眼图形用户界面 或 UR 手眼示例

使用 HALCON

使用 HALCON 进行手眼标定

使用 ROS

使用 ROS 进行手眼标定

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

完成手眼标定后,您可能需要验证生成的变换矩阵是否正确且符合精度要求。我们建议您使用机器人进行触碰测试,这是一项物理测试,需要使用末端执行器进行验证。相关的详细步骤,请参阅教程 任意机器人 + RoboDK + Python:通过触碰测试验证手眼标定结果 。

触碰测试的预期结果。

其他选项请参阅 如何验证手眼标定 页面。

ROI 盒过滤

相机视野通常比我们的 感兴趣区域 (ROI) 大,例如一个箱子。为了优化数据处理,我们可以在箱子周围设置一个 ROI 框,并相应地裁剪点云,仅捕获箱子以内的数据。ROI 框过滤不仅可以减少捕获时间,还可以减少算法使用的数据点数量,从而提高其速度和效率。

小技巧

点云越小,捕获速度越快,从而可以加快检测速度并缩短总拾取周期时间。

料箱坐标系

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

ROI 裁剪前的点云 ROI 裁剪前的点云
ROI 裁剪后的点云 ROI 裁剪后的点云
示例和表现

这是一个使用低端 PC(搭载 Intel Iris Xe 笔记本电脑集成显卡 和 1G 网卡)进行大量点云处理的示例,其中 ROI 框过滤方法对提升效率很有益处。

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

../../../../_images/roi_example_bin_picking.png

预设值

采集时间

捕获时间

未设置 ROI

设置了 ROI

未设置 ROI

设置了 ROI

Manufacturing Specular

0.64 s

0.64 s

2.1 s

1.0 s

Mask

如果感兴趣的对象是 ROI 裁剪后点云的一个子集,您可以通过应用二值掩膜进一步细化它。典型的工作流程是先捕获一张 2D 图像,运行分割算法识别对象,然后将生成的掩膜应用于 3D 点云。这将使分割区域之外的所有点失效。

有关 API 用法和代码示例,请参阅 点云教程中的掩膜部分 。

下采样

备注

选择一个包含下采样选项的预设值。但是,为了理解这意味着什么,请参阅 Sampling(采样) - 3D 。本文还有助于了解在未选择预设的情况下应使用哪些下采样设置。

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

在点云领域,下采样(Downsampling)是指在保持相同三维表征的前提下,降低空间分辨率。它通常用于将数据转换为更易处理的规模,从而减少存储和处理需求。

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

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

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

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

下采样前 ROI 裁剪点云 下采样前 ROI 裁剪点云
下采样后 ROI 裁剪点云 下采样后 ROI 裁剪点云

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

跳转到源码

源码

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 支持以下下采样率 by2x2 、 by3x3 和 by4x4 ,支持多次执行下采样操作。

要对点云进行下采样,您可以运行我们的代码示例,或者现在可以跳过它,并将其作为本教程下一步的一部分进行。"

示例: Downsample.cpp

./Downsample

示例: Downsample.cs

Downsample.exe

示例: downsample.py

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

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

示例: CaptureWithSettingsFromYML.cpp

./CaptureWithSettingsFromYML --settings-path /path/to/settings.yml

示例: CaptureWithSettingsFromYML.cs

CaptureWithSettingsFromYML.exe --settings-path=/path/to/settings.yml

示例: capture_with_settings_from_yml

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

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

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

版本历史

SDK

变更

2.18.0

新增了掩膜部分,并引用了点云教程。

2.12.0

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

2.10.0

Monochrome Capture(单色捕获) 是一种比 下采样 更快的替代方案。