本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
<A.システム構成>
図1は、本発明の実施の形態に係る視覚センサ100を利用したコンベアトラッキングシステムの構成を示す模式図である。図1に示すコンベアトラッキングシステムは、2つの搬送装置(コンベア)10および20を含む。コンベア10および20は、それぞれ駆動ローラ12および22によって回転駆動される。以下では、コンベア10および20をそれぞれライン1およびライン2とも称す。図1に示す例では、ライン1は、紙面右側に移動し、ライン2は、紙面左側に移動する。ライン1には、搬出装置30等によって紙面左側からワークWがランダムに提供される。このライン1上のワークWは、紙面左側から紙面右側へ移動する。ワークWとしては、典型的には、お菓子等の食品や各種の錠剤等が想定される。
本実施の形態に係る視覚センサ100は、ライン1上の所定位置に設けられる。後述するように、視覚センサ100は、ワークなどの被写体を撮像するための撮像部と当該撮像部によって撮像された画像を処理するための画像処理部とを一体的に構成したものである。但し、撮像部と画像処理部とを別体として構成してもよい。
視覚センサ100は、その撮像範囲がライン1の幅方向(搬送方向とは直交する方向)の全体を含むように設定される。そして、視覚センサ100が所定周期で撮像を行うこと
で、ライン1上をランダムに流れてくるワークWを順次撮像できる。視覚センサ100は、この順次撮像される画像に対してパターンマッチング等の計測処理を行うことで、各ワークの位置決めおよびトラッキング処理を行う。このように、視覚センサ100の撮像部(図3に示す撮像部110)は、搬送装置であるコンベア10上を搬送されるワークWを撮像するように配置されている。そして、この撮像部に画像処理装置(図3に示す画像処理部120)が接続される。
ライン1の搬送方向には、視覚センサ100の下流側に、ワークWを把持してライン2へ移動させるロボット300が配置されている。このロボット300は、ワークWを把持するためのハンド先端を有しており、このハンド先端を目的位置に移動させることで、ライン2上のワークを把持する。すなわち、ロボット300は、搬送装置であるコンベア10(ライン1)の搬送経路において、視覚センサ100の撮像部の撮像範囲より下流側に配置されるとともにワークWを取り扱う移動機械に相当する。より具体的には、ロボット300は、そのハンド先端を目的のワークWに位置決めして、ピックアップしてライン2上に整列する。
さらに、ロボット300は、ライン1に沿って移動するための移動機構400(図2参照)上に配置されており、所定の稼動範囲に亘って移動する。このロボット300の稼動範囲をトラッキング範囲とも称す。
ロボット300のトラッキング処理および位置決め処理については、ライン1に設けられたエンコーダ14による検出結果を用いて制御される。このエンコーダ14は、典型的には、ロータリーエンコーダが採用され、回転に伴ってパルス信号を発生する。この発生するパルス信号のパルス数をカウントすることで、コンベア10(ライン1)と連結されたローラの回転数、すなわち、エンコーダ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へ各種の指示を与える。
図1に示すコンベアトラッキングシステムにおいては、撮像範囲を重複させて撮像を行った場合にワークが重複して検出されることを回避するために、重複排除機能を有する。特に、この重複排除機能を実現するための重複排除ロジックを視覚センサ100内に実装する。そして、視覚センサ100は、重複排除した上で、視覚的に検出されたワークの位置情報をロボット制御装置200へ送信する。このように重複排除ロジックを視覚センサ
100に実装することで、汎用的なロボット制御装置であっても、コンベアトラッキング等などの処理をより正確に行うことができる。この重複排除機能の詳細については、後述する。
<B.位置決めおよびトラッキング処理>
次に、図1に示すコンベアシステムにおける位置決めおよびトラッキング処理の詳細について説明する。
図2は、本発明の実施の形態に係る視覚センサ100を利用したコンベアトラッキングシステムにおける位置決めおよびトラッキング処理を説明するための図である。図2を参照して、視覚センサ100は、内蔵の撮像部を用いてライン1を撮像する。視覚センサ100の撮像動作は、ロボット制御装置200からの撮像指示に応じて開始される。この撮像指示は、視覚センサ100とロボット制御装置200とを接続するネットワークNW経由で搬送される。このネットワークNWは、典型的には、イーサネット(登録商標)などの汎用的なネットワークを採用することができる。
視覚センサ100は、撮像指示をロボット制御装置200から受信するように構成されており、この撮像指示に応答して撮像を開始する。これにより、視覚センサ100は、撮像範囲を写した画像を順次取得する。そして、視覚センサ100は、当該画像に対して計測処理(典型的には、予め登録されたワークWについてのモデル画像に基づくパターンマッチング処理、あるいは、2値化処理)を実行する。さらに、視覚センサ100は、この計測処理によって得られた各ワークWの撮像時の位置情報(X,Y,θ)をロボット制御装置200へ送信する。
このように、視覚センサ100は、撮像部の撮像によって得られた画像に対して計測処理を行うことで、画像中の予め登録されたワークに対応する領域の位置情報を取得する。このとき、視覚センサ100は、搬送装置(コンベア)10上のワークWの位置情報を管理する。すなわち、視覚センサ100は、搬送装置(コンベア)上のワークの位置情報を管理する管理手段を有する。視覚センサ100は、新たに取得されたワークWの位置情報のうち、既にその位置情報が取得されているものを除外する処理(重複排除処理)を実行した上で、新たに取得されたワークWの位置情報のみをロボット制御装置200へ送信する。
このように、視覚センサ100からロボット制御装置200へ送信されるワークWの位置情報は、既に重複排除がなされた後のものであるので、ロボット制御装置200側では、特段の処理を行うことなく、受信した位置情報をそのまま利用して把持動作を行えばよい。
視覚センサ100から送信される位置情報は、コンベア10上のワークWの位置(X,Y)およびワークWの回転角度(θ)を含む。
また、ワークWの座標値(X,Y)は、ロボット制御装置200における処理を簡素化する観点から、ロボット300を制御するための座標系に換算した値が用いられる。すなわち、視覚センサ100は、ワークWの位置情報をロボット300の座標系で定義された値としてロボット制御装置200へ送信する。
例えば、図2に示すように、ロボット300のハンド先端(ピッキング)位置をX座標(コンベアの搬送方向)およびY座標(コンベアの搬送方向とは直交する方向)で定義しておき、このXY座標系(以下、「ロボット座標系」とも称す。)を用いてパターンマッチング処理により検出された各ワークの位置を特定する。このように、位置情報は、撮像
によって取得された画像中の予め登録されたワークに対応する領域を移動機械であるロボット300の座標系「ロボット座標系」で表した座標値を含む。また、各ワークWの計測された位置情報をロボット座標系の値として出力できるように、視覚センサ100およびロボット制御装置200は、予めキャリブレーションされている。このキャリブレーションについては、後述する。
また、ワークWの回転角度(θ)は、ワークWのモデル画像を基準とした場合の回転角度を意味する。すなわち、位置情報は、予め登録されたワークの姿勢を基準とした、画像中の当該ワークに対応する領域の回転角度をさらに含む。ワークWの形状によっては、この回転角度の情報に基づいて、ロボット300のハンド先端の回転角度などが適宜制御される。
ロボット制御装置200は、エンコーダ14からのパルス信号に含まれるパルス数をカウントし、予め定められた値以上の数のパルスが入力されたタイミングで、ネットワークNWを経由して視覚センサ100に対して撮像指示を送出する。
視覚センサ100からの各ワークの位置情報は、ネットワークNWを介してロボット制御装置200へ送信され、ロボット制御装置200の内部にあるメモリに格納される。また、ロボット制御装置200は、エンコーダ14からのパルス信号を受けるたびに、メモリ内に格納されているすべてのワークWの座標値(X,Y)を更新する。これは、ロボット制御装置200のメモリ上において、実際にベルトコンベア上を搬送するワークWをトラッキングするためである。そして、いずれかのワークWの更新後の位置情報(座標値)がロボット300のトラッキング範囲に入ると、ロボット300に対して把持動作に必要な指示を与える。
ライン1に設けられたエンコーダ14の検出結果に応じて生成されるパルス信号は、視覚センサ100およびロボット制御装置200へ入力されるように構成されている。視覚センサ100およびロボット制御装置200は、パルス信号に含まれるパルス数をカウントするためのエンコーダカウンタをそれぞれ有している。エンコーダ14からのパルス信号は、並列的に、視覚センサ100およびロボット制御装置200に入力されるので、それぞれのエンコーダカウンタを同じタイミングで初期化(カウンタリセット)しておけば、その後に入力されるパルス信号についてのカウント値は、互いに同じ値、すなわち、カウント値についての同期をとることができる。
より具体的には、視覚センサ100およびロボット制御装置200には、いずれも、エンコーダ14からのパルス信号に含まれる1パルスあたりのコンベアの移動量が予め設定されている。さらに、視覚センサ100およびロボット制御装置200のそれぞれのエンコーダカウンタについても、互いに同一のパラメータ(カウンタ最大値、カウンタ最小値、1パルスに対する増加値など)が設定されている。すなわち、視覚センサ100のエンコーダカウンタは、ロボット制御装置200のエンコーダカウンタとの間で、カウントに関して同一のパラメータが設定されている。
また、これらのエンコーダカウンタによるカウント値は、生産ラインの稼動前に0に初期化される。すなわち、視覚センサ100のエンコーダカウンタは、パルス信号に含まれるパルス数のカウント開始前に、ロボット制御装置200のエンコーダカウンタとともに、リセットされる。
このように本実施の形態においては、視覚センサ100とロボット制御装置200との間でコンベア10の搬送経路における移動量を同期して保持する手段が実現される。
上述のような構成の下、視覚センサ100は、ロボット制御装置200からの撮像指示に従って実際に撮像を行ったときのカウント値を各ワークの位置情報に付加して、ロボット制御装置200へ送信する。すなわち、視覚センサ100は、ワークWの位置情報と対応するコンベア10における移動量とをロボット制御装置200へ送信する。
上述したように、視覚センサ100とロボット制御装置200との間でカウント値を同期して保持しているため、ロボット制御装置200から撮像指示を送出したタイミングと、撮像指示に応答して視覚センサ100が実際に撮像を行ったタイミングとの間にライムラグがあっても、共通の時間軸上で、すなわち同期されたカウント値を用いて、実際に撮像が行われたタイミングが特定される。
このように、視覚センサ100は、検出されたワークWの位置情報と、当該位置情報の取得に用いた画像を撮像したときのコンベア10における移動量とをロボット制御装置200へ送信する。このワークWの位置情報の取得に用いた画像を撮像したときの移動量は、カウンタによるカウント値で示される。
ロボット制御装置200では、視覚センサ100から受信した撮像時のカウント値を用いて、対応する位置情報を補正した上で、自装置のメモリに格納する。これによって、ライン速度が高く、撮像指示の出力から現実の撮像までのタイムラグが、ロボット300における位置決めおよびトラッキング処理に影響を与えるという事態を回避できる。
<C.ハードウェア構成>
図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メモリなどの不揮発性記憶装置とからなる。
特に、本実施の形態に係る視覚センサ100においては、CPU122がプログラムを実行することで、重複排除ロジック122aが実現される。もちろん、重複排除ロジック122aは、その全部または一部をハードウェアとして実装してもよい。また、メモリ124は、重複排除ロジック122aが利用する、前回検出バッファ124aおよび最新検出バッファ124bを含む。このバッファ124aおよび124bは、連続する2回の撮像で得られた画像に対する計測処理の結果を保持する。すなわち、前回検出バッファ124aは、1回前の計測処理によって検出された座標値および対応するカウント値(エンコ
ーダ値)を格納し、また、最新検出バッファ124bは、最新の計測処理によって検出された座標値および対応するカウント値(エンコーダ値)を格納する。これらのバッファ124aおよび124bに保持された座標値を互いに比較することで、同一のワークの座標が重複して検出されることを回避する。メモリ124には、さらに、これらのバッファ124aおよび124bには、重複チェックするための領域(図示しない)が設けられている。すなわち、コンベア10上のワークの位置情報を管理する管理手段は、前回検出バッファ124aおよび最新検出バッファ124bによって実現される。
さらに、メモリ124は、撮像部110によって撮像された画像における座標系(以下、「画像座標系」とも称す。)上の座標値をロボット座標系の座標値として出力するためのパラメータセット124cを保持する。このパラメータセット124cの取得方法については、後述する。
撮像制御部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と、移動制御部250とを含む。
演算処理部210は、視覚センサ100からの位置情報に基づいて、ロボット300および移動機構400に対してコマンドを出力するための演算を行うプロセッサであり、それぞれのワークWをトラッキングするためのメモリ220を含む。メモリ220には、視覚センサ100の計測処理によって検出されたそれぞれのワークWの位置情報が格納される。演算処理部210は、対象のコンベアの移動(エンコーダ14からのパルス信号に基づいて検出)に応じて、それぞれのワークWの位置情報を順次更新する。
通信インターフェイス(I/F)228は、視覚センサ100の画像処理部120との間で各種データを遣り取りする。典型的には、視覚センサ100およびロボット制御装置200とはイーサネット(登録商標)を介して接続されており、通信インターフェイス228は、このようなイーサネット(登録商標)に準拠したハードウェアである。
入出力インターフェイス230は、ロボット制御装置200から外部へ各種信号を出力
し、あるいは、外部からの各種信号を入力する。特に、入出力インターフェイス230は、エンコーダ14で生成されるパルス信号を受け入れ、その信号をデジタル信号に変換してエンコーダカウンタ232へ出力する。
エンコーダカウンタ232は、エンコーダ14からのパルス信号に含まれるパルス数をカウントする。このエンコーダカウンタ232は、基本的には、演算処理部210の演算サイクルとは独立して動作するため、エンコーダ14からのパルス信号に含まれるパルス数を取り逃すことがない。
ピッキング制御部240は、演算処理部210などからの内部コマンドに従って、接続されているロボット300における把持動作を制御する。ピッキング制御部240は、ロボット300のそれぞれの可動軸における目標位置などを送信するインターフェイスと、ロボット300のそれぞれの可動軸における現在位置を受信するインターフェイスとを有している。
移動機構400は、演算処理部210などからの内部コマンドに従って、接続されているロボット300を駆動する移動機構400におけるトラッキングを制御する。移動機構400は、移動機構400の目標位置および目標速度などを送信するインターフェイスと、移動機構400の移動軸における現在位置を受信するインターフェイスとを有している。
<D.重複排除ロジック>
(d1:概要)
次に、本実施の形態に係るコンベアトラッキングシステムにおける重複排除ロジックについて説明する。
図4は、本発明の実施の形態に係るコンベアトラッキングシステムにおける重複排除機能を説明するための図である。図4(a)を参照して、視覚センサ100は、コンベア10が所定距離だけ移動する毎に撮像を行う。このとき、この撮像間隔は、あるタイミングでの撮像に対応する撮像範囲とその後続のタイミングでの撮像に対応する撮像範囲とがある程度の幅で重複するように設定される。すなわち、撮像部110の撮像周期は、時間的に連続する2つの撮像タイミングにおける撮像範囲が互いに重複するように設定されている。この重複範囲は、検出対象のワークの大きさ(最大値)より大きく設定されることが好ましい。これにより、撮像範囲の下流側の境界線上に位置するワークが次回の撮像範囲内に完全に収まるため、パターンマッチング等のサーチ処理において検出できないワークをなくすことができる。なお、撮像動作は、ロボット制御装置200からの撮像指示に応答して実行されるようにしてもよいが、視覚センサ100の内部で撮像タイミングを指示するトリガーを発生するようにしてもよい。
但し、このように撮像範囲および撮像タイミングを設定すると、連続する2回の撮像およびそれらの撮像によって得られた画像に対する計測処理によって、同一のワークWが2回(重複して)検出されることがある。このような場合、2回目の検出結果を無効化して、出力しないようにする処理が重複排除機能である。
図4(a)に示すように、ワークW4およびW5は、今回の撮像範囲および前回の撮像範囲のいずれにも含まれており、この結果、ワークW4およびW5は、いずれの計測結果においてもその座標値が出力されることになる。
すなわち、図4(b)に示すように、前回の撮像範囲には、ワークW1〜W5が含まれており、それぞれの座標値(x1,y1),(x2,y2),(x3,y3),(x4,
y4),(x5,y5)が撮像タイミングにおけるカウント値Cb(コンベア10の移動量に相当)と対応付けて、前回検出バッファ124aに格納される。この状態において、今回の撮像が行われたとする。このとき、今回の撮像範囲には、ワークW4〜W7が含まれており、それぞれの座標値(xa,ya),(xb,yb),(xc,yc),(xd,yd)が撮像タイミングにおけるカウント値Cn(コンベア10の移動量に相当)と対応付けて、最新検出バッファ124bに格納される。
このように、管理手段として用いられる、前回検出バッファ124aおよび最新検出バッファ124bは、ワークの位置情報とコンベア10における移動量(カウント値)とを対応付けて管理する。
さらに、前回検出バッファ124aに格納されている座標値を現在のカウント値に対応した座標値に更新した上で、最新検出バッファ124bに格納されている座標値との重複が判断される。図4に示す例では、連続する2回の撮像によって得られた画像に対する計測処理によって、ワークW3およびW4の座標値が検出されることになるが、上述のような重複排除処理を実行することで、2回目の検出結果は出力されないようになる。
図4に示すように、視覚センサ100においては、計測結果である座標値と撮像時のカウント値(搬送経路における移動量)とを対応付けて管理することになる。なお、図4に示す例では、最新の2回分の計測結果と対応するカウント値とが関連付けて管理される例を示すが、より多くの撮像回数にわたる計測結果を保存しておくようにしてもよい。また、図4には示していないが、ワークの回転角度についても、バッファ124aおよび124bで管理するようにしてもよい。
(d2:座標値に対する更新処理および重複判断処理)
次に、上述のような重複排除処理について、より詳細に説明する。
まず、キャリブレーションによって、エンコーダ14からの1カウントあたりのワークの移動量dX(X方向)およびdY(Y方向)が予め取得されているとする。このエンコーダ14からの1カウントあたりのワークの移動量dXおよびdYが予め取得されているため、連続する2回の撮像によって得られた計測結果の間で、どれだけ距離がずれた位置関係にあるのかを判断することができる。また、ワークの重複を判断するための重複判断距離しきい値Tが予め設定されているとする。
これらのパラメータを用いて、同一のワークが重複して検出された座標値を特定することができ、これによって、ロボット制御装置200へ送信される位置情報へのこれらの重複した座標値の混入を排除できる。
具体的な処理手順としては、以下の通りである。
(1) ロボット制御装置200からの撮像指示に応答して、撮像部110を用いて撮像範囲を撮像した画像を取得する。
(2) 取得した画像に対して計測処理を実行する。
(3) 計測処理によって得られた検出結果(画像座標系におけるワークの座標値)をロボット座標系の座標値に変換する。
(4) 取得された検出結果(ロボット座標系の座標値)および対応するカウント値を最新検出バッファ124bに格納する。
(5) 前回検出バッファ124aに何らかの座標値が格納されていれば、前回検出バ
ッファ124aに格納されているすべてのワークの座標値を、前回の撮像タイミングと最新の撮像タイミングとの間のカウント値の差から、最新の撮像タイミングに対応する座標値に更新する。すなわち、CPU122(重複排除ロジック122a)は、管理手段である前回検出バッファ124aによって管理されているワークの位置情報を撮像部110の撮像が行われたタイミングに対応する値に更新する。より具体的には、最新の撮像タイミングに対応するカウント値をCnとし、前回の撮像タイミングに対応するカウント値をCbとすると、前回検出バッファ124aに格納されている座標値(X,Y)は以下のような式に従って変換される。
X←X+dX・(Cn−Cb)
Y←Y+dY・(Cn−Cb)
すなわち、CPU122(重複排除ロジック122a)は、撮像部110の撮像が行われたタイミングでのコンベア10における移動量と各ワークの位置情報に対応するコンベア10における移動量との差分を用いて、ワークの位置情報を補正する。
(6) 最新検出バッファ124bに格納されているすべての座標値と、(5)において変換されたすべての座標値との間の距離をそれぞれ算出し、その算出された距離が重複判断距離しきい値Tよりも小さければ、最新検出バッファ124bの対応する行のチェック欄にマークする(フラグを立てる)(図4(b)参照)。すなわち、CPU122(重複排除ロジック122a)は、更新後の位置情報と今回の撮像に伴う計測処理によって取得されたワークの位置情報とを比較することで、撮像部110の撮像範囲内に新たに搬送されたワークWを特定する。このとき、CPU122(重複排除ロジック122a)は、更新後の位置情報と計測処理によって取得されたワークの位置情報との間の偏差が予め定められた値(重複判断距離しきい値T)より小さい場合に、比較対象の位置情報が同一のワークを示すものであると判断する。
(7) 最新検出バッファ124bに格納されている座標値のうち、チェック欄にマークされていない座標値のみを順次出力する。すなわち、CPU122(重複排除ロジック122a)は、撮像部110の撮像範囲内に新たに搬送されたものであると特定されたワークの位置情報をロボット制御装置200へ送信する。
(8) 前回検出バッファ124aの値をクリアし、現在の最新検出バッファ124bに格納されている値にて前回検出バッファ124aを上書きする。
(d3:トラッキングシステムにおける制御動作)
次に、本実施の形態に係るトラッキングシステムにおける制御動作についてより詳細に説明する。図5は、本発明の実施の形態に係るトラッキングシステムにおける制御動作を示すシーケンス図である。
図5を参照して、まず、視覚センサ100およびロボット制御装置200のいずれに対しても、互いに同一のパラメータ(カウンタ最大値、カウンタ最小値、1パルスに対する増加値など)が設定される(ステップS1およびS2)。そして、視覚センサ100およびロボット制御装置200のいずれに対しても、それぞれのエンコーダカウンタに対するリセット(カウンタリセット)が実行される(ステップS3およびS4)。
ステップS1〜S4に示す処理は、視覚センサ100とロボット制御装置200との間で、カウント値を実質的に同期して保持しているための処理である。すなわち、エンコーダカウンタについての共通パラメータの設定およびカウンタリセットが実行されて、視覚センサ100およびロボット制御装置200との間で、エンコーダ14からのパルス信号に含まれるパルスの数についてのカウント動作が同期される。
続いて、ロボット制御装置200の演算処理部210は、エンコーダ14からのパルス信号に含まれるパルス数が前回撮像したときの値から所定値以上増加したか否かを判断する(ステップS5)。図5に示すシーケンス図においては、コンベア10が所定距離だけ移動する毎に、ロボット制御装置200が視覚センサ100に対して撮像指示を与える場合の処理例を示す。このステップS5の判断処理は、エンコーダカウンタ232での現在のカウント値が撮像タイミングに相当する距離以上増加したか否かを判断することになる。
エンコーダ14からのパルス信号に含まれるパルス数が所定値以上に到達すれば、ロボット制御装置200の演算処理部210は、視覚センサ100に対して、撮像指示を送信する(ステップS6)。この撮像指示は、ネットワークNWを介して、視覚センサ100へ伝送される。視覚センサ100の画像処理部120は、ロボット制御装置200からの撮像指示に応答して、視覚センサ100の画像処理部120は、エンコーダカウンタ132を参照して、撮像時のカウント値(Cn)を取得する(ステップS7)。なお、ステップ5およびステップ6の代わりに、視覚センサ100においてカウンタ132を用いて撮像タイミングを判断してもよい。
続いて、視覚センサ100の画像処理部120は、撮像部110に撮像を実行させる(ステップS8)。撮像部110が撮像して得られた画像は、画像処理部120へ伝送される。画像処理部120は、撮像部110からの画像に対して計測処理を実行する(ステップS9)。さらに、画像処理部120は、ステップS9における計測処理によって得られた計測結果(画像座標系におけるワークの座標値(xi,yi))をロボット座標系におけるワークの座標値(X,Y)に変換する(ステップS10)。さらに、画像処理部120は、ステップS10において変換した検出結果(ロボット座標系の座標値)および対応するカウント値(Cn)を最新検出バッファ124bに格納する(ステップS11)。
続いて、画像処理部120は、前回検出バッファ124aに何らかの検出結果(ロボット座標系の座標値)が格納されているか否かを判断し(ステップS12)、前回検出バッファ124aに何らかの検出結果(ロボット座標系の座標値)が格納されていれば(ステップS12においてYES)、前回検出バッファ124aに格納されているすべてのワークの座標値を、前回の撮像タイミングと最新の撮像タイミングとの間のカウント値の差から、最新の撮像タイミングに対応する座標値に更新する(ステップS13)。
続いて、画像処理部120は、最新検出バッファ124bに格納されているすべての座標値と、ステップS13において更新されたすべての座標値との間の距離をそれぞれ算出し(ステップS14)、その算出された距離が重複判断距離しきい値Tよりも小さいものについて、最新検出バッファ124bの対応する行をチェックする(ステップS15)。
続いて、画像処理部120は、最新検出バッファ124bに格納されている座標値のうち、チェックされていない座標値のみを、ステップS7において取得したカウント値C0とともに、ロボット制御装置200へ送信する(ステップS16)。
最終的に、画像処理部120は、前回検出バッファ124aの値をクリアし、現在の最新検出バッファ124bに格納されている値にて前回検出バッファ124aを上書きする(ステップS17)。
ロボット制御装置200の演算処理部210は、視覚センサ100からのワークWについての計測結果(位置情報および回転角度)ならびに対応するカウント値を格納する(ステップS18)。そして、処理はステップS5にリターンする。
なお、視覚センサ100における撮像タイミングを示すカウント値が付加されて計測結果が送信されるので、ロボット制御装置200では、各計測値に対応するカウント値に基づいて正確なトラッキング処理を行うことができる。すなわち、本実施の形態に係るコンベアトラッキングシステムにおいては、ロボット制御装置200が撮像指示を送信するタイミングを厳密に制御する必要はなく(言い換えれば、コンベアの搬送速度に応じた周期で撮像指示が送信されれば十分である)、かつ、視覚センサ100からロボット制御装置200への計測結果の送信遅延は問題にならない。
<E.キャリブレーション>
次に、上述したようなパラメータ(図3に示すパラメータセット124c)を取得するためのキャリブレーションについて説明する。
図6は、本発明の実施の形態に係るキャリブレーションを説明するための図である。図7は、図6に示すキャリブレーションによって取得されるパラメータセットの一例を示す図である。図8〜図10は、本発明の実施の形態に係るキャリブレーションの手順を説明するための図である。
図6を参照して、本実施の形態に係るキャリブレーションにおいては、主として、以下の2つの観点でキャリブレーションが行われる。
(1) ロボット−コンベア間のキャリブレーション:
このキャリブレーションにおいては、エンコーダ14からのパルス信号に含まれる1パルスあたりのコンベアの移動量が取得される。このコンベアの移動量は、図7の下から2段目に示されるdXおよびdYに相当する。図7に示すように、コンベアの移動量はベクトル量であるので、ロボット座標系のそれぞれの軸について値が取得されることになる。このコンベアの移動量は、ロボット300がエンコーダ14からのパルス信号を受けて、コンベア10上のワーク位置を追跡(トラッキング)するために必要なパラメータである。
(2) 視覚センサ−ロボット間のキャリブレーション:
視覚センサ100によって計測されたワークの位置情報(画像座標系の座標値(xi,yi)[pixel])を、ロボット座標系の座標値(X,Y)[mm]に変換するための関係式が取得される。この関係式は、図7の最下段に示される6個のパラメータA〜Fによって定義される。
なお、図6に示すように、キャリブレーションを行うためには、ロボット300の位置情報(ロボット座標値)が必要であるので、ロボット制御装置200からネットワークNWを介して視覚センサ100にこれらの位置情報が転送される。
次に、キャリブレーションの手順についてより詳細に説明する。なお、後述するように、本実施の形態に従うコンベアシステムにおいては、ユーザは、上述したようなキャリブレーションの意味を理解せずとも、指定された手順に従って操作するだけで、容易にキャリブレーションを行うことができる。より具体的には、本実施の形態に係るキャリブレーションは、図8〜図10に示す3段階の手順によって実現される。
なお、本実施の形態に係るキャリブレーションにおいては、図7の最上段に示すターゲットパターンが描画されたキャリブレーション用シートSが用いられる。このキャリブレーション用シートSに示されたターゲットパターンは、その内部が約90°ずつに塗り分けられた5個の円(マーク)を含む。なお、後述するように、基本的には4個のマークを
用いてキャリブレーションが行われるが、追加的に配置された1個のマークは、キャリブレーション用シートSの配置向きを所定方向に統一するために用いられる。
(第1段階)
第1段階としては、図8に示すように、ユーザは、ターゲットパターンが描画されたキャリブレーション用シートSを視覚センサ100(撮像部110)の視野内に配置する。そして、ユーザは、視覚センサ100に対して撮像指示を与える。すると、視覚センサ100は、撮像によって得られた画像(ターゲットパターンが被写体として含まれる画像)に対して計測処理を行い、ターゲットパターンに含まれる四隅に配置された4個のマークについての各中心点の座標値を決定する。これによって、ターゲットパターンに含まれる4個のマークについての画像座標系の座標値[pixel]がそれぞれ取得される。この取得される4個の座標値が、図7の最上段に示される(xi1,yi1)、(xi2,yi2)、(xi3,yi3)、(xi4,yi4)に相当する。
(第2段階)
第2段階としては、図9に示すように、ユーザは、コンベア10を動かしてターゲットパターンが描画されたキャリブレーション用シートSをロボット300のトラッキング範囲(稼動範囲)内に配置するとともに、ロボット300を操作して、ターゲットパターンに含まれる4個のマークとロボット300との位置関係を対応付ける。
より具体的には、まず、ユーザは、コンベア10を動かして、キャリブレーション用シートSをロボット300のトラッキング範囲(稼動範囲)内に配置する。なお、このコンベア10の移動前(キャリブレーション開始時)のカウント値が、予め取得されているものとする。このカウント値が図7の上から2段目に示されるエンコーダカウント値E1(キャリブレーション開始時)に相当する。
続いて、ユーザは、ロボット制御装置200に付属しているティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をキャリブレーション用シートS上の1つのマークと対応するように位置決めする。ユーザは、この位置決めされた状態で指示を与えることで、ロボット制御装置200が把握しているロボット300の位置情報(ロボット300のハンド先端の位置を示すロボット座標系での座標値)が視覚センサ100へ送信される。このロボット300のハンド先端の位置決めして、および、位置決め状態におけるロボット300の位置情報の視覚センサ100へ送信する処理は、ターゲットパターンに含まれる4個のマークのすべてに対して繰り返し実行される。
このような手順によって、ターゲットパターンに含まれる4個のマークに対応するロボット300の位置情報がそれぞれ取得される。この取得される4個のマークに対応するロボット300の位置情報が、図7の上から3段目に示される(X1,Y1)、(X2,Y2)、(X3,Y3)、(X4,Y4)に相当する。
なお、図9に示すように、キャリブレーション用シートSがロボット300のトラッキング範囲(稼動範囲)内に配置された状態は、4個のマークすべてに対応するロボット300の位置情報が視覚センサ100へ送信されるまで維持される。
また、視覚センサ100は、図9に示す状態におけるカウント値についても格納する。このカウント値が、図7の上から2段目に示されるエンコーダカウント値E2(コンベアをロボット稼動範囲(上流)まで移動させたとき)に相当する。
(第3段階)
第3段階としては、図10に示すように、ユーザは、コンベア10をさらに動かしてキ
ャリブレーション用シートSをロボット300のトラッキング範囲(稼動範囲)の最下流の位置に配置するとともに、ロボット300を操作して、ターゲットパターンに含まれる1個のマークとロボット300との位置関係を対応付ける。
より具体的には、まず、ユーザは、コンベア10を動かして、キャリブレーション用シートSをロボット300のトラッキング範囲(稼動範囲)の下流側端部に配置する。
続いて、ユーザは、ティーチングペンダント2100を操作するなどによって、ロボット300のハンド先端をキャリブレーション用シートS上の1番目のマーク(第2段階で座標値(X1,Y1)を取得したマーク)と対応するように位置決めする。ユーザは、この位置決めされた状態で指示を与えることで、ロボット制御装置200が把握しているロボット300の位置情報(ロボット300のハンド先端の位置を示すロボット座標系での座標値)が視覚センサ100へ送信される。
このような手順によって、ターゲットパターンに含まれる1番目のマークに対応するロボット300の位置情報がそれぞれ取得される。この取得される1番目のマークに対応するロボット300の位置情報が、図7の上から4段目に示される(X5,Y5)に相当する。
また、視覚センサ100は、図10に示す状態におけるカウント値についても格納する。このカウント値が、図7の上から2段目に示されるエンコーダカウント値E3(コンベアをロボット稼動範囲(下流)まで移動させたとき)に相当する。
(パラメータ算出処理)
上述したような第1〜第3段階の処理によって取得されたパラメータを用いて、まず、エンコーダ14からの1カウントあたりのワークの移動量dXおよびdYが算出される。より具体的には、以下の式に従って算出される。
dX=(X5−X1)/(E3−E2)
dY=(Y5−Y1)/(E3−E2)
これらの式は、図9に示す状態と図10に示す状態との間で、ロボット300のハンド先端がキャリブレーション用シートS内の同一のマークに位置決めされた場合に生じる、カウント値の変化量に対するロボット300の位置情報の変化量を算出することを意味する。これらの演算式によって、1カウントあたりのワークの移動量dXおよびdYが決定される。すなわち、ロボット−コンベア間のキャリブレーションが実現される。
また、図8において取得されるカメラ座標系の座標値(xi1,yi1),(xi2,yi2),(xi3,yi3),(xi4,yi4)と、図9において取得されるロボット座標系の座標値(X1,Y1),(X2,Y2),(X3,Y3),(X4,Y4)との対応関係に基づいて、座標系の変換に係る変換式の6個のパラメータA〜Fが決定される。すなわち、公知の手法を用いて、以下の式を満たす(あるいは、誤差が最小となる)パラメータA〜Fが決定される。
X=A・xi+B・yi+C
Y=D・xi+E・yi+F
これにより、視覚センサ−ロボット間のキャリブレーションが実現される。
<F.ガイダンス機能>
本発明の実施の形態に係る視覚センサを利用したコンベアトラッキングシステムにおいては、上述したようなキャリブレーションをユーザが容易に行えるように、ガイダンス機
能が提供される。このようなガイダンス機能は、後述するように視覚センサ100が提供するようにしてもよいが、図1に示す操作表示装置500が視覚センサ100と協働することで提供してもよい。以下の説明においては、操作表示装置500がガイダンス機能を提供する構成について例示する。すなわち、操作表示装置500がガイダンス装置として機能する例を示す。但し、ガイダンス機能が視覚センサ100の単独で提供される場合には、視覚センサ100をガイダンス装置ともみなすことができる。さらに、ガイダンス機能を後述するようなサポート装置600を用いて実現することもできる。この場合には、サポート装置600をガイダンス装置ともみなすことができる。
(f1:ハードウェア構成)
図11は、本発明の実施の形態に係る視覚センサ100と接続可能な操作表示装置500のハードウェア構成について示す模式図である。図11を参照して、操作表示装置500は、表示部510と、タッチパネル520と、CPU(Central Processing Unit)5
22と、メモリ524と、ハードディスク(HDD)526と、通信インターフェイス(I/F)528と、入力コントローラ530と、表示コントローラ532とを含む。これらのコンポーネントは、バス534を介して互いにデータ通信可能に接続されている。
操作表示装置500は、タッチ操作可能な表示デバイスであり、このディスプレイ上に上述のようなユーザによるキャリブレーション処理を実現するためのガイダンス画面を表示するとともに、ユーザは、ガイダンス画面上で必要な操作を行うことで、キャリブレーションを行うことになる。
表示部510は、典型的には、液晶ディスプレイからなる。この表示部510の表示面には、ユーザの操作を受付ける入力デバイスとしてのタッチパネル520が装着される。
CPU522は、操作表示装置500において主たる演算を行うプロセッサである。メモリ524は、CPU522によって実行される各種プログラム、表示部510において表示される画像データ、各種パラメータなどを格納する。典型的には、メモリ524は、DRAMなどの揮発性記憶装置と、FLASHメモリなどの不揮発性記憶装置とからなる。
特に、本実施の形態に係る操作表示装置500は、CPU522がプログラムを実行することで、後述するようなガイダンス機能が提供するためのガイダンスロジック522aが実現される。もちろん、ガイダンスロジック522aは、その全部または一部をハードウェアとして実装してもよい。
通信インターフェイス128は、視覚センサ100およびロボット制御装置200との間で各種データを遣り取りする。典型的には、通信インターフェイス128は、イーサネット(登録商標)に準拠したハードウェアである。
入力コントローラ530は、接続先のタッチパネル520に対するユーザ操作を検出し、その検出された座標値などをCPU522へ出力する。
表示コントローラ532は、接続先の表示部510に画像を表示するためのドライバであり、CPU522からの指令などに従って、表示部510に対する描画処理を行う。
(f2:画面例)
次に、図12〜図18を参照して、ユーザガイダンスに用いられる画面例について説明する。図12〜図18は、本発明の実施の形態に係る視覚センサを利用したコンベアトラ
ッキングシステムで提供されるユーザガイダンスに用いられる画面例を示す図である。これらの図は、上述のキャリブレーションの各段階に応じて順次遷移する。
ユーザが、座標系の初期設定などを行った後、キャリブレーションの開始を指示すると、図12に示すガイダンス画面550が表示される。この図12に示すガイダンス画面550は、図8に示すキャリブレーションの第1段階に対応するものである。すなわち、CPU522(ガイダンスロジック522a)は、キャリブレーション用のパターン(ターゲットパターン)を含むシート(キャリブレーション用シートS)を撮像部110の視野内に配置することをユーザに促す画面であるガイダンス画面550を表示部510に表示させる。
より具体的には、ガイダンス画面550は、キャリブレーション全体の進行度合いを示す全体進行表示570と、全体進行表示570においてアクティブとなっている工程内のより詳細な処理の進行度合いを示す詳細進行表示572とを含む。また、ガイダンス画面550は、撮像部110の撮像によって取得される画像を表示する入力画像表示領域560を含む。なお、入力画像表示領域560に表示される画像は、アイコン群576に含まれるアイコンの操作に応じて、その表示倍率などが適宜変更される。なお、入力画像表示領域560に表示される画像は、撮像部110の撮像周期で随時更新もでき、あるいは、ユーザが所望するタイミングで静止画に変更することもできる。
図12に示すガイダンス画面550においては、「5つのキャリブレーション用マークがすべて表示される位置に合わせてください」というメッセージ581が表示される。ユーザは、このメッセージ581に従って、コンベア10上に配置されたキャリブレーション用シートSが撮像部110の視野範囲内に収まるように位置決めする。
キャリブレーション用シートSの位置決めが完了すると、ユーザは「次へ」のボタンを選択する。すると、計測処理が実行され、図13に示すガイダンス画面551が表示される。なお、計測処理としては、使用するモデル形状の登録・選択処理や検出条件の設定などを含む。
この図13に示すガイダンス画面551においては、ターゲットパターンが描画されたキャリブレーション用シートSを撮像して得られた画像に対して計測処理が実行された結果が表示される。すなわち、ターゲットパターンに含まれるマークをモデル画像として、このモデル画像と一致する領域561〜565および各領域の中心点が検出される。この検出された中心点が、上述の座標(xi1,yi1)、(xi2,yi2)、(xi3,yi3)、(xi4,yi4)に相当する。
図13に示すガイダンス画面551は、エンコーダ値(カウント値)の入力を受付けるためのウィンドウ590を含む。ユーザは、カウント値を読み取って入力するか、あるいは、エンコーダ14(または、エンコーダカウンタ132)からの情報を直接的に取得できる場合には、「読出」ボタン592を選択する。すると、エンコーダカウント値E1(キャリブレーション開始時)が取得される。
ターゲットパターンに含まれる各マークの座標値および対応するエンコーダカウント値E1の取得が完了すると、ユーザは、「次へ」のボタンを選択する。すると、図14に示すガイダンス画面552が表示される。
この図14に示すガイダンス画面552においては、キャリブレーション用シートS(ターゲットシート)をロボット300の稼動範囲の上流に位置決めするように指示するメッセージ583およびガイド画面593を含む。ロボット300の稼動範囲の上流へのキ
ャリブレーション用シートSの位置決めが完了すると、ユーザは、「次へ」のボタンを選択する。すると、図15に示すガイダンス画面553が表示される。このガイダンス画面553は、図9に示すキャリブレーションの第2段階に対応するものである。
すなわち、CPU522(ガイダンスロジック522a)は、キャリブレーション用シートSをロボット300の稼動範囲の上流側に配置するとともに、移動機械をシート中の特定のパターンに位置決めすることをユーザに促す画面であるガイダンス画面552および553を表示部510に表示させる。
ユーザは、ガイダンス画面553の入力画像表示領域560内に表示されるターゲットパターンにおいて指定されるマーク(図15に示す例では、1番目の検出領域568)に対して、ロボット300のハンド先端を位置合わせする。さらに、ユーザは、その状態におけるロボット座標系の座標値を入力する。すなわち、ガイダンス画面553は、エンコーダ値(カウント値)の入力を受付けるためのウィンドウ595を含んでおり、ユーザは、ロボット制御装置200に表示されるロボット座標系の座標値を読み取って入力するか、あるいは、ロボット制御装置200からの情報を直接的に取得できる場合には、「読出」ボタン598を選択する。すると、ハンド先端を示すロボット座標系の座標値が取得される。
ウィンドウ595は、対象のマークについての画像座標系の座標値が入力される入力ボックス596と、対象のマークに位置決めされたロボット座標系の座標値が入力される入力ボックス597とを含む。これらの入力ボックスに設定された値の関係から、変換式(すなわち、パラメータA〜F)が決定される。
ターゲットパターンに含まれる4個すべてのマークについての座標値の取得が完了すると、ユーザは、「次へ」のボタンを選択する。すると、図16に示すガイダンス画面554が表示される。
この図16に示すガイダンス画面554においては、キャリブレーション用シートSをロボット300の稼動範囲の下流に位置決めするように指示するメッセージ585およびガイド画面594を含む。ロボット300の稼動範囲の下流へのキャリブレーション用シートSの位置決めが完了すると、ユーザは、「次へ」のボタンを選択する。すると、ガイダンス画面555が表示される。この図17に示すガイダンス画面555は、図10に示すキャリブレーションの第3段階に対応するものである。
すなわち、CPU522(ガイダンスロジック522a)は、キャリブレーション用シートSをロボット300の稼動範囲の下流側に配置するとともに、移動機械をシート中の特定のパターンに位置決めすることをユーザに促す画面であるガイダンス画面554および555を表示部510に表示させる。
図17に示すガイダンス画面555は、基本的には、図15に示すガイダンス画面553と同一である。ユーザは、指定されたマークに対して、ロボット300のハンド先端を位置合わせする。さらに、ユーザは、その状態におけるロボット座標系の座標値を入力する。図15と同様に、図17に示すガイダンス画面555は、エンコーダ値(カウント値)の入力を受付けるためのウィンドウ595を含んでおり、ユーザは、ロボット制御装置200に表示されるロボット座標系の座標値を読み取って入力するか、あるいは、ロボット制御装置200からの情報を直接的に取得できる場合には、「読出」ボタン598を選択する。すると、ハンド先端を示すロボット座標系の座標値が取得される。
また、CPU522(ガイダンスロジック522a)は、ガイダンス画面551,55
3,555の各々に対応付けて、コンベア10の搬送経路における移動量(カウント値)の入力を受付ける。
CPU522(ガイダンスロジック522a)は、図15に示すガイダンス画面553に従ってキャリブレーション用シートSをロボット稼動範囲(上流)に配置した場合に得られる位置情報と、図17に示すガイダンス画面555に従ってキャリブレーション用シートSをロボット稼動範囲(下流)に配置した場合に得られる位置情報とから、エンコーダ14からの1カウントあたりのワークの移動量dXおよびdYを算出する。また、CPU522(ガイダンスロジック522a)は、入力された情報に基づいて、撮像部110の撮像範囲内の座標値をロボット300の座標系の座標値に変換するためのパラメータセットを算出する。
上述のような一連のキャリブレーションが完了すると、図18に示すガイダンス画面556が表示される。このガイダンス画面556においては、キャリブレーションが完了したことが通知されるとともに、キャリブレーションによって取得されたパラメータセットの名称などが表示される。
上述したように、本実施の形態においては、撮像部110の撮像範囲内の座標値をロボット300の座標系(ロボット座標系)の座標値に変換するためのパラメータセットを設定するためのガイダンス画面を表示する機能が提供される。これにより、キャリブレーションの知識を有さないユーザであっても、容易にキャリブレーションを行うことができる。
(f3:変形例)
なお、上述の説明では、主として、操作表示装置500がガイダンス機能を提供する構成について例示した。しかしながら、このガイダンス機能を提供する構成を視覚センサ100単独で提供するようにしてもよい。この場合のハードウェア構成については、たとえば以下のようになる。
図19は、本発明の実施の形態に係る視覚センサを利用したコンベアトラッキングシステムの変形例を示すハードウェア構成について示す模式図である。図19に示す視覚センサ100の画像処理部120Aにおいては、ガイダンスロジック122bがさらに追加されている。そして、ガイダンスロジック122bによって提供されるガイダンス画面などは、視覚センサ100に表示インターフェイス(I/F)172を介して接続されるディスプレイ170などに表示される。
その他の構成については、上述したとおりであるので、詳細な説明は繰返さない。
<G.ロボット制御装置における処理>
次に、ロボット制御装置200における処理について説明する。
図20は、本発明の実施の形態に係るロボット制御装置200における処理を示すフローチャートである。図20(a)〜図20(d)には、ロボット制御装置200において実行される主要な処理を例示するが、ロボット制御装置200における処理は図20に示すものに限られない。
図20(a)は、エンコーダ14がパルス信号を発生した場合に生じる処理を示す。より具体的には、図20(a)の処理は、エンコーダ14がパルス信号を発生し、エンコーダカウンタ232がカウントアップする(ステップS50)ことをイベントとして起動される。エンコーダカウンタ232がカウントアップすると、ロボット制御装置200のメモリに格納されているそれぞれのワークの位置情報が更新される(ステップS51)。こ
の位置情報の更新方法については、以下のとおりである。
図2に示すように、ワークがX方向に搬送され、ロボット300のトラッキング範囲の右端をX方向の原点とする。このとき、エンコーダ14の1パルスあたりのコンベアの移動量(移動ベクトル)を(dX,dY)とすると、更新前の位置情報が(X0,Y0,θ0)であるワークWの位置情報は、n個のパルスが入力したとすると、更新後の位置情報は、(X0−dX×n,Y0−dY×n,θ0)となる。すなわち、1パルス当たりのコンベア上の単位移動量にパルスの数を乗じて得られた値がワークWの移動量(dX×n,dY×n)となる。そして、ワークWが原点方向に移動しているとすると、この移動量(移動ベクトル)の分だけワークの位置情報が更新される。
そして、エンコーダカウンタ232が新たにカウントアップするまで待つ。
図20(b)は、エンコーダ14がパルス信号を発生した場合に生じる別の処理を示す。より具体的には、図20(b)の処理は、エンコーダ14がパルス信号を発生し、エンコーダカウンタ232がカウントアップする(ステップS50)ことをイベントとして起動される。エンコーダカウンタ232がカウントアップすると、撮像指示の発生条件が成立したか否かが判断される(ステップS52)。例えば、上述の例では、エンコーダ14からのパルス信号に含まれるパルス数が前回撮像したときの値から所定値以上増加したか否かが判断される。そして、撮像指示の発生条件が成立した場合(ステップS52においてYESの場合)には、ロボット制御装置200から視覚センサ100へ撮像指示が送信される。
図20(c)は、ロボット300による把持動作について説明するものである。図20(c)のフローは、ワークの位置情報が更新された(ステップS60)ことをイベントとして起動される。より具体的には、ワークの位置情報が更新されると、ロボット300のトラッキング範囲内にいずれかのワークWが存在しているか否かが判断される(ステップS61)。ロボット300のトラッキング範囲内にいずれかのワークWが存在している場合(ステップS61においてYESの場合)には、ロボット300によるワークWの把持動作の制御が開始される。具体的には、トラッキング範囲内にある把持対象ワークの位置情報の取得(ステップS62)、把持対象ワークとロボット300との偏差の算出(ステップS63)、ステップS63において算出された偏差に基づいて、ロボット300および移動機構400についての指示の生成(ステップS64)、および、ワークWの位置情報の更新(ステップS65)が繰返される。そして、ロボット300がワークWを把持することができる位置まで移動すると、ロボット制御装置200は、ロボット300に対して把持動作の指示を出力する(ステップS66)。続いて、把持状態のロボット300に対して、把持しているワークWを目的の位置まで移動させるための、移動動作の指示をロボット300に対して出力する(ステップS67)。そして処理は、リターンする。
図20(d)は、位置情報の登録処理を示す。図20(d)のフローは、計測結果を受けることをイベントとして起動される。より具体的には、現在の位置情報が算出され(ステップS69)、算出された位置情報がメモリへ格納される(ステップS70)。
ステップS69に示すワークWの現在の位置情報について、撮像時のカウント値と各時点のカウント値との差分を算出し、この差分に1パルス当たりのコンベア上の単位移動量を乗じて得られた値が補正量として算出される。この補正量を計測結果(視覚センサ100から受信したワークの位置情報)に適用することで、現在の位置情報が算出される。
以上のような処理手順によって、本実施の形態に係るコンベアトラッキングが実現される。
<H.システム構成の変形例>
上述した実施の形態においては、視覚センサ100およびロボット制御装置200のいずれにもエンコーダ14からのパルス信号が入力され、それぞれが同一のパラメータに設定されたエンコーダカウンタ132および232で当該パルス信号に含まれるパルスの数をカウントすることで、コンベアの移動量(カウント値)を同期して保持する。これに対して、ネットワークを介して、コンベアの移動量(カウント値)を同期して保持する構成について例示する。
図21は、本発明の実施の形態の変形例に係る視覚センサを利用したコンベアトラッキングシステムにおける位置決めおよびトラッキング処理を説明するための図である。図21を参照して、本変形例に係る視覚センサを利用したコンベアトラッキングシステムは、エンコーダ14からのパルス信号が視覚センサ100#にのみ入力されており、かつ、視覚センサ100#とロボット制御装置200#との間にフィールドネットワークFNが設けられている点において、図2に示す実施の形態に係る視覚センサを利用したコンベアトラッキングシステムとは異なっている。その他の構成については、実施の形態と同様であるので、以下では、主として相違点についてのみ説明する。
図22は、本発明の実施の形態の変形例に係る視覚センサを利用したコンベアトラッキングシステムのハードウェア構成について示す模式図である。図22を参照して、本変形例に係る視覚センサ100#を構成する画像処理部120#は、図3に示す画像処理部120に比較して、フィールドネットワークインターフェイス(I/F)160をさらに備えている。また、本変形例に係るロボット制御装置200#は、図3に示すロボット制御装置200に比較して、エンコーダカウンタ232および入出力インターフェイス(I/F)230に代えて、フィールドネットワークインターフェイス(I/F)260が設けられている。その他の構成については、図2に示す実施の形態と同様である。
視覚センサ100#を構成する画像処理部120#とロボット制御装置200#との間では、フィールドネットワークFNを介して、画像処理部120#内のエンコーダカウンタ132でカウントされるカウント値が共有される。
フィールドネットワークFNとしては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、例えば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)−III、Powerlink、SERCOS(登録商標)−III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。さらに、産業用イーサネット(登録商標)以外のフィールドネットワークを用いてもよい。例えば、モーション制御を行わない場合であれば、DeviceNet、CompoNet/IP(登録商標)などを用いてもよい。本実施の形態においては、典型的に、産業用イーサネット(登録商標)であるEtherCAT(登録商標)をフィールドネットワークFNとして採用する。
一般的なフィールドネットワークでは、送受信に係る遅延時間が一定になるように構成されており、この遅延時間は数ns程度に抑えることができる。そのため、上述したような、ロボット制御装置200#が撮像指示を送信してから実際に撮像が行われるまでの遅延(タイムラグ)に比べれば十分に小さく、視覚センサ100#とロボット制御装置200#との間で、カウント値を実質的に同期して保持しているとみなすことができる。
そのため、実施の形態において説明したような共通のパラメータが設定されたエンコーダカウンタをそれぞれ設ける必要がなく、より簡素な構成で、2つの装置間でカウント値を同期して保持できる。すなわち、視覚センサ100#とロボット制御装置200#との
間でコンベア10の搬送経路における移動量を同期して保持する手段としては、視覚センサ100#(または、ロボット制御装置200#)に設けられたパルス信号に含まれるパルス数をカウントするためのカウンタ132と、当該カウンタ132によるカウント値を装置間で実質的に同期して共有するフィールドネットワークFNとにより実現される。
なお、フィールドネットワークFN内の遅延時間の大きさが無視できない場合であっても、フィールドネットワークFNにおける遅延時間は一定値に制御されるので、以下のような方法によって、カウント値を同期して保持することができる。すなわち、視覚センサ100#で更新されるカウント値が遅延時間ΔDだけ遅れて、ロボット制御装置200#に伝えられるとする。この遅延時間ΔDは基本的には一定(予想可能)であるので、この遅延時間ΔDを考慮して制御タイミングなどをずらすような対処が考えられる。
例えば、視覚センサ100#がカウント値に基づいて開始する制御動作の開始タイミングを遅延時間ΔDだけ遅延させれば、ロボット制御装置200#との間の遅延時間ΔDを実質的に相殺できる。
あるいは、遅延時間ΔDがカウント値の更新周期より長い場合には、エンコーダ14からのパルス信号に含まれるパルス周期に遅延時間ΔDを乗じて得られる補正量(カウンタ補正値)をカウント値に加えて、制御に用いるようにしてもよい。
なお、上述の本変形例においては、視覚センサ100#がフィールドネットワークFNのホストとなり、ロボット制御装置200#がフィールドネットワークFNのスレーブとして構成される例を示したが、ホストとスレーブとの関係は逆であってもよい。この場合には、ロボット制御装置200#側にのみエンコーダ14からのパルス信号が入力するとともに、ロボット制御装置200#内にエンコーダカウンタが設けられる。
<I.サポート装置>
次に、視覚センサ100およびロボット制御装置200とネットワークNWを介して接続されるサポート装置600について説明する。
図23は、本発明の実施の形態に係る視覚センサ100と接続可能なサポート装置600のハードウェア構成を示す模式図である。サポート装置600は、典型的には、汎用のコンピュータで構成される。なお、メンテナンス性の観点からは、可搬性に優れたノート型のパーソナルコンピュータが好ましい。
図23を参照して、サポート装置600は、OSを含む各種プログラムを実行するCPU61と、BIOSや各種データを格納するROM(Read Only Memory)62と、CPU61でのプログラムの実行に必要なデータを格納するための作業領域を提供するメモリRAM63と、CPU61で実行されるプログラムなどを不揮発的に格納するハードディスク(HDD)64とを含む。
サポート装置600は、さらに、ユーザからの操作を受付けるキーボード65およびマウス66と、情報をユーザに提示するためのモニタ67とを含む。
後述するように、サポート装置600で実行される各種プログラムは、CD−ROM69に格納されて流通する。このCD−ROM69に格納されたプログラムは、CD−ROM(Compact Disk-Read Only Memory)ドライブ68によって読取られ、ハードディスク
(HDD)64などへ格納される。あるいは、上位のホストコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
上述したように、サポート装置600は、汎用的なコンピュータを用いて実現されるので、これ以上の詳細な説明は行わない。
このようなサポート装置600は、視覚センサ100およびロボット制御装置200のいずれともデータ通信可能であるので、各種のデータを収集することができる。そこで、本実施の形態に係るサポート装置600は、調整時において計測処理の対象となった画像を視覚センサ100から収集するように構成される。
この視覚センサ100から計測処理の対象となった画像を収集する場合に、対応する、カウント値および計測値(座標値および角度等)と各画像とを関連付けて保存する。これらの情報は、ネットワークNWを介して、視覚センサ100からサポート装置600へ送信される。そして、サポート装置600のハードディスク64などに格納される。
特に、対応するカウント値をキーとして、画像および計測結果を関連付けて保存することで、所望のタイミングに対応するカウント値を用いて、必要な画像および計測結果を容易に検索することができる。
このような画像および計測結果のデータベースを用意することで、以下のような機能を提供することができる。すなわち、ロボット300において、ロボット動作(位置決めおよびトラッキング処理)をカウント値と関連付けて記録しておくことで、ロボット動作と対応する画像処理を関連付けることができる。これにより、例えば、把持動作が失敗した場合などに、その失敗した原因を追求するために、把持対象であったワークの画像および計測結果をサポート装置600上で再現できる。そのため、不具合原因をより容易に解析することができる。
<J.利点>
本実施の形態によれば、撮像部110が撮像することで取得する画像に対して計測処理を行うことで得られるワークの位置情報に対して重複排除処理が視覚センサ100(画像処理部120)の内部で実行される。そのため、視覚センサ100から外部へ出力されるワークの検出結果には、同一のワークに起因して重複した位置情報が含まれない。そのため、当該ワークの検出結果を受信するロボット制御装置200(および、ロボット300)において、重複した位置情報を排除するための特別な処理を省略できる。そのため、重複排除に係る機能が搭載されていない汎用的なロボット300およびそれを操作するロボット制御装置200であっても、手間およびコストをかけずに、高精度なコンベアトラッキング等の処理を容易に実現できる。
また、本実施の形態によれば、視覚センサ100(画像処理部120)がエンコーダ14からのパルス信号の入力を直接的に受けるため、撮像動作および当該撮像動作によって得られた画像に対する計測処理が、ロボット制御装置200のプログラム実行サイクルに影響されない。
また、本実施の形態によれば、ロボット制御装置200からの撮像指示がどのようなタイミングで発行されても、視覚センサ100(撮像部110)における撮像時のカウント値を正確に取得することができる。これにより、撮像指示と実際の撮像動作との間に無視できない遅延時間が生じるとしても、正確なトラッキング処理およびロボット300の正確な制御が可能となる。さらに、コンベアの速度が変化した場合でも、撮像時のカウント値を正確に取得することができるため、カウンタ動作に係るパラメータをコンベア速度に依存して調整する必要がない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えら
れるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。