生産準備プロセス
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 メートルあたり 5 mm 未満の許容差を持つピッキングアプリケーションにお勧めします。カメラをウォームアップすると、 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 を実行する必要はありません。
Infield Correction が必要な場合は、最適な結果を得るために作業ボリューム全体をカバーしてください。これは、 Zivid calibration board を所定の距離の複数の場所に配置し、ボード全体が FOV 内に収まるようにしながら異なる距離で行うことを意味します。ビンピッキングには、ビンの底部に数か所、上部に数か所あれば十分です。詳細については Infield Correction を実施するためのガイドライン を確認してください。
カメラでインフィールド検証および/または補正を実行するには、以下を使用できます。
Zivid Studio
CLI ツール
SDK
Tip
初めて Infield Correction を実行する場合は、 Zivid Studio の使用をお勧めします。
Infield Correction の実行に関するステップバイステップガイドについては ランニングインフィールド修正 をご確認ください。
ハンドアイキャリブレーション
以下の表では、目標と要件に基づいてどのハンドアイキャリブレーションツールを使用するかについての推奨事項をご覧いただけます。ツールとその機能の詳細な分析については、 Zivid ハンドアイキャリブレーションの実行と統合方法 を参照してください。
目標 |
推奨ツール |
|---|---|
ガイド付きノーコードワークフロー |
|
最小限の統合例 |
|
既存のデータセット |
|
任意のロボット |
|
UR ロボット |
|
HALCON を使用する |
|
ROS を使用する |
ハンドアイキャリブレーションが完了したら、結果として得られた変換行列が正しく、正確度の要件を満たしていることを確認することをお勧めします。ロボットを使用したタッチテストの実施を推奨します。これは検証用エンドオブアームツールを必要とする物理的なテストです。詳細な手順については、チュートリアルを参照してください: 任意のロボット + RoboDK + Python: タッチテストによるハンドアイキャリブレーション結果の検証 。
代替オプションについては ハンドアイキャリブレーションの検証方法 ページに記載されています。
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.
使用例とパフォーマンス
以下は、低スペックの PC( Intel Iris Xe 統合型ノートブック GPU と 1G ネットワークカード)を使用した、 ROI ボックスフィルタリングが有効な負荷の高い点群処理の例です。
固定マウントされた Zivid 2+ MR130 カメラを使用して、ロボットが 600 x 400 x 300 mm のビンからアイテムをピッキングしている場面を想像してください。ロボットのクリアランスを確保するため、カメラはビン上部から 1700 mm の距離に設置され、視野は約 1000 x 800 mm となります。この距離にカメラを設置すると、視野の大部分が ROI の範囲外になるため、各辺から約 20〜25% のピクセル列/行を切り取ることができます。下の表からわかるように、 ROI ボックスフィルタリングを使用することでキャプチャ時間を大幅に短縮できます。
プリセット |
取得時間 |
キャプチャ時間 |
||
|---|---|---|---|---|
ROI なし |
ROI |
ROI なし |
ROI |
|
製造業 鏡面 |
0.64 s |
0.64 s |
2.1 s |
1.0 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 つあります。
Via the setting
Settings::Processing::Resampling(リサンプリング), which means it's controlled via the capture settings.API
PointCloud::downsampleを介して。
どちらの場合も、点群に対して同じ操作が適用されます。 API バージョンでは、インプレースでダウンサンプリングするか、ダウンサンプリングされたデータを含む新しい点群インスタンスを取得するかを選択できます。
ダウンサンプリングはインプレースで実行でき、現在の点群を変更します。
ダウンサンプリングされた点群を新しい点群インスタンスとして取得することもでき、この場合は既存の点群が変更されません。
Zivid SDK は、ダウンサンプリングレート by2x2 、 by3x3 、および 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 側のすべてをカバーし、ビンピッキングシステムを本番環境に投入する準備が整いました。次のセクションは メンテナンス で、ダウンタイムを最小限に抑えてビンピッキングセルが安定して稼働するために推奨する特定のプロセスについて説明します。
バージョン履歴
SDK |
変更点 |
|---|---|
2.18.0 |
Added Mask section with reference to the Point Cloud Tutorial. |
2.12.0 |
Added section to demonstrate how ROI box filtering provides a speed-up in capture time.
Downsampling can now also be done via |
2.10.0 |