本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
§1 適用例
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、実施の形態に係る制御システムの全体構成を示す概略図である。図1に例示される制御システムSYSは、生産ラインなどに組み込まれ、コンテナ5にばら積みされた物体であるワーク1を1個ずつピッキングするような制御を行う。なお、図1には、理解を容易にするため、コンテナ5内に2つのワーク1のみが存在する場合を図示するが、多数のワーク1が重なった状態で配置されていてもよい。
図1に例示される制御システムSYSは、画像処理装置100と、ロボットコントローラ200と、ロボット300とを備える。画像処理装置100には、プロジェクタ(照明装置)7、撮像装置8およびユーザインターフェース9が接続されている。
ロボット300は、ワーク1をピッキングする動作を行なう。ロボット300は、ワーク1を把持するエンドエフェクタ30と、一端においてエンドエフェクタ30を支持する多関節アーム33と、多関節アーム33の他端を支持するベース34とを含む。ロボット300の動作は、ロボットコントローラ200によって制御される。
ロボットコントローラ200は、画像処理装置100から、エンドエフェクタ30が取るべき位置姿勢を示す位置姿勢情報を受ける。ロボットコントローラ200は、当該位置姿勢情報に基づいて、ロボット300のエンドエフェクタ30を適切な位置姿勢に位置決めするための指令を生成し、ロボット300へ出力する。この指令に応答して、ロボット300は、ワーク1のピッキング動作(図1に示す例では把持動作)を開始する。
プロジェクタ7は、一種の面光源として機能するとともに、画像処理装置100からの指示に従って任意の濃淡パターンの照明光を所定位置(ワーク1を含むコンテナ5が配置される位置)に投影できるものとする。この任意の濃淡パターンは、照射面内で明るさが均一であるパターンおよび照射面内の所定方向に沿って明るさが周期的に変化するパターンを含む。
プロジェクタ7は、主要なコンポーネントとして、LED(Light Emitting Diode)やハロゲンランプなどの光源と、プロジェクタ7の照射面の側に配置されたフィルタとを含む。また、フィルタは、後述するような三次元形状の計測に必要な濃淡パターンを発生させるものであり、画像処理装置100からの指令に従って、面内の透光率を任意に変化させることができる。なお、フィルタの代わりに、液晶ディスプレイやデジタルミラーデバイスを用いて濃淡パターンを発生させてもよい。液晶ディスプレイやデジタルミラーデバイスを用いることにより任意の濃淡パターンを発生できる。
撮像装置8は、視野領域にコンテナ5が含まれるように設置され、プロジェクタ7によって照射された照明光がワーク1の表面で反射した光を撮像する。撮像装置8は、撮像により得られた画像を画像処理装置100に出力する。
撮像装置8は、主要なコンポーネントとして、レンズなどの光学系と、CCD(Coupled Charged Device)やCMOS(Complementary Metal Oxide Semiconductor)センサといった撮像素子とを含む。
画像処理装置100は、撮像装置8から受けた画像に基づいて、コンテナ5内の複数のワーク1の中の1つを対象ワーク2として選択し、対象ワーク2を把持するためのエンドエフェクタ30の位置姿勢を決定する。画像処理装置100は、決定した位置姿勢を示す位置姿勢情報を生成し、生成した位置姿勢情報をロボットコントローラ200に出力する。ロボットコントローラ200は、画像処理装置100から受けた位置姿勢情報に従ってロボット300を制御する。
具体的には、画像処理装置100は、撮像装置8から受けた画像に基づいて、撮像装置8の視野領域の三次元形状を計測する。視野領域にはコンテナ5が含まれるため、コンテナ5にばら積みされた複数のワーク1の三次元形状が計測される。
画像処理装置100は、計測した三次元形状に基づいて、複数のワーク1の中の1つを把持対象となる対象ワーク2として選択するとともに、当該対象ワーク2を把持するときのエンドエフェクタ30の位置姿勢候補を選択する。
選択された位置姿勢候補の状態のエンドエフェクタ30は、対象ワーク2以外の物体(他のワーク1およびコンテナ5を含む)と干渉する可能性がある。このような干渉が生じた場合、エンドエフェクタ30または対象ワーク2以外の物体に破損が生じる可能性がある。そこで、画像処理装置100は、このような干渉を避けるため、エンドエフェクタ30の三次元形状を示す三次元CADデータを用いて、エンドエフェクタ30と対象ワーク2以外の物体との干渉判定を行なう。具体的には、三次元CADデータで示され、かつ、選択された位置姿勢候補に存在するエンドエフェクタモデルをエンドエフェクタ30とみなし、エンドエフェクタモデルと対象ワーク2以外の物体との干渉判定を行なう。
図2は、三次元CADデータで示されるエンドエフェクタモデルと、対象ワークをピッキングするときのエンドエフェクタとの一例を示す図である。図2の右側に例示されるように、エンドエフェクタ30は、可動部である右爪部31Rおよび左爪部31Lと、右爪部31Rおよび左爪部31Lを移動可能に支持する支持部32とを含む。具体的には、支持部32は、右爪部31Rと左爪部31Lとの間の距離(間隔)が可変となるように、右爪部31Rおよび左爪部31Lを平行移動可能に支持する。
対象ワーク2を把持するためには、当該対象ワーク2のサイズに応じた開き幅Wだけ右爪部31Rと左爪部31Lとの間隔を広げる必要がある。しかしながら、エンドエフェクタ30の三次元形状を示す三次元形状データは、右爪部31Rおよび左爪部31Lが定状態(図2に示す例では閉状態)であるときのエンドエフェクタ30全体の三次元形状に基づいて作成される。そのため、図2の左側に例示されるように、エンドエフェクタモデル35の形状は、実際に対象ワーク2をピッキングするときのエンドエフェクタ30の形状と一致しない。
また、三次元CADデータは、通常、エンドエフェクタ30全体の三次元形状のみを示し、右爪部31R、左爪部31Lおよび支持部32がどの部分に該当するのかを示す属性情報を含まない。そのため、三次元CADデータのみを用いて、対象ワーク2をピッキングするときのエンドエフェクタ30の形状に一致させるように、エンドエフェクタモデル35の形状を変更することもできない。
以上から、エンドエフェクタモデル35をそのまま用いた場合、エンドエフェクタ30と対象ワーク2以外の物体との干渉判定を精度良く行なうことができない。そこで、画像処理装置100は、以下のようにして干渉判定を行なう。
画像処理装置100は、三次元CADデータで示されるエンドエフェクタモデル35をユーザインターフェース9に表示させる。そして、画像処理装置100は、ユーザインターフェース9に入力された情報に基づいて、エンドエフェクタモデル35のうち可動部に対応する可動部モデルと可動部モデルの可動方向とを設定する。図2に示す例では、エンドエフェクタモデル35のうち右爪部31Rおよび左爪部31Lにそれぞれ対応する右爪部モデル36Rおよび左爪部モデル36Lが設定される。さらに、右爪部モデル36Rおよび左爪部モデル36Lの可動方向は、それぞれ+Y方向、−Y方向に設定される。
画像処理装置100は、エンドエフェクタモデル35において、設定された移動量だけ右爪部モデル36Rおよび左爪部モデル36Lを可動方向に移動させた状態で干渉判定を行なう。
本実施の形態によれば、対象ワーク2のサイズに応じて適宜移動量を設定することにより、実際に対象ワーク2をピッキングするときのエンドエフェクタ30の形状に合うようにエンドエフェクタモデル35の形状を変更できる。図2に示す例では、開き幅Wの1/2を移動量として設定すればよい。そして、変更後のエンドエフェクタモデル35を用いることにより、エンドエフェクタ30と対象ワーク2以外の物体との干渉判定を精度良く行なうことができる。
§2 具体例
次に、本実施の形態に係る制御システムの具体例について説明する。
<A.画像処理装置のハードウェア構成例>
画像処理装置100は、典型的には、汎用的なアーキテクチャを有しているコンピュータであり、予めインストールされたプログラム(命令コード)を実行することで、本実施の形態に係る画像処理を実行する。このようなプログラムは、典型的には、各種記録媒体などに格納された状態で流通し、あるいは、ネットワークなどを介して画像処理装置100にインストールされる。
このような汎用的なコンピュータを利用する場合には、本実施の形態に係る画像処理を実行するためのアプリケーションに加えて、コンピュータの基本的な処理を実行するためのOS(Operating System)がインストールされていてもよい。この場合には、本実施の形態に係るプログラムは、OSの一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。すなわち、本実施の形態に係るプログラム自体は、上記のようなモジュールを含んでおらず、OSと協働して処理が実行されてもよい。本実施の形態に係るプログラムとしては、このような一部のモジュールを含まない形態であってもよい。
さらに、本実施の形態に係るプログラムは、他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には、上記のような組合せられる他のプログラムに含まれるモジュールを含んでおらず、当該他のプログラムと協働して処理が実行される。すなわち、本実施の形態に係るプログラムとしては、このような他のプログラムに組込まれた形態であってもよい。なお、プログラムの実行により提供される機能の一部もしくは全部を専用のハードウェア回路として実装してもよい。
図3は、図1に示す画像処理装置のハードウェア構成の一例を示す概略図である。図3に示されるように、画像処理装置100は、演算処理部であるCPU(Central Processing Unit)110と、記憶部としてのメインメモリ112およびハードディスク114と、カメラインターフェース116と、入力インターフェース118と、表示コントローラ120と、プロジェクタインターフェース122と、通信インターフェース124と、データリーダ/ライタ126とを含む。これらの各部は、バス128を介して、互いにデータ通信可能に接続される。
CPU110は、ハードディスク114にインストールされたプログラム(コード)をメインメモリ112に展開して、これらを所定順序で実行することで、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置であり、ハードディスク114から読み出されたプログラムに加えて、撮像装置8によって取得された画像、キャリブレーションデータ、計測結果に関する情報などを保持する。さらに、ハードディスク114には、各種設定値などが格納されてもよい。なお、ハードディスク114に加えて、あるいは、ハードディスク114に代えて、フラッシュメモリなどの半導体記憶装置を採用してもよい。
カメラインターフェース116は、CPU110と撮像装置8との間のデータ伝送を仲介する。すなわち、カメラインターフェース116は、撮像装置8と接続される。カメラインターフェース116は、撮像装置8からの画像を一時的に蓄積するための画像バッファ116aを含む。そして、カメラインターフェース116は、画像バッファ116aに所定コマ数の画像が蓄積されると、その蓄積された画像をメインメモリ112へ転送する。また、カメラインターフェース116は、CPU110が発生した内部コマンドに従って、撮像装置8に対して撮像コマンドを与える。
入力インターフェース118は、CPU110とユーザインターフェース9を構成するタッチパネル90、マウス、キーボードなどの入力部との間のデータ伝送を仲介する。すなわち、入力インターフェース118は、ユーザが入力部を操作することで与えられる操作指令を受付ける。
表示コントローラ120は、ユーザインターフェース9を構成するディスプレイ92と接続され、CPU110における処理結果などをユーザに通知する。すなわち、表示コントローラ120は、ディスプレイ92に接続され、当該ディスプレイ92での表示を制御する。
プロジェクタインターフェース122は、CPU110とプロジェクタ7との間のデータ伝送を仲介する。より具体的には、プロジェクタインターフェース122は、CPU110が発生した内部コマンドに従って、プロジェクタ7に対して照明コマンドを与える。
通信インターフェース124は、CPU110とロボットコントローラ200などの外部装置との間のデータ伝送を仲介する。通信インターフェース124は、典型的には、イーサネット(登録商標)やUSB(Universal Serial Bus)などからなる。
データリーダ/ライタ126は、CPU110と記録媒体であるメモリカード106との間のデータ伝送を仲介する。すなわち、メモリカード106には、画像処理装置100で実行されるプログラムなどが格納された状態で流通し、データリーダ/ライタ126は、このメモリカード106からプログラムを読出す。また、データリーダ/ライタ126は、CPU110の内部指令に応答して、撮像装置8によって取得された入力画像および/または画像処理装置100における処理結果などをメモリカード106へ書込む。なお、メモリカード106は、SD(Secure Digital)などの汎用的な半導体記憶デバイスや、フレキシブルディスク(Flexible Disk)などの磁気記憶媒体や、CD−ROM(Compact Disk Read Only Memory)などの光学記憶媒体等からなる。
<B.画像処理装置の機能構成例>
図4は、図1に示す画像処理装置の機能構成の一例を示すブロック図である。図4に示されるように、画像処理装置100は、第1記憶部10と、第2記憶部11と、CAD読込部12と、パーツ設定部13と、移動量設定部14と、相対位置設定部15と、3D計測部20と、コンテナ検出部21と、選択部22と、モデル変更部26と、干渉判定部27と、把持位置出力部28とを備える。第1記憶部10および第2記憶部11は、図3に示すハードディスク114によって実現される。CAD読込部12、パーツ設定部13、移動量設定部14、相対位置設定部15、3D計測部20、コンテナ検出部21、選択部22、モデル変更部26、干渉判定部27および把持位置出力部28は、CPU110がプログラムを実行することにより実現される。
CAD読込部12、パーツ設定部13、移動量設定部14および相対位置設定部15は、ワーク1をピッキングする前の事前設定処理を実行するブロックである。3D計測部20、コンテナ検出部21、選択部22、モデル変更部26、干渉判定部27および把持位置出力部28は、ワーク1のピッキング位置を探索する探索処理を実行するブロックである。
第1記憶部10は、エンドエフェクタ30の三次元形状を示す第1CADデータ10aを記憶する。第1CADデータ10aは、エンドエフェクタ30全体の三次元形状のみを示し、右爪部31R、左爪部31Lおよび支持部32がどの部分に該当するのかを示す属性情報を含まない。第2記憶部11は、ワーク1の三次元形状を示す第2CADデータ11aを記憶する。
CAD読込部12は、第1記憶部10から第1CADデータ10aを読み込むことにより、第1CADデータ10aを取得する。さらに、CAD読込部12は、第2記憶部11から第2CADデータ11aを読み込むことにより、第2CADデータ11aを取得する。
CAD読込部12は、読み込んだCADデータを内部表現(処理用の表現)に変換する。図5は、第1CADデータの内部表現の例を示す図である。第1CADデータ10aは、複数の要素の集合として変換される。すなわち、第1CADデータ10aで示されるエンドエフェクタモデル35は、複数の要素の集合によって構成される。図5に示されるように、要素は、例えば、ボックス、断面、三角メッシュ、点のいずれかである。
図4に戻って、パーツ設定部13は、第1CADデータ10aで示されるエンドエフェクタモデル35をユーザインターフェース9に表示させる。パーツ設定部13は、ユーザインターフェース9に入力された情報に基づいて、右爪部モデル36Rおよび左爪部モデル36L(図2参照)を設定する。さらに、パーツ設定部13は、ユーザインターフェース9に入力された情報に基づいて、右爪部モデル36Rおよび左爪部モデル36Lの各々の可動方向を設定する。さらに、パーツ設定部13は、ユーザインターフェース9に入力された情報に基づいて、エンドエフェクタモデル35のうちの支持部32に対応する部分である支持部モデル37(図2参照)を設定する。
パーツ設定部13は、エンドエフェクタモデル35を構成する各要素(図5に示すボックス、断面、三角メッシュ、または点)について、右爪部モデル36R、左爪部モデル36Lおよび支持部モデル37のいずれに属するかを示す属性情報を付与する。
移動量設定部14は、ユーザインターフェース9に入力された情報に基づいて、エンドエフェクタモデル35が第2CADデータ11aで示されるワークモデルを把持するときに必要な右爪部モデル36Rおよび左爪部モデル36Lの各々の移動量を設定する。
相対位置設定部15は、ユーザインターフェース9に入力された情報に基づいて、エンドエフェクタモデル35がワークモデルを把持するときの、支持部モデル37に対するワークモデルの相対位置姿勢を設定する。
3D計測部20は、撮像装置8から取得した画像に基づいて、撮像装置8の視野領域の三次元形状を計測する。計測された三次元形状は、例えば三次元点群データで表現される。三次元点群データは、視野領域に存在する物体の撮像装置8側の表面を構成する複数の点の各々の三次元座標を示す。
コンテナ検出部21は、コンテナ5の三次元形状を示す情報を予め記憶しており、当該情報と3D計測部20の計測結果である三次元点群データとに基づいて、コンテナ5の位置姿勢を検出する。コンテナ5内には複数のワーク1が積まれているため、撮像装置8から見たとき、コンテナ5の側壁の上端面が観察される。そのため、コンテナ検出部21は、三次元点群データの中からコンテナ5の側壁の上端面に対応する点のデータを抽出し、抽出したデータとコンテナ5の三次元形状を示す情報とから、コンテナ5の位置姿勢を計算すればよい。
選択部22は、3D計測部20の計測結果に基づいて、対象ワーク2をピッキングするときのエンドエフェクタ30の1または複数の位置姿勢候補を選択する。図4に示されるように、選択部22は、ワーク検出部23と、対象ワーク選択部24と、位置姿勢決定部25とを含む。
ワーク検出部23は、テンプレートマッチングを用いて、撮像装置8の視野領域の中からワーク1を探索し、探索されたワーク1の位置姿勢を検出する。
対象ワーク選択部24は、ワーク検出部23によって検出されたワーク1の位置姿勢に基づいて、ピッキングの対象となる対象ワーク2を選択する。例えば、対象ワーク選択部24は、ワーク検出部23によって探索されたワーク1のうち、高さが上位所定数のワーク1を対象ワーク2として選択する。
位置姿勢決定部25は、対象ワーク2を把持するときにエンドエフェクタ30の支持部32が取るべき位置姿勢を決定する。上述したように、エンドエフェクタモデル35がワークモデルを把持するときの支持部モデル37に対するワークモデルの相対位置姿勢が相対位置設定部15によって設定されている。そのため、位置姿勢決定部25は、支持部32に対する対象ワーク2の相対位置姿勢が相対位置設定部15によって設定された相対位置姿勢と一致するように、支持部32が取るべき位置姿勢を決定すればよい。
モデル変更部26は、対象ワーク2を把持するときのエンドエフェクタ30の状態に一致するようにエンドエフェクタモデル35を変更する。モデル変更部26は、エンドエフェクタモデル35を構成する複数の要素の各々の座標を変換することにより、エンドエフェクタモデル35を変更する。
具体的には、モデル変更部26は、支持部モデル37の位置姿勢が位置姿勢決定部25によって決定された位置姿勢に一致するように、エンドエフェクタモデル35を構成する各要素の座標を変換する。さらに、モデル変更部26は、移動量設定部14によって設定された移動量だけ右爪部モデル36Rおよび左爪部モデル36Lを可動方向にそれぞれ移動するように、右爪部モデル36Rおよび左爪部モデル36Lを構成する各要素の座標を変換する。
干渉判定部27は、モデル変更部26によって変更されたエンドエフェクタモデル35と対象ワーク2以外の物体(対象ワーク2以外のワーク1およびコンテナ5)との干渉判定を行なう。
把持位置出力部28は、干渉判定部27の判定結果に基づいて、エンドエフェクタ30の位置姿勢を決定し、決定した位置姿勢を示す位置姿勢情報を生成する。把持位置出力部28は、生成した位置姿勢情報をロボットコントローラ200に出力する。
<C.パーツ設定部、移動量設定部および相対位置設定部による設定方法>
図6〜9を参照して、パーツ設定部13、移動量設定部14および相対位置設定部15による各種情報を設定方法の詳細について説明する。
図6は、実施の形態に係るユーザインターフェースに表示されるUI画面の一例を示す図である。図6に示すUI画面40は、CPU110(図3参照)の処理結果に従ってユーザインターフェース9のディスプレイ92に表示される。
UI画面40は、表示領域41と、支持部選択ボタン45と、右爪部選択ボタン46と、左爪部選択ボタン47と、右爪用の可動方向入力欄48と、左爪用の可動方向入力欄49と、移動量入力欄50と、ワーク表示ボタン51と、OKボタン52と、キャンセルボタン53とを含む。
表示領域41には、第1CADデータ10aで示されるエンドエフェクタモデル35が表示される。表示領域41には、第1CADデータ10aの座標系(以下、「CAD座標系」と称する。)に対応する座標軸も表示される。
パーツ設定部13は、ユーザインターフェース9を介して、表示領域41に表示されるエンドエフェクタモデル35をヨー、ロールおよびピッチのいずれかの方向に回転させる操作入力を受け付ける。加えて、パーツ設定部13は、ユーザインターフェース9を介して、エンドエフェクタモデル35の並進および拡大/縮小の操作入力も受け付ける。パーツ設定部13は、ユーザインターフェース9への操作入力に応じて、表示領域41に表示されるエンドエフェクタモデル35の位置姿勢およびサイズを変更する。これにより、作業者は、エンドエフェクタモデル35における支持部32、右爪部31Rおよび左爪部31Lにそれぞれ対応する部分が互いに重ならないように、エンドエフェクタモデル35の姿勢を変更できる。
表示領域41には、エンドエフェクタモデル35のうち支持部32に対応する部分である支持部モデル37を設定するための枠線42が表示される。作業者は、ユーザインターフェース9のタッチパネル90に対する操作を行なうことにより、枠線42の位置姿勢およびサイズを変更する。パーツ設定部13は、エンドエフェクタモデル35を構成する複数の要素のうち、支持部選択ボタン45が操作されたときに枠線42内に位置する要素に対して、支持部モデル37を示す属性情報を付与する。これにより、作業者は、表示領域41の画像を見ながら、枠線42内に支持部32に対応する部分が含まれるように枠線42の位置姿勢およびサイズを適宜変更することにより、支持部モデル37を設定できる。
表示領域41には、エンドエフェクタモデル35のうち右爪部31Rに対応する部分である右爪部モデル36Rを設定するための枠線43が表示される。作業者は、タッチパネル90に対する操作を行なうことにより、枠線43の位置姿勢およびサイズを変更する。パーツ設定部13は、エンドエフェクタモデル35を構成する複数の要素のうち、右爪部選択ボタン46が操作されたときに枠線43内に位置する要素に対して、右爪部モデル36Rを示す属性情報を付与する。これにより、作業者は、表示領域41の画像を見ながら、枠線43内に右爪部31Rに対応する部分が含まれるように枠線43の位置姿勢およびサイズを適宜変更することにより、右爪部モデル36Rを設定できる。
表示領域41には、エンドエフェクタモデル35のうち左爪部31Lに対応する部分である左爪部モデル36Lを設定するための枠線44が表示される。作業者は、タッチパネル90に対する操作を行なうことにより、枠線44の位置姿勢およびサイズを変更する。パーツ設定部13は、エンドエフェクタモデル35を構成する複数の要素のうち、左爪部選択ボタン47が操作されたときに枠線44内に位置する要素に対して、左爪部モデル36Lを示す属性情報を付与する。これにより、作業者は、表示領域41の画像を見ながら、枠線44内に左爪部31Lに対応する部分が含まれるように枠線44の位置姿勢およびサイズを適宜変更することにより、左爪部モデル36Lを設定できる。
作業者は、右爪部選択ボタン46を操作することにより設定した右爪部モデル36Rの可動方向を可動方向入力欄48に入力できる。同様に、作業者は、左爪部選択ボタン47を操作することにより設定した左爪部モデル36Lの可動方向を可動方向入力欄49に入力する。可動方向入力欄48,49には、可動方向を示すベクトルが入力される。図6に示す例では、右爪部モデル36Rの可動方向として、CAD座標系における+Y方向を示すベクトル(0,1,0)が入力されている。また、左爪部モデル36Lの可動方向として、−Y方向を示すベクトル(0,−1,0)が入力されている。パーツ設定部13は、可動方向入力欄48に入力されたベクトルに従って、右爪部モデル36Rの可動方向を設定し、可動方向入力欄49に入力されたベクトルに従って、左爪部モデル36Lの可動方向を設定する。
作業者は、右爪部モデル36Rおよび左爪部モデル36Lの移動量を移動量入力欄50に入力できる。右爪部モデル36Rの移動量は、右爪部モデル36Rの基準位置から、右爪部モデル36Rの可動方向への移動量を示す。右爪部モデル36Rの基準位置は、第1CADデータ10aにおいて、右爪部モデル36Rを示す属性情報が付与された要素の座標によって特定される位置である。同様に、左爪部モデル36Lの移動量は、左爪部モデル36Lの基準位置から、左爪部モデル36Lの可動方向への移動量を示す。左爪部モデル36Lの基準位置は、第1CADデータ10aにおいて、左爪部モデル36Lを示す属性情報が付与された要素の座標によって特定される位置である。
移動量入力欄50に移動量が入力されると、移動量設定部14は、表示領域41に表示されているエンドエフェクタモデル35において、右爪部モデル36Rおよび左爪部モデル36Lを入力された移動量だけ可動方向にそれぞれ移動させる。これにより、作業者は、表示領域41を確認することにより、右爪部モデル36Rおよび左爪部モデル36Lの移動後のエンドエフェクタモデル35の状態を把握することができる。
図7は、移動量入力欄に移動量が入力されたときのUI画面の一例を示す図である。図7に示されるように、表示領域41内に表示されているエンドエフェクタモデル35において、右爪部モデル36Rおよび左爪部モデル36Lは、図6に示す状態から移動量入力欄50に入力された移動量だけ移動している。
ワーク表示ボタン51が操作されると、相対位置設定部15は、CAD読込部12によって読み込まれた第2CADデータ11aで示されるワークモデルを表示領域41に表示させる。このとき、相対位置設定部15は、ワークモデルとエンドエフェクタモデルとが表示領域41内に表示されるように、ワークモデルの表示位置を適宜変更する。
図8は、ワーク表示ボタンが操作されたときのUI画面の一例を示す図である。図8に示されるように、表示領域41にワークモデル3が表示されている。
相対位置設定部15は、ユーザインターフェース9を介して、表示領域41に表示されるワークモデル3を並進移動または回転移動させる操作入力を受け付ける。相対位置設定部15は、ユーザインターフェース9への操作入力に応じて、ワークモデル3の座標変換を行ない、表示領域41に表示されるワークモデル3の位置姿勢を変更する。また、上述したように、パーツ設定部13は、エンドエフェクタモデル35を回転移動させる操作に応じて、表示領域41に表示されるエンドエフェクタモデル35の姿勢を変更する。
作業者は、ユーザインターフェース9を操作して、ワークモデル3をエンドエフェクタモデル35が把持可能なように、ワークモデル3の位置姿勢、エンドエフェクタモデル35の姿勢、および、右爪部モデル36Rおよび左爪部モデル36Lの移動量を適宜変更する。
相対位置設定部15は、表示領域41に表示されている位置姿勢のワークモデル3と、表示領域41に表示されている姿勢を有し、現在入力されている移動量だけ移動された右爪部モデル36Rおよび左爪部モデル36Lを有するエンドエフェクタモデル35との干渉判定を行なってもよい。そして、相対位置設定部15は、干渉判定結果を表示領域41に表示してもよい。
図8に示す例では、ワークモデル3において、エンドエフェクタモデル35と干渉する部分が太線54で表示されている。太線54は、視認しやすいように赤色で表示されてもよい。これにより、作業者は、右爪部モデル36Rおよび左爪部モデル36Lとの間にわずかな隙間だけ空けてワークモデル3が位置するように、太線54の表示を確認しながら、ワークモデル3の位置姿勢、エンドエフェクタモデル35の姿勢、および、右爪部モデル36Rおよび左爪部モデル36Lの移動量を適切に調整できる。
作業者は、ワークモデル3をエンドエフェクタモデル35が把持可能なように、ワークモデル3の位置姿勢、エンドエフェクタモデル35の姿勢、および、右爪部モデル36Rおよび左爪部モデル36Lの移動量の調整が終了すると、OKボタン52を操作する。
移動量設定部14は、OKボタン52が操作されたときに移動量入力欄50に入力されている移動量を、ワークモデル3をエンドエフェクタモデル35が把持するときに必要な右爪部モデル36Rおよび左爪部モデル36Lの移動量として設定する。
移動量設定部14は、設定した移動量だけ右爪部モデル36Rの可動方向に平行移動させるための座標変換行列HMRを計算する。さらに、移動量設定部14は、設定した移動量だけ左爪部モデル36Lの可動方向に平行移動させるための座標変換行列HMLを計算する。
相対位置設定部15は、OKボタン52が操作されたときに表示領域41に表示されているワークモデル3および支持部モデル37の位置姿勢に基づいて、支持部モデル37に対するワークモデル3の相対位置姿勢を設定する。当該相対位置姿勢は、ワークモデル3をエンドエフェクタモデル35が把持するときの状態に対応する。
支持部モデル37に対するワークモデル3の相対位置姿勢は、支持部モデル37を基準とする座標系(以下、「支持部モデル座標系」と称する。)を、ワークモデル3を基準とする座標系(以下、「ワークモデル座標系」と称する。)に変換する座標変換行列tMHwMで示される。支持部モデル座標系は、ロボット300のツール座標系(フランジ面に設定される座標系)に一致するように設定されている。そこで、相対位置設定部15は、支持部モデル37に対するワークモデル3の相対位置姿勢を示す情報として座標変換行列tMHwMを計算する。
図9は、支持部モデルに対するワークモデルの相対位置姿勢を示す座標変換行列tMHwMの一例を示す図である。図9には、直方体状の支持部モデル37と、T字管であるワークモデル3とが示される。
図9に示す例では、支持部モデル座標系は、支持部モデル37の基準点37oを原点とし、支持部モデル37における3つの特定方向37v1〜37v3を基底ベクトルとする座標系である。相対位置設定部15は、支持部モデル37の基準位置として、支持部モデル37を構成する複数の要素に含まれる任意の一点(例えば支持部モデル37の上面の中心)を選択すればよい。さらに、相対位置設定部15は、支持部モデル37における任意の3つの方向を特定方向37v1〜37v3として選択すればよい。特定方向37v1は、例えば、支持部モデル37の上面から下面に向かう方向である。特定方向37v2は、例えば、支持部モデル37における互いに対向する一対の側面に直交する方向である。特定方向37v3は、例えば、支持部モデル37における残りの一対の側面に直交する方向である。
ワークモデル座標系は、ワークモデル3の基準点3oを原点とし、ワークモデル3における3つの特定方向3v1〜3v3を基底ベクトルとする座標系である。ワークモデル3の基準点3oおよび特定方向3v1〜3v3は、予め定められている。ワークモデル3の基準点3oは、例えば、T字官における分岐点に予め定められている。特定方向3v1は、例えば、T字管における流路方向の1つに定められている。特定方向3v2は、例えば、T字管における別の流路方向に定められている。特定方向3v3は、例えば特定方向3v1,3v2に直交する方向に定められている。
相対位置設定部15は、支持部モデル座標系をワークモデル座標系に変換する座標変換行列tMHwMを計算する。座標変換行列tMHwMは、支持部モデル座標系における、ワークモデル座標系の基底ベクトル3v1〜3v3の成分および原点3oの位置を表している。
<D.三次元計測>
次に、3D計測部20による三次元形状の計測処理の詳細について説明する。3D計測部20は、公知の三次元計測処理を用いて、撮像装置8の視野領域に存在する物体表面上の各点の三次元座標を示す三次元点群データを生成する。
三次元計測処理の具体例として、例えば位相シフト法が採用される。この位相シフト法は、照射面内において正弦波状に濃淡を変化させたパターンを有する照明光を照射した状態で撮像された画像(正弦波投影画像)を用いる方法である。照射面内の濃淡の変化周期や位相を異ならせたパターンが複数用意され、プロジェクタ7は、撮像装置8の視野領域に対して、当該複数のパターンを順次照射する。3D計測部20は、複数のパターンが照射されたときにそれぞれ撮像される画像を正弦波投影画像群として取得する。そして、3D計測部20は、これらの正弦波投影画像間における対応する部分の明るさ(輝度や明度)の変化に基づいて、三次元座標を算出する。
<E.ワークの検出方法>
次に、ワーク検出部23によるワーク1の検出方法について説明する。ワーク検出部23は、第2CADデータ11aで示されるワークモデルを様々な視点から見た姿勢ごとのテンプレートを予め記憶している。ワーク検出部23は、各テンプレートと3D計測部20の計測結果である三次元点群データとを照合し、三次元点群データの中からテンプレートと類似するデータを抽出する。ワーク検出部23は、抽出したデータに基づいて、撮像装置8の視野領域に存在するワーク1の位置姿勢を検出する。
3D計測部20の計測結果である三次元点群データは、撮像装置8の撮像により得られる画像の座標系(以下、「カメラ座標系」と称する。)で示される。そのため、ワーク検出部23によって検出されたワーク1(対象ワーク2を含む)の位置姿勢は、カメラ座標系で示される。
<F.位置姿勢決定部およびモデル変更部の処理方法>
次に、図10および図11を参照して、位置姿勢決定部およびモデル変更部の処理方法の詳細について説明する。
図10は、対象ワークを把持するときにエンドエフェクタの支持部が取るべき位置姿勢の決定方法を示す図である。
図10において、座標変換行列CHwは、カメラ座標系を、対象ワーク2を基準とする座標系(以下、「対象ワーク座標系」と称する。)に変換するための行列である。対象ワーク座標系は、対象ワーク2の基準点2oを原点とし、対象ワーク2における3つの特定方向2v1〜2v3を基底ベクトルとする座標系である。対象ワーク2の基準点2oおよび特定方向2v1〜2v3は、上述したワークモデル3の基準点3oおよび特定方向3v1〜3v3(図9参照)とそれぞれ対応するように定められる。座標変換行列CHwは、カメラ座標系における、対象ワーク座標系の基底ベクトル2v1〜2v3の成分および原点2oの位置を表している。対象ワーク座標系の基底ベクトル2v1〜2v3の成分および原点2oの位置は、対象ワーク2の位置姿勢を示している。そのため、カメラ座標系における対象ワーク2の位置姿勢は、座標変換行列CHwによって示される。
上述したように、ワークモデル3をエンドエフェクタモデル35が把持するときの、支持部モデル37に対するワークモデル3の相対位置姿勢は、座標変換行列tMHwMで示される。そこで、位置姿勢決定部25は、対象ワーク2をワークモデル3とみなし、以下の式(1)に従って、カメラ座標系における、対象ワーク2を把持するときの支持部モデル37の位置姿勢を示す座標変換行列CHtMを計算する。
CHtM=CHw・(tMHwM)-1 ・・・式(1)
座標変換行列CHtMは、カメラ座標系における、対象ワーク2を把持するときにエンドエフェクタ30の支持部32が取るべき位置姿勢を示している。
モデル変更部26は、対象ワーク2を把持するときのエンドエフェクタ30の形状に合うようにエンドエフェクタモデル35を変更する。具体的には、モデル変更部26は、エンドエフェクタモデル35を構成する各要素の座標を変換する。
まず、モデル変更部26は、支持部モデル37の位置姿勢が位置姿勢決定部25によって決定された位置姿勢に一致するように、支持部モデル37を構成する各要素の座標を変換する。すなわち、モデル変更部26は、第1CADデータ10aにおいて支持部モデル37を示す属性情報が付与された座標を変換する。
第1CADデータ10aは、CAD座標系における座標値を示す。また、位置姿勢決定部25によって決定された位置姿勢は,カメラ座標系において支持部32が取るべき位置姿勢であり、上記の座標変換行列CHtMで示される。そのため、モデル変更部26は、第1CADデータ10aにおいて支持部モデル37を示す属性情報が付与された座標を、座標変換行列CHtM=CHw・(tMHwM)-1を用いて変換する。これにより、支持部モデル37の位置姿勢は、カメラ座標系において、対象ワーク2を把持するときのエンドエフェクタ30の支持部32が取るべき位置姿勢と一致する。
ここで、第1CADデータ10aにおいて右爪部モデル36Rおよび左爪部モデル36Lを示す属性情報が付与された座標についても、同じ座標変換行列CHtM=CHw・(tMHwM)-1を用いて変換する場合を想定する。この場合、右爪部モデル36Rおよび左爪部モデル36Lは定状態(例えば閉状態)となる。そのため、図10に示されるように、右爪部モデル36Rおよび左爪部モデル36Lの位置姿勢は、対象ワーク2を把持するときに右爪部31Rおよび左爪部31Lが取るべき位置姿勢と一致しない。
そのため、モデル変更部26は、移動量設定部14によって設定された移動量だけ、右爪部モデル36Rおよび左爪部モデル36Lを可動方向にそれぞれ移動させる。具体的には、モデル変更部26は、座標変換行列CHtM=CHw・(tMHwM)-1に加えて、移動量設定部14によって計算された座標変換行列HMR,HMLを用いる。すなわち、モデル変更部26は、第1CADデータ10aにおいて右爪部モデル36Rを示す属性情報が付与された座標を、座標変換行列CHw・(tMHwM)-1・HMRを用いて変換する。モデル変更部26は、第1CADデータ10aにおいて左爪部モデル36Lを示す属性情報が付与された座標を、座標変換行列CHw・(tMHwM)-1・HMLを用いて変換する。
図11は、モデル変更部によって座標変換されたエンドエフェクタモデルの一例を示す図である。図11に示されるように、座標変換行列HMRを用いることにより、右爪部モデル36Rの位置姿勢は、対象ワーク2を把持するときのエンドエフェクタ30の右爪部31Rが取るべき位置姿勢と一致する。同様に、座標変換行列HMLを用いることにより、左爪部モデル36Lの位置姿勢は、対象ワーク2を把持するときのエンドエフェクタ30の左爪部31Lが取るべき位置姿勢と一致する。これにより、モデル変更部26により変更されたエンドエフェクタモデル35を用いることにより、エンドエフェクタ30と対象ワーク2以外の物体との干渉判定を精度良く行なうことができる。
<G.干渉判定の処理方法>
次に、干渉判定部27による干渉判定の処理方法の詳細について説明する。上述したように、位置姿勢決定部25は、対象ワーク2を把持するときの支持部32が取るべき位置姿勢候補を決定する。そのため、当該位置姿勢候補に支持部32を配置したとき、エンドエフェクタ30は、対象ワーク2以外のワーク1またはコンテナを干渉する可能性がある。
図12は、エンドエフェクタと対象ワーク以外のワークとが干渉している例を示す図である。図13は、エンドエフェクタとコンテナとが干渉している例を示す図である。
このような干渉を避けるため、干渉判定部27は、モデル変更部26によって変更されたエンドエフェクタモデル35と対象ワーク2以外の物体と干渉判定を行なう。3D計測部20の計測結果である三次元点群データは、カメラ座標系で示される。また、上述の方法に従ってモデル変更部26によって変更されたエンドエフェクタモデル35もカメラ座標系で示される。そのため、干渉判定部27は、カメラ座標系において、エンドエフェクタモデル35と対象ワーク2以外の物体との干渉判定を行なえばよい。なお、干渉判定部27は、ロボット300のベース34を基準とする座標系(以下、「ベース座標系」という)で干渉判定を行なってもよい。この場合、ベース座標系をカメラ座標系に変換するための座標変換行列BHCを用いて適宜座標を変換した上で、干渉判定を行なえばよい。
干渉判定部27は、三次元点群データの中から対象ワーク2に対応する点群データを消去する。干渉判定部27は、モデル変更部26によって変更されたエンドエフェクタモデル35を構成する要素の座標と残りの三次元点群データの座標とを比較することにより、エンドエフェクタモデル35と対象ワーク2以外のワーク1との干渉判定を行なう。
また、干渉判定部27は、変更されたエンドエフェクタモデル35を構成する要素の座標とコンテナ検出部21によって検出されたコンテナ5の位置姿勢を示す座標とを比較することにより、エンドエフェクタモデル35とコンテナ5との干渉判定を行なう。
例えば、エンドエフェクタモデル35を構成する要素がボックスである場合、干渉判定部27は、エンドエフェクタモデル35を構成するいずれかのボックスの内側に計測点が含まれるときに干渉有りと判定する。
エンドエフェクタモデル35を構成する要素が断面である場合、干渉判定部27は、エンドエフェクタモデル35を構成するいずれかの断面上に計測点が含まれるときとき、もしくは、隣り合う2つの断面間に計測点が含まれる場合に干渉有りと判定する。
エンドエフェクタモデル35を構成する要素が三角メッシュである場合、干渉判定部27は、三次元点群データに属する各計測点と各三角メッシュとの距離を計算する。距離は、計測点が三角メッシュの法線方向側に位置する場合に正の値となり、計測点が三角メッシュの法線方向の反対側に位置する場合に負の値となる。干渉判定部27は、計測点と三角メッシュとの距離が負である場合に干渉有りと判定する。
エンドエフェクタモデル35を構成する要素が点である場合、干渉判定部27は、エンドエフェクタモデル35を構成する複数の点のうち計測点を取り囲む点群が存在するときに干渉有りと判定する。
<H.把持位置出力部による位置姿勢情報の生成方法>
次に、把持位置出力部28による位置姿勢情報の生成方法の詳細について説明する。把持位置出力部28は、干渉判定部27による干渉無しと判定された位置姿勢候補の1つを示す位置姿勢情報を生成する。
対象ワーク選択部24によって複数の対象ワーク2が選択された場合、位置姿勢決定部25は、当該複数の対象ワーク2の各々について位置姿勢候補を選択する。そのため、選択部22は、複数の位置姿勢候補を選択する。干渉判定部27は、当該複数の位置姿勢候補の各々について干渉判定を行なう。この場合、複数の位置姿勢候補について干渉無しと判定される可能性がある。干渉無しと判定された位置姿勢候補が複数である場合、把持位置出力部28は、予め定められた抽出手法に従って、複数の位置姿勢候補の中の1つを抽出する。例えば、把持位置出力部28は、現在のエンドエフェクタ30の位置から最も近い位置姿勢候補を抽出する。把持位置出力部28は、抽出した1つの位置姿勢候補を示す位置姿勢情報を生成する。
上述したように、位置姿勢候補はカメラ座標系で示される。これに対し、ロボットコントローラ200は、異なる座標系でロボット300を制御する。例えば、ロボットコントローラ200は、ロボット300のベース34を基準とする座標系(以下、「ベース座標系」という)でロボット300を制御する。このような場合、把持位置出力部28は、ベース座標系で示される位置姿勢情報を生成することが好ましい。そこで、把持位置出力部28は、ベース座標系をカメラ座標系に変換するための座標変換行列BHCを用いて、ベース座標系で示される位置姿勢情報を生成する。具体的には、把持位置出力部28は、(BHC)-1を用いて位置姿勢候補を座標変換することにより位置姿勢情報を生成する。
<I.事前設定処理の流れ>
図14を参照して、画像処理装置100による事前設定処理の流れについて説明する。図14は、実施の形態に係る画像処理装置によって実行される事前設定処理の流れを示すフローチャートである。
まず、画像処理装置100のCPU110は、エンドエフェクタ30の三次元形状を示す第1CADデータ10aを読み込む(ステップS1)。CPU110は、読み込んだ第1CADデータ10aを内部表現(ボックス、断面、三角メッシュ、点などの要素の集合)に変換する(ステップS2)。
CPU110は、第1CADデータ10aで示されるエンドエフェクタモデル35の画像を含むUI画面40(図6参照)をユーザインターフェース9に表示する。そして、CPU110は、ユーザインターフェース9に入力された情報に基づいて、可動部モデル(右爪部モデル36R、左爪部モデル36L)および支持部モデル37を設定する(ステップS3)。CPU110は、右爪部モデル36R、左爪部モデル36Lおよび支持部モデル37に設定された要素に対して、右爪部モデル36R、左爪部モデル36Lおよび支持部モデル37のいずれかを示す属性情報をそれぞれ保存する(ステップS4)。
CPU110は、ユーザインターフェース9に入力された情報に基づいて、右爪部モデル36Rおよび左爪部モデル36Lの各々の可動方向を設定する(ステップS5)。
UI画面40においてワーク表示ボタン51が操作されると、CPU110は、ワーク1の三次元形状を示す第2CADデータ11aを読み込み、第2CADデータ11aで示されるワークモデル3の画像をUI画面40に表示する(ステップS6)。
移動量入力欄50に移動量が入力されると、CPU110は、UI画面40に表示しているエンドエフェクタモデル35において、入力された移動量だけ右爪部モデル36Rおよび左爪部モデル36Lを可動方向にそれぞれ移動させる(ステップS7)。
エンドエフェクタモデル35を回転させる操作がユーザインターフェース9に入力されると、CPU110は、当該操作入力に応じて、UI画面40に表示しているエンドエフェクタモデル35の姿勢を変更する。また、ワークモデル3を並進移動または回転移動させる操作がユーザインターフェース9に入力されると、CPU110は、当該操作入力に応じて、UI画面40に表示しているワークモデル3の位置姿勢を変更する(ステップS8)。
次に、CPU110は、UI画面40に表示されている状態のエンドエフェクタモデル35とワークモデル3との干渉判定を行ない、判定結果を表示する(ステップS9)。
次に、CPU110は、UI画面40においてOKボタン52が操作されたか否かを判定する(ステップS10)。OKボタンが操作されていない場合(ステップS10でNO)、事前設定処理はステップS7に戻る。
OKボタンが操作された場合(ステップS10でYES)、CPU110は、移動量入力欄50に現在入力されている移動量を、ワークモデル3を把持するために必要な右爪部モデル36Rおよび左爪部モデル36Lの移動量として設定する(ステップS11)。具体的には、右爪部モデル36Rの可動方向に設定した移動量だけ平行移動させるための座標変換行列HMRと左爪部モデル36Lの可動方向に設定した移動量だけ平行移動させるための座標変換行列HMLとが設定される。
次に、CPU110は、エンドエフェクタモデル35がワークモデル3を把持するときの、支持部モデル37に対するワークモデル3の相対位置姿勢を設定する(ステップS12)。具体的には、当該相対位置姿勢を示す座標変換行列tMHwMが設定される。
<J.ピッキング位置の探索処理の流れ>
次に、図15を参照して、画像処理装置100によるエンドエフェクタ30のピッキング位置の探索処理の流れについて説明する。図15は、実施の形態に係る画像処理装置によって実行されるピッキング位置の探索処理の流れを示すフローチャートである。
まず、CPU110は、エンドエフェクタ30の三次元形状を示す第1CADデータ10aを読み込む(ステップS21)。CPU110は、ステップS4で保存された属性情報を読み込む(ステップS22)。CPU110は、ワーク1の複数の姿勢にそれぞれ対応する複数のテンプレートを読み込む(ステップS23)。さらに、CPU110は、ステップS11で設定された移動量に対応する座標変換行列HMR,HMLを読み込む(ステップS24)。
次に、CPU110は、撮像装置8から受けた画像に基づいて、撮像装置8の視野領域に存在する物体(ワーク1およびコンテナ5)の表面の三次元形状を計測する(ステップS25)。
次に、CPU110は、計測結果である三次元点群データとステップS23で読み込んだ複数のテンプレートとを照合し、ワーク1の位置姿勢を検出する(ステップS26)。ワーク1の位置姿勢は、カメラ座標系におけるワーク1の基準点および特定方向を示す座標変換行列CHWで示される。
さらに、CPU110は、計測結果である三次元点群データと予め記憶しているコンテナ5の形状情報とを照合し、コンテナ5の位置姿勢を検出する(ステップS27)。
CPU110は、位置姿勢が検出されたワーク1の中から所定数のワーク1を対象ワーク2として選択するとともに、選択された所定数の対象ワーク2の各々について、当該対象ワーク2を把持するときに支持部32が取るべき位置姿勢候補を決定する。CPU110は、決定した所定数の位置姿勢候補のリストを作成する(ステップS28)。位置姿勢候補は、対象ワーク2の位置姿勢を示す座標変換行列CHWとステップS12で設定された座標変換行列tMHwMの逆行列(tMHwM)-1との積である座標変換行列CHW・(tMHwM)-1で示される。
CPU110は、位置姿勢候補のリストの中から1つの位置姿勢候補を選択する(ステップS29)。
CPU110は、選択された位置姿勢候補で示される位置姿勢に合うように、支持部モデル37を構成する各要素の座標を変換する(ステップS30)。具体的には、CPU110は、第1CADデータ10aにおいて支持部モデル37を示す属性情報が付与された座標を、座標変換行列CHW・(tMHwM)-1を用いて変換する。
さらに、CPU110は、ステップS24で読み込んだ座標変換行列HMR,HMLを用いて、右爪部モデル36Rおよび左爪部モデル36Lを構成する各要素の座標を変換する(ステップS31)。具体的には、CPU110は、第1CADデータ10aにおいて右爪部モデル36Rを示す属性情報が付与された座標を、座標変換行列CHW・(tMHwM)-1・HMRを用いて変換する。CPU110は、第1CADデータ10aにおいて左爪部モデル36Lを示す属性情報が付与された座標を、座標変換行列CHW・(tMHwM)-1・HMLを用いて変換する。
次に、CPU110は、ステップS29,S30において座標変換されたエンドエフェクタモデル35と、ステップS26において検出された位置姿勢のワーク1(ただし、ステップS29で選択された位置姿勢候補に対応する対象ワーク2を除く)との干渉判定を行なう(ステップS32)。
さらに、CPU110は、ステップS29,S30において座標変換されたエンドエフェクタモデル35と、ステップS27において検出された位置姿勢のコンテナ5との干渉判定を行なう(ステップS33)。
次に、CPU110は、ステップS28で作成された位置姿勢候補のリストのうち未選択の位置姿勢候補があるか否かを判定する(ステップS34)。未選択の位置姿勢候補がある場合(ステップS34でYES)、探索処理はステップS29に戻る。これにより、位置姿勢候補ごとに干渉判定が行なわれる。
未選択の位置姿勢候補がない場合(ステップS34でNO)、CPU110は、干渉無しと判定された位置姿勢候補を所定条件に従ってソートする(ステップS35)。所定条件は、例えば、現状のエンドエフェクタ30の支持部32の位置姿勢に近い順である。その他、所定条件は、ワーク検出時における適合度の高い順、エンドエフェクタの回転量の少ない順、アプローチ角度が鉛直方向に近い順、露出度の高い順(重なり度の低い順)であってもよい。
CPU110は、最上位の位置姿勢候補を示す位置姿勢情報を生成し、生成した位置姿勢情報をロボットコントローラ200に出力する(ステップS36)。これにより、エンドエフェクタ30のピッキング位置の探索処理は終了する。
<K.作用・効果>
以上のように、本実施の形態に係る制御システムSYSは、CAD読込部12と、ユーザインターフェース9と、パーツ設定部13と、3D計測部20と、選択部22と、モデル変更部26および干渉判定部27とを備える。CAD読込部12は、エンドエフェクタ30の三次元形状を示す第1CADデータ10aを取得する。パーツ設定部13は、第1CADデータ10aで示されるエンドエフェクタモデル35をユーザインターフェース9に表示させる。パーツ設定部13は、ユーザインターフェース9に入力された情報に基づいて、エンドエフェクタモデル35のうち右爪部および左爪部にそれぞれ対応する右爪部モデル36Rおよび左爪部モデル36Lと、右爪部モデル36Rおよび左爪部モデル36Lの可動方向とを設定する。3D計測部20は、複数のワーク1を含む視野領域の三次元形状を計測する。選択部22は、3D計測部20の計測結果に基づいて、対象ワーク2をピッキングするときのエンドエフェクタ30(具体的には支持部32)の位置姿勢候補を選択する。干渉判定部27は、選択部22によって選択された位置姿勢候補のエンドエフェクタモデル35と対象ワーク2以外の物体との干渉判定を行なう。ただし、干渉判定部27は、エンドエフェクタモデル35において、設定された移動量だけ右爪部モデル36Rおよび左爪部モデル36Lを可動方向にそれぞれ移動させた状態で干渉判定を行なう。
上記の構成によれば、対象ワーク2のサイズに応じて適宜移動量を設定することにより、実際に対象ワーク2をピッキングするときのエンドエフェクタ30の形状に合うようにエンドエフェクタモデル35の形状を変更できる。そのため、変更後のエンドエフェクタモデル35を用いることにより、エンドエフェクタ30と対象ワーク2以外の物体との干渉判定を精度良く行なうことができる。
CAD読込部12は、対象ワーク2の三次元形状を示す第2CADデータ11aをさらに取得する。制御システムSYSは、第2CADデータ11aで示されるワークモデル3をエンドエフェクタモデル35がピッキングするために必要な右爪部モデル36Rおよび左爪部モデル36Lの移動量を設定する移動量設定部14を備える。モデル変更部26は、移動量設定部14によって設定された移動量だけ右爪部モデル36Rおよび左爪部モデル36Lを移動させる。
上記の構成によれば、ワークモデル3とエンドエフェクタモデル35とを用いることにより、ピッキングに必要な右爪部モデル36Rおよび左爪部モデル36Lの移動量を適切に設定できる。
支持部32は、右爪部31Rと左爪部31Lとの間の距離(間隔)が可変となるように、右爪部31Rと左爪部31Lをそれぞれ平行移動可能に支持する。この場合、エンドエフェクタモデル35を構成するパーツの個数が少ないため、作業者は、ユーザインターフェース9を用いて、可動部モデル(右爪部モデル36Rおよび左爪部モデル36L)を容易に設定することができる。
<L.変形例1>
上記の説明では、コンテナ5内に形状およびサイズが同一の1種類のワーク1がばら積みされるものとした。しかしながら、コンテナ5内には、形状およびサイズの少なくとも一方が異なる複数種類のワークがばら積みされてもよい。
コンテナ5に複数種類のワークがばら積みされる場合、CAD読込部12は、第2記憶部11から、複数種類のワークの各々の三次元形状を示すCADデータを読み込む。
移動量設定部14は、複数種類のワークの各々について、当該ワークを把持するために必要な右爪部モデル36Rおよび左爪部モデル36Lの移動量を設定する。つまり、移動量設定部14は、複数種類のワークの各々について、右爪部モデル36Rの可動方向に設定した移動量だけ平行移動させるための座標変換行列HMRを計算する。さらに、移動量設定部14は、複数種類のワークの各々について、左爪部モデル36Lの可動方向に設定した移動量だけ平行移動させるための座標変換行列HMLを計算する。
相対位置設定部15は、複数種類のワークの各々について、当該ワークを把持するときの支持部モデル37に対するワークモデルの相対位置姿勢を示す座標変換行列tMHwMを設定する。
図14に示す事前設定処理は、複数種類のワークの各々について実行される。これにより、複数種類のワークごとに座標変換行列HMR,HML,tMHwMが設定される。
選択部22は、3D計測部20の計測結果に基づいて、撮像装置8の視野領域に存在するワークの種類を識別し、識別結果に応じて、ワークを把持するときの支持部32が取るべき位置姿勢候補を選択する。
モデル変更部26は、位置姿勢候補に対応するワークの種類に応じて設定した移動量だけ右爪部モデル36Rおよび左爪部モデル36Lを移動させる。
図16は、変形例1に係る画像処理装置によって実行されるピッキング位置の探索処理の流れを示すフローチャートである。図16に示すフローチャートは、図15に示すフローチャートと比較して、ステップS23,S24,S26の代わりにステップS37〜S40を含む点で相違する。
ステップS37において、CPU110は、複数種類のワークの各々について、複数の姿勢にそれぞれ対応する複数のテンプレートを読み込む。
ステップS38において、CPU110は、ステップS25の計測結果である三次元点群データとステップS37で読み込んだ複数のテンプレートとを照合して、撮像装置8の視野領域に存在するワークの種類を識別するとともに、当該ワークの位置姿勢を検出する。
ステップS39において、CPU110は、位置姿勢が検出されたワークの中から所定数のワークを対象ワーク2として選択するとともに、選択された所定数の対象ワーク2の各々について、当該対象ワーク2を把持するときに支持部32が取るべき位置姿勢候補を決定する。CPU110は、ワークに種類に応じた座標変換行列tMHwMを用いて、位置姿勢候補を決定する。CPU110は、決定した所定数の位置姿勢候補のリストを作成する。
ステップS40において、CPU110は、各位置姿勢候補に対応する種類のワークに対して設定された移動量だけ移動させるための座標変換行列HMR,HMLを読み込む。
ステップS40の後、図15と同様のステップS29〜S36が実行される。ただし、ステップS30では、選択される位置姿勢候補に対応するワークの種類に応じて設定された座標変換行列tMHwMを用いて、支持部モデル37を構成する各要素の座標が変換される。また、ステップS31では、選択される位置姿勢候補に対応するワークの種類に応じて設定された座標変換行列HMR,HMLを用いて、右爪部モデル36Rおよび左爪部モデル36Lを構成する各要素の座標が変換される。
<M.変形例2>
上記の説明では、干渉判定部27は、3D計測部20の計測結果である三次元点群データに基づいて検出されたコンテナ5とエンドエフェクタモデル35との干渉判定を行なうものとした。しかしながら、コンテナ5は、ばら積みされたワークに隠され、撮像装置8の撮像により得られる画像に含まれない可能性がある。この場合、コンテナ検出部21は、三次元点群データからコンテナ5の位置姿勢を検出できない。
コンテナ5は、通常、定位置に配置される。そのため、画像処理装置100は、定位置に配置されたコンテナ5が示す空間の座標を示すコンテナ情報を予め記憶しておいてもよい。干渉判定部27は、当該コンテナ情報に基づいて、エンドエフェクタモデル35とコンテナ5との干渉判定を行なえばよい。
なお、コンテナ情報は、カメラ座標系で示されてもよいし、ベース座標系で示されてもよい。コンテナ情報がベース座標系で示される場合、干渉判定部27は、ベース座標系をカメラ座標系に変換するための座標変換行列BHCを用いてコンテナ情報を変換し、変換後のコンテナ情報を用いて干渉判定を行なえばよい。もしくは、干渉判定部27は、変更後のエンドエフェクタモデル35の座標を座標変換行列(BHC)-1に従って変換し、ベース座標系においてエンドエフェクタモデル35とコンテナ5との干渉判定を行なってもよい。
<N.変形例3>
上記の説明では、形状およびサイズが予め定まっているワーク1がコンテナ5にばら積みされるものとした。しかしながら、形状およびサイズにばらつきのあるワーク1がコンテナ5にばら積みされてもよい。
図17は、形状およびサイズにばらつきのあるワーク1を把持するときのエンドエフェクタを示す図である。ワーク1の形状およびサイズにばらつきがあったとしても、以下の条件a,bを満たす場合に対象ワーク2を把持することができる。
条件a:右爪部31Rおよび左爪部31Lの両下端を通る平面と対象ワーク2の最も高い点との距離が、ワーク1の形状およびサイズのばらつきを考慮して予め定められた閾値dh以上である。
条件b:右爪部31Rおよび左爪部31Lが対象ワーク2以外の物体と干渉しない。
変形例3に係る画像処理装置は、撮像装置8の視野領域の三次元形状に基づいて、条件a,bを満たすように支持部32の位置姿勢候補を選択するとともに、右爪部モデル36Rおよび左爪部モデル36Lの移動量を設定する。
(N−1.機能構成)
図18は、変形例3に係る画像処理装置の機能構成を示すブロック図である。図18に示されるように、変形例3に係る画像処理装置100Aは、図4に示す画像処理装置100と比較して、第2記憶部11および相対位置設定部15を備えない点で相違する。さらに、画像処理装置100Aは、図4に示す画像処理装置100と比較して、移動量設定部14、コンテナ検出部21、選択部22、モデル変更部26および干渉判定部27の代わりに範囲設定部16、コンテナ情報記憶部21A、選択部22Aおよび干渉判定部27Aを備える点で相違する。選択部22Aは、図4に示す選択部22と比較して、ワーク検出部23、対象ワーク選択部24および位置姿勢決定部25の代わりに、凹部検出部29、位置姿勢決定部25Aおよび移動量設定部14Aを含む点で相違する。なお、変形例3では、変形例2のようにコンテナ5が定位置に配置されるものとする。
範囲設定部16は、ユーザインターフェース9に入力された情報に基づいて、右爪部モデル36Rおよび左爪部モデル36Lの移動量の設定可能範囲およびステップ数を設定する。
図19は、変形例3に係るユーザインターフェースに表示されるUI画面の一例を示す図である。図19に示すUI画面40Aは、図6に示すUI画面40と比較して、ワーク表示ボタン51および移動量入力欄50の代わりに範囲入力欄55,56およびステップ数入力欄57を含む点で相違する。
範囲設定部16は、範囲入力欄55に入力された値(最小値)から範囲入力欄56に入力された値(最大値)までを移動量の設定可能範囲として設定する。範囲設定部16は、ステップ数入力欄57に入力された値を移動量のステップ数として設定する。
図18に戻って、コンテナ情報記憶部21Aは、定位置に配置されたコンテナ5の三次元座標を示すコンテナ情報を記憶している。
選択部22Aは、撮像装置8の視野領域の三次元形状に基づいて、ワークをピッキングするときの支持部の位置姿勢候補を選択するとともに、ワークをピッキングするために必要な右爪部モデル36Rおよび左爪部モデル36Lの移動量を設定する。
図20を参照しながら、選択部22Aの凹部検出部29、移動量設定部14Aおよび位置姿勢決定部25Aの処理について説明する。図20は、変形例3に係る画像処理装置の選択部の処理を示す図である。図20には、3D計測部20によって計測された三次元形状を上方からみたときの図が示される。
凹部検出部29は、3D計測部20の計測結果である三次元点群データに基づいて、撮像装置8の視野領域の三次元形状における凹部を検出する。具体的には、凹部検出部29は、三次元点群データの中から最高点のデータを抽出する。最高点のZ座標値をz_maxとする。凹部検出部29は、三次元点群データにおいて、Z座標値がz_max−dh未満の点群データ(z<z_max−dh)をマスクする。凹部検出部29は、Z座標がz_max−dhの平面上において、残った領域をラベリングする。図20において、領域60,61は、ラベリングされた領域を示している。領域60は、三次元形状における最高点からZ座標がz_max−dhの平面に投影した点を含む領域である。領域60,61以外の領域が三次元形状における凹部に対応する。
移動量設定部14Aは、範囲設定部16によって設定された移動量範囲の最小値から最大値まで順に移動量を選択する。移動量設定部14Aは、移動量範囲の最大値と最小値との差を(ステップ数−1)で割った量をステップ幅とし、ステップ幅だけ間隔をあけて移動量を順に選択する。
移動量設定部14Aは、選択した移動量だけ右爪部モデル36Rおよび左爪部モデル36Lを可動方向に移動させたときに、以下の条件(i)(ii)の両方を満たすか否かを判定する。
条件(i):右爪部モデル36Rおよび左爪部モデル36Lが領域60の周囲に位置する(領域60を挟むように位置する)
条件(ii):右爪部モデル36Rおよび左爪部モデル36Lが凹部に位置する。
条件(i)(ii)の両方を満たす場合に、移動量設定部14Aは、選択した移動量を、領域60に存在する対象ワーク2を把持するときに必要な移動量として設定する。
例えば、右爪部モデル36Rおよび左爪部モデル36Lの可動方向が互いに逆方向に設定され、かつ、右爪部モデル36Rと左爪部モデル36Lとが可動方向に沿って並んで配置される場合、以下のようにして移動量が設定される。
図20に示されるように、移動量設定部14Aは、領域60の重心Gの座標値を計算する。さらに、移動量設定部14Aは、右爪部モデル36Rおよび左爪部モデル36Lを可動方向に選択された移動量だけそれぞれ移動させたときの右爪部モデル36Rと左爪部モデル36Lとの間隔(開き幅W)を計算する。移動量設定部14Aは、重心Gを中心とし、計算した開き幅Wを内径、開き幅Wにαを加算した値を外径とするリング状領域64を特定する。αは、右爪部モデル36Rおよび左爪部モデル36Lにおける支持部モデル37とは反対側の端面(以下、「下端面」と称する。)の可動方向に沿った長さの合計に所定マージンを加えた値である。
移動量設定部14Aは、重心Gを通る所定数の直線の各々について、当該直線とリング状領域64とが交わる2か所に、当該直線が可動方向と一致するように右爪部モデル36Rの下端面63Rと左爪部モデル36Lの下端面63Lとを配置するシミュレーションを行なう。所定数の直線の各々と基準方向(例えばX方向)とのなす角度は予め定められる。図20には、所定数の直線のうち直線65が選択されたときの例が示される。移動量設定部14Aは、下端面63R,63Lが領域60,61と重なるか否かを判定する。下端面63R,63Lが領域60,61と重ならない場合に、移動量設定部14Aは、選択した移動量を、領域60に存在する対象ワーク2を把持可能な移動量として設定すればよい。
移動量設定部14Aは、上記の移動量設定部14と同様に、右爪部モデル36Rの可動方向に設定した移動量だけ平行移動させるための座標変換行列HMRを計算する。さらに、移動量設定部14Aは、左爪部モデル36Lの可動方向に設定した移動量だけ平行移動させるための座標変換行列HMLを計算する。
移動量設定部14Aは、領域60に存在する対象ワーク2を把持可能な移動量を設定した場合、下端面63R,63Lが領域60,61と重ならないと判定した直線の方向および重心Gの座標を位置姿勢決定部25Aに出力する。
なお、移動量設定部14Aは、下端面63R,63Lが領域60,61と重ならないと判定した直線が複数存在する場合、当該複数の直線の全ての方向を位置姿勢決定部25Aに出力する。
位置姿勢決定部25Aは、領域60に存在する対象ワーク2を把持するときの支持部32が取るべき位置姿勢を決定する。具体的には、位置姿勢決定部25Aは、以下の条件(1)〜(3)を満たすようにエンドエフェクタモデル35を配置したときの、カメラ座標系における支持部モデル37の位置姿勢を計算する。当該位置姿勢は、カメラ座標系を支持部モデル座標系に変換する座標変換行列CHtMで示される。座標変換行列CHtMは、カメラ座標系における、支持部モデル座標系の基底ベクトル37v1〜37v3の成分および原点37oの位置を表している(図10参照)。位置姿勢決定部25Aは、座標変換行列CHtMを、対象ワーク2を把持するときに支持部32が取るべき位置姿勢候補を示す情報として計算する。
条件(1):Z座標がz_max−dhの平面上に右爪部モデル36Rの下端面63Rおよび左爪部モデル36Lの下端面63Lが位置する。
条件(2):右爪部モデル36Rの下端面63Rの中心と左爪部モデル36Lの下端面63Lの中心との中間点が、移動量設定部14Aから受けた重心Gと一致する。
条件(3):右爪部モデル36Rおよび左爪部モデル36Lの可動方向が、移動量設定部14Aから受けた直線の方向と一致する。
干渉判定部27Aは、コンテナ情報記憶部21Aが記憶するコンテナ情報に基づいて、エンドエフェクタモデル35とコンテナ5との干渉判定を行なう。
(N−2.事前設定処理の流れ)
図21は、変形例3に係る画像処理装置によって実行される事前設定処理の流れを示すフローチャートである。図21に示すフローチャートは、図14に示すフローチャートと比較して、ステップS7〜S9が省略され、ステップS11,S12の代わりにステップS41,S42を含む点で相違する。
OKボタンが操作されると(ステップS10でYES)、ステップS41において、CPU110は、範囲入力欄55,56に現在入力されている値を移動量の設定可能範囲の最小値,最大値としてそれぞれ設定する。さらに、ステップS42において、CPU110は、ステップ数入力欄57に現在入力されている値をステップ数として設定する。
(N−3.ピッキング位置の探索処理の流れ)
次に、図22および図23を参照して、変形例3に係る画像処理装置100Aによるエンドエフェクタ30のピッキング位置の探索処理の流れについて説明する。図22は、変形例3に係る画像処理装置によって実行されるピッキング位置の探索処理の流れを示すフローチャートである。図23は、図22のステップS52のサブルーチンの処理の流れの一例を示すフローチャートである。図22に示すフローチャートは、図15に示すフローチャートと比較して、ステップS23,S24が省略された点、ステップS26〜S27の代わりにステップS51〜S55を含む点、および、ステップS32,S33の代わりにステップS56を含む点で相違する。
ステップS51において、CPU110は、ステップS41で設定された設定可能範囲の最小の移動量を選択する。
次にステップS52において、CPU110は、選択された移動量だけ右爪部31Rおよび左爪部31Lを可動方向に移動させたときに、対象ワーク2を把持可能な支持部32の位置姿勢候補を抽出する。
例えば、ステップS52において図23に示すステップS521〜S527が実行される。
ステップS521において、CPU110は、3D計測部20によって計測された三次元点群データの中から最高点のデータ(x,y,z_max)を抽出する。ステップS522において、CPU110は、三次元点群データにおいて、Z座標値がz_max−dh未満の点群データ(z<z_max−dh)をマスクする。ステップS523において、CPU110は、Z座標がz_max−dhの平面上において、残った領域をラベリングし、各領域の重心座標を計算する。
ステップS524において、CPU110は、最高点に対応する領域の重心を中心と、選択された移動量に対応する開き幅Wを内径、開き幅Wにαを加算した値を外径とするリング状領域64を特定する(図20参照)。
ステップS525において、CPU110は、特定したリング状領域64とラベリングされた領域60,61とに基づいて、対象ワーク2を把持するときに支持部32が取るべき位置姿勢候補を抽出する。具体的には、CPU110は、リング状領域64内において、右爪部モデル36Rの下端面63Rと左爪部モデル36Lの下端面63Lとが領域60,61と重ならないときの支持部モデル37の位置姿勢を、支持部32が取るべき位置姿勢候補として決定する。支持部32が取るべき位置姿勢候補は、上述したように、座標変換行列CHtMで示される。
図24に戻ってステップS52の後、ステップS53において、CPU110は、少なくとも1つの位置姿勢候補が抽出されたか否かを判定する。少なくとも1つの位置姿勢候補が抽出されなかった場合(ステップS53でNO)、ステップS54において、CPU110は、現在選択されている移動量から、ステップS41で設定されたステップ数に応じて計算されるステップ幅だけ大きい移動量を選択する。ステップS54の後、探索処理はステップS52に戻り、位置姿勢候補の抽出処理が実行される。
少なくとも1つの位置姿勢候補が抽出された場合(ステップS53でYES)、ステップS55において、CPU110は、選択されている移動量を、対象ワーク2を把持可能な移動量として設定する。具体的には、右爪部モデル36Rの可動方向に設定した移動量だけ平行移動させるための座標変換行列HMRと左爪部モデル36Lの可動方向に設定した移動量だけ平行移動させるための座標変換行列HMLとが設定される。
その後、図15で説明したステップS28〜S31が実行される。ステップS30では、支持部モデル37を示す属性情報が付与された座標が、座標変換行列CHtMを用いて変換される。ただし、座標変換行列CHtMは、ステップS525で決定されている。また、ステップS31では、座標変換行列HMR,HMLを用いて、右爪部モデル36Rおよび左爪部モデル36Lを構成する各要素の座標が変換される。ただし、座標変換行列HMR,HMLは、ステップS55で設定されている。
次にステップS56において、CPU110は、座標変換されたエンドエフェクタモデル35と、コンテナ情報記憶部21Aに記憶されたコンテナ情報で示される位置姿勢のコンテナ5との干渉判定を行なう。その後、図15で説明したステップS34〜S36が実行される。
<O.変形例4>
上記の説明では、作業者は、ユーザインターフェース9に表示されたエンドエフェクタモデル35において、枠線42〜44を用いて右爪部31R、左爪部31Lおよび支持部32にそれぞれ対応する部分を指定する。このとき、画像処理装置は、エンドエフェクタモデル35の形状から右爪部31R、左爪部31Lおよび支持部32にそれぞれ対応する部分を推定し、推定結果に応じて枠線42〜44のデフォルトの位置姿勢およびサイズを決定してもよい。これにより、作業者は、枠線42〜44に対する操作を簡略化できる。
図24は、変形例4に係る画像処理装置の機能構成の一例を示すブロック図である。変形例4に係る画像処理装置100Bは、図4に示す画像処理装置100と比較して、CAD読込部12の代わりに第1CAD読込部12Aおよび第2CAD読込部12Bを備え、学習用データベース17と、学習機18と、識別機19とをさらに備える点で相違する。
第1CAD読込部12Aは、第1記憶部10から第1CADデータ10aを読み込む。第1CAD読込部12Aは、読み込んだ第1CADデータ10aを内部表現(ボックス、断面、三角メッシュ、点などの要素の集合)に変換する。第2CAD読込部12Bは、第2記憶部11から第2CADデータ11aを読み込む。
学習用データベース17は、学習用データセット17aを記憶する。学習用データセット17aは、様々な形状のエンドエフェクタを様々な方向から射影した複数の画像の各々が学習用データを含む。学習用データは、画像の各画素に、支持部および可動部にいずれに対応するかを示す属性情報を付与した訓練データである。
学習機18は、学習用データセット17aを用いて、学習済モデルの学習を実行する。学習機18は、生成した学習済モデルを識別機19に出力する。学習機18は、例えばSegnet(http://mi.eng.cam.ac.uk/projects/segnet)などのセグメンテーション手法を用いて学習済モデルを生成する。
学習済モデルは、エンドエフェクタの画像データの入力を受けて、当該画像データで示される画像を構成する各画素について、当該画素が支持部に対応する部分である可能性を示すスコア(以下、「第1スコア」と称する。)を計算する。さらに、学習済モデルは、各画素について、当該要素が可動部に対応する部分である可能性を示すスコア(以下、「第2スコア」と称する。)を計算する。
学習済モデルは、例えば、CNN(Convolutional Neural Network:畳み込みニューラルネットワーク)に分類される前処理ネットワークと、中間層と、出力層に相当する活性化関数と、Softmax関数とを含む。
識別機19は、学習済モデルを用いて、UI画面40の表示領域41に表示される画像の各画素について、第1スコアおよび第2スコアを計算する。識別機19は、第1スコアが第2スコアよりも大きくかつ第1スコアが規定閾値以上である画素を支持部モデル37に対応する画素として識別する。識別機19は、第2スコアが第1スコアよりも大きくかつ第2スコアが規定閾値以上である画素を可動部モデルに対応する画素として識別する。識別機19は、第1スコアおよび第2スコアが規定閾値未満である画素を背景画素として識別する。なお、可動部モデルに対応する複数の画素が2つの集合にラベリングされる場合、識別機19は、当該2つの集合のうちの一方に属する画素を右爪部モデル36Rに対応する画素と識別し、他方に属する画素を左爪部モデル36Lに対応する画素として識別する。
パーツ設定部13は、識別機19による識別結果に従って、枠線42〜44のデフォルトの位置姿勢およびサイズを決定する。これにより、識別機19の識別結果が正しい場合、作業者は、枠線42〜44に対する操作を省略できる。識別機19の識別結果に誤りがある場合、作業者は、枠線42〜44の位置姿勢およびサイズを適宜修正すればよい。
<P.変形例5>
上記の実施の形態および変形例では、エンドエフェクタ30が平行移動する2つの爪部を可動部として有する例について説明した。しかしながら、エンドエフェクタ30は、平行移動する3つ以上の爪部を可動部として有してもよい。例えば、N個の爪部の中心点を通るN個の直線に沿って当該N個の爪部がそれぞれ移動する多指ハンドであってもよい。多指ハンドでは、N個の爪部が互いに近づくように移動することにより対象ワーク2を把持できる。このような多指ハンドであれば、形状およびサイズが予め定まっているワーク1であっても、上記の変形例3と同様の方法により、爪部の移動量を設定できる。
もしくは、エンドエフェクタ30は、回転移動する可動部を有していてもよい。回転移動する可動部を有する場合、パーツ設定部13は、当該可動部に対応する可動部モデルについて、可動方向として回転中心軸および回転方向を設定すればよい。
エンドエフェクタ30による対象ワーク2のピッキングは、上記の把持動作に限定されない。例えば、ピッキングは、対象ワーク2を吸着することにより行なわれてもよい。
<Q.変形例6>
上記の実施の形態では、画像処理装置100は、事前設定処理と、ピッキング位置を探索する探索処理とを両方を行なうものとした。しかしながら、事前設定処理は、画像処理装置100とは別の情報処理装置で実行されてもよい。情報処理装置は、汎用のコンピュータで構成され、画像処理装置と同様のハードウェア構成(図3)を備える。そして、情報処理装置は、第1記憶部10と、第2記憶部11と、CAD読込部12と、パーツ設定部13と、移動量設定部14と、相対位置設定部15とを備えればよい。
<R.付記>
以上のように、本実施の形態および変形例は以下のような開示を含む。
(構成1)
複数の物体(1)の中の1つの物体を対象物(2)としてピッキングするエンドエフェクタ(30)を有するロボット(300)を制御する制御システム(SYS)であって、
前記エンドエフェクタ(30)は、可動部(31R,31L)と、前記可動部(31R,31L)を移動可能に支持する支持部(32)とを含み、
前記制御システム(SYS))は、
前記エンドエフェクタ(30)の三次元形状を示す第1形状データを取得する取得部(12,12A)と、
ユーザインターフェース(9)と、
前記第1形状データで示されるエンドエフェクタモデル(35)を前記ユーザインターフェース(9)に表示させ、前記ユーザインターフェース(9)に入力された情報に基づいて、前記エンドエフェクタモデル(35)のうち前記可動部(31R,31L)に対応する可動部モデル(36R,36L)と前記可動部モデル(36R,36L)の可動方向とを設定する第1設定部(13)と、
前記複数の物体を含む視野領域の三次元形状を計測する計測部(20)と、
前記計測部(20)の計測結果に基づいて、前記対象物をピッキングするときの前記エンドエフェクタ(30)の位置姿勢候補を選択する選択部(22,22A)と、
前記選択部(22,22A)によって選択された位置姿勢候補の前記エンドエフェクタモデル(35)と前記対象物以外の物体との干渉判定を行なう判定部(27,27A)とを備え、
前記判定部(26,27,27A)は、前記エンドエフェクタモデル(35)において、設定された移動量だけ前記可動部モデル(36R,36L)を前記可動方向に移動させた状態で前記干渉判定を行なう、制御システム(SYS)。
(構成2)
前記取得部(12,12B)は、前記対象物の三次元形状を示す第2形状データをさらに取得し、
前記制御システム(SYS)は、さらに、
前記第2形状データで示される対象物モデル(3)を前記エンドエフェクタモデル(35)がピッキングするために必要な前記可動部モデル(36R,36L)の移動量を設定する第2設定部(14)を備え、
前記判定部(26,27)は、前記第2設定部(14)によって設定された移動量だけ前記可動部モデル(36R,36L)を移動させる、構成1に記載の制御システム(SYS)。
(構成3)
前記複数の物体は、互いに形状およびサイズの少なくとも一方の異なる複数種類の物体を含み、
前記取得部(12,12B)は、前記複数種類の物体の各々について、当該物体の三次元形状を示す第2形状データをさらに取得し、
前記制御システム(SYS)は、さらに、
前記複数種類の物体の各々に対して、前記第2形状データで示される物体モデルを前記エンドエフェクタモデルがピッキングするために必要な前記可動部モデル(36R,36L)の移動量を設定する第2設定部(14)を備え、
前記選択部(22)は、前記計測部(20)の計測結果に基づいて前記対象物の種類を識別し、識別結果に応じて前記位置姿勢候補を選択し、
前記判定部(26,27)は、前記選択部(22)によって識別された種類に対して前記第2設定部(14)によって設定された移動量だけ前記可動部モデル(36R,36L)を移動させる、構成1に記載の制御システム(SYS)。
(構成4)
前記視野領域の三次元形状に基づいて、前記対象物をピッキングするために必要な前記可動部モデル(36R,36L)の移動量を設定する第2設定部(14A)をさらに備え、
前記判定部(26,27A)は、前記第2設定部(14A)によって設定された移動量だけ前記可動部モデル(36R,36L)を移動させる、構成1に記載の制御システム(SYS)。
(構成5)
前記支持部(32)は、平行移動および回転移動の少なくとも一方が可能なように前記可動部(31R,31L)を支持する、構成1から4のいずれかに記載の制御システム(SYS)。
(構成6)
前記可動部(31R,31L)は、複数の爪部(31R,31L)を有し、
前記支持部(32)は、前記複数の爪部(31R,31L)間の距離が可変となるように、前記複数の爪部(31R,31L)をそれぞれ平行移動可能に支持する、構成1から4のいずれかに記載の制御システム(SYS)。
(構成7)
前記可動部(31R,31L)は、複数の爪部(31R,31L)を有し、
前記第2設定部(14A)は、
前記視野領域の三次元形状の中から最も高い位置を抽出し、
前記視野領域のうち、抽出された位置との高度差が規定値以下となる領域をラベリングし、
前記複数の爪部(31R,31L)がラベリングされた1つの領域の周囲に位置し、かつ、前記複数の爪部(31R,31L)がラベリングされた他の領域と重ならないように、前記複数の爪部(31R,31L)の各々の移動量を設定する、構成4に記載の制御システム(SYS)。
(構成8)
ユーザインターフェース(9)を用いて、対象物(2)をピッキングするエンドエフェクタ(30)の三次元形状を示す形状データに対する情報処理を行なう情報処理装置(100)であって、
前記エンドエフェクタ(30)は、可動部(31R,31L)と、前記可動部(31R,31L)を移動可能に支持する支持部(32)とを含み、
前記情報処理装置(100)は、
前記エンドエフェクタ(30)の三次元形状を示す形状データを取得する取得部(12,12A)と、
前記形状データで示されるエンドエフェクタモデル(35)を前記ユーザインターフェース(9)に表示させ、前記ユーザインターフェース(9)に入力された情報に基づいて、前記エンドエフェクタモデル(35)のうち前記可動部(31R,31L)に対応する可動部モデル(36R,36L)と前記可動部モデル(36R,36L)の可動方向とを設定する設定部(14,14A)とを備える、情報処理装置(100)。
(構成9)
複数の物体(1)の中から1つの物体を対象物(2)としてピッキングするエンドエフェクタ(30)を有するロボット(300)を制御する制御方法であって、
前記エンドエフェクタ(30)は、可動部(31R,31L)と、前記可動部(31R,31L)を移動可能に支持する支持部(32)とを含み、
前記制御方法は、
前記エンドエフェクタ(30)の三次元形状を示す形状データを取得するステップと、
前記形状データで示されるエンドエフェクタモデル(35)をユーザインターフェース(9)に表示させ、前記ユーザインターフェース(9)に入力された情報に基づいて、前記エンドエフェクタモデル(35)のうち前記可動部(31R,31L)に対応する可動部モデル(36R,36L)と前記可動部モデル(36R,36L)の可動方向とを設定するステップと、
前記複数の物体を含む視野領域の三次元形状を計測するステップと、
計測結果に基づいて、前記対象物(2)をピッキングするときの前記エンドエフェクタ(30)の位置姿勢候補を選択するステップと、
選択された位置姿勢候補の前記エンドエフェクタモデル(35)と前記対象物(2)以外の物体との干渉判定を行なうステップとを備え、
前記干渉判定を行なうステップは、前記エンドエフェクタモデル(35)において、設定された移動量だけ前記可動部モデル(36R,36Lを前記可動方向に移動させるステップを含む、制御方法。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。