以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものではない。
図1は、本発明の実施形態に係るロボットシステム1000の構成例を示す模式図である。この図1は、各種製品の製造工場等にある作業空間に積み上げられた複数のワークWKを、ロボットRBTを用いて順次取り出し、所定の場所に設置されているステージSTGまで搬送して該ステージSTG上に載置するばら積みピッキングを行う例について示している。
ロボットシステム1000はロボットRBTとロボットRBTを制御するロボットコントローラ6とを備えている。ロボットRBTは、産業用の汎用ロボットであり、ベース部が工場等の床面に対して固定されている。ロボットRBTは、例えばマニピュレータ等とも呼ばれており、6軸制御が可能に構成されている。このロボットRBTは、ベース部から延びるアーム部ARMと、アーム部ARMの先端部に設けられたエンドエフェクタEETとを備えている。アーム部ARMは、可動部としての関節部を複数備えた多関節型に構成することができる。アーム部ARMの各関節部の動作及びアーム部ARM自体の回転動作によってエンドエフェクタEETを可動範囲内の所望の位置まで移動させることができる。
エンドエフェクタEETは、ワークWKを把持するハンド部等で構成することができる。エンドエフェクタEETは、図5Aに示すようにワークWKの外側を挟み込んで把持する構造のエンドエフェクタEET1、図5Bに示すように空洞部を有するワークWK2の内部に爪部を挿入して拡開させることによって保持する構造のエンドエフェクタEET2、図5Cに示すように板状のワークWK3を吸引して保持するエンドエフェクタEET3等があり、いずれのエンドエフェクタも使用することができる。また、本明細書で「把持」とは、図5Aに示すワークWKの外側を挟み込む方法、空洞部に爪部を挿入して拡開させる方法、吸引する方法等の全ての例を含む意味で使用する。
ロボットRBTは、ロボットコントローラ6によって制御される。ロボットコントローラ6はアーム部ARMの動作やエンドエフェクタEETの開閉動作等を制御する。またロボットコントローラ6は図2に示すロボット設定装置100から、ロボットRBTの制御に必要な情報を取得する。例えば、図1に示す収納容器BXに無作為に投入された多数の部品であるワークWKの三次元形状を、三次元カメラや照明等のセンサ部2を使用して取得し、ロボット設定装置100でワークWKの位置や姿勢を検出して、その情報をロボットコントローラ6が取得する。
ロボットシステム1000の機能ブロック図を図2に示す。この図に示すロボットシステム1000は、ロボットRBT及びロボットコントローラ6の他に、ロボット設定装置100と、センサ部2と、表示部3と、操作部4と、ロボット操作具7とを備える。
操作部4では、後述する物理シミュレーション、ピッキング動作シミュレーション、画像処理に関する各種設定を行う。またセンサ部2で、ワークWKを撮像してワークWKの三次元形状を取得する。さらに表示部3で、設定や動作状態の確認、シミュレーションの確認等を行う。さらに、ロボット設定装置100の内部に設けられているロボットシミュレーション装置200や画像処理装置300が各種シミュレーション、三次元サーチ、干渉判定、把持解の算出等を行う。
一方、ロボットコントローラ6はロボット設定装置100から出力される信号に従い、ロボットRBTの制御を行うように構成された周知の部材である。またロボット操作具7は、ロボットRBTの動作設定を行う。なお、図2の例では操作部4とロボット操作具7を別個の部材としているが、これらを共通の部材としてもよい。
センサ部2は、ロボットビジョンなどと呼ばれる、作業空間やワークWKを撮像する部材であり、この実施形態では、ワークWKが少なくとも撮像対象物となる。センサ部2で撮像された画像から、ばら積みされたワークWKの三次元形状を示す三次元形状データを取得することが可能になる。なお三次元形状を取得する方法は、例えば、パターン投影法、ステレオ法、レンズ焦点法、光切断法、光レーダ法、干渉法(白色干渉法)、TOF方式などがあり、これらの方法のうち、どの方法を用いてもよい。各方法は、従来から周知であるため、詳細な説明は省略する。本実施形態においては、パターン投影法のうち、周期的な照度分布を有するパターン光を撮像対象物に照射し、撮像対象物の表面で反射した光を受光する位相シフト法を用いている。
センサ部2は、測定対象物であるワークWKの形状を測定する形状測定装置400の一構成要素でもある。形状測定装置400は、ロボット設定装置100の一部とすることができるが、別部材として構成することもできる。センサ部2の具体的な構成は、三次元形状の計測技術に応じて決定される。このセンサ部2は、カメラ、照明又はプロジェクタ等を備える。例えば位相シフト法でワークWKの三次元形状を計測する場合は、センサ部2として図4に示すように、プロジェクタ(投光部)PRJと、複数のカメラ(受光部)CME1、CME2、CME3、CME4とを備える。プロジェクタPRJは、ワークWKに光を照射する部材である。カメラCME1、CME2、CME3、CME4は、プロジェクタPRJにより投光されてワークWKの表面で反射した光を受光する撮像素子を有する部材である。投光部の光源は、例えば複数の発光ダイオード、液晶パネル、有機ELパネル、デジタルマイクロミラーデバイス(DMD)等で構成することができる。
なおセンサ部2は、カメラCME1、CME2、CME3、CME4やプロジェクタPRJといった複数の部材で構成する他、これらを一体的に構成してもよい。例えばカメラCME1、CME2、CME3、CME4やプロジェクタPRJを統合してヘッド状とした3D撮像ヘッドを、センサ部2とすることができる。
また三次元形状データの生成自体を、センサ部2で行うこともできる。この場合、センサ部2に三次元形状データの生成機能を実現する画像処理IC等を設ける。あるいは、三次元形状データの生成を、画像処理装置300側で行わず、センサ部2で撮像した生画像を、画像処理装置300側で画像処理して三次元画像等の三次元形状データを生成する構成としてもよい。
さらに、センサ部2で撮像された画像に基づいて、キャリブレーションを実行することにより、実際のワークWKの位置座標(エンドエフェクタEETの移動位置の座標)と、表示部3上に表示された画像上の位置座標とをリンクさせることができる。
ロボット設定装置100は、センサ部2で得られたワークWKの三次元形状データに基づいて、三次元サーチ、干渉判定、把持解算出等を行う。このロボット設定装置100は、専用の画像処理プログラムをインストールした汎用のコンピュータや、専用に設計された画像処理コントローラ、専用のハードウェアで構成することができる。また、グラフィックボードなどのハードウェアを画像検査処理に特化させた専用のコンピュータに、画像処理プログラムをインストールした構成とすることもできる。
なお図2の例では、センサ部2やロボットコントローラ6等をロボット設定装置100とは別個の部材で構成する例を示しているが、本発明はこの構成に限られず、例えばセンサ部2と画像処理装置100とを一体化したり、あるいはロボットコントローラ6をロボット設定装置100に組み込むこともできる。このように、図2に示す部材の区分けは一例であって、複数の部材を統合させることもできる。例えばロボット設定装置100を操作する操作部4と、ロボットコントローラ6を操作するロボット操作具7とを、共通の部材としてもよい。
ただし、センサ部2はロボットRBTと別体としている。すなわち、本願発明はセンサ部2をロボット本体5のアーム部ARMに設けない、オフハンド形式と呼ばれる形態を対象としている。いいかえると、センサ部2をエンドエフェクタEETに設ける、オンハンド形式等と呼ばれる態様は、本願発明に含まれない。
表示部3は、ロボット設定装置100で取得されたワークWKの三次元形状を表示させたり、各種シミュレーション画像を表示させたり、各種設定や動作状態の確認を行うための部材であり、例えば、液晶モニタや有機ELディスプレイ、CRT等を利用できる。操作部4は、各種シミュレーションや画像処理等の各種設定を行うための部材であり、キーボードやマウス等の入力デバイスが利用できる。また表示部3をタッチパネルとすることで、操作部4と表示部3を一体化することもできる。
例えばロボット設定装置100を、画像処理プログラムをインストールしたコンピュータで構成した場合、表示部3上には画像処理プログラムのグラフィカルユーザインターフェース(GUI)画面が表示される。表示部3上に表示されたGUI上から各種の設定を行うことができ、またシミュレーション結果等の処理結果を表示させることができる。この場合、表示部3を各種の設定を行うための設定部として利用できる。
ロボットコントローラ6は、センサ部2で撮像した情報に基づいてロボットの動作を制御する。またロボット操作具7は、ロボットRBTの動作設定を行うための部材であり、ペンダントなどが利用できる。
ワークWKは、図1に示すように複数個が収容容器BXに無作為に収納されている。このような作業空間の上方には、センサ部2が配置されている。ロボットコントローラ6は、センサ部2で得られたワークWKの三次元形状に基づいて、複数のワークWKの内から、把持対象のワークWKを特定して、このワークWKを把持するよう、ロボットRBTを制御する。そして、ワークWKを把持したまま、アーム部ARMを動作させて予め定められた載置位置、例えばステージSTG上まで移動させ、所定の姿勢でワークWKを載置する。いいかえると、ロボットコントローラ6は、センサ部2及びロボット設定装置100で特定されたピッキング対象のワークWKをエンドエフェクタEETで把持して、把持したワークWKを所定の基準姿勢にて、載置場所(ステージSTG)に載置してエンドエフェクタEETを開放するようにロボットRBTの動作を制御する。ステージSTGは、例えばコンベアベルト上やパレット等を挙げることができる。
ここで本明細書においてばら積みピッキングとは、図6Aに示すような収納容器BXに入れられて無作為に積み上げられたワークWKを、ロボットRBTで把持して、所定の位置に載置する他、図6Bに示すように、収納容器を用いずに所定の領域に積み上げられたワークWKに対して把持、載置を行う例、あるいは図6Cに示すように所定の姿勢で並べられて積み上げられたワークWKを順次把持、載置する例も含む意味で使用する。また、必ずしもワークWK同士が積み重ねられている状態であることは要さず、ワークWK同士の重なりがない状態で平面上にランダムに置かれたワークWKについても、本明細書においてはばら積みと呼ぶ(順次ピッキングされていき、ピッキングの終盤でワークWK同士の重なりがない状態となった場合でも依然としてばら積みピッキングと呼ばれるのと同じ理由である)。なお、本発明はばら積みピッキングに必ずしも限定されるものでなく、ばら積みされていないワークWKをピックアップする用途にも適用できる。
また、図1の例ではセンサ部2を作業空間の上方に固定しているが、センサ部2の固定位置は、作業空間を撮像できる位置であればよく、例えば作業空間の斜め上方や側方、下方、斜め下方など、任意の位置に配置することができる。ただし、アーム部ARM上のような、可動する不定位置にセンサ部2を配置する態様は除かれる。さらにセンサ部2が有するカメラや照明の数も、1個に限らず複数個としてもよい。さらにまたセンサ部2やロボットRBT、ロボットコントローラ6との接続は、有線接続に限られず、周知の無線接続としてもよい。
ロボットシステム1000でばら積みピッキング動作を行うにあたり、予めばら積みピッキング動作を行わせるための設定を含めたティーチングを行うこともできる。具体的には、ワークWKのどの部位を、エンドエフェクタEETがどのような姿勢で把持するのか、把持位置及び姿勢などの登録を行う。このような設定は、ペンダント等のロボット操作具7で行うことができる。また、後述するように、実際のロボットを操作せずに、ビジョン空間上で設定を行うこともできる。
表示部3は、ワークWKの三次元形状を仮想的に表現するワークモデルや、エンドエフェクタEETの三次元形状を仮想的に表現する、三次元CADデータで構成されたエンドエフェクタモデルを、仮想的な三次元空間上でそれぞれ三次元状に表示させる。さらにこの表示部3は、ワークモデルの基本方向画像を六面図として表示させることもできる。これにより、ワークモデルの各姿勢を六面図で表示させて把持位置の設定作業を行えるようになり、従来面倒であった把持位置の設定作業を容易に行えるようになる。
(ロボットシミュレーション)
ロボットシステム1000は、作業空間に積み上げられた複数のワークWKをロボットRBTによって順次取り出すばら積みピッキング動作をシミュレーションするためのロボットシミュレーション装置200を備えている。ロボットシミュレーション装置200は、画像処理装置300と一体化することができ、画像処理装置300と共にロボット設定装置100の内部に設けることができる。画像処理装置300は、作業空間に積み上げられた複数のワークWKを把持して順次取り出すピッキング動作を行うロボットRBTの制御に用いられる装置である。
図3に示すように、ロボット設定装置100は、ワークモデル設定部20、データ容量圧縮部21、物理シミュレーション部22、ばら積みデータ生成部23、サーチ処理部24、ピッキング動作シミュレーション部25、表示制御部26、サーチモデル登録部27、把持位置設定部28、三次元計測部30、干渉判定部31、把持位置決定部32、高さ画像生成部33、画素判定部34、ハンド部形状入力部35、露光制御部40及び露光時間設定部41を備えている。これら各部は、ロボットシミュレーション装置200または画像処理装置300を構成しており、ハードウェアで構成することもできるし、ソフトウェアで構成することもできる。またこれら各部を全て一体化して1つの装置にすることもできるし、任意の一部分を他の部分と別にして複数の装置でロボット設定装置100を構成することもできる。またこれら各部を例えばマイクロプロセッサ(MPU)やCPU、LSI、FPGAやASIC等のゲートアレイ、DSP等のハードウェアやソフトウェア、あるいはこれらの混在により実現できる。また必ずしも各構成要素が図3等に示した構成と同一でなくてもよく、その機能が実質的に同一であるもの、及び一つの要素が図3に示す構成における複数の要素の機能を備えるものは、本発明に含まれる。
例えば、露光制御部40及び露光時間設定部41は、センサ部2に設けることができる。また、表示制御部26は表示部3に設けることができる。また、ロボット設定装置100には各種情報を記憶するための記憶部42も設けられている。記憶部42は、半導体メモリやハードディスク等で構成することができる。また、記憶部42には、CD−ROMやDVD−ROM等の各種記憶媒体に記憶されている情報を読み取り可能な読み取り装置を設けることもできる。
ロボットシステム1000の運用前、即ち、実際の作業現場でワークWKの把持及び載置作業を行う前に、ロボットシミュレーション装置200によってロボットRBTの把持動作や載置動作のシミュレーションを三次元的に行うことができるように構成されている。ロボットシミュレーションでは、複数のワークモデルを無作為に積み上げたばら積み状態を生成する物理シミュレーションと、物理シミュレーションで生成されたばら積み状態のデータを利用してワークモデルの位置及び姿勢を検出し、ロボットRBTによるピッキング動作のシミュレーションを実行するピッキング動作シミュレーションとが行われる。以下、ロボットシミュレーション装置200及びロボットシミュレーション装置200によって実現されるロボットシミュレーション方法について図7に示すロボットシミュレーションフローチャートに基づいて具体的に説明する。
ロボットシミュレーションを開始する際には、図7に示すロボットシミュレーションフローチャートの開始後、ステップSA1においてシミュレーションを実行する環境(シミュレーション環境)を設定する。シミュレーション環境の設定には、ばら積みをさせるワークの数、収納容器BXの情報、床の情報、センサ部2を構成するカメラCMEやプロジェクタPRJの設計情報等が挙げられる。またピッキング動作シミュレーション時には、収納容器BXに対して、実運用上発生し得る、ランダムな位置ずれを発生させることもでき、この際の位置ずれの範囲等をシミュレーション環境の設定に含めることもできる。
シミュレーション環境の主要な設定手順を図8のシミュレーション環境設定手順フローチャートに示す。このシミュレーション環境設定手順フローチャートの開始後のステップSB1では、ワークWKのサーチモデルを登録する。その後のステップSB2では、ロボットRBTのハンドモデルを登録する。ステップSB1のワークWKのサーチモデルとは、後述するサーチ処理を実行する際に使用されるワークWKの形状を表したモデルである。ステップSB2のロボットRBTのハンドモデルとは、ハンド部(エンドエフェクタEET)の形状を表したモデルである。ステップSB1とステップSB2は順番を入れ替えてもよい。また、通い箱など、ワークを収納する収納容器BXをモデル化した容器モデルを設定できるようにしてもよい。
ステップSB1でワークWKのサーチモデルを登録する要領は、図9のサーチモデル登録フローチャートに示す通りである。図9のサーチモデル登録フローチャートでは、開始後、ステップSC1ではワークWKの三次元CADデータ(CADモデル)を読み込んで、ロボットシミュレーション装置200が有する記憶部42に一旦記憶させておく。三次元CADデータに基づいたワークモデルの例を図10に示す。CADデータは、ワークモデルのデータであり、従来から一般的に用いられているフォーマットのデータを使用することができる。
この実施形態では、CADデータのフォーマットとして最もシンプルなSTL形式を用いている。STL形式は、三角形のポリゴン情報(3点の座標とその面の法線ベクトル)の羅列のみで構成されるデータである。あるいはワークモデルとして、三次元情報を有する点群データで構成してもよい。あるいはまた、ワークモデルを、高さ情報を有する画像データ、例えば高さ画像や距離画像で構成してもよい。
ステップSC1は、ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定ステップであり、図3に示すロボット設定装置100が有するワークモデル設定部20で行われる。このステップSC1で読み込んだCADデータのポリゴン数は、数千個から数万個ある場合がある。
ステップSC1に続くステップSC2では、CADモデルの外接直方体を規定し、この外接直方体の中心をCADの原点に補正する原点補正処理を行う。ワークモデルの原点は、三次元CADデータが有する座標情報から、ロボット設定装置100が自動的に決定する。例えばワークモデルの三次元CADデータに対して、ワークモデルに外接する仮想直方体を規定し、この仮想直方体の重心をワークモデルの原点として設定することができる。
その後、ステップSC3に進み、ステップSC1で読み込んだCADモデルの六面、CADモデルを「上」、「下」、「左」、「右」、「前」、「後」の各方向から見た高さ画像データを生成する。すなわち、CADモデルの平面図、底面図、左側面図、右側面図、正面図、背面図となるように、6つの高さ画像データを生成する。この高さ画像データから高さ画像が得られる。「上」はZ軸の正方向(プラス側)から見た高さ画像、「下」はZ軸の負方向(マイナス側)から見た高さ画像、「左」はX軸の負方向から見た高さ画像、「右」はX軸の正方向から見た高さ画像、「前」はY軸の負方向から見た高さ画像、「後」はY軸の正方向から見た高さ画像を、それぞれ示している。ただ、これらは一例であって、異なる座標系を用いてもよいし、X−Y平面におけるX=Yの直線を軸として、この軸と互いに直交する座標系に基づいて、各軸の正負方向から見た高さ画像を用いてもよい。また、三次元CADデータから、高さ画像を生成する際、必ずしもCADデータの軸に直交した方向(「上」、「下」、「左」、「右」、「前」、「後」)から見た高さ画像である必要はなく、例えばワークモデルの姿勢(視点)を任意に変えて、変えた状態の視点から高さ画像を生成するようにしてもよい。
このステップSC3では、CADモデルが三次元CADデータからなるものであるので、三次元CADデータをCADモデルのX、Y、Z座標のそれぞれについてプラス方向及びマイナス方向の各方向から見たときの高さ画像に変換することで、CADモデルの六面について高さ画像を得ることができる。図11には、図10に示すワークモデルを上下左右前後の各方向から見た高さ画像を示している。図10では、白くなるほど(色が明るくなるほど)高くなるように表示している。
ステップSC3に続くステップSC4では、ステップSC3で生成した6つの高さ画像の中で同じ見え方になる高さ画像を削除する。見え方の一致/不一致は、ワークの上下(Z軸の正負方向)、前後(Y軸の正負方向)、左右(X軸の正負方向)から見た、計六面の高さ画像を高さ画像データに基づいて生成し、高さ画像が一致しているか否かを確認する。ここでは90°の刻み角度で回転させて一致しているか否かを確認し、他の面と一致する見え方となる面は、サーチモデルの登録対象から除外する。このような除外は、ユーザが手動で行うこともできるし、ロボットシミュレーション装置200または画像処理装置300側で自動で行わせてもよいし、あるいはこれらを組み合わせて行うようにしてもよい。
具体例について説明すると、例えば、ワークWKが直方体であった場合には、CADモデルを上から見た高さ画像と下から見た高さ画像とが同じになり、この場合には、いずれか一方を削除する。CADモデルを左から見た高さ画像と右から見た高さ画像も同じになるので一方を削除する。また、CADモデルを前から見た高さ画像と後から見た高さ画像も同じになるので一方を削除する。これにより、サーチモデルの数を減らすことができるので、後述する各処理の速度を向上させることができる。ワークWKが複雑な形状であっても、一方向から見た高さ画像と他方向から見た高さ画像が同じになることがあり、この場合も一方の高さ画像を削除することができる。ワークWKが立方体の場合は6面のうち、5面を削除することができる。
また、例えば、ステップSC1で図12に示すような三次元形状を持ったワークモデルを読み込んだ場合、図13に示すように、ワークモデルを各方向から見た高さ画像を得ることができる。図12に示すワークモデルの場合は、X軸のプラス方向から見た高さ画像と、X軸のマイナス方向から見た高さ画像とが同じになるので、ステップSC4において一方を省略している。さらに、Y軸のプラス方向から見た高さ画像と、Y軸のマイナス方向から見た高さ画像とが同じになるので、ステップSC4において一方を省略している。よって、ステップSC4を経ることで図13に示すように高さ画像が4つになっている。
その後、ステップSC5に進み、ステップSC4で残った高さ画像データを保存する。保存する高さ画像データがCADモデルの上下左右前後のいずれの方向から見た画像であるかを示す情報、即ち方向に関する情報を当該高さ画像データに付与し、この方向に関する情報と高さ画像データとを関連付けてロボットシミュレーション装置200の記憶部42に保存しておく。これにより、上下左右前後の各面の関係性情報を持った状態で各高さ画像データを保存しておくことができるので、1つのワークモデルを異なる方向から見た複数の高さ画像データを相互に関連付けてロボットシミュレーション装置200または画像処理装置300に登録しておくことが可能になる。
したがって、高さ画像データを記憶部42から読み出したときに、例えば、CADモデルの6方向から見た高さ画像を関連付けて得ることができる。以上のように、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録することが可能になる。サーチモデルは、作業空間に積み上げられたワークWKの位置及び姿勢を検出するサーチ処理に用いられるモデルであり、複数種登録しておくこともできる。
図9に示すサーチモデル登録フローチャートでは、ステップSC5で面の関係性情報を保存するようにしているが、これに限られるものではなく、例えば、図14に示すサーチモデル登録フローチャートのように、ステップSD1〜SD4までは図9に示すフローチャートのステップSC1〜SC4と同じであるが、ステップSD5においては面の関係性情報を保存することなく、高さ画像データのみ保存するようにしてもよい。
図9に示すサーチモデル登録フローチャートはワークWKのCADデータが存在している場合の要領であるが、仮にワークWKのCADデータが無い場合には、図15に示すワークWKのCADデータが無い場合のサーチモデルの登録手順の例を示すフローチャートに従い、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録することができる。図15に示すサーチモデル登録フローチャートの開始後、ステップSE1では、登録したい面を上向きにしたワークWKを平面上に置き、三次元計測を行う。この三次元計測は、ロボットシステム1000のセンサ部2及び三次元計測部30を利用して行うことができる。三次元計測により得られた計測データは三次元計測部30から出力され、計測データに基づいて、ワークWKの登録したい面の高さ画像データを得ることができる。こうして得られた高さ画像の一例を図16に示す。
図15に示すフローチャートのステップSE1に続くステップSE2では、ステップSE1で得られた高さ画像データで得られた高さ画像をサーチモデルとして登録する。登録後、ステップSE3に進み、サーチに必要な分、登録し終えたか否かを判定する。この判定はユーザが行うことができるが、ロボットシミュレーション装置200または画像処理装置300に行わせるようにしてもよい。すなわち、ワークWKを上下左右前後の各方向から見た形状が全て異なれば、六面の全てについてステップSE1及びステップSE2を行うのが好ましいが、上述した長方形の場合や図12に示す形状のように同じ形状の面がある場合には六面の全てについて行わなくてもよい。ステップSE3でサーチに必要な分、登録し終えたら、終了する。
以上のようにしてワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録するサーチモデル登録ステップを行うことができる。サーチモデル登録ステップは、図3に示すロボット設定装置100が有するサーチモデル登録部27で行われる。
図17に示すように、高さ画像に特徴点B、Cを配置することができる。特徴点B、Cは、サーチモデルの形状を表す点であり、1つの高さ画像の中に複数配置することができる。特徴点は、サーチモデルの周縁部に沿って配置される外形状指示点Bと、サーチモデルの面内に配置される面形状指示点Cとを含んでいる。外形状指示点Bは、サーチモデルを構成する各面の外形状を示す点であり、面の外形線上を所定の間隔をあけて配置される。面形状指示点Cは、サーチモデルを構成する各面の周縁部を除いた内側において所定の間隔をあけて配置される。特徴点を配置することで、特徴点を用いてサーチモデルの概略形状を把握することができ、取り扱うデータ量が少なくて済む。外形状指示点Bと面形状指示点Cとの色は変えるのが好ましい。外形状指示点Bと面形状指示点Cは、表示部3に表示される。
次に、図8に示すシミュレーション環境設定手順フローチャートのステップSB2で行うロボットRBTのハンドモデルの登録要領について説明する。ロボットRBTのハンドモデルの登録要領は、図18のハンドモデル登録手順フローチャートに示しており、このフローチャートの開始後のステップSF1では、ハンド部(エンドエフェクタEETに等しい)のポリゴンデータ(CADデータ)を読み込む。このステップSF1では、ハンド部のポリゴンデータを読み込むことから、ハンド部の形状を入力することができるステップである。従って、ステップSF1は、ロボットRBTのハンド部の形状を入力するハンド部形状入力ステップであり、このハンド部形状入力ステップは、図3に示すロボット設定装置100が有するハンド部形状入力部35で行われる。
ステップSF1に続くステップSF2では、ハンド部の断面を作成する方向を決定する。図19に示すハンドモデルに基づいて説明すると、ハンドモデルに軸Aを設定しておく。軸Aは、ハンドモデルの中心部を通り、かつ、ハンドモデルの長手方向に延びている。この軸Aと直交する方向の断面を作成する。作成する断面は、1つではなく、ハンドモデルの先端から基端に亘って複数箇所の断面を作成する。この例では、断面1〜断面5の5つの断面を作成する場合を示しているが、断面の作成数は任意に設定することができる。断面を作成する位置は、ポリゴンデータの頂点位置に設定することができる。作成した断面を図20に示す。
図18に示すフローチャートのステップSF3では、ステップSF2で作成した断面を利用して断面モデルを作成する。つまり、断面の形状と、ステップSF1でハンドモデルに設定した軸Aに対する断面の位置との情報とにより、ハンド部の断面モデルを作成することができる。また、断面モデルの作成方法は別の方法であってもよく、例えば、軸A方向に一定距離ごとに断面を作成し、同じ形状の断面を結合する方法であってもよい。
ロボットRBTのハンド部の形状は様々あり、図19に示す形状以外にも、例えば爪部が長い形状、短い形状、爪部の幅が狭い形状、広い形状、爪部が棒状のもの等がある。これらハンド部も図18のハンドモデル登録手順フローチャートに従って登録しておくことができる。つまり、図3に示すハンド部形状入力部35では、ロボットRBTのハンド部の形状を複数入力して登録しておくことができる。
以上のようにして図8のシミュレーション環境設定フローチャートのステップSB2を経てロボットRBTのハンドモデルを登録した後、ステップSB3に進む。ステップSB3では、ロボットRBTのハンド部で把持するワークの面を選択する。ワークの面は、図9に示すサーチモデル登録フローチャートで登録した高さ画像で表すことができ、登録されている複数の高さ画像の中から、ロボットRBTのハンド部で把持することが可能な面に対応した高さ画像をユーザが選択する。高さ画像の選択にあたっては、高さ画像選択用の画面を表示制御部26が作成して表示部3に表示させることができる。高さ画像選択用の画面では、図9に示すサーチモデル登録フローチャートで登録した複数の高さ画像を一度に表示させておき、これら高さ画像の中からユーザが操作部4の操作によって選択することができる。
ステップSB3で高さ画像を選択した後、ステップSB4に進み、ステップSB3で選択した面を把持する時のハンド部の位置及び姿勢を登録する。ステップSB4では、図21に示すような把持位置設定用画面(GUI)50を表示部3に表示させる。把持位置設定用画面50は、図3に示すロボット設定装置100が有する把持位置設定部28で生成することができる。生成された把持位置設定用画面50は、表示制御部26が表示部3を制御することによって図21に示すように表示することができる。
図21Aに示すように、把持位置設定用画面50は、モデル表示領域51と、サーチモデル選択領域52と、把持位置表示領域53とを有している。モデル表示領域51には、ロボットRBTのハンドモデルと、サーチモデル選択領域52で選択されたサーチモデルとが表示される。サーチモデル選択領域52には、A〜Dが表示されており、それぞれにサーチモデルが割り当てられており、例えば、AにはCADモデルを上から見た高さ画像、BにはCADモデルを左から見た高さ画像、CにはCADモデルを右から見た高さ画像、DにはCADモデルを前から見た高さ画像を割り当てることができる。ユーザがサーチモデル選択領域52の任意のアルファベットを選択すると、そのアルファベットに割り当てられているサーチモデルがモデル表示領域51に表示される。
把持位置表示領域53には、把持位置追加ボタン53aが設けられている。把持位置追加ボタン53aを操作すると、図21Bに示すように把持姿勢設定領域54がモデル表示領域51と共に表示される。把持位置追加ボタン53aは、仮想的なボタンであり、操作部4のマウス等で操作することができる。
把持姿勢設定領域54には、X軸座標、Y軸座標、Z軸座標、X軸周りの回転角度、Y軸周りの回転角度、Z軸周りの回転角度を個別に入力可能な入力領域55が設けられている。各入力領域55に数値を入力すると、入力された値に対応するように、モデル表示領域51に表示されているハンドモデルが移動していく。これにより、ハンドモデルを所望位置に配置することができるので、ハンドモデルの位置を調整しながら、ハンドモデルでサーチモデルのどの部位をどのような姿勢で把持するか、即ち把持位置及び姿勢を設定することが可能になる。把持位置及び姿勢の設定は、各入力領域55に数値を入力する以外にも、例えばハンドモデルを操作部4のマウスで直接的に操作することによっても可能である。
ここで設定する把持位置は、ロボットRBTにより把持される把持候補位置である。図21Aに示すように、ロボットRBTにより把持される把持候補位置は、サーチモデル登録部27で登録されている各サーチモデルに対応付けて複数設定することができる。例えば、あるサーチモデルには、2つの把持候補位置を対応付けて設定し、別のサーチモデルには、4つの把持候補位置を対応付けて設定することができる。設定された把持候補位置は、サーチモデルと対応付けられた状態でロボット設定装置100が有する把持位置設定部28の記憶部42に登録することができる。
一般に、一のワークに対して把持候補位置を複数登録することが多い。これは、把持候補位置を複数登録しておけば、複数の把持解の中から最適な解を選ぶことができるため、仮に得られた把持解候補が、例えばハンド部の他の物体との干渉によって最終的な解となり得ない場合、他の把持解候補があれば、把持可能と判定される可能性が高まるからである。このような把持候補位置を複数登録する際、その都度登録を一から行うと、同様の把持候補位置を登録する際に手数が多くなり作業が面倒となる。そこで、既に登録済みの把持候補位置情報をコピーして、この把持候補位置で設定された位置パラメータの一部を変更して、新たな把持候補位置として保存可能とすることで、手間を省いて複数の把持候補位置を容易に登録できるようになる。また、同様に既存の把持候補位置を読み出して、位置パラメータを適宜修正して上書き保存することも可能である。
図22ではハンドモデルを把持候補位置に配置した状態を示している。また、図23では、6つのサーチモデルのそれぞれについてハンドモデルを把持候補位置に配置した状態を示しているが、全てのサーチモデルに把持候補位置を設定しなくてもよい。
把持候補位置を登録する際、サーチモデルの原点に対して、ワークモデルを把持する際のエンドエフェクタモデルの相対的な位置及び姿勢を登録する。一方、実際のエンドエフェクタEETでワークWKをピッキングする際には、センサ部2でワークWKを撮像した三次元空間(ビジョン空間)の座標であるビジョン座標から、ロボットコントローラ6がロボットRBTを実際に動作させる際に用いるロボット座標に変換する必要がある。
具体的には、ワークモデルの位置及び姿勢は、ビジョン空間における、位置(X、Y、Z)と姿勢(RX、RY、RZ)で求められる(なお姿勢(RX、RY、RZ)はZ−Y−X系オイラー角で表現された姿勢を示している)。また、これを把持するエンドエフェクタモデルの姿勢についても、同様にロボット設定装置100の仮想三次元空間における位置(X、Y、Z)と姿勢(RX、RY、RZ)として求められる。このようなビジョン空間における位置及び姿勢に基づいて、ロボットコントローラ6がロボットRBTを動作させるには、これらをロボット空間における位置(X’、Y’、Z’)と姿勢(RX’、RY’、RZ’)に変換する必要がある。この表示される座標系で算出された位置及び姿勢を、ロボットコントローラ6がエンドエフェクタEETを動作させる座標系の位置及び姿勢に座標変換するための変換式を算出する処理は、キャリブレーションと呼ばれる。このキャリブレーションは従来から周知の手法で行うことができる。
図8に示すフローチャートのステップSB5では、必要数の把持候補位置を登録できたか否かを判定する。ハンド部で把持することが可能な部位が多数あれば、登録すべき把持候補位置の数が多くなるが、これはユーザが判断する事項であるため、ステップSB5の判定はユーザが判定することになる。ステップSB5でNOと判定して必要数の把持候補位置を登録できておらず、登録すべき把持候補位置が他にも残っている場合には、ステップSB3を経てステップSB4に進み、他の把持候補位置を設定し、登録する。一方、ステップSB5でYESと判定して必要数の把持候補位置を登録できている場合には、このフローを終了する。
図7に示すステップSA1のシミュレーション環境設定ステップでは、上述のようにサーチモデルの設定及び登録、ハンドモデルの設定及び登録を行うことができるが、これら以外にもシミュレーションを行う上で必要な各種情報の入力や設定を行うことが可能である。
ステップSA1に続くステップSA2では、ばら積み情報を入力する。ばら積み情報とは、例えば、一度にばら積みするワークの個数、ばら積みする箇所の形状(平面であるか、箱であるか)、ばら積みする箇所の大きさ等を入力する。
ステップSA2でばら積み情報を入力するとステップSA3に進み、ワークWKの三次元CADデータ(CADモデル)を読み込む。図9のサーチモデル登録フローチャートのステップSC1で読み込んだデータを読み出してステップSA3で使用することができる。
CADデータを読み込んだ後、ステップSA4に進み、ステップSA3で読み込んだCADデータのポリゴン数を削減する。CADデータのポリゴン数を削減するということは、ワークモデルのデータ容量が圧縮されて小さくなるということである。また、ワークモデルのデータを間引くことによってデータ容量を圧縮することも可能である。
三次元CADデータは、一般に、三角形の面情報の集合体として表されるポリゴンデータで表され、ワークモデルの形状を極力保ちながらポリゴン数を削減する方法としては、例えば、Hoppeらが提案するプログレッシブメッシュ法や、Garlandらが提唱するQEM(Quadratic Error Metirc)法という手法があり、これら従来から周知の手法のうち、いずれの手法を用いてポリゴン数の削減処理を行ってもよい。
例えば、QEM法では、隣接するポリゴンのエッジを消去し、2つの頂点を結合して新たな頂点を生成し、この操作を繰り返すことで、CADデータ全体を構成するポリゴン数を大幅に削減し、データ容量を圧縮することができる。また、ステップSA4は、ステップSA3で読み込んだCADデータのデータ容量を圧縮することができればよいので、ポリゴン数を削減する方法以外にも、各種方法によってデータ容量を圧縮するようにしてもよい。
このステップSA4は、CADデータで表されるワークモデルの形状を極力保ちながら、ポリゴン数を削減したワークモデルを作成して、後述する物理シミュレーション部22による物理シミュレーション時の演算負荷の軽減するために行うステップである。ステップSA4は、ワークモデル設定部20で設定されたワークモデルのデータ容量を圧縮する処理を行うデータ容量圧縮ステップに相当し、図3に示すロボット設定装置100が有するデータ容量圧縮部21で行われる。
データ容量圧縮の具体例を示すと、図24Aは、ポリゴン数削減前のワークモデルを示しており、ポリゴン数は26,214個ある。図24Bは、ポリゴン数削減後のワークモデルを示しており、ポリゴン数は414個ある。また、図25は、図24Bに示すワークモデルよりもポリゴン数を削減した後のワークモデルを示しており、ポリゴン数は50個ある。図24Bに示すワークモデルは、ポリゴン数を大きく削減しているにも関わらず、ポリゴン数削減前のワークモデルの形状を残しており、この程度の削減量(データ圧縮量)であれば、後述するシミュレーション結果が再現性の高い結果となるので好ましい。
一方、図25に示すワークモデルは、ポリゴン数の削減度合いが大き過ぎてポリゴン数削減前のワークモデルの形状からかけ離れた形状になっており、このワークモデルを用いて後述するシミュレーションを行うと、再現性が著しく低くなる可能性が高いので好ましくない。
この実施形態では、過度にポリゴン数を削減したことによってワークモデルの形状が大幅に変化することを防ぐため、形状変化が予め設定したしきい値の範囲内に収まるようにしている。これを実現するために、図3に示すロボット設定装置100が有するデータ容量圧縮部21は、圧縮処理前のワークモデルと圧縮処理後のワークモデルとの形状変化許容値を設定可能に構成されている。ユーザは、自分が使用するCADデータのポリゴン数を削減すればするほど処理速度が高速になるのでポリゴン数を多く削減したいが、上述したようにシミュレーションの結果が再現性の低い結果になるおそれがあるので、ポリゴン数を削減するのには限度がある。しかし、ポリゴン数の削減量をどの程度にまで抑えておけばシミュレーションの結果の再現性が高くなるのかをユーザ自身が判断することは簡単なことではなく、誤った判断の元でポリゴン数を削減してしまうと、シミュレーション結果と実際の運用時のピッキング動画との関連性が低くなってしまい、シミュレーションを行う意味が無くなる。
このことを防止するために、データ容量圧縮部21では、ポリゴン数の削減によるワークモデルの形状変化を許容する形状変化許容値として、予め設定された初期設定値を持っている。初期設定値は、ロボット設定装置100の出荷時に記憶部42に記憶させておくこともできるし、ロボット設定装置100の使用開始時に記憶部42に記憶させることもできる。初期設定値は運用後に変更することもできる。
例えば、上述したQEM法では、隣接する複数の面の中のエッジとその両端の頂点を削減して新しい頂点を生成した際の変形量をコストとし、このコストの小さい順にエッジを消去していく。形状変化許容値を例えば1%オーダーの小さい値に抑えた上で、累積変形量がその形状変化許容値に収まる範囲でエッジと頂点を削除していけば、極端な形状変化を防ぎつつ、効果的にポリゴン数を削減することができるので、演算負荷を軽減しながら、シミュレーションの結果を再現性の高いものにすることができる。
例えばQEM法では、ポリゴンデータを構成するすべてのエッジ(稜線)に対して、その両端の頂点を削除して新しい位置に頂点を生成した場合(エッジ削除)の変形量の期待値を計算し、これを昇順にソートした上で、変形量の期待値が小さいものから順にエッジを削除していくことができる。あるエッジを削減すると、その両端が新しい頂点に移動し、隣接する頂点との間に新しいエッジが生成されることになる。ここで生成されるすべてのエッジの変形量の期待値に対して、先の操作により削除されたエッジの変形量の期待値を加算した状態で、再びすべてのエッジの変形量の期待値を昇順にソートし、この結果、あるエッジ削除の操作により新たに生成されたエッジは、そこに至るまでの当初の形状からの変形量が累積された形になり、以降はより削減されにくくなる。
形状変化許容値をユーザが入力可能に構成することもできる。例えば形状変化許容値の入力用画面を表示制御部26によって表示部3に表示させ、ユーザが操作部4を使用して形状変化許容値を入力することができる。同様にして初期設定値も変更することができる。
ワークモデルのデータ容量を圧縮した後、図7に示すフローチャートのステップSA5に進み、物理シミュレーションを実行する。物理シミュレーションは、図3に示すロボット設定装置100が有する物理シミュレーション部22が行い、具体的には、データ容量圧縮部21でデータ容量が圧縮された複数のワークモデルを用いて、ワークが重力の作用を受けて作業空間に配置される動作をシミュレーションし、仮想的な作業空間に複数のワークモデルを積み上げたばら積み状態を生成する。これが物理シミュレーションステップである。物理シミュレーションを行うことで、明らかに不自然な姿勢のワークモデルを除外するなど、ユーザの実運用環境に合わせたばら積みデータを生成して後述するピッキング動作シミュレーションを行えるため、実際にワークを用意することなく、実運用時に近い形で事前に適切な設定調整や、検証を行うことができるようになる。物理シミュレーション部22は、物理的に発生確率が低いワークモデルを排除したバラ積みデータを生成するよう構成してもよい。
物理シミュレーションは、従来から周知の物理シミュレーションエンジンを用いて実行することができる。物理シミュレーションでは、ワーク同士の衝突による作用、床等の障害物の情報に基づいてワークモデルを仮想的に配置していく。実運用時に図1に示すような収容容器BXにワークWKを収容する場合には、ワークモデルを収容容器BXに上方から投入するシミュレーションを物理シミュレーションエンジンが行うように設定することができる。また、物理シミュレーションでは、例えばワーク同士が衝突した場合に、予め設定された反発係数や摩擦係数を考慮して、その後ワークモデルがどのような動きになるかが示される。
物理シミュレーションの例としては、例えば、収容容器BXにワークWKを上方から投下または投入して収容容器BXの内部にばら積み状態を生成する場合を挙げることができる。「投入」や「投下」とは、物理的に高所から落下させる動作に限られず、例えば転がりを検証するため、所定の高さから水平方向に押し出しながら落下させたり、放物線状に投げ上げて落下させたり、あるいは収納容器BXや床面にワークモデルを載置、あるいは静置する動作も含む意味で使用する。さらに、物理シミュレーションは、ワークモデルを1つずつ作業空間内に順次投入する他、複数のワークモデルを同時に投入、例えば落下させたり静置させる動作をシミュレーションすることもできる。
物理シミュレーションを実行した後、ステップSA6に進み、ワークモデルのばら積み状態データを、物理シミュレーションの結果に基づいて生成する。このステップも物理シミュレーションステップに含まれるステップであるが、実行するのは、図3に示すロボット設定装置100が有するばら積みデータ生成部23である。
ワークモデルのばら積み状態データに基づいて画像を生成すると、図26及び図27に示す画像が得られる。図26及び図27は、表示部3に表示される画像を示しており、各図における左側の画像が物理シミュレーション画像57、右側の画像が後述する高さ画像58である。表示制御部26は、ワークモデルのばら積み状態データに基づいて、ワークモデルが収納容器BXに無作為に投入された状態を示す画像を生成し、物理シミュレーション画像57として表示部3に表示させる。この物理シミュレーション画像57の中のワークモデルは、データ容量圧縮前のワークモデルとすることもできる。この場合、ワークモデルのばら積み状態データの中のワークモデルの位置及び姿勢情報にしたがって、データ容量圧縮部21による圧縮処理を行う前のワークモデルを配置することにより、物理シミュレーション画像57上では精緻なワークモデルとして表示できる。尚、圧縮処理を行う前のワークモデルを配置する代わりに、物理シミュレーション部22で用いたワークモデルよりもデータ容量が大きくかつワークの三次元形状に近いワークモデルを配置するようにしてもよい。また、ユーザは、物理シミュレーション画像57を見て、物理シミュレーションの結果が、後述するピッキング動作シミュレーションに不適な結果であると思われる場合には、その物理シミュレーションの結果を破棄して改めて物理シミュレーションを実行することができる。
図26及び図27に示すように、物理シミュレーション画像57と、高さ画像58とは独立して視点、即ち見る角度を変えた画像にすることができる。物理シミュレーション画像57と、高さ画像58との配置は図示した配置に限られるものではなく、1つの表示画面上の任意の位置にそれぞれ配置することができる。また、物理シミュレーション画像57は、例えば物理シミュレーションの実行開始から終了までを動画として表示可能にしてもよい。この場合、収納容器BXの上方から複数のワークモデルを収納容器BXに投下する様子、ワークモデル同士が衝突する様子、ワークモデルが収納容器BXの壁に衝突する様子も見ることができ、最終的にどのようしてばら積み状態が生成されたのかをユーザが把握できる。
ワークモデルのばら積み状態データを生成した後、図7に示すステップSA7に進み、ワークモデルのばら積み状態データの中のワークモデルをポリゴン数削減前のCADデータと置換する。すなわち、物理シミュレーション部22で生成されたばら積み状態のデータの中の各ワークモデルの位置及び姿勢にしたがって、物理シミュレーション部22で用いたワークモデルよりもデータ容量が大きくかつワークの三次元形状に近いワークモデルを配置する。このようにして、各ワークモデルの位置及び姿勢を検出するサーチ処理を実行するためのサーチ処理用データを生成するデータ生成ステップが行われる。このサーチ処理用データの生成は、図3に示すロボット設定装置100が有するばら積みデータ生成部23で行われる。
物理シミュレーション部22で用いたワークモデルよりもデータ容量が大きくかつワークWKの三次元形状に近いワークモデルというのは、データの圧縮量が低く、物理シミュレーションステップで用いたワークモデルよりも精緻な形状を持ったワークモデルである。このワークモデルに置き換えることで、後述するピッキング動作シミュレーションの結果の再現性を高めることができる。
ばら積みデータ生成部23は、物理シミュレーション部22で生成されたばら積み状態のデータの中の各ワークモデルの位置及び姿勢にしたがって、データ容量圧縮部21による圧縮処理を行う前のワークモデルを配置することによってサーチ処理用データを生成することもできる。こうすれば後述するピッキング動作シミュレーションの結果がより一層再現性の高い結果になる。
ステップSA7においてサーチ処理用データを生成した後、ステップSA8に進み、ワークモデルの各部の高さを表す高さ画像データを生成する。高さ画像データから得られる高さ画像は、高さ情報を有する画像であって、距離画像、三次元画像等とも呼ばれる。サーチ処理用データにはワークモデルの高さに関する情報が含まれているので、これに基づいて周知の手法によって高さ画像データを得ることができる。図26及び図27に示すように、ステップSA8で生成された高さ画像データに基づいて得ることができる高さ画像58は、物理シミュレーション画像57と同時に表示部3に表示される。
図7に示すステップSA8で高さ画像を生成した後、ステップSA9に進み、ばら積みデータ生成部23により生成されたサーチ処理用データに対し、各ワークモデルの位置及び姿勢を検出するサーチ処理を実行する。これはサーチ処理ステップであり、図3に示すロボット設定装置100が有するサーチ処理部24が行う。
サーチ処理は高さ情報を含むサーチ処理用データに対してサーチをかけるので、三次元サーチと呼ぶことができる。具体的には、サーチモデル登録部27で登録されたサーチモデルを用いて、各ワークモデルの姿勢と位置を特定する三次元サーチを行う。まずサーチモデルの各特徴点が、最も一致する状態の位置及び姿勢(X、Y、Z、RX、RY、RZ)を、高さ画像の中から探索する。ここでRX、RY、RZは、それぞれX軸に対する回転角、Y軸に対する回転角、Z軸に対する回転角を表す。このような回転角度の表現方法は種々提案されているところ、ここではZ−Y−X系オイラー角を用いることができる。また一致する位置及び姿勢は、各サーチモデルに対して、1つである必要はなく、一定以上一致する位置及び姿勢を、複数検出してもよい。
たとえば、図28に示すように、高さ画像の中で特徴点の一致に基づいてワークモデルを検出した場合には、その検出位置にサーチモデルの特徴点を、周囲よりも明るい色で重畳表示させることができる。このように三次元サーチに用いるサーチモデルとして、ワークを六面図のように、面ごとに見た画像を用いることで、斜視図などを用いる場合と比べ、三次元サーチの演算処理を簡素化でき、処理を軽負荷、高速化できる利点が得られる。また、サーチモデルの登録作業に際しても表示された状態が見易くなり、ユーザにも視覚的に判り易くできる。
ここで、例えば、三次元サーチに用いる高さ画像を構成するワークモデルが、データ容量圧縮部21で圧縮処理されたワークモデルであった場合について説明する。図29は、三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理前である場合を示しており、一方、図30は、三次元サーチに用いる高さ画像を構成するワークモデルが圧縮処理後である場合を示している。図29Bと図30Bとを比較すると、図29Bの方は特徴点の位置が正確に合致した状態になっているのに対し、図30Bの方は特徴点の位置が正確に合致しない状態になってしまい、スコアが下がっていることが分かる。したがって、三次元サーチ時には、図29Bに示す圧縮処理前のワークモデルを用いることで、三次元サーチの正確性を高めることができる。尚、三次元サーチ時に図30Bに示す圧縮処理後のサーチモデルを用いてサーチするようにしてもよいが、そのときの圧縮量が低い方が好ましい。
図31に示すように、三次元サーチの結果の位置に、サーチモデルの各特徴点を重畳表示させることができる。図31の左側には、二次元表示した場合を示しており、右側には、三次元表示した場合を示している。対応する特徴点が、高さ画像中に対してどの程度存在したか(例えば、高さ画像に対し、一定の距離以下の誤差で対応した特徴点の点数割合など)によって、サーチ結果をスコア付けすることができる。
サーチ処理部24が高さ画像中にサーチモデル登録部27で登録されたサーチモデルが存在するか否かをサーチした結果、高さ画像中に、サーチモデルが存在しない場合、即ちワークモデルを検出できない場合には、図7に示すステップSA10においてNOと判定されてステップSA11に進み、残ったワークモデルの情報を抽出し、このフローを終了する。
ステップSA9の三次元サーチの結果、高さ画像の中にワークモデルを検出できた場合には、ステップSA10でYESと判定されてステップSA12に進み、干渉判定及び把持解を算出する。このステップSA12〜SA15は、サーチ処理部24によりサーチに成功したワークモデルに対して、ロボットRBTによりピッキング動作のシミュレーションを実行するピッキング動作シミュレーション部25が行うピッキング動作シミュレーションステップである。三次元サーチの結果、高さ画像の中に複数のワークモデルを検出できる場合もある。ピッキング動作シミュレーション部25に物理シミュレーションの機能や高さ画像生成機能を持たせてもよい。
このように、ピッキング動作シミュレーション部25は、生成されたばら積みデータに対して、仮想作業空間内のワークモデルのばら積みピッキング動作を検証するための部分である。ピッキング動作シミュレーションを行うことにより、ワークの三次元位置及び姿勢の検出可否など、手間のかかる確認作業や設定調整を、実際にワークを用意することなく、実運用に近い形で事前に行うことができる。
特に物理シミュレーション部22は、ピッキング動作シミュレーション部25による一のワークモデルをハンドモデルで把持し少なくとも取り出し動作を開始した後、このワークモデルが取り出された後の状態のばら積みデータに対して物理シミュレーションを再度実行するように構成することができる。物理シミュレーションを再度実行するタイミングは、ワークモデルをハンドモデルで把持し、載置位置にプレースされた後とする他、ワークモデルの取り出し作業の途中であってもよい。すなわち、ハンドモデルでワークモデルを把持して、このワークモデルが持ち上げられた状態では、一のワークモデルが除去されたことで、このワークモデルの周辺にあった他のワークモデルが移動可能となるため、把持されたワークモデルが載置されるまで待つ必要はない。よって、物理シミュレーションの再実行のタイミングは、一のワークモデルがハンドモデルで把持されて持ち上げられたタイミング、あるいはその後、他のワークモデルの状態が重力の作用で移動して安定するまで待った後のタイミングとすることができる。例えば、ワークモデルが把持されて持ち上げられた時点から所定の時間の経過後(例えば10秒後)としてもよい。物理シミュレーションを再度実行した後、ばら積みデータを更新する。
したがって、ピッキング動作シミュレーション中にばら積みデータからワークモデルが一つ取り出されると、これに応じてバラ積みされたワークモデル群が崩れるといった動作も物理シミュレーションにより演算され、この演算後のばら積みデータを利用してピッキング動作シミュレーション部25がその後のピッキング動作シミュレーションを実行するので、より正確なばら積みピッキングのシミュレーションが実現される。
干渉判定は、高さ画像の各1点1点のpixelデータが示す三次元点群と、ハンド部形状入力部35で予め入力されているハンドモデルとが干渉するか否かを判定する。干渉判定の前に、三次元サーチで検出された一のワークモデルに対して、このワークモデルの位置と、登録してあるワークモデルの把持姿勢とに基づいて、エンドエフェクタEETを配置すべき位置と姿勢を計算する。ピッキング動作シミュレーション中の画像を図33に示す。計算された位置において、エンドエフェクタが周囲の物体と干渉しないかどうかを、図18のハンドモデル登録手順フローチャートで登録した断面モデルを利用して判定する。この干渉判定では、ハンドモデルの断面モデルを利用して三次元点群が断面モデルと干渉しているか否かを判定する。具体的には、図32Aに示すように、断面モデルから全ての三次元点が離れている場合には、三次元点群、すなわち高さ画像とハンドモデルとが干渉していないと判定し、一方、図32Bに示すように、断面モデルの内側に三次元点が1つでも入っている、または断面モデルの縁部に三次元点が1つでも接している場合には、三次元点群、すなわち高さ画像とハンドモデルとが干渉していると判定する。干渉していない場合は、このワークモデルに対して把持解を算出することができたということであり、ステップSA13においてYESと判定されてステップSA14に進む。一方、三次元点群とハンドモデルとが干渉している場合は、このワークモデルに対して把持解を算出することができないということであり、ステップSA13においてNOと判定されてステップSA11に進み、このフローを終了する。
一方、把持解を算出することができてステップSA14に進むと、ワークモデルの数を1つ減らす。このステップSA14で減らすワークモデルは把持解を算出することができたワークモデルである。ワークモデルを1つ減らした後、ステップSA15に進み、三次元サーチで得られた他のワークモデルがあればステップSA12に進む。他のワークモデルが無ければステップSA15でNOと判定されてステップSA11に進み、このフローを終了する。
このようにして、ワークモデルを把持可能な把持解の有無を検出されたワークモデル毎に判定する。そして、ワークモデルに把持解が得られた場合は、そのワークモデルの把持候補位置をハンド部でもってピックし、収納容器BXの外部へ搬送するシミュレーションを行う。
ピッキング動作シミュレーションの実行結果は、必要に応じて表示部3に表示させることができる。ユーザは表示部3に表示されたピッキング動作シミュレーションの実行結果に基づいて、現在の設定の適否を判断できる。また必要に応じて、各種の設定を変更することができる。例えばロボットRBTの設置位置や収納容器BXを置く位置、センサ部2の姿勢などを調整する。変更した設定を、シミュレーション環境として入力し直して、再度ピッキング動作シミュレーションを実行し、その適否を確認するという作業を繰り返して、ユーザの環境に応じた適切な設定条件を決定できる。
また、物理シミュレーション部22は、物理シミュレーションを繰り返して行うことができるが、毎回、ワークモデルが同じ配置にならないようにランダムにばら積みすることができるように構成されている。従って、物理シミュレーション部22は、以前行った物理シミュレーションで得られたばら積み状態と同じ状態を作ることができない。すなわち、物理シミュレーションの度毎にランダムなばら積みデータが生成されるため、物理シミュレーションの結果に再現性がない。
一方、ユーザがピッキング動作の環境設定の見直しなどを行い、その効果を確認しようとする場合、以前のピッキング動作シミュレーションでうまくいかなかった状態を再現して、このばら積みデータに対して確認するのが最も効率的である。例えば、あるワークモデルに対するエンドエフェクタモデルの把持解が見つからずに全てのワークモデルを取り出せなかった場合に、その対策としてユーザが把持候補位置や把持姿勢を増やした場合を考える。この場合、ユーザが変更した設定が、前回発生した問題に対して有効な解決策であったか否かを判断するためには、前回うまく行かなかった状態、又はこれと近い状態を再現して確認することが最も有効である。
加えて、問題が発生した状態だけでなく、その問題が発生するに至った途中の状態からピッキング動作シミュレーションを開始できるようにしてもよい。例えば問題が発生したばら積みデータを、ワークモデルを順次追加して構成している場合は、問題が発生した段階の数回前の、ワークモデルの数が数回分少ない状態で、対応できるかどうかを確認することが考えられる。
これらを実現するために、本実施形態においては、ばら積みデータの初期状態や終了状態、あるいは中間状態等、ユーザが再利用したいと考える状態のばら積みデータを保存しておき、環境設定をし直した後に、このような保存済みのばら積みデータを呼び出して、検証することを可能としている。ばら積みデータは、記憶部42に保存しておくことができ、ユーザの指定によって呼び出すことができる。
以上の手順では、いずれかのワークモデルで把持解が得られると、その時点で把持候補位置を検討する処理を終了して、得られた把持解に該当する把持候補位置でワークモデルを把持するように処理している。ただ、この方法に限らず、例えば把持可能なすべての把持候補位置を1つのワークモデルについて求めた上で、いずれの把持候補位置を選択するかをユーザが決定するように構成してもよい。また、ワークモデルの置かれた高さ情報に注目し、ワークモデルが置かれた高さが高いもの、いいかえると、ばら積みされたワークモデル群の内で、より上方に位置するものを把持候補位置として選択することもできる。
以上のようにしてピッキング動作シミュレーションを行うことができ、このピッキング動作シミュレーションは複数回行うのが好ましい。つまり、サーチ処理部24によりサーチに成功したワークモデルに対応付けられた把持候補位置のそれぞれについて、ロボットRBTによる把持が可能か否かを判定し、把持が可能と判定された把持候補位置をロボットRBTにより把持するピッキング動作シミュレーションを繰り返し実行するように、ピッキング動作シミュレーション部25が構成されている。このピッキング動作シミュレーションを複数回行うことに対応するように、物理シミュレーション部22は、データ容量が圧縮された複数のワークモデルを用いて複数回シミュレーションを実行可能に構成されており、ピッキング動作シミュレーションが終了すると、物理シミュレーション部22は自動的に新たな物理シミュレーションを実行し、この新たな物理シミュレーション結果を利用してピッキング動作シミュレーションが行われる。
また、ピッキング動作シミュレーション部22は、サーチ処理部24によりサーチに成功したワークモデルをハンド部形状入力部35で入力されたハンド部により把持するピッキング動作シミュレーションを、各ハンド部を用いて繰り返し実行するように構成されている。図18のハンドモデル登録手順フローチャートに従ってハンド部の形状を複数入力した場合には、それらのうち、一のハンド部のハンドモデルを用いてピッキング動作シミュレーションを行った後、他のハンド部のハンドモデルを用いてピッキング動作シミュレーションを行う。全てのハンド部についてピッキング動作シミュレーションが終了した後、再び全てのハンド部のハンドモデルを用いてピッキング動作シミュレーションを行う。これを繰り返して行うことができる。また、一のハンド部のハンドモデルを用いてピッキング動作シミュレーションを複数回行った後、他のハンド部のハンドモデルを用いてピッキング動作シミュレーションを複数回行うこともできる。ピッキング動作シミュレーションは、ハンド部毎に数百回〜1000回程度行うことができる。
図34にフローチャートで示すように、ピッキング動作シミュレーションを複数回行ってその結果を蓄積することができる。図34のフローチャートの開始後のステップSG1では、統計対象となる設定群を取得する。これは、ハンド部形状入力部35で入力された複数のハンド部のハンドモデルや、サーチモデルに設定されている複数の把持候補位置、複数のサーチモデル等である。
統計対象となる設定群を取得した後、ステップSG2に進み、統計蓄積を開始する。これはユーザによる指示によって開始することができる。統計蓄積を開始すると、ステップSG3に進み、ステップSG1で取得した設定群の中から一の設定の組(一のハンド部、一の把持候補位置、一のサーチモデル)を取得して上述したピッキング動作シミュレーションを開始する。ピッキング動作シミュレーション部22は、各ハンド部による把持が行えなくなるまでピッキング動作シミュレーションを継続する。
このステップSG3のピッキング動作シミュレーションは複数回実行する。すなわち、物理シミュレーション部22で複数のワークモデルを積み上げたばら積み状態を生成し、これに基づいて高さ画像を得て、三次元サーチを行った後、ピッキング動作シミュレーションを実行し、その後、物理シミュレーション部22で新たにばら積み状態を生成し、これに基づいて高さ画像を得て、三次元サーチを行った後、ピッキング動作シミュレーションを実行する。つまり、ピッキング動作シミュレーション部25によるピッキング動作シミュレーションが終了する都度、物理シミュレーションを新たに実行してデータを更新するようにしている。これを繰り返し行い、ステップSG4において各高さ画像に対するピッキング動作シミュレーションの結果を蓄積する。
予め設定されている回数だけピッキング動作シミュレーションが行われれば、ステップSG5においてYESと判定されてステップSG6に進む一方、予め設定されている回数に未達であれば、ステップSG5でNOと判定されてステップSG3に進み、別の高さ画像についてピッキング動作シミュレーションを実行する。
その後、ステップSG6では、各ピッキング動作シミュレーションに対する実行結果を蓄積する。ステップSG7では、ステップSG1で取得した設定群の中でピッキング動作シミュレーションを実行していない設定が存在すれば、NOと判定されて、未だピッキング動作シミュレーションを実行していない設定についてピッキング動作シミュレーションを繰り返し実行する。ステップSG1で取得した設定群の全てについてピッキング動作シミュレーションを実行したら、ステップSG7でYESと判定されて終了する。
図35は、ピッキング動作シミュレーションの結果を把持登録番号順にリスト表示した表である。この表の左欄にはサーチモデルが記載されており、この例ではサーチモデルとしてA〜Cの3つがある。表の左右方向中央の欄には把持候補位置を登録番号順に並べて記載しており、サーチモデルAに把持候補位置として3つが登録されており、サーチモデルBに把持候補位置として5つが登録されており、サーチモデルCに把持候補位置としての4つが登録されていた場合を示している。表の右欄の回数とは、ピッキング動作シミュレーションで把持に成功した回数であり、ピッキング動作シミュレーションで把持に成功したときに使用された頻度(使用頻度)を示す情報である。
図35に示す表は、表示制御部26が表示部3に表示させるために生成する表であり、ピッキング動作シミュレーションで把持に成功したときの各サーチモデルA〜C及び各把持候補位置(A−001〜C−005)の使用頻度を示す情報を比較可能に表示している。また、各サーチモデルA〜Cと、各把持候補位置(A−001〜C−005)の両方を表示することなく、サーチモデルA〜Cのみ、または各把持候補位置(A−001〜C−005)のみ表示可能にしてもよい。この表では、把持に使用されなかった各サーチモデル及び各把持候補位置も表示されているが、把持に使用されなかった各サーチモデルのみ、または把持に使用されなかった把持候補位置のみ表示可能にしてもよい。把持に使用されなかった把持候補位置は、回数が0となっている把持候補位置である。
図36は、図35に示す結果を回数降順にリスト表示した場合を示しており、この表も表示制御部26が表示部3に表示させるために生成する表である。回数昇順にリスト表示することももちろん可能である。把持登録位置A−002、把持登録位置B−002、把持登録位置B−003は、ピッキング動作シミュレーション時に把持候補位置として採用されていないため、データから削除しても実際のばら積みピッキング作業には問題ないといえる。また、サーチモデルA及びサーチモデルCに比べて把持回数が大幅に少ないサーチモデルBをデータから削除しても、実際のばら積みピッキング作業には殆ど問題ないといえる。また、ロボット制御プログラム側からも、これらの設定を使用した結果データを考慮する必要が無くなるため、セットアップの工数を減らすことが可能になる。
図37は、ピッキング動作シミュレーションの結果をハンド部の形状別にリスト表示した表であり、この表も表示制御部26が表示部3に表示させるために生成する表である。ハンド部の形状が「ハンド形状1」〜「ハンド形状7」まで7種類ある場合を示しており、ワーク残数(平均)とは、1回のピッキング動作シミュレーションで把持できなかったワーク(収納容器BXに残ったワーク)の数をピッキング動作シミュレーションの回数で乗じて得た総回数を、ピッキング動作シミュレーションの回数で除した値である。ワーク残数(最大)とは、全ピッキング動作シミュレーションの中で残ったワークが最も多かった回の当該ワークの個数である。ワーク残数(最小)とは、全ピッキング動作シミュレーションの中で残ったワークが最も少なかった回の当該ワークの個数である。
つまり、表示制御部26は、ピッキング動作シミュレーション部25によるピッキング動作シミュレーション終了時に残っているワークモデルの数をハンド部毎に表示可能に構成されているので、ハンド部の形状毎にワークの残数を比較することができる。ワークの残数は、ハンド部によるワークモデルの把持の成功度が高ければ少なくなり、反対にハンド部によるワークモデルの把持の成功度が低ければ多くなるので、ハンド部によるワークモデルの把持の成功度合いを示す情報である。従って、この実施形態では、ピッキング動作シミュレーションで得られた各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示することができる。ワークモデルの把持の成功度合いは、例えば把持に成功したワークの全ワークに対する割合等で表示することもできる。図35〜図37に示す各表を表示部3に表示させるステップが表示ステップである。
(露光時間の設定)
形状測定装置400は、図3に示すように、カメラCME1、CME2、CME3、CME4の露光時間(シャッタースピード)を段階的に変化させるための露光制御部40を備えている。露光制御部40は、露光時間を等比で増加させるように構成されているが、これに限られるものではない。この実施形態では、露光時間を1.5倍ずつ伸ばすように構成されているが、この倍率は任意に設定することができる。
形状測定装置400は高さ画像データ生成部33を備えている。高さ画像データ生成部33は、露光制御部40が段階的に変化させた各露光時間においてカメラCME1、CME2、CME3、CME4から出力された受光量を得て、得られた受光量に基づいて、各画素値が測定対象物表面(ワークWKの表面)の各部位の高さを示す高さ画像データを生成するように構成されている。これは例えば位相シフト法等の手法によって生成することができる。
(画素判定部の構成)
形状測定装置400は画素判定部34を備えている。画素判定部34は、露光制御部40が段階的に変化させた各露光時間において受光部が受光した受光量を得て、得られた受光量に基づいて、高さ画像データ生成部33により生成される各高さ画像の各画素が有効か無効かを判定するように構成されている。プロジェクタPRJが周期的な照度分布を有するパターン光を照射するように構成されている場合、画素判定部34は、カメラCME1、CME2、CME3、CME4の撮像によって得られた各画素の光量のコントラストが閾値以上の画素を有効と判定するように構成されている。また、三次元形状を取得する方法として、光切断法を用いる場合には、各画素の光量が小さすぎるか、飽和している場合には、当該画素が無効であると判定し、その他の画素を有効と判定する。つまり、高さ画像を生成した際に高さを表示することができない画素(画面上で黒く潰れたようになってしまう画素や白く飛んでしまう画素)が無効であると判定し、一方、高さを表示することができる画素を有効と判定する。
画素判定部34は、カメラCME1、CME2、CME3、CME4による撮像範囲内に設定される注目領域内の各画素が有効か無効かを判定するように構成することができる。図39は、注目領域をユーザに設定させるための注目領域設定画面62を示している。注目領域設定画面62は、いわゆるユーザーインターフェースであり、表示制御部26で生成され、表示部3で表示される。図39の注目領域設定画面62内で表示されている画像60は、カメラCME1、CME2、CME3、CME4で撮像された範囲の高さ画像であり、この撮像範囲内には、収納容器BXとワークWKとが含まれている。収納容器BXはピッキング対象ではないので、その収納容器BXを構成している画素が有効か無効かを判定しても意味がない。図39では、注目領域設定画面62の高さ画像60の中に、注目領域設定用の枠線61を表示しており、この枠線61で囲まれた領域を注目領域としてユーザが設定することができる。枠線61は、操作部41の操作によって拡大、縮小、変形させることが可能であり、ユーザが任意の領域を注目領域として指定することが可能になっている。注目領域が設定されると、その領域内の各画素について有効か無効かを判定するので、不要な領域の画素が後述する露光時間の設定に用いられることが無くなり、露光時間を適切な時間に設定することが可能になる。
図42、図43及び図44は注目領域設定画面の一形態を示しており、各図においても注目領域設定用の枠線61を白色で示している。枠線61の表示形態は各図に示す形態に限定されるものではない。また、注目領域外と注目領域内とで背景色を変える等の手法で注目領域を区別可能にすることもできる。
(露光時間設定部の構成)
形状測定装置400は露光時間設定部41を備えている。露光時間設定部41は、画素判定部34により有効と判定された画素の数が所定条件を満たしている高さ画像に対応する露光時間を設定値として設定する。設定値とは、ロボットシステム1000の実運用を行う際に用いる露光時間のことである。露光時間は手動操作によって調整することもできるが、手動操作の場合、ユーザは自分で設定した露光時間で得られた高さ画像を見ながら、最適な露光時間の範囲を探索していくプロセスが必要になる。また、最適な露光時間を絞り込むための探索を手作業で行う場合、属人性があるとともに再現性が悪く、様々なケースで適切な露光時間を得ることは難しい。さらに、高さ画像を構成する画素の場合は、見た目で有効画素であるか否かを判定するのは難しく、特に手作業で決定した露光時間が妥当な時間であるか否かを短時間で検証して判断することは困難である。よって、この実施形態では、適切な露光時間を自動で設定することができるようになっている。
図40は、露光時間と有効画素数との関係を示すグラフを示しており、横軸が対数目盛で露光時間(ms)であり、縦軸が有効画素数(pixel)である。このグラフは、ある固定されたワークを、カメラCME1、CME2、CME3、CME4の露光時間を段階的に変えながら撮像して高さ画像を得て、その高さ画像に含まれる有効画素数を露光時間毎にプロットしたものである。有効画素数と露光時間との関係は、概ねこのグラフに示されるように、ある露光時間の範囲内では、露光時間が変化しても有効画素数は殆ど変化せず、その範囲外では、有効画素数が急激に少なくなる。このグラフの例では、露光時間が0.1ms〜6msの範囲内であれば有効画素数が多い高さ画像を得ることができるが、露光時間が0.1ms未満及び6msを超えると、有効画素数が極端に少ない高さ画像になってしまう。有効画素数が極端に少なくなると、図39の高さ画像において黒い部分が増えてしまうので三次元サーチの精度が低下してしまう。
この実施形態では、図41に詳しく示すように、有効画素が最大値の95%となる露光時間を設定値として設定する。つまり、露光時間設定部41は、画素判定部34により有効と判定された画素の数が最も多くなる露光時間以下の所定時間を設定値として設定するように構成されている。その理由は、有効画素の数が最大値をとる露光時間は、図41に示すグラフの平坦に近い部分に存在することが多く、設定値として選択される露光時間が時間軸方向にぶれやすく、不安定になりやすいので、有効画素の数が最大値をとる露光時間ではなく、有効画素の数が最大値よりも若干少なくなる露光時間を設定値として設定する。この実施形態では、有効画素が最大値の95%となる露光時間を設定値として設定しているが、これに限られるものではなく、有効画素が最大値の90%以上99%以下の範囲となる露光時間を設定値することができる。
この実施形態では、露光時間設定部41で自動的に設定された露光時間をユーザが調整可能に構成されている。図42は、露光時間設定用画面65であり、露光時間が推奨値にある場合を示している。露光時間設定用画面65には、高さ画像生成部33で生成された高さ画像表示領域65aと、露光時間と有効画素数との関係を示すグラフを表示するグラフ表示領域65bと、ユーザによる設定が可能な設定領域65cとが設けられている。
高さ画像生成部33での高さ画像の生成方法の一例について説明する。高さ画像とは、画像を構成する各画素値に、高さの値が格納されている画像である。典型的には、高さを輝度値で表現した画像である。高さ画像の生成方法については、Zバッファ法が好適に利用できる。
すなわち、ワークのCADデータであるワークモデルで構成された三次元のバラ積みデータに基づいて、陰影を消去するレンダリングによって二次元の高さ画像を描画する。レンダリング方法には、Zバッファ法、Zソート法、スキャンライン法、レイトレーシング法等が利用できる。ここではZバッファ法を用いて、複数のワークモデルを高さ画像に描画していく。Zバッファ法では、Zバッファ=高さ画像として実現される。また、Zバッファの初期化を、無限遠で行うのではなく、床面や箱の情報で最小に初期化する形を取る。Zバッファ法の過程で、画素毎にワークモデルの面の法線情報を保持した、法線画像も同時に作成する。ここではZバッファを上書きした画素について、法線データも更新する。なお、本明細書中では、高さ画像への変換方法としてZバッファ法を例示するが、本発明はZバッファ法に限定するものでなく、上述の通り、他の方法も適宜利用できる。このようにして三次元のばら積みデータから高さ画像に描画し直す。
グラフ表示領域65bに表示されるグラフは、表示制御部26で生成することができ、図40や図41に示すグラフと同じものである。このグラフの横軸、即ち露光時間軸は対数(等比)表示されているが、この表示形態に限られるものはなく、任意の表示にすることができる。
設定領域65cには、調整しきい値(%)を設定するしきい値設定部65dと、露光時間の調整範囲を設定する範囲設定部65e、比率設定部65fと、露光時間の設定値(推奨値)を表示する露光時間表示領域65gとが設けられている。
しきい値設定部65dは、有効画素が最大値の何%の画素数となる露光時間を設定値とするか、その値を百分率で設定するための部分である。1%刻みで設定することができる。範囲設定部65eは、露光時間の調整範囲の最大値(最大露光時間)と最小値(最小露光時間)とを別々に設定することができるようになっている。比率設定部65fは、露光時間を等比増加させる際の比率を設定する部分である。
露光時間の設定値は、グラフ表示領域65bに表示されるグラフにおいて白い縦線65hで表示することができる。また、しきい値設定部65dで設定された値を有効画素の最大値に乗じた値は、グラフ表示領域65bに表示されるグラフにおいて白い横線65iで表示することができる。
露光時間表示領域65gに表示されている露光時間をユーザが操作部4の操作によって入力することで露光時間を調整することができる。図43では露光時間が推奨値よりも短い場合を示しており、また、図44では露光時間が推奨値よりも長い場合を示している。図43及び図44に示すように、ユーザが露光時間を設定値から外れた時間に変更した場合には、変更後の露光時間で撮像した高さ画像を高さ画像表示領域65aに表示することができる。図43及び図43に示す高さ画像は、図42に示す露光時間が推奨値にある場合の高さ画像に比べて黒く潰れた部分が広くなっており、露光時間が不適であることが分かる。
また、図42に示す露光時間で撮像した高さ画像と、図43や図44に示す露光時間で撮像した高さ画像とを同時に表示部3に表示させるようにしてもよい。すなわち、第1の露光時間に対応する高さ画像と、第1の露光時間とは異なる第2の露光時間に対応する高さ画像とを同時に表示可能にするように表示制御部26を構成することができる。
露光時間の設定は実運用を開始する前に行うのが望ましいが、実運用の開始後に露光時間を調整する目的で行うこともできる。
(三次元計測部)
三次元計測部30は、画像処理装置300に設けることができる。三次元計測部30は、実運用時に複数のワークが積み上げられた作業空間を三次元計測し、その計測データを出力するように構成されている。センサ部2は三次元計測部30の一構成要素とすることができる。計測手法は上述したとおりであり、特に限定されるものではない。三次元計測部30をセンサ部2に設けて一体化することもできる。
(サーチ処理部)
サーチ処理部24は、上述したピッキング動作シミュレーションで使用されているが、実運用時でも使用することができる。サーチ処理部24をピッキング動作シミュレーションで使用したものとは別に構成することもできる。
すなわち、サーチ処理部24は、サーチモデル登録部27に登録された複数のサーチモデルを用いて、三次元計測部30から出力された計測データの中に含まれる複数のワークの位置及び姿勢を検出するサーチ処理を行う。サーチ処理を行う際には、三次元計測部30から出力された計測データに基づいて高さ画像生成部33によって高さ画像を生成し、この高さ画像中にサーチモデル登録部27で登録されたサーチモデルが存在するか否かをサーチする。この手法はピッキング動作シミュレーションで行った手法と同じにすることができる。
また、サーチ処理部24は、サーチモデルの形状を表す複数の特徴点を用いて、三次元計測部30から出力された計測データの中に含まれる複数のワークの位置及び姿勢を検出することができる。すなわち、三次元計測部30から出力された計測データに基づいて高さ画像を生成し、この高さ画像の中で、サーチモデルの形状を表す複数の特徴点と一致する形状をサーチする。
また、サーチ処理部24は、サーチモデル登録部27に登録されている関連付けられた高さ画像データを用いて、三次元計測部30から出力された計測データの中に含まれる複数のワークの位置及び姿勢を検出するように構成することができる。
(干渉判定部)
干渉判定部31は、画像処理装置300に設けることができる。干渉判定部31は、サーチ処理部24でサーチ処理に成功したサーチモデルに対応付けられたワーク表面に設定された把持候補位置をロボットRBTが周囲の物体と干渉することなく把持が可能か判定する。この干渉判定部31による判定手法は、ピッキング動作シミュレーションで行った手法と同じにすることができる。
干渉判定部31は、三次元計測部30で計測できていないワーク表面を、既にサーチに成功しているサーチモデルに基づいて推定するように構成されている。図45Aは、三次元計測部30で得られた計測データに基づいて生成した高さ画像を、やや斜め方向から三次元表示した点群と、サーチ結果の位置にサーチモデルの特徴点を重畳表示した図であり、鉛直に近い面等は計測データから欠損していて、奥の底面が抜けて見えたり、黒く潰れた部分が多くなっている。高さ画像の中の黒く潰れた部分は、カメラCMEの死角やプロジェクタPRJの投光から死角となる箇所であったり、光沢の強い金属製ワーク等であったり、周囲の物体との多重反射によりデータが不正となった部分である。このように高さ画像の中の黒く潰れた部分が多くなると、三次元サーチが十分に行えなくなったり、実際には干渉するのに干渉していないと誤って判断されてしまうという問題がある。
一方、図45Bは、図45Aに加え、三次元計測部30で計測できていないワーク表面を他の面との関連性を利用して推定し、推定した別の面のサーチモデルの特徴点も含めて重畳表示した図を示している。すなわち、サーチモデル登録部27では、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録し、それらの関係性情報を持った状態で各高さ画像を保存しているので、例えば実運用の際にワークを上から見たサーチモデルのサーチに成功すれば、左から見たサーチモデルを、上から見たサーチモデルのどこにどのように配置すればワークの形状になるかが分かっており、これを利用して計測データの欠損した部分を補っていくことができる。従って、図45Bでは図45Aに比べて鉛直に近い面等、三次元計測できてない部分を、サーチモデルの特徴点で補完した状態になっている。物理シミュレーションにおける干渉判定の説明の中で記載した、三次元点群に対する干渉判定に加えて、サーチ結果に基づいて推定した、他の面も含めたサーチモデルの特徴点に対する干渉判定も合わせて行うことで、三次元計測できてない部分も考慮した干渉判定を実現できる。
(把持位置決定部)
把持位置決定部32は、画像処理装置300に設けることができる。把持位置決定部32は、干渉判定部31により周囲の物体と干渉することなく把持が可能と判定された把持候補位置を実際の把持位置として決定するように構成されている。
(実運用時の手順)
次に、実運用時の手順について図38に示すフローチャートに基づいて説明する。開始後のステップSH1では、図1に示すようにセンサ部2を用いて収納容器BXにばら積みされているワークWKを三次元計測する。このステップSH1では、三次元計測部30から出力された計測データに基づいて高さ画像生成部33で高さ画像を生成しておく。
その後、ステップSH2ではステップSH1で生成した高さ画像に対して上述した三次元サーチを実施し、ワークの位置及び姿勢を検出する。続くステップSH3では、ワークモデルの位置と、登録してあるワークモデルの把持姿勢とに基づいて、ハンド部を配置すべき位置と姿勢を計算する。
ステップSH4では、計算された位置において、ハンド部が周囲の物体と干渉しないかどうかを、図18のハンドモデル登録手順フローチャートで登録した断面モデルを利用して判定する。具体的には、高さ画像の各1点1点のpixelデータが示す三次元点群と、ハンド部形状入力部35で予め入力されているハンドモデルとが干渉するか否かを、ハンドの断面モデルを用いて判定する。ステップSH5でNOと判定されてハンド部が周囲の物体と干渉していない場合には、把持解有りとして終了する。この把持解がロボットコントローラ6に送信され、ロボットコントローラ6がアーム部ARM及びハンド部を制御してワークWKをピックして搬送する。
ステップSH5でYESと判定されてハンド部が周囲の物体と干渉している場合には、ステップSH6に進み、登録されている別の把持候補位置があるか否かを判定する。ステップSH6でYESと判定されて別の把持候補位置がある場合には、ステップSH3に戻る。ステップSH6でNOと判定されて別の把持候補位置がない場合には、ステップSH7に進む。ステップSH7では、ステップSH2で検出したワークが他にもあるか否かを判定する。ステップSH7でYESと判定されて別のワークがある場合には、ステップSH3に戻る。ステップSH7でNOと判定されて別のワークがない場合には把持解無しとして終了する。このように三次元サーチで複数のワークが検出された場合、検出されたワークを1つずつ把持可能か否かを判定していく。
図46に示すフローチャートは、運用時の別の手順1を示しており、図46に示すフローチャートのステップSI1〜SI5までは図38に示すフローチャートのステップSH1〜SH5と同じである。図46に示すフローチャートのステップSI6では、ステップSI3で計算した結果と同じ位置及び姿勢でハンド部が他の検出されたワークと干渉しないかどうか判定する。具体的には、各サーチ結果の位置姿勢から定まるサーチモデルの特徴点群と、ハンド部形状入力部35で予め入力されているハンドモデルとが干渉するか否かを、ハンドの断面モデルを用いて判定する。さらに、面の関係性を用いて、各サーチ結果から推定される別の面のサーチモデルの特徴点群に対しても、同様に干渉するか否かを判定する。
ステップSI7でNOと判定されれば、把持解有りとして終了する。一方、ステップSI7でYESと判定されれば、ステップSI8に進む。ステップSI8及びステップSI9は、それぞれ、図38に示すフローチャートのステップSH6及びステップSH7と同じである。
図47Aは、面の関連性を利用せずに、実際に三次元計測を行って得られた、三次元点群に対してのみ干渉判定を行った場合であり、把持対象のワークWKAの右に近接しているワークWKBの側面の形状が計測データで欠損していることが分かる。一方、図47Bは、面の関連性を利用して、他のワークのサーチ結果の特徴点や、推定される別の面のサーチモデルにおける特徴点に対しても干渉判定させた場合であり、ワークWKBが上から見たサーチモデルのサーチに成功していて、その上から見たサーチモデルとの関連性を用いてワークWKBの側面の形状を推定しているので、ワークWKBの側面にも特徴点が表示されている。このように面の関連性を利用することで、計測データで欠損している部分を推定して補うことができる。
図47Aの場合、ワークWKBの側面の形状が欠損しているので、把持対象のワークWKAをハンド部で把持しようとした際に、実際にはワークWKBの側面にハンド部の先端が干渉してしまうのに、干渉しないと誤判定してしまう。これに対し、図47Bの場合、高さ画像の各1点1点のpixelデータが示す三次元点群に対する干渉判定以外に、ワークWKBの側面の形状を面の関係性情報に基づいて推定し、推定したサーチモデルの特徴点も含めて干渉判定をしているので、把持対象のワークWKAをハンド部で把持しようとした際にワークWKBの側面にハンド部の先端が干渉すると判定され、正しい判定結果を得ることができる。
また、図48に示すように、ワークとハンド部との干渉については把持候補位置毎に判定することができる。干渉の原因については、図48に示す画面上に、例えば特徴点とハンド部が干渉する場合には「点群干渉」と表示され、ハンド部の傾斜角度が規定範囲外になってしまう場合には「傾斜角度」と表示される。
また、図49に示すように、立方体形状のワークがばら積みされている場合には、ワークの六面全ての形状が同じであるので、一面のみサーチモデルとして登録し、その一面を真上から把持する把持姿勢を1つだけ登録する。これにより、六面全ての面に対するサーチならびに把持が可能になる。
(実施形態の作用効果)
この実施形態によれば、物理シミュレーション時にはデータ容量が圧縮された複数のワークモデルを用い、ピッキング動作シミュレーション時には、物理シミュレーションにより生成されたばら積み状態のデータの中の各ワークモデルの位置及び姿勢にしたがって、データ容量の大きなワークモデルを配置したサーチ処理用データを使用するようにしたので、物理シミュレーションに要する時間を短縮しながら、再現性の高いばら積みピッキングシミュレーションを実行することができる。
また、複数のサーチモデルを登録するとともに、各サーチモデルについて複数の把持候補位置を当該サーチモデルに対応付けて設定することが可能になる。登録されたサーチモデルを用いて、ワークモデルの位置及び姿勢を検出するサーチ処理を実行し、サーチに成功したワークモデルに対応付けられた複数の把持候補位置のそれぞれについて、ロボットによる把持が可能である場合には、その把持候補位置をロボットにより把持するピッキング動作をシミュレーションする。このシミュレーションを繰り返して把持に成功したときの各サーチモデル及び/または各把持候補位置の使用頻度を示す情報を比較可能に表示することができる。よって、ワークの取り出し成功率向上への寄与率が低い把持位置を他の把持位置と容易に比較でき、客観的なデータに基づいて把持位置を取捨選択することができる。
また、ロボットRBTのハンド部の形状をハンド部形状入力部35によって複数入力し、入力された各ハンド部を用いてピッキング動作シミュレーションを実行し、各ハンド部によるワークモデルの把持の成功度合いを示す情報を比較可能に表示することができるので、ワークの取り出し成功率向上への寄与率が低いハンド部の形状を他のハンド部の形状と容易に比較でき、客観的なデータに基づいてハンド部を取捨選択することができる。
また、三次元計測部30で計測できていないワーク表面を、既にサーチに成功しているサーチモデルに基づいて推定し、推定されたワーク表面も含めてロボットRBTが周囲の物体と干渉することなく把持が可能か判定する。これにより、高さデータが欠損している部分のワークの形状を、高さデータが存在している部分を利用して推定することができるので、高さデータの一部に欠損があっても周囲の物体とロボットRBTとの干渉の有無を精度良く判定できる。
また、露光時間を設定する場合に、露光制御部40が段階的に変化させた各露光時間において受光量を得ることができる。各露光時間の受光量に基づいて、高さ画像データを生成する各画素が有効か無効か判定される。有効と判定された画素の数が所定条件を満たす高さ画像に対応する露光時間を自動的に設定値するので、露光時間を手動操作によって調整することなく、有効画素数の多い高さ画像データを得ることができる。これにより、属人性が無くなって再現性が高くなり、しかも、様々なケースで適切な露光時間を得ることができる。
上述の実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内のものである。