本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
[第1の実施形態]
<システム構成>
図1は、本発明の実施の形態に係るコンベアトラッキングシステムの構成を示す模式図である。
図1に示すコンベアトラッキングシステムは、搬送装置(コンベア)10を含む。コンベア10は、駆動ローラ12によって回転駆動される。図1に示す例では、コンベア10は、紙面右側に移動する。コンベア10には、搬出装置30などによって紙面左側からワークWがランダムに提供される。このコンベア10上のワークWは、紙面左側から紙面右側へ移動する。ワークWとしては、典型的には、お菓子等の食品や各種の錠剤等が想定される。
本実施の形態に係る視覚センサ100は、コンベア10上の所定位置に設けられる。視覚センサ100は、ワークなどの被写体を撮像するための撮像部、撮像部によって撮像された画像を処理するための画像処理部とを一体的に構成したものである。ただし、撮像部と画像処理部とを別体として構成してもよい。
視覚センサ100は、その撮像範囲がコンベア10の幅方向(搬送方向とは直交する方向)の全体を含むように設定される。そして、視覚センサ100が所定周期で撮像を行うことで、コンベア10上をランダムに流れてくるワークWを順次撮像できる。視覚センサ100は、この順次撮像される画像に対してパターンマッチング等の計測処理を行うことで、ワークWの位置決めおよびトラッキング処理を行う。このように、視覚センサ100の撮像部(図3に示す撮像部110)は、搬送装置であるコンベア10上を搬送されるワークWを撮像するように配置されている。そして、この撮像部に画像処理装置(図3に示す画像処理部120)が接続される。
コンベア10の搬送方向には、視覚センサ100の下流側に、ワークWを把持するロボット300が配置されている。このロボット300は、ワークWを把持するためのハンド先端を有しており、このハンド先端を目的位置に移動させることで、コンベア10上のワークを把持する。すなわち、ロボット300は、搬送装置であるコンベア10の搬送経路において、視覚センサ100の撮像部の撮像範囲より下流側に配置されるとともにワークWを取り扱う。より具体的には、ロボット300は、そのハンド先端を目的のワークWに位置決めして、把持(ピックアップ)する。
さらに、ロボット300は、コンベア10の所定の稼動範囲(トラッキング範囲)内のワークWをピックできる。
ロボット300のトラッキング処理および位置決め処理については、コンベア10に設けられたエンコーダ14による検出結果を用いて制御される。このエンコーダ14は、典型的には、ロータリーエンコーダが採用され、回転に伴ってパルス信号を発生する。この発生するパルス信号のパルス数をカウントすることで、コンベア10と連結されたローラの回転数、すなわち、エンコーダ14が発生するパルス信号は、搬送装置であるコンベア10の搬送経路における移動量を示す信号に相当し、このパルス信号に基づいて、コンベア10の移動量が算出される。
ロボット300は、ロボット制御装置200からの指示に従って動作する。すなわち、ロボット制御装置200は、ロボット300を制御するための制御装置である。ロボット制御装置200は、視覚センサ100とネットワークNWを介して接続されており、視覚センサ100によって検出されたワークWの位置に基づいて、ロボット300に対してワークWの把持動作に必要な指示を与える。
ロボット制御装置200には、ロボット300のキャリブレーションなどを行うためのティーチングペンダント2100が接続されている。ユーザは、ティーチングペンダント2100を操作して、キャリブレーションなどに必要な位置にロボット300のハンド先端を移動させる。
ネットワークNWには、視覚センサ100およびロボット制御装置200に加えて、操作表示装置500およびサポート装置600が接続されていてもよい。操作表示装置500は、視覚センサ100からの処理結果やロボット制御装置200からのロボット300の動作状態などを表示するとともに、ユーザからの操作に応答して、視覚センサ100および/またはロボット制御装置200へ各種の指示を与える。
視覚センサ100で検出されたコンベア10上のワークWの位置は、センサ座標系の座標値(Xs,Ys)[pixel]で表わされる。センサ座標系のワークWの座標値は、視覚センサ100によって、ロボット座標系における座標値に変換される。ロボット座標系は、ロボット300を制御するための座標系であり、ロボット座標系でのワークWの位置は、座標値(Xr,Yr,Zr)[mm]で表わされる。
さらに、ロボット座標系でのワークWの座標値は、ロボット制御装置200によってコンベア座標系における座標値に変換される。コンベア座標系は、コンベア上の位置を原点とし、コンベア表面をXY平面とした座標系である。
図2に示すように、コンベア10の裏面に蛇行防止用ガイド96が接着されており、これが原因となってコンベア10の表面にたわみ、膨らみ、または傾斜が生じる。本実施の形態では、この問題を解決するために、トラッキング範囲を2分割し、分割した領域ごとのコンベア座標系を用いる。2つのコンベア座標系でのワークWの位置は、座標値(Xc1,Yc1,Zc1)[mm]および(Xc2,Yc2,Zc2)[mm]で表わされる。
上述のような構成の下、視覚センサ100は、ロボット制御装置200からの撮像指示に従って実際に撮像を行ったときのカウント値を各ワークの位置情報に付加して、ロボット制御装置200へ送信する。すなわち、視覚センサ100は、ワークWの位置情報と対応するコンベア10における移動量とをロボット制御装置200へ送信する。
<ハードウェア構成>
図3は、本発明の実施の形態に係る視覚センサ100を利用したコンベアトラッキングシステムのハードウェア構成について示す模式図である。図3を参照して、視覚センサ100は、撮像部110と、画像処理部120とを含む。
撮像部110は、撮像範囲に存在する被写体を撮像する装置であり、主体たる構成要素として、レンズや絞りなどの光学系と、CCD(Charge Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどの受光
素子とを含む。撮像部110は、画像処理部120からの指令に従って撮像するとともに、その撮像によって得られた画像データを画像処理部120へ出力する。
画像処理部120は、CPU(Central Processing Unit)122と、メモリ124と
、撮像制御部126と、通信インターフェイス(I/F)128と、入出力インターフェイス(I/F)130と、エンコーダカウンタ132とを含む。これらのコンポーネントは、バス134を介して互いにデータ通信可能に接続されている。
CPU122は、画像処理部120において主たる演算を行うプロセッサである。メモリ124は、CPU122によって実行される各種プログラム、撮像部110によって撮像された画像データ、各種パラメータなどを格納する。典型的には、メモリ124は、DRAM(Dynamic Random Access Memory)などの揮発性記憶装置と、FLASHメモリなどの不揮発性記憶装置とからなる。
さらに、メモリ124は、撮像部110によって撮像された画像におけるセンサ座標系の座標値(Xs,Ys)をロボット座標系の座標値(Xr,Yr)に変換するためのパラメータセットを保持する。このパラメータセットの取得方法については、後述する。
撮像制御部126は、CPU122などからの内部コマンドに従って、接続されている撮像部110における撮像動作を制御する。撮像制御部126は、撮像部110に対して各種コマンドを送信するインターフェイスと、撮像部110からの画像データを受信するインターフェイスとを有している。
通信インターフェイス128は、ロボット制御装置200との間で各種データを遣り取りする。典型的には、視覚センサ100およびロボット制御装置200とはイーサネット(登録商標)を介して接続されており、通信インターフェイス128は、このようなイーサネット(登録商標)に準拠したハードウェアである。
入出力インターフェイス130は、画像処理部120から外部へ各種信号を出力し、あるいは、外部からの各種信号を入力する。特に、入出力インターフェイス130は、エンコーダ14で生成されるパルス信号を受け入れ、その信号をデジタル信号に変換してエンコーダカウンタ132へ出力する。
エンコーダカウンタ132は、エンコーダ14からのパルス信号に含まれるパルス数をカウントする。このエンコーダカウンタ132は、基本的には、CPU122の演算サイクルとは独立して動作するため、エンコーダ14からのパルス信号に含まれるパルス数を取り逃すことがない。
一方、ロボット制御装置200は、位置制御部210と、通信インターフェイス(I/F)228と、入出力インターフェイス(I/F)230と、エンコーダカウンタ232と、ピッキング制御部240とを含む。
位置制御部210は、視覚センサ100からの位置情報に基づいて、ロボット300に対してコマンドを出力するための演算を行うプロセッサである。
メモリ220には、視覚センサ100の計測処理によって検出されたワークWのロボット座標系の座標値(Xr,Yr,Zr)が格納される。位置制御部210は、コンベアの移動(エンコーダ14からのパルス信号に基づいて検出)に応じて、ワークWのロボット座標系の座標値(Xr,Yr,Zr)を順次更新する。
また、位置制御部210は、選択部221と、座標変換部222と、キャリブレーション部223とを備える。
選択部221は、ロボットに座標系でのワークWの座標値に基づいて、2つのコンベア座標系のうちの1つの座標系を選択する。
座標変換部222は、ロボット座標系でのワークWの座標値を選択されたコンベア座標系での座標値に変換する。
キャリブレーション部223は、ロボット座標系からコンベア座標系に変換するためのキャリブレーションを行なことによって、必要なパラメータの値を取得する。
通信インターフェイス(I/F)228は、視覚センサ100の画像処理部120との間で各種データを遣り取りする。典型的には、視覚センサ100およびロボット制御装置200とはイーサネット(登録商標)を介して接続されており、通信インターフェイス228は、このようなイーサネット(登録商標)に準拠したハードウェアである。
入出力インターフェイス230は、ロボット制御装置200から外部へ各種信号を出力
し、あるいは、外部からの各種信号を入力する。特に、入出力インターフェイス230は、エンコーダ14で生成されるパルス信号を受け入れ、その信号をデジタル信号に変換してエンコーダカウンタ232へ出力する。
エンコーダカウンタ232は、エンコーダ14からのパルス信号に含まれるパルス数をカウントする。このエンコーダカウンタ232は、基本的には、位置制御部210の演算サイクルとは独立して動作するため、エンコーダ14からのパルス信号に含まれるパルス数を取り逃すことがない。
ピッキング制御部240は、位置制御部210などからの内部コマンドに従って、接続されているロボット300における把持動作を制御する。ピッキング制御部240は、ロボット300のそれぞれの可動軸における目標位置などを送信するインターフェイスと、ロボット300のそれぞれの可動軸における現在位置を受信するインターフェイスとを有している。
コンベア10に設けられたエンコーダ14の検出結果に応じて生成されるパルス信号は、視覚センサ100およびロボット制御装置200へ入力されるように構成されている。視覚センサ100およびロボット制御装置200は、パルス信号に含まれるパルス数をカウントするためのエンコーダカウンタをそれぞれ有している。エンコーダ14からのパルス信号は、並列的に、視覚センサ100およびロボット制御装置200に入力されるので、それぞれのエンコーダカウンタを同じタイミングで初期化(カウンタリセット)しておけば、その後に入力されるパルス信号についてのカウント値は、互いに同じ値、すなわち、カウント値についての同期をとることができる。
<位置決めおよびトラッキング処理>
次に、図1に示すコンベアシステムにおけるワークWのトラッキング処理の詳細について説明する。
図4は、本発明の実施形態のワークWのトラッキング処理の手順を示すフローチャートである。
ステップS101において、視覚センサ100は、内蔵の撮像部を用いてコンベア10を撮像する。視覚センサ100の撮像動作は、ロボット制御装置200からの撮像指示に応じて開始される。この撮像指示は、視覚センサ100とロボット制御装置200とを接続するネットワークNW経由で搬送される。このネットワークNWは、典型的には、イーサネット(登録商標)などの汎用的なネットワークを採用することができる。
視覚センサ100は、撮像指示をロボット制御装置200から受信するように構成されており、この撮像指示に応答して撮像を開始する。これにより、視覚センサ100は、撮像範囲を写した画像を順次取得する。そして、視覚センサ100は、当該画像に対して計測処理(典型的には、予め登録されたワークWについてのモデル画像に基づくパターンマッチング処理、あるいは、2値化処理)を実行する。さらに、視覚センサ100は、この計測処理によって各ワークWの撮像時のセンサ座標系での座標値(Xs,Ys)を取得する。
ステップS102において、視覚センサ100は、センサ座標系のワークWの座標値(Xs,Ys)をロボット座標系の座標値(Xr,Yr)に変換する。
この変換には、以下の式が用いられる。
Xr=A・Xs+B・Ys+C・・・(1)
Yr=D・Xs+E・Ys+F・・・(2)
ここで、パラメータセットA〜Fは、後述のセンサ座標系→ロボット座標系のキャリブレーションによって得られ、メモリ124に格納されている。
ステップS103において、視覚センサ100は、ワークWのロボット座標系の座標値(Xr,Yr)をネットワークNWを介してロボット制御装置200へ送信し、ロボット制御装置200の内部にあるメモリに格納される。
ステップS104において、ロボット制御装置200の座標変換部222は、エンコーダ14からのパルス信号を受けるたびに、ワークWの座標値(Xr,Yr)を更新する。すなわち、現在のワークのWの座標値(Xr,Yr)に(dx,dy)を加算した値を新たなワークWの座標値とする。これは、ロボット制御装置200のメモリ220上において、実際にベルトコンベア上を搬送するワークWをトラッキングするためである。ここで、dxは、パルス信号の間隔ごとにコンベア10が移動する量をMDとしたときに、以下の式で表わされる。
dx=MD×cosθ…(3)
dy=MD×sinθ…(4)
θは、コンベアの進行方向とロボット座標系のXr軸とのなす角度であり、後述のロボット座標系→コンベア座標系のキャリブレーションによって求められ、メモリ220に格納される。
ステップS105において、ワークWの更新後の座標値(Xr,Yr)がロボット300のトラッキング範囲に入ると、処理がステップS107に進む。
ステップS107において、ワークWの現在の座標値(Xr,Yr)がロボット座標系の領域R−AR1に含まれる場合は、処理がステップS108に進む。領域R−AR1は、後述のロボット座標系→コンベア座標系のキャリブレーションによって定められる。
ステップS108において、選択部221は、ワークWがコンベア座標空間の分割領域AR1に属すると判断し、分割領域AR1と分割領域AR1のコンベア座標系を選択する。
ステップS109において、座標変換部222は、以下の式に従って、ワークWのロボット座標系での座標値(Xr,Yr,Zr1(0))をコンベア座標系の座標値(Xc1,Yc1,Zc1)に変換する。ここで、Zr1(0)は、分割領域AR1の原点をロボット座標系に変換したときのZrの値であり、後述のロボット座標系→コンベア座標系のキャリブレーションによって定められる。
ステップS110において、ワークWの現在の位置情報(Xr,Yr)がロボット座標系の領域R−AR2に含まれる場合は、処理がステップS111に進む。領域R−AR2は、後述のロボット座標系→コンベア座標系のキャリブレーションによって定められる。
ステップS111において、座標変換部222は、ワークWがコンベア座標空間の分割領域AR2に属すると判断し、分割領域AR2と分割領域AR2のコンベア座標系を選択する。
ステップS112において、座標変換部222は、以下の式に従って、ワークWのロボット座標系での座標値(Xr,Yr,Zr2(0))をコンベア座標系の座標値(Xc2,Yc2,Zc2)に変換する。ここで、Zr2(0)は、分割領域AR2の原点をロボット座標系に変換したときのZrの値であり、後述のロボット座標系→コンベア座標系のキャリブレーションによって定められる。
ステップS107において、ピッキング制御部240は、コンベア座標系の座標値(Xc1,Yc1,Zc1)または(Xc2,Yc2,Zc2)に基づいて、ワークWを把持するための制御信号を出力する。
具体的には、ピッキング制御部240は、ワークWのコンベア座標系の現在の座標値と、図示しないエンコーダから取得したロボット200のハンドの現在のコンベア座標系の座標値とに基づいて、ワークWの現在位置に向けたロボット200のハンドの動作軌跡を算出する。ピッキング制御部240は、算出した動作軌跡に沿って、ロボット200のモータに位置指令値を出力する。この位置指令値は、コンベア座標系でのワークWの現在の座標値とロボット200のハンドの現在の座標値とを結ぶベクトルをロボット座標系でのベクトルに変換されることによって算出される。上記制御動作が制御周期ごとに繰り返される。つまり、ロボット200によってワークWのピックアップが完了しない場合には、上記制御動作が再度実行される。すなわち、ピッキング制御部240は、ワークWのコンベア座標系の現在の座標値と、エンコーダから取得したロボット200のハンドの現在のコンベア座標系の座標値とに基づいて、ワークWの現在位置に向けたロボット200のハンドの動作軌跡を再度算出して、ロボット200のモータに再度位置指令値を出力する。
<センサ座標系→ロボット座標系のキャリブレーション>
視覚センサ100によって計測されたワークの位置情報(センサ座標系の座標値(Xs,Ys)[pixel])を、ロボット座標系の座標値(Xr,Yr)[mm]に変換するための関係式が取得される。この関係式は、6個のパラメータA〜Fによって定義される。より具体的には、本実施の形態に係るキャリブレーションは、3段階の手順によって実現される。
なお、本実施の形態に係るキャリブレーションにおいては、図5に示すターゲットパターンが描画されたキャリブレーション用シートSが用いられる。このキャリブレーション用シートSに示されたターゲットパターンは、その内部が約90°ずつに塗り分けられた5個の円(マーク)を含む。なお、後述するように、基本的には4個のマークを用いてキャリブレーションが行われるが、追加的に配置された1個のマークは、キャリブレーション用シートSの配置向きを所定方向に統一するために用いられる。
(第1段階)
第1段階としては、ユーザは、ターゲットパターンが描画されたキャリブレーション用シートSを視覚センサ100(撮像部110)の視野内に配置する。そして、ユーザは、視覚センサ100に対して撮像指示を与える。すると、視覚センサ100は、撮像によって得られた画像(ターゲットパターンが被写体として含まれる画像)に対して計測処理を行い、ターゲットパターンに含まれる四隅に配置された4個のマークについての各中心点の座標値を決定する。これによって、ターゲットパターンに含まれる4個のマークについてのセンサ座標系の座標値[pixel]がそれぞれ取得される。この取得される4個の座標値を(xs1,ys1)、(xs2,ys2)、(xs3,ys3)、(xs4,ys4)とする。
(第2段階)
第2段階としては、ユーザは、コンベア10を動かしてターゲットパターンが描画されたキャリブレーション用シートSをロボット300のトラッキング範囲(稼動範囲)内に配置するとともに、ロボット300を操作して、ターゲットパターンに含まれる4個のマークとロボット300との位置関係を対応付ける。
より具体的には、まず、ユーザは、コンベア10を動かして、キャリブレーション用シートSをロボット300のトラッキング範囲(稼動範囲)内に配置する。
続いて、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をキャリブレーション用シートS上の1つのマークと対応するように位置決めする。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値が視覚センサ100へ送信される。このロボット300のハンド先端の位置決めして、および、位置決め状態におけるロボット300の位置情報の視覚センサ100へ送信する処理は、ターゲットパターンに含まれる4個のマークのすべてに対して繰り返し実行される。
このような手順によって、ターゲットパターンに含まれる4個のマークに対応するロボット座標系の座標値がそれぞれ取得される。この取得される4個のマークに対応するロボット座標系の座標値を(xr1,yr1)、(xr2,yr2)、(xr3,yr3)、(xr4,yr4)とする。
(第3段階)
第3段階としては、ユーザは、コンベア10をさらに動かしてキャリブレーション用シートSをロボット300のトラッキング範囲(稼動範囲)の最下流の位置に配置するとともに、ロボット300を操作して、ターゲットパターンに含まれる1個のマークとロボット300との位置関係を対応付ける。
より具体的には、まず、ユーザは、コンベア10を動かして、キャリブレーション用シートSをロボット300のトラッキング範囲(稼動範囲)の下流側端部に配置する。
続いて、ユーザは、ティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をキャリブレーション用シートS上の1番目のマーク(第2段階で座標値(xr1,yr1)を取得したマーク)と対応するように位置決めする。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値が視覚センサ100へ送信される。
このような手順によって、ターゲットパターンに含まれる1番目のマークに対応するロボット300の座標値がそれぞれ取得される。この取得される1番目のマークに対応するロボット座標系の座標値を(xr5,yr5)とする。
(パラメータ算出処理)
センサ座標系の座標値(xs1,ys1),(xs2,ys2),(xs3,ys3),(xs4,ys4)と、ロボット座標系の座標値(xr1,yr1),(xr2,yr2),(xr3,yr3),(xr4,yr4)との対応関係に基づいて、座標系の変換に係る変換式の6個のパラメータA〜Fが決定される。すなわち、公知の手法を用いて、式(1)、(2)を満たす(あるいは、誤差が最小となる)パラメータA〜Fが決定される。
これにより、視覚センサ−ロボット間のキャリブレーションが実現される。
<ロボット座標系→コンベア座標系のキャリブレーション>
図6および図7は、第1の実施形態のロボット座標系→コンベア座標系のキャリブレーションの手順を示すフローチャートである。図8〜図10は、第1の実施形態のロボット座標系→コンベア座標系のキャリブレーションでの手順を説明するための図である。
ステップS201において、ユーザは、マークMが付されたキャリブレーション用シートを、マークMがコンベア10の中心線L1上に位置するようにコンベア10上に置く。中心線L1は、コンベア10の幅方向の左端と右端から等距離にある線である。
ステップS202において、ユーザは、コンベア10を動かして、マークMを図8に示すトラッキング範囲(稼動範囲)内の最上流ラインに配置する。
ステップS203において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をマークMと対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P1がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS204において、ユーザは、コンベア10を動かして、マークMを図8に示すトラッキング範囲(稼動範囲)内の最下流ラインに配置する。
ステップS205において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をマークMと対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P2がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS206において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端を、コンベア10の移動方向に対してマークMの位置よりも左側にある点、好ましくは、最下流ライン上の最も左端と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P3がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS207において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端を、コンベア10の移動方向に対してマークMの位置よりも右側にある点、好ましくは、最下流ライン上の最も右端と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P4がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS208において、キャリブレーション部223は、座標値P1、P2、P3を用いて、コンベア座標系(Xc1,Yc1,Zc1)およびコンベア座標系(Xc1,Yc1,Zc1)で定義される領域AR1を決定する。キャリブレーション部223は、領域AR1の原点をP3とする。キャリブレーション部223は、P1からP2へのベクトルをXc1軸の正方向とし、P2からP3へのベクトルをYc1軸の正方向とし、Xc1軸およびYc1軸に直交しかつコンベア10の上の方向(つまり、コンベア10の上面の方向)をZc1軸の正方向とする。キャリブレーション部223は、P1、P2、P3と、最上流ライン上の最も左端の点を4隅とした範囲を領域AR1のXc1座標、Yc1座標の範囲とし、所定の高さZpを領域AR1のZc1軸の最大の座標とする(図9を参照)。
ステップS209において、キャリブレーション部223は、座標値P1、P2、P4を用いて、コンベア座標系(Xc2,Yc2,Zc2)およびコンベア座標系(Xc2,Yc2,Zc2)で定義される領域AR2を決定する。キャリブレーション部223は、領域AR1の原点をP2とする。キャリブレーション部223は、P1からP2へのベクトルをXc2軸の正方向とし、P4からP2へのベクトルをYc2軸の正方向とし、Xc2軸およびYc2軸に直交しかつコンベア10の上の方向(つまり、コンベア10の上面の方向)をZc2軸の正方向とする。キャリブレーション部223は、P1、P2、P4と、最上流ライン上の最も右端の点を4隅とした範囲を領域AR2のXc2座標、Yc2座標の範囲とし、所定の高さZpを領域AR2のZc2軸の最大の座標とする(図10を参照)。
ステップS210において、キャリブレーション部223は、ロボット座標系(Xr,Yr,Zr1(0))からコンベア座標系(Xc1,Yc1,Zc1)に変換する式(A1)のパラメータRx1,Ry1,Rz1を計算する。
ここで、Rx1は、P1からP2へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(1,0,0)の内積を計算することによって得られる。Ry1は、P2からP3へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(0,1,0)の内積を計算することによって得られる。Rz1は、P1からP2へのベクトルおよびP2からP3へのベクトルと直交するベクトルを正規化(大きさを1)したベクトルと、ベクトル(0,0,1)の内積を計算することによって得られる。
ステップS211において、キャリブレーション部223は、ロボット座標系(Xr,Yr,Zr2(0))からコンベア座標系(Xc2,Yc2,Zc2)に変換する式(A2)のパラメータRx2,Ry2,Rz2を計算する。
ここで、Rx2は、P1からP2へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(1,0,0)の内積を計算することによって得られる。Ry2は、P4からP2へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(0,1,0)の内積を計算することによって得られる。Rz2は、P1からP2へのベクトルおよびP4からP2へのベクトルと直交するベクトルを正規化(大きさを1)したベクトルと、ベクトル(0,0,1)の内積を計算することによって得られる。
ステップS212において、キャリブレーション部223は、コンベア座標系(Xc1,Yc1,Zc1)の領域AR1の範囲を式(A1)の逆変換式に従って、ロボット座標系(Xr,Yr,Zr)の分割領域R−AR1の範囲を求める。
ステップS213において、キャリブレーション部223は、コンベア座標系(Xc2,Yc2,Zc2)の領域AR2の範囲を式(A2)の逆変換式に従って、ロボット座標系(Xr,Yr,Zr)の分割領域R−AR2の範囲を求める。
ステップS204において、キャリブレーション部223は、コンベア10の進行方向(P1からP2へのベクトルの方向)に対するロボット座標系のXr軸の角度θを算出する。
ステップS205において、キャリブレーション部223は、式(A1)の逆変換式に従って、分割領域AR1の原点をロボット座標系に変換し、変換して得られるZrの値をZr1(0)とする。
ステップS206において、キャリブレーション部223は、式(A2)の逆変換式に従って、分割領域AR2の原点をロボット座標系に変換し、変換して得られるZrの値をZr2(0)とする。
以上のように、本実施の形態によれば、コンベアのトラッキング範囲を中央線で2つに分割し、分割範囲ごとのコンベア座標系を用いて、ワークの位置を認識して、ワークを把持するので、コンベアのたわみ、膨らみ、または傾斜量が、中央線を境にして異なっていても、ワークを正しく把持することができる。
[第2の実施形態]
第1の実施形態では、コンベア10の表面のたわみ、膨らみ、または傾斜の量がトラッキング範囲の中央を境界とした左側と右側で異なる場合を考慮して、トラッキング範囲を2分割した。本実施の形態では、コンベアの位置ごとのたわみ、膨らみ、または傾斜に対応するために、トラッキング範囲を6分割し、分割した領域ごとのコンベア座標系を用いる。
6つのコンベア座標系でのワークWの位置は、座標値(Xc1,Yc1,Zc1)[mm]、(Xc2,Yc2,Zc2)[mm]、(Xc3,Yc3,Zc3)[mm]、(Xc4,Yc4,Zc4)[mm]、(Xc5,Yc5,Zc5)[mm]、(Xc5,Yc5,Zc5)[mm]で表わされる。
<ロボット座標系→コンベア座標系のキャリブレーション>
図11〜図13は、第2の実施形態のロボット座標系→コンベア座標系のキャリブレーションの手順を示すフローチャートである。図14および図15は、第2の実施形態のロボット座標系→コンベア座標系のキャリブレーションでの手順を説明するための図である。
ステップS301において、ユーザは、マークM1,M2が付されたキャリブレーション用シートを、マークM1がコンベア10の幅方向を3等分する左側のラインLに位置し、マークM2がコンベア10の幅方向を3等分する右側のラインRに位置するようにコンベア10上に置く。
ステップS302において、ユーザは、コンベア10を動かして、マークM1,M2を図14に示すトラッキング範囲(稼動範囲)内の最上流ラインに配置する。
ステップS303において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をマークM1と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P1がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS304において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をマークM2と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P2がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS305において、ユーザは、コンベア10を動かして、マークM1,M2を図14に示すトラッキング範囲(稼動範囲)内の中間ラインに配置する。中間ラインは、たとえば、最上流ラインと最下流ラインから等しい距離だけ離れたラインとする。
ステップS306において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をマークM1と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P3がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS307において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をマークM2と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P4がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS308において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端を、コンベア10の移動方向に対してマークM1の位置よりも左側にある点、好ましくは、中間ライン上の最も左端と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P5がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS309において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端を、コンベア10の移動方向に対してマークM2の位置よりも右側にある点、好ましくは、中間ライン上の最も右端と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P6がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS310において、ユーザは、コンベア10を動かして、マークM1,M2を図14に示すトラッキング範囲(稼動範囲)内の最下流ラインに配置する。
ステップS312において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をマークM1と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P7がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS311において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をマークM2と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P8がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS312において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端を、コンベア10の移動方向に対してマークM1の位置よりも左側にある点、好ましくは、中間ライン上の最も左端と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P9がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS313において、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端を、コンベア10の移動方向に対してマークM2の位置よりも右側にある点、好ましくは、中間ライン上の最も右端と対応するように位置決めする(タッチアップする)。ユーザは、この位置決めされた状態で指示を与えることで、ロボット300のハンド先端の位置を示すロボット座標系での座標値P10がロボット制御装置200のキャリブレーション部223へ送信される。
ステップS314において、キャリブレーション部223は、座標値P1、P3、P5を用いて、コンベア座標系(Xc1,Yc1,Zc1)およびコンベア座標系(Xc1,Yc1,Zc1)で定義される領域AR1を決定する。キャリブレーション部223は、領域AR1の原点をP5とする。キャリブレーション部223は、P1からP3へのベクトルをXc1軸の正方向とし、P3からP5へのベクトルをYc1軸の正方向とし、Xc1軸およびYc1軸に直交しかつコンベア10の上の方向(つまり、コンベア10の上面の方向)をZc1軸の正方向とする。キャリブレーション部223は、P1、P3、P5と、最上流ライン上の最も左端の点を4隅とした範囲を領域AR1のXc1座標、Yc1座標の範囲とし、所定の高さZpを領域AR1のZc1軸の最大の座標とする(図15を参照、Zpの図示は省略)。
ステップS315において、キャリブレーション部223は、座標値P1、P3、P4を用いて、コンベア座標系(Xc2,Yc2,Zc2)およびコンベア座標系(Xc2,Yc2,Zc2)で定義される領域AR2を決定する。キャリブレーション部223は、領域AR2の原点をP3とする。キャリブレーション部223は、P1からP3へのベクトルをXc2軸の正方向とし、P4からP3へのベクトルをYc2軸の正方向とし、Xc2軸およびYc2軸に直交しかつコンベア10の上の方向(つまり、コンベア10の上面の方向)をZc2軸の正方向とする。キャリブレーション部223は、P1、P3、P4、P2を4隅とした範囲を領域AR2のXc2座標、Yc2座標の範囲とし、所定の高さZpを領域AR2のZc2軸の最大の座標とする(図15を参照、Zpの図示は省略)。
ステップS316において、キャリブレーション部223は、座標値P2、P4、P6を用いて、コンベア座標系(Xc3,Yc3,Zc3)およびコンベア座標系(Xc3,Yc3,Zc3)で定義される領域AR3を決定する。キャリブレーション部223は、領域AR3の原点をP4とする。キャリブレーション部223は、P2からP4へのベクトルをXc3軸の正方向とし、P6からP4へのベクトルをYc3軸の正方向とし、Xc3軸およびYc3軸に直交しかつコンベア10の上の方向(つまり、コンベア10の上面の方向)をZc3軸の正方向とする。キャリブレーション部223は、P2、P4、P6と、最上流ライン上の最も右端の点を4隅とした範囲を領域AR3のXc3座標、Yc3座標の範囲とし、所定の高さZpを領域AR3のZc3軸の最大の座標とする(図15を参照、Zpの図示は省略)。
ステップS317において、キャリブレーション部223は、座標値P3、P7、P9を用いて、コンベア座標系(Xc4,Yc4,Zc4)およびコンベア座標系(Xc4,Yc4,Zc4)で定義される領域AR4を決定する。キャリブレーション部223は、領域AR4の原点をP9とする。キャリブレーション部223は、P3からP7へのベクトルをXc4軸の正方向とし、P7からP9へのベクトルをYc4軸の正方向とし、Xc4軸およびYc4軸に直交しかつコンベア10の上の方向(つまり、コンベア10の上面の方向)をZc4軸の正方向とする。キャリブレーション部223は、P3、P7、P9、P5を4隅とした範囲を領域AR4のXc4座標、Yc4座標の範囲とし、所定の高さZpを領域AR4のZc4軸の最大の座標とする(図15を参照、Zpの図示は省略)。
ステップS318において、キャリブレーション部223は、座標値P3、P7、P8を用いて、コンベア座標系(Xc5,Yc5,Zc5)およびコンベア座標系(Xc5,Yc5,Zc5)で定義される領域AR5を決定する。キャリブレーション部223は、領域AR5の原点をP7とする。キャリブレーション部223は、P3からP7へのベクトルをXc5軸の正方向とし、P8からP7へのベクトルをYc5軸の正方向とし、Xc5軸およびYc5軸に直交しかつコンベア10の上の方向(つまり、コンベア10の上面の方向)をZc5軸の正方向とする。キャリブレーション部223は、P3、P7、P8、P4を4隅とした範囲を領域AR5のXc5座標、Yc5座標の範囲とし、所定の高さZpを領域AR5のZc5軸の最大の座標とする(図15を参照、Zpの図示は省略)。
ステップS319において、キャリブレーション部223は、座標値P4、P8、P10を用いて、コンベア座標系(Xc6,Yc6,Zc6)およびコンベア座標系(Xc6,Yc6,Zc6)で定義される領域AR6を決定する。キャリブレーション部223は、領域AR6の原点をP8とする。キャリブレーション部223は、P4からP8へのベクトルをXc6軸の正方向とし、P10からP8へのベクトルをYc6軸の正方向とし、Xc6軸およびYc6軸に直交しかつコンベア10の上の方向(つまり、コンベア10の上面の方向)をZc6軸の正方向とする。キャリブレーション部223は、P4、P8、P10、P6を4隅とした範囲を領域AR6のXc6座標、Yc6座標の範囲とし、所定の高さZpを領域AR6のZc6軸の最大の座標とする(図15を参照、Zpの図示は省略)。
ステップS320において、キャリブレーション部223は、ロボット座標系(Xr,Yr,Zr1(0))からコンベア座標系(Xc1,Yc1,Zc1)に変換する式(B1)のパラメータRx1,Ry1,Rz1を計算する。
ここで、Rx1は、P1からP3へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(1,0,0)の内積を計算することによって得られる。Ry1は、P3からP5へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(0,1,0)の内積を計算することによって得られる。Rz1は、P1からP3へのベクトルおよびP3からP5へのベクトルと直交するベクトルを正規化(大きさを1)したベクトルと、ベクトル(0,0,1)の内積を計算することによって得られる。
ステップS321において、キャリブレーション部223は、ロボット座標系(Xr,Yr,Zr2(0))からコンベア座標系(Xc2,Yc2,Zc2)に変換する式(B2)のパラメータRx2,Ry2,Rz2を計算する。
ここで、Rx2は、P1からP3へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(1,0,0)の内積を計算することによって得られる。Ry2は、P4からP3へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(0,1,0)の内積を計算することによって得られる。Rz2は、P1からP3へのベクトルおよびP4からP3へのベクトルと直交するベクトルを正規化(大きさを1)したベクトルと、ベクトル(0,0,1)の内積を計算することによって得られる。
ステップS322において、キャリブレーション部223は、ロボット座標系(Xr,Yr,Zr3(0))からコンベア座標系(Xc3,Yc3,Zc3)に変換する式(B3)のパラメータRx3,Ry3,Rz3を計算する。
ここで、Rx3は、P2からP4へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(1,0,0)の内積を計算することによって得られる。Ry3は、P6からP4へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(0,1,0)の内積を計算することによって得られる。Rz3は、P2からP4へのベクトルおよびP6からP4へのベクトルと直交するベクトルを正規化(大きさを1)したベクトルと、ベクトル(0,0,1)の内積を計算することによって得られる。
ステップS323において、キャリブレーション部223は、ロボット座標系(Xr,Yr,Zr4(0))からコンベア座標系(Xc4,Yc4,Zc4)に変換する式(B4)のパラメータRx4,Ry4,Rz4を計算する。
ここで、Rx4は、P3からP7へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(1,0,0)の内積を計算することによって得られる。Ry4は、P7からP9へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(0,1,0)の内積を計算することによって得られる。Rz4は、P3からP7へのベクトルおよびP7からP9へのベクトルと直交するベクトルを正規化(大きさを1)したベクトルと、ベクトル(0,0,1)の内積を計算することによって得られる。
ステップS324において、キャリブレーション部223は、ロボット座標系(Xr,Yr,Zr5(0))からコンベア座標系(Xc5,Yc5,Zc5)に変換する式(B5)のパラメータRx5,Ry5,Rz5を計算する。
ここで、Rx5は、P3からP7へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(1,0,0)の内積を計算することによって得られる。Ry5は、P8からP7へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(0,1,0)の内積を計算することによって得られる。Rz5は、P3からP7へのベクトルおよびP8からP7へのベクトルと直交するベクトルを正規化(大きさを1)したベクトルと、ベクトル(0,0,1)の内積を計算することによって得られる。
ステップS325において、キャリブレーション部223は、ロボット座標系(Xr,Yr,Zr6(0))からコンベア座標系(Xc6,Yc6,Zc6)に変換する式(B6)のパラメータRx6,Ry6,Rz6を計算する。
ここで、Rx6は、P4からP8へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(1,0,0)の内積を計算することによって得られる。Ry6は、P10からP8へのベクトルの正規化(大きさを1)したベクトルと、ベクトル(0,1,0)の内積を計算することによって得られる。Rz6は、P4からP8へのベクトルおよびP10からP8へのベクトルと直交するベクトルを正規化(大きさを1)したベクトルと、ベクトル(0,0,1)の内積を計算することによって得られる。
ステップS326において、キャリブレーション部223は、コンベア座標系(Xc1,Yc1,Zc1)の領域AR1の範囲を式(B1)の逆変換式に従って、ロボット座標系(Xr,Yr,Zr)の分割領域R−AR1の範囲を求める。キャリブレーション部223は、コンベア座標系(Xc2,Yc2,Zc2)の領域AR2の範囲を式(B2)の逆変換式に従って、ロボット座標系(Xr,Yr,Zr)の分割領域R−AR2の範囲を求める。キャリブレーション部223は、コンベア座標系(Xc3,Yc3,Zc3)の領域AR3の範囲を式(B3)の逆変換式に従って、ロボット座標系(Xr,Yr,Zr)の分割領域R−AR3の範囲を求める。キャリブレーション部223は、コンベア座標系(Xc4,Yc4,Zc4)の領域AR4の範囲を式(B4)の逆変換式に従って、ロボット座標系(Xr,Yr,Zr)の分割領域R−AR4の範囲を求める。キャリブレーション部223は、コンベア座標系(Xc5,Yc5,Zc5)の領域AR5の範囲を式(B5)の逆変換式に従って、ロボット座標系(Xr,Yr,Zr)の分割領域R−AR6の範囲を求める。キャリブレーション部223は、コンベア座標系(Xc6,Yc6,Zc6)の領域AR6の範囲を式(B6)の逆変換式に従って、ロボット座標系(Xr,Yr,Zr)の分割領域R−AR6の範囲を求める。
ステップS327において、キャリブレーション部223は、コンベア10の進行方向(P1からP3へのベクトルの方向)に対するロボット座標系のXr軸の角度θを算出する。
ステップS327において、キャリブレーション部223は、式(B1)の逆変換式に従って、分割領域AR1の原点をロボット座標系に変換し、変換して得られるZrの値をZr1(0)とする。キャリブレーション部223は、式(B2)の逆変換式に従って、分割領域AR2の原点をロボット座標系に変換し、変換して得られるZrの値をZr2(0)とする。キャリブレーション部223は、式(B3)の逆変換式に従って、分割領域AR3の原点をロボット座標系に変換し、変換して得られるZrの値をZr3(0)とする。キャリブレーション部223は、式(B4)の逆変換式に従って、分割領域AR4の原点をロボット座標系に変換し、変換して得られるZrの値をZr4(0)とする。キャリブレーション部223は、式(B5)の逆変換式に従って、分割領域AR5の原点をロボット座標系に変換し、変換して得られるZrの値をZr5(0)とする。キャリブレーション部223は、式(B6)の逆変換式に従って、分割領域AR6の原点をロボット座標系に変換し、変換して得られるZrの値をZr6(0)とする。
上述のキャリブレーションの結果は、ロボット制御装置200内のメモリ220に蓄積される。ロボット制御装置200内の位置制御部210は、メモリ220に蓄積されているキャリブレーションの結果に従って、以下のようにしてワークWの位置を計算する。
ワークWの現在の座標値(Xr,Yr)がロボット座標系の領域R−AR1に含まれる場合は、選択部221は、ワークWがコンベア座標空間の分割領域AR1に属すると判断し、分割領域AR1と分割領域AR1のコンベア座標系を選択する。座標変換部222は、式(B1)に従って、ワークWのロボット座標系での座標値(Xr,Yr,Zr1(0))をコンベア座標系の座標値(Xc1,Yc1,Zc1)に変換する。
ワークWの現在の座標値(Xr,Yr)がロボット座標系の領域R−AR2に含まれる場合は、選択部221は、ワークWがコンベア座標空間の分割領域AR2に属すると判断し、分割領域AR2と分割領域AR2のコンベア座標系を選択する。座標変換部222は、式(B2)に従って、ワークWのロボット座標系での座標値(Xr,Yr,Zr2(0))をコンベア座標系の座標値(Xc2,Yc2,Zc2)に変換する。
ワークWの現在の座標値(Xr,Yr)がロボット座標系の領域R−AR3に含まれる場合は、選択部221は、ワークWがコンベア座標空間の分割領域AR3に属すると判断し、分割領域AR3と分割領域AR3のコンベア座標系を選択する。座標変換部222は、式(B3)に従って、ワークWのロボット座標系での座標値(Xr,Yr,Zr3(0))をコンベア座標系の座標値(Xc3,Yc3,Zc3)に変換する。
ワークWの現在の座標値(Xr,Yr)がロボット座標系の領域R−AR4に含まれる場合は、選択部221は、ワークWがコンベア座標空間の分割領域AR4に属すると判断し、分割領域AR4と分割領域AR4のコンベア座標系を選択する。座標変換部222は、式(B4)に従って、ワークWのロボット座標系での座標値(Xr,Yr,Zr4(0))をコンベア座標系の座標値(Xc4,Yc4,Zc4)に変換する。
ワークWの現在の座標値(Xr,Yr)がロボット座標系の領域R−AR5に含まれる場合は、選択部221は、ワークWがコンベア座標空間の分割領域AR5に属すると判断し、分割領域AR5と分割領域AR5のコンベア座標系を選択する。座標変換部222は、式(B5)に従って、ワークWのロボット座標系での座標値(Xr,Yr,Zr5(0))をコンベア座標系の座標値(Xc5,Yc5,Zc5)に変換する。
ワークWの現在の座標値(Xr,Yr)がロボット座標系の領域R−AR6に含まれる場合は、選択部221は、ワークWがコンベア座標空間の分割領域AR6に属すると判断し、分割領域AR6と分割領域AR6のコンベア座標系を選択する。座標変換部222は、式(B6)に従って、ワークWのロボット座標系での座標値(Xr,Yr,Zr6(0))をコンベア座標系の座標値(Xc6,Yc6,Zc6)に変換する。
また、ピッキング制御部240は、コンベア座標系の座標値(Xc1,Yc1,Zc1)、(Xc2,Yc2,Zc2)、(Xc3,Yc3,Zc3)、(Xc4,Yc4,Zc4)、(Xc5,Yc5,Zc5)、または(Xc6,Yc6,Zc6)に基づいて、ワークWを把持するための制御信号を出力する。
以上のように、本実施の形態によれば、コンベアの幅方向を3等分する左側の線と右側の線でコンベアのトラッキング範囲を幅方向に3分割し、さらに、コンベアの進行方向を2等分する中間ラインでコンベアのトラッキング範囲をコンベアの進行方向に2分割する。本実施の形態によれば、分割範囲ごとのコンベア座標系を用いて、ワークの位置を認識して、ワークを把持するので、コンベアのたわみ、膨らみ、または傾斜量が、トラッキング範囲の分割範囲ごとに異なっていても、ワークを正しく把持することができる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。