ビジョンのコツ その2 回転ズレはADJ_OFS

前回は基準位置から離れた同じ向きのワークのズレの調整方法を紹介しました。
今回は、ワークが回転しているときにロボットハンドをワークに合わせて回転させるとズレてしまうことの対策を考えてみます。

ツールの先端を原点とするツール座標をしっかりと設定していても、回転したワークを拾うときにズレはどうしても起きてきてしまうものです。そんなときに役立つのはADJ_OFS(アジャストオフセット)という命令です。今回はADJ_OFSの使い方について書いていきたいと思います。

手順1.ワークを180度回転させ、前回のプログラムをそのまま走らせみます。
↑上下さかさまにワークを置いてプログラムを動かす

.

手順2.ズレ量を調査して、ADJ_OFSで補正させます。
ズレ量を調査したところ、目分量ですが、だいたい次の図のような感じでした。

赤丸がハンドの中心で、X方向に-0.4mm、Y方向に+1.2mmずらすと本来行くべき中心になるようなズレ。ADJ_OFSは偏心する円の中心を補正する役目があるようなので、ズレ量の半分の値をセットしてあげます。
この場合、Xを-0.2mm、Yを+0.6mmになります。
それではプログラムに補正をさせる文を加えてみます。

1: !待機イチへ移動
2:カクジク イチ[1] 100% イチギメ
3:
4: !ビジョン検出
5: ビジョン ケンシュツ ‘VISION_R’
6: ビジョン ホセイデータシュトク ‘VISION_R’ ビジョンレジ[1] ジャンプ ラベル[999]
7:
8: !ADJ_OFSで回転微調整
9: イチレジ[7,1:ADJ_OFS値]=(-.2)     ←X方向-0.2mm
10: イチレジ[7,2:ADJ_OFS値]=.6        ←Y方向 +0.6mm
11: イチレジ[7,3:ADJ_OFS値]=0
12: イチレジ[7,4:ADJ_OFS値]=0
13: イチレジ[7,5:ADJ_OFS値]=0
14: イチレジ[7,6:ADJ_OFS値]=0
15: ヨビダシ ADJ_OFS(1,1,7,1)
16:
17: !ワーク上空へ移動
18: イチレジ[8,1:上空補正]=0
19: イチレジ[8,2:上空補正]=0
20: イチレジ[8,3:上空補正]=30
21: イチレジ[8,4:上空補正]=0
22: イチレジ[8,5:上空補正]=0
23: イチレジ[8,6:上空補正]=0
24:
25:チョクセン イチレジ[41:ワーク基準イチ] 100mm/sec イチギメ ビジョンホセイ,ビジョンレジ[1] イチホセイ,イチレジ[8:上空補正]
26:
27: !ワークへ移動
28:チョクセン イチレジ[41:ワーク基準イチ] 50mm/sec イチギメ ビジョンホセイ,ビジョンレジ[1]
29:
30: シュウリョウ
31:
32: ラベル[999]
33: !ワーク未検出
34: シュウリョウ

オレンジ色のところが新たに加えた部分です。

ADJ_OFS(引数1,引数2,引数3,引数4)の簡単な説明
引数1:補正データの入ったレジスタの種類。ビジョンレジは1、イチレジは2
引数2:引数1のレジスタ番号
引数3:調整量の設定値が入ったイチレジ番号
引数4:補正データを格納するビジョンレジまたはイチレジ番号
詳しくはマニュアルを見ましょう

あとは、このプログラムを動かしつつ、値を少しずつ変えて何度もトライして調整していってください。また、ワークの向きも180度だけではなく90度などもためして合わせこんでください。

どうしても、合わない場合は検出角度によってADJ_OFSの補正値を場合分けすることも可能です。また、ハンドのガタとり(バックラッシュ除去動作)したり、艤装ケーブルのツッパリによる位置ずれなどズレの起こる要因を取り除くことも考えてください。

ビジョンのコツ その1 まずは検出面Z高さで調整

カメラで撮影して散らばっているワークを拾いに行く、なんてことは良くあるケースだと思います。ワークがある程度大きいものであれば特に気にすることはないのですが、10mm以下の小さなワークですとちょっとしたズレでワークを拾えなかったりします。そんなときの調整のコツなんかを書いていきたいと思います。あ、ばら積みとかの3Dではなく2Dのお話です。

ワークをピックアップするのにちょとした位置ズレをおこしてしまうのには次の2種類のパターンがあります。
a.初めに覚えさせた基準となるワークの位置から離れると、離れた分だけ比例して位置ズレが生じてしまう
b.ワークが回転していてハンドをその向きに回転させるとズレてしまう

それではa.について解説していきたいと思います。(b.は次回)

話をわかりやすくするためにこういうものを用意してみました。リンゴマークのようなのがワークだと思ってください。2つのワークは回転させずに、同じ向きにしておきます。

手順1.まずは、カメラ中央にワークを置いて撮影し、その映像からパターンマッチ用のモデル教示を行います。
必要ない方のワークにはカメラのキャップをかぶせて隠しています。

手順2.次に画面右上の「カメラ1台の2次元補正」選んでからスナップ検出します。
慣れてきても、この時点でスナップ検出を押すのを忘れがちですw。次にやるハンド移動後では、ハンドが邪魔でスナップ検出できないので注意です。
手順3.そして、ワークのところにハンドを持っていき、基準位置の設定ボタンを押し保存しましょう。それと同時に実際にプログラムでピックアップ位置に移動する際に使用するイチレジ(今回の例ではイチレジ[41])にも登録します。

ここまでできると、プログラムでビジョン撮影してワークへハンドを移動できるようになると思います。

手順4.実際に以下のプログラムを作って動かしてみます。

1: !待機イチへ移動
2:カクジク イチ[1] 100% イチギメ   ←撮影の邪魔にならない位置を登録してください
3:
4: !ビジョン検出
5: ビジョン ケンシュツ ‘VISION_R’ ←みなさんのビジョン名にあわせてください
6: ビジョン ホセイデータシュトク ‘VISION_R’ ビジョンレジ[1] ジャンプ ラベル[999]
7:
8: !ワーク上空へ移動
9: イチレジ[8,1:上空補正]=0    ←X
10: イチレジ[8,2:上空補正]=0   ←Y
11: イチレジ[8,3:上空補正]=30  ←Z 30mm上空  Z以外は0
12: イチレジ[8,4:上空補正]=0   ←W
13: イチレジ[8,5:上空補正]=0   ←P
14: イチレジ[8,6:上空補正]=0   ←R
15:
16:チョクセン イチレジ[41:ワーク基準イチ] 100mm/sec イチギメ ビジョンホセイ,ビジョンレジ[1] イチホセイ,イチレジ[8:上空補正]
17:
18: !ワークへ移動
19:チョクセン イチレジ[41:ワーク基準イチ] 100mm/sec イチギメ ビジョンホセイ,ビジョンレジ[1]
20:
21: シュウリョウ
22:
23: ラベル[999]
24: !ワーク未検出
25: シュウリョウ

うまくいきました。

手順5.続いて、カバーをずらしてもう一つのワークの方をためしてみます。

パッと見うまくいったように見えますが、拡大するとズレています。若干ですがハンドが左にズレているのがわかります。

ここで起きたズレはワークがある面とユーザ座標の高さにズレがあることからくるものです。

手順6.基準位置から見て遠い位置になったのか、近い位置になったのかで次のように調整します。

・基準位置からみてハンドの移動量が多すぎるときは、高さZを+する
・基準位置からみてハンドの移動量が少ないときは、高さZを-する


今回の例ではハンドが基準位置に対して大きく動きすぎているのでZを+する方向にずらしてみます。具体的には次の画面の赤枠の「検出面Z高さ」を変えます。
ここの値を変えると、基準位置も消去されてしまうので(これが本当に厄介)、この値を変更したら、手順2に戻って繰り返し基準位置の設定を行う必要があります。
(何度も同じことを繰り返すので、ワークは取り除かずカバーで隠すようにしているのです)

「Zの値を変えてみる→基準位置を設定する→プログラムでもう一つのワークのところにハンドを動かす」を繰り返してみたところ、今回はZを+4mmにしたところでピッタリ合いました。
この時点ではちょっとのズレだとしても、後々別の原因のズレが複合的に発生してくるとドツボにはまってしまうので、まずは最初にしっかりと合わせることが大事です。