以下、本発明の実施の形態に係る画像処理システムについて、図面に基づいて具体的に説明する。
(実施の形態1)
図1は、本発明の実施の形態1に係る画像処理システムの構成を示す模式図である。
図1に示すように、本実施の形態1に係る画像処理システムは、対象物(ワーク)6を移動させるマニピュレータ(ロボット)1、マニピュレータ1の動作を制御するロボットコントローラ2、画像処理装置3、及び撮像装置4で構成されている。マニピュレータ1の先端には、対象物6を把持又は解放することが可能なエンドエフェクタ5が設けられており、ロボットコントローラ2はエンドエフェクタ5の開閉動作も制御する。
撮像装置4は、例えばカラーCCDカメラであり、移動する対象物であるワーク6を撮像する。撮像された画像に基づいて、後述するキャリブレーションを実行することにより、実際のワーク6の位置座標(エンドエフェクタ5の移動位置の座標)と、画面に表示された画像上の位置座標とをリンクさせることができる。
マニピュレータ1は、3本のアームで構成されており、2本のアームが互いになす角度、及びアーム支点の回転により、エンドエフェクタ5を所望の位置へ移動させる。
図2は、本発明の実施の形態1に係る画像処理システムの画像処理装置3の構成例を示すブロック図である。本発明の実施の形態1に係る画像処理装置3は、少なくともCPU(中央演算装置)等で構成された制御部31、メモリ32、記憶装置33、入出力インタフェース34、表示インタフェース35、通信インタフェース36及び上述したハードウェアを接続する内部バス37で構成されている。
制御部31は、内部バス37を介して画像処理装置3の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置33に記憶されているコンピュータプログラムに従って、種々のソフトウェア的機能を実行する。メモリ32は、SRAM、SDRAM等の揮発性メモリで構成され、コンピュータプログラムの実行時にロードモジュールが展開され、コンピュータプログラムの実行時に発生する一時的なデータ等を記憶する。
記憶装置33は、内蔵される固定型記憶装置(ハードディスク)、SRAM等の揮発性メモリ、ROM等の不揮発性メモリ等で構成されている。記憶装置33に記憶されているコンピュータプログラムは、プログラム及びデータ等の情報を記録したDVD、CD−ROM等の可搬型記録媒体からダウンロード、あるいは通信インタフェース36を介してダウンロードされ、実行時には記憶装置33からメモリ32へ展開して実行される。
通信インタフェース(通信装置)36は内部バス37に接続されており、インターネット、LAN、WAN等の外部のネットワークに接続されることにより、外部のコンピュータ等とデータ送受信を行うことが可能となっている。
入出力インタフェース34は、キーボード38、マウス39等のデータ入力媒体と接続され、データの入力を受け付ける。また、表示インタフェース35は、CRTモニタ、LCD等の表示装置40と接続され、所定の画像を表示する。
従来、マニピュレータ1の動作制御は、ロボットコントローラ2に記憶されているシーケンシャルな動作制御プログラムにより行われていた。その場合、マニピュレータ1のエンドエフェクタ5の実際の位置座標と、画像処理装置3に表示されている画像上の位置座標との間でキャリブレーションを実行する必要がある。
キャリブレーションは、複数の位置座標について、マニピュレータ1のエンドエフェクタ5の実際の位置座標と、画像処理装置3に表示されている画像上の位置座標との間の変換式を算出する。座標変換の方法は、特に限定されるものではなく、例えばアフィン変換で変換する。
(式1)に示すように、マニピュレータ1のエンドエフェクタ5の実際の位置座標(x’、y’)と、画像処理装置3に表示されている画像上の位置座標(x、y)とに基づいて、6つの自由度を有する変換式の係数a、b、c、d、e、fを求める。対応する位置座標が6つを超える場合には、最小二乗法を用いれば良い。
図3は、従来のキャリブレーションの処理手順を示すフローチャートである。図3に示すように、ロボットコントローラ2は、マニピュレータ1に撮像対象となるマークを付与したワーク6を、キャリブレーションターゲットとして把持させた状態で、エンドエフェクタ5をキャリブレーション位置へと移動させる(ステップS301)。
ロボットコントローラ2は、移動したエンドエフェクタ5の位置座標(x’、y’)を取得して(ステップS302)、計測命令及び取得した位置座標(x’、y’)を画像処理装置3へ送信する(ステップS303)。画像処理装置3は、ロボットコントローラ2から計測命令及び取得した位置座標(x’、y’)を受信し(ステップS304)、エンドエフェクタ5の動作領域を撮像する(ステップS305)。
画像処理装置3は、エンドエフェクタ5の動作領域の画像を表示し、表示されている画像上の位置座標(x、y)を検出する(ステップS306)。ロボットコントローラ2は、キャリブレーション用のすべての位置座標(x’、y’)について画像上の位置座標(x、y)を検出したか否かを判断する(ステップS307)。ロボットコントローラ2が、まだすべての位置座標(x’、y’)について画像上の位置座標(x、y)を検出していないと判断した場合(ステップS307:NO)、ロボットコントローラ2は、次の移動命令を発行し(ステップS308)、処理をステップS301へ戻して、上述した処理を繰り返す。
ロボットコントローラ2が、すべての位置座標(x’、y’)について画像上の位置座標(x、y)を検出したと判断した場合(ステップS307:YES)、画像処理装置3は、(式1)に従って変換式を算出する(ステップS309)。具体的には、6つの係数a、b、c、d、e、fを求める。
しかし、従来のキャリブレーションでは、マニピュレータ1の種別ごとに固有のシーケンシャルな制御プログラムが必要となる。したがって、機種ごとに個別の制御プログラムによりキャリブレーションを実行しなければならない。そこで、画像処理装置3において主たるキャリブレーションを実行する。
図4は、本発明の実施の形態1に係る画像処理システムのキャリブレーションの処理手順を示すフローチャートである。図4に示すように、画像処理装置3は、マニピュレータ1に撮像対象となるマークを付与したワーク6を、キャリブレーションターゲットとして把持させた状態で、キャリブレーションの開始位置を設定する(ステップS401)。図5は、本発明の実施の形態1に係る画像処理装置3の開始位置設定画面の例示図である。
図5に示すように、撮像された対象物6の画像は画像表示領域55に表示されている。キャリブレーションの実行ボタンのうち、開始位置設定ボタン51が選択されると、開始位置設定画面56がポップアップ表示され、開始位置を設定する。この場合、ジョグ操作ボタン57を選択することで、マニピュレータ1のエンドエフェクタ5を所定の位置に移動させることができる。したがって、移動先を確認しながらキャリブレーションの開始位置を設定することができる。
なお、移動パターンを設定する前に、検出ツールを設定することができる。図6は、本発明の実施の形態1に係る画像処理装置3の検出ツール設定画面の例示図である。
図6に示すように、キャリブレーションの実行ボタンのうち、検出ツール設定ボタン52が選択されると、検出ツール選択領域61が表示される。ユーザは、画像表示領域55に表示されている画像を見ながら、検出ツール選択領域61において検出ツールを選択する。図6の例では、輪郭検出ツールを選択している。これ以外に、例えば濃淡検出ツールを選択しても良い。
図4に戻って、画像処理装置3は、マニピュレータ1のエンドエフェクタ5の移動パターンを設定する(ステップS402)。図7及び図8は、本発明の実施の形態1に係る画像処理装置3の移動パターンの設定画面の例示図である。
図7に示すように、キャリブレーションの実行ボタンのうち、キャリブレーションボタン53が選択されると、移動パターン設定画面71がポップアップ表示される。ここで、移動パターンの設定ボタン72を選択すると、図8に示すように、詳細設定画面73がポップアップ表示される。
詳細設定画面73では、キャリブレーション実行時の検出パターンを設定する。例えば、3×3の9個、5×5の25個等の設定を受け付ける。所定の移動距離を設定することで、詳細設定画面73の下部に表示されるような移動パターンが設定される。
図4に戻って、画像処理装置3は移動命令をロボットコントローラ2へ送信する(ステップS403)。ロボットコントローラ2は、移動命令を受信して(ステップS404)、移動命令をマニピュレータ1の種別に応じて解釈する(ステップS405)。すなわち、マニピュレータ1を稼働させることが可能な機械語のロードモジュールに翻訳する。
ロボットコントローラ2は、エンドエフェクタ5を移動命令で指定されている位置へと移動させ(ステップS406)。ロボットコントローラ2は、エンドエフェクタ5の移動先の位置座標(x’、y’)を取得して(ステップS407)、取得した位置座標(x’、y’)を画像処理装置3へ送信する(ステップS408)。
画像処理装置3は、ロボットコントローラ2から、取得した位置座標(x’、y’)を受信し(ステップS409)、エンドエフェクタ5の動作領域を撮像する(ステップS410)。画像処理装置3は、動作領域の画像を表示し、表示されている画像上の位置座標(x、y)を検出する(ステップS411)。
なお、表示されている画像上のどの位置の位置座標(x、y)を検出するかは、設定されている検出ツールを用いて画像中から検出する。例えば検出ツールとして、輪郭検出ツールが選択されている場合、検出される輪郭領域を指定する必要がある。
図9及び図10は、本発明の実施の形態1に係る画像処理装置3の輪郭検出ツールを用いる場合の検出条件設定画面の例示図である。図9に示すように、ツール表示領域91において、選択されている「輪郭検出ツール」が表示されている。そして、パターン編集領域92において、輪郭パターンの形状を設定する。図9の例では矩形領域に設定されている。
そして、画像表示領域55に表示されている対象物において、マウス等でドラッグ操作をしながら、輪郭パターンを検出する検出領域93を設定する。図9の例では、対象物を囲むように設定しているが、特にこのような設定に限定されるものではない。
検出領域93が設定されると、図10に示すように、検出条件設定画面94において、検出条件を設定する。検出条件としては、例えば対象物の傾きの許容範囲である「角度範囲」、検出する個数を示す「検出個数」、どの程度まで類似していれば検出するかを示す「相関値下限」等を設定する。
また、検出ツールとして、濃淡検出ツールを選択しても良い。濃淡検出ツールが選択されている場合であっても、検出する領域を設定する必要がある。
図11及び図12は、本発明の実施の形態1に係る画像処理装置3の濃淡検出ツールを用いる場合の検出条件設定画面の例示図である。図11に示すように、ツール表示領域91において、選択されている「濃淡検出ツール」が表示されている。そして、パターン編集領域92において、輪郭パターンの形状を設定する。図11の例では矩形領域に設定されている。
そして、画像表示領域55に表示されている対象物において、マウス等でドラッグ操作をしながら、輪郭パターンを検出する検出領域93を設定する。図11の例では、対象物を囲むように設定しているが、特にこのような設定に限定されるものではない。
検出領域93が設定されると、図12に示すように、検出条件設定領域121において、検出条件を設定する。検出条件としては、例えば対象物の傾きの許容範囲である「角度範囲」、検出する個数を示す「検出個数」、どの程度まで類似していれば検出するかを示す「相関値下限」等の他、検出感度(サーチ感度)あるいは検出精度(サーチ精度)についても設定することができる。形状が同じであっても、濃淡差等に違いが生じている場合が想定されるからである。
図4に戻って、画像処理装置3は、キャリブレーション用のすべての位置座標(x’、y’)について画像上の位置座標(x、y)を検出したか否かを判断する(ステップS412)。画像処理装置3が、まだすべての位置座標(x’、y’)について画像上の位置座標(x、y)を検出していないと判断した場合(ステップS412:NO)、画像処理装置3は、次の移動命令を発行し(ステップS413)、処理をステップS403へ戻して、上述した処理を繰り返す。
画像処理装置3が、すべての位置座標(x’、y’)について画像上の位置座標(x、y)を検出したと判断した場合(ステップS412:YES)、画像処理装置3は、(式1)に従って変換式を算出する(ステップS414)。具体的には、6つの係数a、b、c、d、e、fを求める。
なお、キャリブレ−ションとして二次元のアフィン変換を用いる例について説明しているが、もちろん三次元のアフィン変換を用いても良い。
図13は、本発明の実施の形態1に係る画像処理装置3の機能ブロック図である。画像処理装置3の移動座標取得部301は、移動命令に応じて移動したエンドエフェクタ5の実際の各位置座標である第一の座標値(x’、y’)を取得する。
なお、移動座標取得部301において取得する第一の座標値(x’、y’)は、画像処理装置3からの移動命令に応じてエンドエフェクタ5が移動した各位置において、ロボットコントローラ2から取得した座標値としているが、画像処理装置3で表示されている画像上で指定されたマニピュレータ(ロボット)1の移動目標座標をそのまま第一の座標値としても良い。
撮像トリガ受信部302は、ロボットコントローラ2から撮像トリガを受信する。撮像制御部303は、撮像トリガの受信を確認した時点あるいは確認した時点から所定時間経過した時点で、エンドエフェクタ5の各移動先にて対象物6を撮像するよう撮像装置4の動作を制御する。これにより、ロボットコントローラ2から取得したエンドエフェクタ5の移動先の各位置座標である第一の座標値(x’、y’)に対応する領域を撮像するよう制御することで、取得したエンドエフェクタ5の画像上の第一の座標値(x’、y’)との間でキャリブレーションを実行することができる。
画像検出部304は、各移動先にて撮像された対象物6の画像に基づいて対象物の位置座標である第二の座標値(x、y)を検出する。キャリブレーション実行部305は、取得した複数の第一の座標値(x’、y’)と、検出した複数の第二の座標値(x、y)とに基づいて、両座標間の変換規則を算出する。例えば二次元のキャリブレーションを実行する場合、上述した(式1)に座標値を代入して、係数a、b、c、d、e、fを求める。
キャリブレーションを実行することにより、ロボットコントローラ2から取得した移動先のエンドエフェクタ5の位置座標である第一の座標値(x’、y’)を指定して移動命令を送信するだけでなく、各移動先にて撮像された対象物の6の画像に基づいて検出された第二の座標値(x、y)から第一の座標値(x’、y’)を算出することができ、移動命令を送信することができる。つまり、画像処理装置3からロボットコントローラ2に対して動作の指令を送信することができるようになる。
動作設定受付部306は、少なくとも第一の座標値(x’、y’)へエンドエフェクタ5を移動させる動作又は第二の座標値(x、y)へエンドエフェクタ5を移動させる動作(具体的にはキャリブレーション結果を用いて第一の座標値へ変換した座標値へ移動させる動作)を含む複数の動作の中から、ロボットコントローラ2に実行させる複数の動作の選択を受け付け、選択を受け付けた複数の動作の実行順序の設定を受け付ける。
具体的には、まず移動先の位置データを記憶する。図14は、本発明の実施の形態1に係る画像処理装置3の位置データ登録画面の例示図である。まず、マニピュレータ(ロボット)1のエンドエフェクタ5を撮像位置へ移動させる。移動命令は、画像処理装置3からロボットコントローラ2へ送信する。
エンドエフェクタ5の位置データは、第一の座標値(x’、y’)としてロボットコントローラ2から移動座標取得部301により取得する。図14(a)には、取得した第一の座標値が表示されている。
そして、登録ボタン141をマウス等でクリック操作することにより、取得した第一の座標値を識別子、例えば「POS001」とともに記憶する。第一の座標値が1つでも記憶されている場合、図14(b)に示すように、移動ボタン142が使用可能な状態となる。位置データを選択して移動ボタン142をマウス等でクリック操作することにより、移動命令を送信することができる。
図15は、本発明の実施の形態1に係る画像処理装置3の位置データ選択画面の例示図である。図15に示すように、位置データ選択領域151に、既に記憶されている位置データ候補が表示されている。ユーザは、この中から1つの位置データを選択すれば良い。
図16は、本発明の実施の形態1に係る画像処理装置3の位置データ選択画面の他の例示図である。図16の例では、位置データ選択領域151が存在しない。あくまでも撮像された画像が表示されている画像表示領域55において、現在の位置を「十」印161で表示している。ユーザは、マウス等のクリック操作により、移動先の位置「十」印162を指定することで位置データを選択すれば良い。
すなわち、位置データ選択画面は、図13の移動先選択部314として機能する。移動先選択部314は、エンドエフェクタ5の複数の第一の座標値を取得し、複数の第一の座標値の中からエンドエフェクタ5の移動先として一の第一の座標値の選択を受け付ける。
図13に戻って、動作設定受付部306は、ロボットコントローラ2から受信する、撮像装置4で対象物6の撮像を開始するタイミングを示す撮像トリガごとに、少なくとも動作の種類及び動作順序を含む動作条件の設定も受け付ける。設定を受け付けた撮像トリガごとの動作条件をロボットコントローラ2から受信したタイミングで、撮像装置4によりワーク6を撮像する。撮像トリガとしては、特にどのような情報でなければならないという限定はない。少なくとも撮像装置4に撮像を開始するタイミングを知らせる信号であれば足りる。
動作設定受付部306は、エンドエフェクタ5に対する待機指令の設定を受け付けても良い。撮像までの待機時間を設定を受け付けることで、動作直後の振動を抑制し、撮像時のエンドエフェクタ5の位置を安定させることができる。これにより、撮像装置4をエンドエフェクタ5に取り付けた状態での検出、あるいはワーク6をエンドエフェクタ5に把持させた状態での位置検出の精度を高くすることが可能となる。
プログラム生成部311は、動作設定受付部306で選択を受け付けた複数の動作それぞれに対応する動作プログラムを、設定を受け付けた実行順序に従って生成する。具体的には、設定を受け付けた実行順序に従って、選択を受け付けた複数の動作に対応する各動作プログラムを、編集可能なテキストデータとして生成する。
自動的に生成するとともに、ユーザの意向により自由にカスタマイズできるように、プログラム生成部311は、例えばロボットコントローラ2による動作のうち、少なくとも第一の座標値又は第2の座標値へエンドエフェクタ5を移動させる動作、撮像トリガを送信する動作を含む、ロボットコントローラ2に実行させる一連の複数の動作について動作プログラムを生成すれば良い。もちろん、ロボットコントローラ2とのデータ通信を確立する動作プログラムを生成しても良い。
また、マニピュレータ(ロボット)1の種別によって動作プログラムのフォーマットが異なるので、プログラム生成部311は、動作設定受付部306で選択を受け付けた複数の動作それぞれに対応する動作プログラムを、設定を受け付けた実行順序に従って生成する。
また、動作表示部307は、ロボットコントローラ2が実行する動作プログラムに組み込む動作の候補である動作リストを、実行順序に従って表示する。動作選択受付部308は、少なくとも撮像装置4に対する撮像トリガを送信する動作、及び検出された位置情報に基づきマニピュレータ(ロボット)1のエンドエフェクタ5を移動させる動作を含む複数の動作の中から、ロボットコントローラ2に実行させる複数の動作の選択を受け付ける。順序設定受付部309は、選択を受け付けた複数の動作を動作リストに組み込み、動作ごとに実行順序の設定を受け付ける。
図17は、本発明の実施の形態1に係る画像処理装置3のプログラム生成画面の例示図である。図17において、シーケンス選択領域171には、動作プログラムに組み込む動作の候補である動作リストが表示されている(動作表示部307)。ユーザは、表示されている動作リストの中から、生成される動作プログラムで実行したい複数の動作を選択する(動作選択受付部308)。選択された複数の動作に応じて、動作ごとに実行順序が設定される(順序設定受付部309)。もちろん、実行順序のみ変更できるようにしても良い。
また、生成される動作プログラムで制御する対象となるマニピュレータ(ロボット)1の製造元であるメーカを、メーカ選択領域172において選択する(ロボット選択受付部312)。生成される動作プログラムは、メーカごとに仕様が異なるからである。
ここで、動作リストの中から選択することができるのは、エンドエフェクタ5の移動、撮像トリガの送信等の動作(以下、汎用動作)のみである。選択することができない動作としては、例えばエンドエフェクタ5の詳細な動作(ピッキング、リリース等)、他に接続されている外部機器の動作等(以下、特殊動作)である。動作プログラムの一部として、まず汎用動作に相当する部分のみ編集可能な形式で自動生成する。そして、最終的には、ユーザが特殊動作に相当する部分を編集することにより、動作プログラムを完成することができる。
図13に戻って、位置情報取得部310(移動座標取得部301と兼用でも可)を設けておき、マニピュレータ(ロボット)1のエンドエフェクタ5の現在の位置に関する現在位置情報として現在の位置座標を取得しても良い。エンドエフェクタ5の現在の位置座標を取得することで、画像処理装置3において移動先を指示するのではなく、エンドエフェクタ5を、取得した現在の位置座標へ確実に戻らせるよう(移動させるよう)動作させることが可能となる。
すべての設定が完了した状態で、プログラム出力ボタン173をマウス等によりクリック操作することにより、ロボットコントローラ2の動作プログラムが生成される。図18は、本発明の実施の形態1に係るロボットコントローラ2の動作プログラムの例示図である。
図18に示すように、ソースコード181は、画像処理装置3とのデータ通信を確立する命令である。ソースコード182は、撮像装置4を退避させる命令である。ソースコード183は、画像処理装置3に対する座標値取得命令である。
ソースコード184は、画像処理装置3から座標値を受信する命令である。ソースコード185は、実際のマニピュレータ1の位置座標に変換する命令である。
ソースコード186は、マニピュレータ1のエンドエフェクタ5を移動の最終位置へ移動させる命令である。ソースコード187は、コメント欄であり、ユーザ自身がソースコードを記述することで、よりユーザニーズに応じた動作プログラムを生成することができる。ソースコード188は、画像処理装置3とのデータ通信を解除する命令である。
図13に戻って、移動命令送信部313は、第一の座標値又は第2の座標値へエンドエフェクタ5を移動させる移動命令をロボットコントローラ2へ送信する。なお、図16に示すように移動先の位置情報の指定を受け付けた場合には、画像上で指定を受け付けた位置にエンドエフェクタ5を移動させる移動命令をロボットコントローラ2へ送信する。
また、ロボットコントローラ2は、動作を制御するマニピュレータ(ロボット)1の種別に応じて、移動命令を変換する必要がある。図19は、本発明の実施の形態1に係るロボットコントローラ2の機能ブロック図である。
図19に示すように、ロボットコントローラ2は、プログラム変換部201を備えている。プログラム変換部201は、マニピュレータ(ロボット)1の種別ごとに提供されており、移動命令をマニピュレータ1の種別に応じたエンドエフェクタ5への移動命令に変換する。これにより、使用するマニピュレータ1の種別に応じた変換プログラムをロボットコントローラ2にインストールすることができ、マニピュレータ1の種別に応じたエンドエフェクタ5の移動命令に変換することができる。
図20は、本発明の実施の形態1に係るロボットコントローラ2の変換プログラムの処理手順を示すフローチャートである。図20に示すように、ロボットコントローラ2は、画像処理装置3とデータ通信を確立し(ステップS2001)、移動命令を受信したか否かを判断する(ステップS2002)。
ロボットコントローラ2が、受信していないと判断した場合(ステップS2002:NO)、ロボットコントローラ2は、受信待ち状態となる。ロボットコントローラ2が、受信したと判断した場合(ステップS2002:YES)、ロボットコントローラ2は、最初の移動命令を解釈する(ステップS2003)。
ロボットコントローラ2は、解釈した移動命令の内容に沿って移動命令を切り替えて、マニピュレータ1のエンドエフェクタ5を移動させる(ステップS2004)。ロボットコントローラ2は、すべての移動命令を解釈したか否かを判断する(ステップS2005)。
ロボットコントローラ2が、まだ解釈していない移動命令があると判断した場合(ステップS2005:NO)、ロボットコントローラ2は、次の移動命令を解釈して(ステップS2006)、処理をステップS2004へ戻して上述した処理を繰り返す。ロボットコントローラ2が、すべての移動命令を解釈したと判断した場合(ステップS2005:YES)、ロボットコントローラ2は、処理を終了する。
図21は、本発明の実施の形態1に係る画像処理システムのシステム構築手順を示すフローチャートである。図21に示すように、画像処理装置3は、図4に示すキャリブレーションを実行し(ステップS2101)、位置座標の変換式を求める。
画像処理装置3は、ワーク6を検出する検出ツールの選択を受け付ける(ステップS2102)。具体的には、図6に示す検出ツール設定画面の検出ツール設定領域61において検出ツールを選択する。
画像処理装置3は、動作プログラムを作成する(ステップS2103)。画像処理装置3は、試運転で動作を確認したサンプルプログラムの詳細を編集して(ステップS2104)、運用段階へ移行させる(ステップS2105)。
図22は、本発明の実施の形態1に係る画像処理装置3の動作プログラム作成の処理手順を示すフローチャートである。図22に示すように、画像処理装置3は、移動先の位置データを一又は複数記憶する(ステップS2201)。
画像処理装置3は、動作の実行順序である動作シーケンスを記憶し(ステップS2202)、マニピュレータ(ロボット)1のメーカの選択を受け付ける(ステップS2203)。動作シーケンスは、例えば図17に示すプログラム生成画面のシーケンス選択領域171において、実行したい処理(動作)の順番にプルダウンメニューの中から選択する。また、メーカの選択は、例えば図17に示すプログラム生成画面のメーカ選択領域172において選択する。
画像処理装置3は、試運転を行って(ステップS2204)、その時点のサンプルプログラムを出力する(ステップS2205)。つまり、従来はプログラムが完成していないと動作確認をすることができなかったのに対して、基本動作が正しいか否かを試運転で確認しながら詳細を詰めることができる点に本願の特徴がある。
ユーザは、マニピュレータ(ロボット)1の動作が、所望の動作であるか否かを判断して(ステップS2206)、ユーザが所望の動作ではないと判断した場合(ステップS2206:NO)、画像処理装置3は、サンプルプログラムの編集を受け付けて(ステップS2207)、処理をステップS2204へ戻して、上述した処理を繰り返す。ユーザが所望の動作であると判断した場合(ステップS2206:YES)、画像処理装置3は、サンプルプログラムの送信依頼を受け付けて、サンプルプログラムのソースコードをテキストデータとして出力する(ステップS2208)。
マニピュレータ(ロボット)1の試運転時の動作は特に限定されるものではない。図23は、本発明の実施の形態1に係る画像処理システムにおける試運転時の動作を説明するための模式図である。
本実施の形態1に係る画像処理システムは、まず図23(a)に示すように、ワーク6を撮像できるよう、マニピュレータ1のエンドエフェクタ5をワーク6が載置されている位置とは異なる位置「POS000」へ移動させる。この状態で、図23(b)に示すように、撮像トリガに応じてワーク6を撮像し、最後に図23(c)に示すように、ワーク6を把持するべく、マニピュレータ1のエンドエフェクタ5をワーク6が載置されている位置(検出位置)へと移動させる。
斯かる動作をマニピュレータ(ロボット)1にさせるべく、ロボットコントローラ2で実行される動作プログラムは、プログラム生成画面から容易に生成することができる。図24は、本発明の実施の形態1に係る画像処理装置3のプログラム生成画面の例示図である。
図24において、シーケンス選択領域241では、生成される動作プログラムで実行したい処理(動作)をプルダウンメニューの中から選択する。また、生成される動作プログラムで制御する対象となるマニピュレータ(ロボット)1の製造元であるメーカを、メーカ選択領域242において選択する。生成される動作プログラムは、メーカごとに仕様が異なるからである。
図24の例では、事前に登録されている位置座標(図24では識別子として「POS000」)へ移動し、撮像開始のタイミングを示す撮像トリガを発行して、ワーク6を把持する位置まで移動する動作を制御するプログラムを生成するよう指定している。全ての指定が完了した時点で、プログラム出力ボタン243をマウス等によりクリック操作することで、ロボットコントローラ2の動作プログラムが生成される。
図25は、本発明の実施の形態1に係る画像処理システムの試運転時の処理手順を示すフローチャートである。図25に示すように、画像処理装置3は、所定位置(図24の例では「POS000」)への移動命令をロボットコントローラ2へ送信する(ステップS2501)。
ロボットコントローラ2は、画像処理装置3からの移動命令を受信し(ステップS2502)、移動命令をマニピュレータ1の種別に応じて解釈する(ステップS2503)。すなわち、マニピュレータ1を稼働させることが可能な機械語のロードモジュールに翻訳する。
ロボットコントローラ2は、エンドエフェクタ5を移動命令で指定されている位置(図24の例では「POS000」)へと移動させ(ステップS2504)、撮像命令を画像処理装置3へ送信する(ステップS2505)。
画像処理装置3は、撮像命令を受信し(ステップS2506)、エンドエフェクタ5の動作領域を撮像する(ステップS2507)。画像処理装置3は、エンドエフェクタ5の動作領域の画像を表示し、表示されている画像上のワーク6の位置座標(x、y)を検出し(ステップS2508)、キャリブレーションにより求めてある変換式を用いて位置座標(x’、y’)へ変換する(ステップS2509)。
画像処理装置3は、位置座標(x’、y’)への移動命令をロボットコントローラ2へ送信する(ステップS2510)。ロボットコントローラ2は、移動命令を受信して(ステップS2511)、変換された位置座標(x’、y’)へエンドエフェクタ5を移動する(ステップS2512)
なお、試運転の実行に備えて、2つの実行モードを準備しておくことが好ましい。例えば1つは「ティーチングモード」、もう1つは「自動運転モード」である。
「ティーチングモード」では、ユーザが動作を確認しながらサンプルプログラムを更新するためのモードである。したがって、ユーザは、マニピュレータ1の近傍で作業をしている可能性が高いので、安全を確保するために低速動作に限定し、何らかのスイッチを意識的に押下げ続けている状態でないと動作しないよう設定されている。
また、「自動運転モード」では、「ティーチングモード」のような動作制限は存在しない。その代わり、ユーザの安全を確保するために、例えば所定の範囲内に人が存在することを人感センサが検知した場合には動作しない等の対策を施す必要はある。なお、キャリブレーションの実行時には、ユーザが近傍に存在する可能性が高いので、「ティーチングモード」の時だけ動作できる、といったロボットコントローラ2における制限機能を付与することが好ましい。
以上のように本実施の形態1によれば、画像処理装置3からロボットコントローラ2に対してマニピュレータ(ロボット)1の動作を制御する動作プログラムを画像処理装置3内で生成することができるので、マニピュレータ1の種別ごとに異なる機械語を理解していない作業者(ユーザ)であっても、マニピュレータ1の動作を高い精度で制御することができる動作プログラムを生成することが可能となる。したがって、すべての動作プログラムが完成する都度、動作を確認する煩雑な手順が不要となるので、システムとして早期に立ち上げることが可能となる。
(実施の形態2)
本発明の実施の形態2に係る画像処理システムの構成、画像処理装置3の構成は、実施の形態1と同様であることから、同一の機能を有する構成要素については同一の符号を付することにより詳細な説明は省略する。本実施の形態2は、設定条件を切り替えて動作を切り替えることが可能な動作プログラムを生成する点で、実施の形態1とは相違する。
実施の形態2では、ワーク6のピッキングの実行を例に挙げて説明する。図26は、本発明の実施の形態2に係る画像処理システムにおけるピッキングの実行を説明するための模式図である。図26に示すように、本実施の形態2に係る画像処理システムは、ワーク6をピックアップ位置261からプレース位置262へと移動させる。具体的には、撮像装置4でピックアップ位置261のワーク6を撮像しながら、ワーク6をマニピュレータ1のエンドエフェクタ5で把持し、プレース位置262まで移動してからワーク6を解放する。
図27は、本発明の実施の形態2に係る画像処理システムのピッキングの処理手順を示すフローチャートである。図27に示すように、ロボットコントローラ2は、マニピュレータ1のエンドエフェクタ5により撮像対象であるワーク6を撮像装置4で撮像することができない事態を回避するために、マニピュレータ1のエンドエフェクタ5を撮像領域内から移動する(ステップS2701)。
ロボットコントローラ2は、撮像命令を画像処理装置3へ送信する(ステップS2702)。画像処理装置3は、撮像命令を受信して(ステップS2703)、ワーク6を撮像する(ステップS2704)。画像処理装置3は、ワーク6の画像を表示し、表示されている画像上のワーク6の位置座標(x、y)を検出して(ステップS2705)、キャリブレーションにより求めてある変換式を用いて位置座標(x’、y’)へ変換する(ステップS2706)。画像処理装置3は、変換された位置座標(x’、y’)をロボットコントローラ2へ送信する(ステップS2707)。
ロボットコントローラ2は、位置座標(x’、y’)を受信し(ステップS2708)、ワーク6を把持するピックアップ位置261へエンドエフェクタ5を移動させる(ステップS2709)。ロボットコントローラ2は、エンドエフェクタ5にワーク6を把持させる(ステップS2710)。
ロボットコントローラ2は、ワーク6を把持しながらエンドエフェクタ5をプレース位置262へ移動させ(ステップS2711)、ワーク6を解放させる(ステップS2712)。なお、破線で囲まれている範囲の処理、すなわちステップS2710、ステップS2712以外の処理は、マニピュレータ1の動作を制御する動作プログラムを自動生成することができる。
ワーク6のエンドエフェクタ5で把持した位置がずれているため、撮像位置を補正する必要がある場合も生じうる。図28は、本発明の実施の形態2に係る画像処理システムにおける撮像位置を補正する場合のピッキングの実行を説明するための模式図である。
図28に示すように、本実施の形態2に係る画像処理システムは、ワーク6をピックアップ位置261からプレース位置262へと移動させる。図26とは異なり、ワーク6をマニピュレータ1のエンドエフェクタ5で把持し、プレース位置262まで移動する間の状態を撮像装置4で撮像する。つまり、マニピュレータ1のエンドエフェクタ5で把持された時点でワーク6の存在位置が機械的にずれるので、そのずれを補正する。
図29は、本発明の実施の形態2に係る画像処理システムの撮像位置を補正する場合のピッキングの処理手順を示すフローチャートである。図29に示すように、ロボットコントローラ2は、マニピュレータ1のエンドエフェクタ5をピックアップ位置261へ移動する(ステップS2901)。
ロボットコントローラ2は、ワーク6を把持し(ステップS2902)、撮像装置4によりマニピュレータ1のエンドエフェクタ5で把持されたワーク6を撮像する位置へと移動する(ステップS2903)。ロボットコントローラ2は、撮像命令を画像処理装置3へ送信する(ステップS2904)
画像処理装置3は、撮像命令を受信して(ステップS2905)、ワーク6を撮像する(ステップS2906)。画像処理装置3は、ワーク6の画像を表示し、表示されている画像上のワーク6の位置座標(x、y)を検出して(ステップS2907)、キャリブレーションにより求めてある変換式を用いて位置座標(x’、y’)へ変換する(ステップS2908)。画像処理装置3は、変換された位置座標(x’、y’)をロボットコントローラ2へ送信する(ステップS2909)。
ロボットコントローラ2は、位置座標(x’、y’)を受信し(ステップS2910)、移動命令で指定した位置座標へエンドエフェクタ5を移動させる(ステップS2911)。ロボットコントローラ2は、位置座標(x’、y’)が移動命令で指定した位置座標と一定範囲内に収束しているか否かを判断する(ステップS2912)。
ロボットコントローラ2が、位置座標(x’、y’)が移動命令で指定した位置座標と一定範囲内に収束していないと判断した場合(ステップS2912:NO)、ロボットコントローラ2は、処理をステップS2904へ戻して、上述した処理を繰り返す。ロボットコントローラ2が、位置座標(x’、y’)が移動命令で指定した位置座標と一定範囲内に収束したと判断した場合(ステップS2912:YES)、ロボットコントローラ2は、ワーク6を把持しながらエンドエフェクタ5をプレース位置262へ移動させ(ステップS2913)、ワーク6を解放させる(ステップS2914)。なお、破線で囲まれている範囲の処理、すなわちステップS2902、ステップS2912、ステップS2914以外の処理は、マニピュレータ1の動作を制御する動作プログラムを自動生成することができる。
ピッキングの実行についても、条件が変更された場合には、生成される動作プログラムが変動する。例えば撮像位置が相違する、画像から検出する位置が相違する、マニピュレータ1のメーカが相違する等、条件の相違に対応して動作プログラムを切り替えることが好ましい。
図30は、本発明の実施の形態2に係る画像処理システムの異なる動作条件の設定例を示す条件設定画面の例示図である。まず図30(a)に示すように、「条件0」として、条件設定領域3001において撮像位置を「POS0」、画像から検出する位置を「A」と設定しており、メーカ設定領域3002において、マニピュレータ1のメーカを「メーカA」と設定している。一方、図30(b)に示すように、「条件1」として、条件設定領域3001において撮像位置を「POS1」、画像から検出する位置を「B」と設定しており、メーカ設定領域3002において、マニピュレータ1のメーカを「メーカA」と設定している。ここでは、同じメーカのマニピュレータ1に異なる動作をさせている。
図31は、本発明の実施の形態2に係る画像処理システムの異なる動作条件に切り替え可能な動作プログラムの例示図である。図31に示すように、ソースコード3100は、画像処理装置3とのデータ通信を確立する命令である。ソースコード3101は、Val0の値に応じて動作条件の切り替えを実行する命令である。
具体的には、Val0の値が‘0’である場合、条件0に基づくソースコード3102を実行し、Val0の値が‘1’である場合、条件1に基づくソースコード3103を実行することになる。なお、ソースコード3100は、自動的に生成しても良いし、ユーザが書き加えても良い。
図32は、本発明の実施の形態2に係る画像処理システムにおける動作条件の切り替えが必要となるピッキングの実行を説明するための模式図である。図32に示すように、本実施の形態2に係る画像処理システムは、ワーク6A又はワーク6Bをピックアップ位置261からプレース位置262へと移動させる。
具体的には、撮像装置4でピックアップ位置261のワーク6A又はワーク6Bを撮像しながら、ワーク6A又はワーク6Bをマニピュレータ1のエンドエフェクタ5で把持し、プレース位置262まで移動してからワーク6A又はワーク6Bを解放する。同時に2つのワークを保持することはできないので、まずはワーク6Aを把持して移動する動作プログラムを、次にワーク6Bを把持して移動する動作プログラムを、それぞれ実行する。
図33A及び図33Bは、本発明の実施の形態2に係る画像処理システムの動作条件の切り替えを含むピックアップの処理手順を示すフローチャートである。図33A及び図33Bに示すように、ロボットコントローラ2は、動作条件の切り替えについて、画像処理装置3で設定を受け付けた条件がどの条件であるかを判断する(ステップS3301)。ロボットコントローラ2が、条件‘0’へ切り替えの設定を受け付けていると判断した場合(ステップS3301:‘0’)、ロボットコントローラ2は、条件‘0’への切替命令を画像処理装置3へ送信する(ステップS3302)。
切替命令としては、本実施の形態2に示すように、個別に切替命令を送信しても良いし、後述する撮像命令(撮像トリガ)に含ませても良い。つまり、撮像装置4で対象物6の撮像を開始するタイミングを示す撮像トリガで条件を切り替えても良い。撮像トリガごとに、少なくとも動作の種類及び動作順序を含む動作条件の設定を受け付けているので、撮像トリガに応じて動作条件を切り替えることができ、動作に応じた適切なタイミングで対象物6を撮像して、表示されている画像上の対象物6の位置座標を検出することが可能となる。
画像処理装置3は、切替命令を受信して(ステップS3303)、応答信号をロボットコントローラ2へ送信する(ステップS3304)。ロボットコントローラ2は、応答信号を受信して(ステップS3305)、位置POS0へマニピュレータ1のエンドエフェクタ5を移動させる(ステップS3306)。
ロボットコントローラ2は、撮像命令を画像処理装置3へ送信する(ステップS3307)。画像処理装置3は、撮像命令を受信して(ステップS3308)、ワーク6を撮像する(ステップS3309)。画像処理装置3は、ワーク6の画像を表示し、表示されている画像上のワーク6の位置座標(x、y)を検出して(ステップS3310)、キャリブレーションにより求めてある変換式を用いて位置座標(x’、y’)へ変換する(ステップS3311)。画像処理装置3は、変換された位置座標(x’、y’)をロボットコントローラ2へ送信する(ステップS3312)。
ロボットコントローラ2は、位置座標(x’、y’)を受信し(ステップS3313)、位置座標(x’、y’)で示されているワーク6を把持するピックアップ位置261へ、マニピュレータ1のエンドエフェクタ5を移動させる(ステップS3314)。ロボットコントローラ2は、エンドエフェクタ5にワーク6を把持させ(ステップS3315)、ワーク6を把持しながらエンドエフェクタ5をプレース位置262へ移動させて(ステップS3316)、ワーク6を解放させる(ステップS3317)。
ロボットコントローラ2が、条件‘1’へ切り替えの設定を受け付けていると判断した場合(ステップS3301:‘1’)、ロボットコントローラ2は、条件‘1’への切替命令を画像処理装置3へ送信する(ステップS3320)。
画像処理装置3は、切替命令を受信して(ステップS3321)、応答信号をロボットコントローラ2へ送信する(ステップS3322)。ロボットコントローラ2は、応答信号を受信して(ステップS3323)、位置POS1へマニピュレータ1のエンドエフェクタ5を移動させる(ステップS3324)。
ロボットコントローラ2は、撮像命令を画像処理装置3へ送信する(ステップS3325)。画像処理装置3は、撮像命令を受信して(ステップS3326)、ワーク6を撮像する(ステップS3327)。画像処理装置3は、ワーク6の画像を表示し、表示されている画像上のワーク6の位置座標(x、y)を検出して(ステップS3328)、キャリブレーションにより求めてある変換式を用いて位置座標(x’、y’)へ変換する(ステップS3329)。画像処理装置3は、変換された位置座標(x’、y’)をロボットコントローラ2へ送信する(ステップS3330)。
ロボットコントローラ2は、位置座標(x’、y’)を受信し(ステップS3331)、位置座標(x’、y’)で示されているワーク6を把持するピックアップ位置261へ、マニピュレータ1のエンドエフェクタ5を移動させる(ステップS3332)。ロボットコントローラ2は、エンドエフェクタ5にワーク6を把持させ(ステップS3333)、ワーク6を把持しながらエンドエフェクタ5をプレース位置262へ移動させて(ステップS3334)、ワーク6を解放させる(ステップS3335)。なお、破線で囲まれている範囲の処理、すなわちステップS3315、ステップS3317、ステップS3333、ステップS3335以外の処理は、マニピュレータ1の動作を制御する動作プログラムを自動生成することができる。
以上のように本実施の形態2によれば、画像処理装置3からロボットコントローラ2に対してマニピュレータ1のエンドエフェクタ5の動作を制御する移動命令、動作命令を送信することができるので、マニピュレータ(ロボット)1の種別ごとに異なる機械語を理解する必要がなく、マニピュレータ1を試運転することにより正しく動作するか否かを確認することが可能となる。したがって、すべての動作プログラムが完成する都度、動作を確認する煩雑な手順が不要となるので、システムとして早期に立ち上げることが可能となる。
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。例えばロボットコントローラ2の代わりにモーションコントローラを用いることで、適用範囲を拡大することができる。
また、従来、ロボットコントローラ2で移動目標位置を取得する場合、画像処理装置3からは相対的な位置座標を受信していた。例えば、画像処理装置3では、移動することにより生ずる差分である、差分距離X(X方向の差分)、差分距離Y(Y方向の差分)及び差分角度(XY平面上での回転角度)θを画像から検出し、ロボットコントローラ2は、受信した差分距離X、差分距離Y及び差分角度θを基準位置に加算することにより、移動目標位置を特定していた。
しかし、本実施の形態では、基準位置を含む座標系を画像処理装置3に記憶しておくことができる。したがって、ロボットコントローラ2に対して、差分距離X、差分距離Y及び差分角度θという相対的な位置座標ではなく、画像処理装置3内で算出した移動目標位置の座標値そのものを送信することができる。
これにより、マニピュレータ1のエンドエフェクタ5を移動させる場合に、ロボットコントローラ2側で基準座標を記憶しておく必要がない。したがって、画像処理装置3のみで移動目標位置の座標値を出力することができ、ワーク6を交換するときに、改めて新たなワーク6について基準座標を設定する必要もなく、操作が煩雑にならない。