生产准备过程

我们在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 keep Thermal Stabilization(热稳定功能) enabled.

现场标定

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

为什么这是必要的?

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

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

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

fig_bp_inf_t

fig_bp_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工具计算手眼坐标转换:

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

触碰测试的预期结果。

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

ROI盒过滤

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

小技巧

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

料箱坐标系

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

fig_bef_d_b

fig_aft_d_b

Point cloud before ROI cropping

Point cloud after ROI cropping

Example and Performance

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

Imagine a robot picking from a 600 x 400 x 300 mm bin with a stationary-mounted Zivid 2+ MR130 camera. For good robot clearance, the camera is mounted at 1700 mm distance from the bin top, providing a FOV of approximately 1000 x 800 mm. With the camera mounted at this distance, a lot of the FOV is outside of the ROI, allowing one to crop ~20/25% of pixel columns/rows from each side. As can be seen from the table below, the capture time can be significantly reduced with ROI box filtering.

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

预设值

采集时间

捕获时间

未设置 ROI

设置了 ROI

未设置 ROI

设置了 ROI

Manufacturing Specular

0.64 s

0.64 s

2.1 s

1.0 s

降采样

备注

Choosing a preset includes choice of downsampling. However, in order to understand what this means, please refer to Sampling (3D). This article also helps understand what downsampling settings to use in case a preset is not chosen.

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

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

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

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

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

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

fig_bef_r_b

fig_aft_r_b

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(单色捕获) 是一种比 降采样 更快的替代方案。