生産準備プロセス

Zivid SDK には、システムのセットアップと本番環境への準備を支援するためのプロセスとツールがいくつか用意されています。デプロイ前に実行することをお勧めする重要な手順は以下のとおりです。

  • ウォームアップ

  • Infield Correction

  • ハンドアイキャリブレーション

これらのプロセスを使用することで、カメラの動作温度、距離、および FOV を最適化するために、生産条件を模倣したいと考えています。生産中の処理時間を短縮し、ピッキング率を最大化するのに役立つその他のツールは次のとおりです。

  • ダウンサンプリング

  • 変換と ROI ボックスフィルタリング

  • masking

ロボットキャリブレーション

生産を開始する前に、ロボットが適切にキャリブレーションされ、高い位置決め精度を発揮していることを確認してください。ロボットの運動学的キャリブレーションおよびロボットのマスタリング/ゼロ設定に関する詳細については、ロボットサプライヤーにお問い合わせください。

Firmware Update

A new camera will likely ship with newer firmware than the SDK version your application uses, especially if the application is locked to a specific SDK version. Before putting the new camera into production, update its firmware to match the SDK version your application uses.

For more details, see ファームウェアのアップデート.

ウォームアップ

Zivid 3D カメラをウォームアップさせて熱平衡状態に達させることで、アプリケーション全体の正確度と成功率を向上させることができます。これは、アプリケーションに厳しい公差が求められる場合、例えば、カメラからの距離1メートルあたり5mm未満の公差でピッキングを行う場合などに推奨されます。ウォームアップされたカメラは、 Infield Correction とハンドアイキャリブレーションの両方の結果を改善します。

ウォームアップ

カメラをウォームアップするには、サイクルタイムとカメラ設定へのパスを指定して、弊社のコードサンプルを実行してください。

サンプル: warmup.py

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

ウォームアップが必要な理由と、 SDK を使用してウォームアップを実行する方法をよりよく理解するには、 ウォームアップ の記事をお読みください。

Tip

カメラが10分以上連続してキャプチャされない状態が続く場合は、 Thermal Stabilization を有効にしておくと非常に効果的です。

Infield Correction

Infield Correction は、 Zivid カメラの寸法の真度を検証および補正するために設計されたメンテナンスツールです。ユーザーは、視野(FOV)内のさまざまなポイントにおける点群の寸法の真度を確認し、アプリケーションに適しているかどうかを判断できます。検証の結果、カメラの正確度がアプリケーションに十分でないことが判明した場合、補正を実行して点群の寸法の真度を向上させることができます。複数回の測定による平均寸法の真度誤差は、ほぼゼロ(0.1%未満)になることが期待されます。

なぜこれが必要なのですか?

当社のカメラは、過酷な産業環境にも耐え、高品質な点群データを提供し続けるように設計されています。しかし、ほとんどの高精度電子機器と同様に、最高の性能を維持するためには、時として微調整が必要になる場合があります。カメラが環境の大幅な変化や過酷な取り扱いを受けた場合、新しい環境で最適に動作させるためには補正が必要になることがあります。

初めて行う場合は Infield Correction の詳細をご覧ください。

現場検証を実行する際は、ビンの上部と下部の両方で寸法の真度が良好であることを確認してください。アームマウント型アプリケーションの場合は、現場検証を行う際にロボットをキャプチャポーズに移動させてください。検証結果が良好であれば、 Infield Correction を実行する必要はありません。

現場での検証用にビン上部に校正ボードを設置 現場での検証用にビン上部に校正ボードを設置
現場での検証用にビン底部に校正ボードを設置 現場での検証用にビン底部に校正ボードを設置

When infield correction is required, span the entire working volume for optimal results. This means placing the Zivid calibration board (7x8 30mm, 300x300mm) in multiple locations for a given distance and doing that at different distances while ensuring the entire board is in FOV. Spread the calibration board across the entire working volume. Check Infield Correction を実施するためのガイドライン for more details.

カメラの現場検証や補正を実行するには、以下を使用できます。

  • Zivid Studio

  • CLI ツール

  • SDK

Tip

初めて Infield Correction を行う場合は、 Zivid Studio の使用をお勧めします。

Infield Correction の実行手順については ランニングインフィールド修正 を参照してください。

ハンドアイキャリブレーション

以下の表では、お客様の目標と要件に基づいて、どのハンドアイキャリブレーションツールを使用するのが最適かについての推奨事項をご覧いただけます。ツールとその機能の詳細な分析については、 Zivid ハンドアイキャリブレーションの実行と統合方法 をご覧ください。

目標

推奨ツール

ガイド付き、ノーコードワークフロー

ハンドアイ GUI

最小限の統合例

プログラムによるハンドアイキャリブレーション

既存のデータセット

ハンドアイ GUI

任意のロボット

ハンドアイ GUI または RoboDK ハンドアイサンプル

UR ロボット

ハンドアイ GUI または UR ハンドアイサンプル

HALCON を使用する

HALCON を使用したハンドアイキャリブレーション

ROS を使用する

` ROS を使用したハンドアイキャリブレーション <https://github.com/zivid/zivid-ros/blob/master/README.md#sample-hand-eye-calibration>`_

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

ハンドアイキャリブレーションが完了したら、結果として得られた変換行列が正しく、正確度の要件を満たしていることを確認することをお勧めします。ロボットを使用したタッチテストを実行することをお勧めします。これは、検証用のエンドエフェクタツールを必要とする物理的なテストです。詳細な手順については、チュートリアルを参照してください: 任意のロボット + RoboDK + Python: タッチテストによるハンドアイキャリブレーション結果の検証

タッチテストの予想結果。

代替オプションについては ハンドアイキャリブレーションの検証方法 ページに記載されています。

カラーバランス

SDK には、赤、緑、青の各カラーチャンネルの色バランス値を調整する機能があります。ただし、 シーンボリュームに基づくカメラセレクター に示されているように、パレタイジング(またはデパレタイジング)に推奨されるカメラには、固有の色バランス機能が備わっています。非常に強い光で、完全に白色ではない環境光は、カラー画像の RGB 値にほとんど影響を与えません。したがって、カメラで追加の色バランスアルゴリズムを実行する必要はありません。

下の画像は、 Zivid 2+ MR130 を使用してさまざまな環境光条件下で撮影した2Dカラー画像の詳細を示しています。

300 LUX

1000 LUX

2000 LUX

3200K

2d_images_mr130_lux_kelvins

5000K

6500K

カラー画像にランダムな緑色やピンク色の色合いが現れるなどの 色の不整合 に気づいた場合は、お住まいの地域のグリッド周波数(50 Hz または 60 Hz)のプリセットを選択してください。

ROI ボックスフィルタリング

カメラの視野は 関心領域 (ROI)よりも広い場合がよくあります。データ処理を最適化するために、パレットの周囲に ROI ボックスを設定し、それに応じて点群を切り抜き、パレットの内容のみをキャプチャすることができます。ROI ボックスフィルタリングは、キャプチャ時間を短縮するだけでなく、アルゴリズムで使用されるデータポイントの数も削減するため、結果として処理速度と効率が向上します。

Tip

点群のサイズが小さいほどキャプチャが速く、検出速度が向上し、全体のピッキングサイクル時間を短縮できます。

ビン座標系

For an implementation example, check out ROI Box via Checkerboard. This tutorial demonstrates how to filter the point cloud using the Zivid calibration board (7x8 30mm, 300x300mm) based on a ROI box given relative to the checkerboard.

ROI 切り抜き前の点群 ROI 切り抜き前の点群
ROI 切り抜き後の点群 ROI 切り抜き後の点群
使用例とパフォーマンス

以下は、低スペックのPC(Intel Iris Xe 統合型ノートPC GPU と 1G ネットワークカード)を使用した、ROI ボックスフィルタリングが有効な、負荷の高い点群処理の例です。

固定マウントされた Zivid 2+ MR130 カメラを使用して、ロボットが 600 x 400 x 300 mm のビンからアイテムをピッキングしている様子を想像してください。ロボットのクリアランスを確保するため、カメラはビンの上部から 1700 mm の距離に設置され、視野は約 1000 x 800 mm となります。この距離にカメラを設置すると、視野の大部分が ROI の範囲外になるため、各辺から約 20~25% のピクセル列/行を切り取ることができます。下の表からわかるように、ROI ボックスフィルタリングを使用することで、キャプチャ時間を大幅に短縮できます。

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

プリセット

取得時間

キャプチャ時間

ROI なし

ROI

ROI なし

ROI

消費財の品質

0.15 s

0.15 s

0.9 s

0.35 s

Mask

If the object of interest is a subset of the ROI-cropped point cloud, you can further refine it by applying a binary mask. A typical workflow is to capture a 2D image, run a segmentation algorithm to identify the object, and apply the resulting mask to the 3D point cloud. This invalidates all points outside the segmented region.

See the Mask section of the Point Cloud Tutorial for API usage and code examples.

ダウンサンプリング

注釈

プリセットを選択すると、ダウンサンプリングのオプションも選択できます。ただし、その意味を理解するには、 サンプリング(3D) を参照してください。

高密度の点群データを必要としないアプリケーションもあります。例えば、ボックスの表面に平面を当てはめることでボックスを検出する場合や、CAD マッチングのように、対象物が明確で容易に識別できる特徴を持つ場合などが挙げられます。さらに、このようなデータ量は、アプリケーションが必要とする速度でマシンビジョンアルゴリズムが処理するには大きすぎる場合がよくあります。点群のダウンサンプリングが役立つのは、まさにこのようなアプリケーションです。

点群におけるダウンサンプリングとは、3D 表現を維持したまま空間解像度を低下させることを指します。これは通常、データをより扱いやすいサイズに変換し、ストレージと処理の要件を削減するために使用されます。

Zivid SDK を使用して点群をダウンサンプリングする方法は2つあります。

  1. Via the setting Settings::Processing::Resampling (リサンプリング), which means it's controlled via the capture settings.

  2. API PointCloud::downsample を介して。

どちらの場合も、点群に対して同じ操作が適用されます。 API バージョンでは、その場でダウンサンプリングを行うか、ダウンサンプリングされたデータを含む新しい点群インスタンスを取得するかを選択できます。

ダウンサンプリング前の ROI 切り抜き点群 ダウンサンプリング前の ROI 切り抜き点群
ダウンサンプリング後の ROI 切り抜き点群 ダウンサンプリング後の ROI 切り抜き点群

ダウンサンプリングはインプレースで行うことができ、その場合、現在の点群が変更されます。

ソースへ移動

source

pointCloud.downsample(Zivid::PointCloud::Downsampling::by2x2);
ソースへ移動

source

pointCloud.Downsample(Zivid.NET.PointCloud.Downsampling.By2x2);
ソースへ移動

source

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

ダウンサンプリングされた点群を新しい点群インスタンスとして取得することも可能で、その場合、既存の点群は変更されません。

ソースへ移動

source

auto downsampledPointCloud = pointCloud.downsampled(Zivid::PointCloud::Downsampling::by2x2);
ソースへ移動

source

var downsampledPointCloud = pointCloud.Downsampled(Zivid.NET.PointCloud.Downsampling.By2x2);
ソースへ移動

source

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

Zivid SDK は by2x2by3x3 、および by4x4 のダウンサンプリングレートをサポートしており、複数回のダウンサンプリングを実行できます。

点群をダウンサンプリングするには、以下のコードサンプルを実行してください。

Sample: Downsample.cpp

./Downsample

Sample: Downsample.cs

Downsample.exe

サンプル: downsample.py

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

ZDF ファイルがない場合は、以下のコードサンプルを実行してください。このコードは、指定した設定でキャプチャした Zivid 点群をファイルに保存します。

Sample: CaptureWithSettingsFromYML.cpp

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

Sample: 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 側で必要な内容はすべて完了です。次のセクション メンテナンス では、(デ)パレタイジングセルを最小限のダウンタイムで安定稼働させるために、実施を推奨する具体的なプロセスを説明します。