以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものではない。
図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で、各種設定や、ロボットRBTの動作状態の確認、ロボット設定装置100の動作状態の確認、物理シミュレーションの確認、ピッキング動作シミュレーションの確認等を行う。さらに、ロボット設定装置100の内部に設けられているロボットピッキングシミュレーション装置200や画像処理装置300が各種シミュレーション、三次元サーチ、干渉判定、把持解の算出等を行う。
一方、ロボットコントローラ6はロボット設定装置100から出力される信号に従い、ロボットRBTの制御を行うように構成された周知の部材である。またロボット操作具7は、ロボットRBTの動作設定を行う。なお、図2の例では操作部4とロボット操作具7を別個の部材としているが、これらを共通の部材としてもよい。
センサ部2は、ロボットビジョンなどと呼ばれる、作業空間やワークWKを撮像する部材であり、この実施形態では、ワークWKが少なくとも撮像対象物となり、撮像対象物には容器BXが含まれていてもよい。センサ部2で撮像された画像から、ばら積みされたワークWKの三次元形状を示す三次元形状データを取得することが可能になる。容器BXの三次元形状を示す三次元形状データも、センサ部2で撮像された画像から取得することができる。
尚、ワークWKや容器BXの三次元形状を取得する方法は、例えば、パターン投影法、ステレオ法、レンズ焦点法、光切断法、光レーダ法、干渉法(白色干渉法)、TOF方式などがあり、これらの方法のうち、どの方法を用いてもよい。各方法は、従来から周知であるため、詳細な説明は省略する。本実施形態においては、パターン投影法のうち、周期的な照度分布を有するパターン光を撮像対象物に照射し、撮像対象物の表面で反射した光を受光する位相シフト法を用いている。
センサ部2は、測定対象物であるワークWKの形状を測定する形状測定装置400の一構成要素でもある。形状測定装置400によって容器BXの形状を測定することもできる。形状測定装置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をアーム部ARMに設けてもよい。
表示部3は、ロボット設定装置100で取得されたワークWKの三次元形状を表示させたり、各種シミュレーション画像を表示させたり、各種設定や動作状態の確認を行うための部材であり、例えば、液晶モニタや有機ELディスプレイ、CRT等を利用できる。操作部4は、各種シミュレーションや画像処理等の各種設定を行うための部材であり、キーボードやマウス等の入力デバイスが利用できる。また表示部3をタッチパネルとすることで、操作部4と表示部3を一体化することもできる。
例えばロボット設定装置100を、画像処理プログラムをインストールしたコンピュータで構成した場合、表示部3上には画像処理プログラムのグラフィカルユーザインターフェース(GUI)画面が表示される。表示部3上に表示されたGUI上から各種の設定を行うことができ、またシミュレーション結果等の処理結果を表示させることができる。この場合、表示部3を各種の設定を行うための設定部としても利用でき、設定部には操作部4が含まれていてもよい。
ロボットコントローラ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は、例えばコンベアベルト上やパレット等を挙げることができる。また、把持動作のことをピッキングということもでき、把持位置はピッキング位置ということもできる。また、載置動作のことをプレースということもでき、載置位置はプレース位置ということもできる。
ここで本明細書において、ばら積みピッキングとは、容器BXに入れられて無作為に積み上げられたワークWKを、ロボットRBTで把持して、所定の位置に載置する他、容器を用いずに所定の領域に積み上げられたワークWKに対して把持、載置を行う例、あるいは所定の姿勢で並べられて積み上げられたワーク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の制御に用いられる装置である。ロボット設定装置100は、作業空間に積み上げられた複数のワーク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に示す構成における複数の要素の機能を備えるものは、本発明に含まれる。また、1つの部分は複数の装置で共有されていてもよい。
例えば、露光制御部40及び露光時間設定部41は、センサ部2に設けることができる。また、表示制御部26は表示部3に設けることができる。また、ロボット設定装置100には、例えば各種情報等を記憶するための記憶部42も設けられている。記憶部42は、半導体メモリやハードディスク等で構成することができる。また、記憶部42には、CD-ROMやDVD-ROM等の各種記憶媒体に記憶されている情報を読み取り可能な読み取り装置を設けることもできる。
ロボットシステム1000の運用前、即ち、実際の作業現場でワークWKの把持及び載置作業を行う前に、ロボットピッキングシミュレーション装置200によってロボットRBTの把持動作や載置動作のシミュレーションを三次元的に行うことができるように構成されている。また、ロボットRBTやワークWKを用意しなくても、ロボットRBTによりワークWKのピッキング動作を確認することができるように構成されている。
ロボットピッキングシミュレーションでは、複数のワークモデルWKM(図16等にその一例を示す)を無作為に積み上げたばら積み状態を生成する物理シミュレーションと、物理シミュレーションで生成されたばら積み状態のデータを利用してワークモデルWKMの位置及び姿勢を検出し、ロボットRBTによるピッキング動作のシミュレーションを実行するピッキング動作シミュレーションとが行われる。
以下、ロボット設定装置100の構成及びロボット設定装置100によって実現されるロボット設定方法について図6に示すロボットシミュレーションフローチャートに基づいて具体的に説明する。
ロボットの設定を開始する際には、図6に示すロボットシミュレーションフローチャートの各ステップを実行することになる。この実施形態では、ロボットの設定ステップの一部に、物理シミュレーションやロボットピッキングシミュレーション等が含まれており、物理シミュレーション及びロボットピッキングシミュレーションを合わせてロボットシミュレーションと呼ぶこともできる。また、物理シミュレーション部22及びピッキング動作シミュレーション部25を合わせてシミュレーション部と呼ぶこともできる。
図6に示すロボットシミュレーションフローチャートの開始後、ステップSA1においてシミュレーションを実行する環境(シミュレーション環境)を設定する。シミュレーション環境の設定項目としては、ロボットモデルRBTM、ばら積みをさせるワークモデルWKM、ワークモデルWKMの数、容器モデルBXMの情報、載置位置、経由点、床の情報、センサ部2を構成するカメラCMEやプロジェクタPRJの設計情報等が挙げられる。また、ピッキング動作シミュレーション時には、容器BXに対して、実運用上発生し得る、ランダムな位置ずれを発生させることもでき、この際の位置ずれの範囲等をシミュレーション環境の設定に含めることもできる。また、ワークの質量、反発係数、摩擦係数、容器BXの底面や側壁の反発係数、摩擦係数等もシミュレーション環境に含めることができる。
シミュレーション環境の主要な設定手順は、図7に示すサーチモデル及び容器モデルの設定の手順を示すフローチャートと、図8に示すロボットモデル、ハンドモデル及び把持位置の設定の手順を示すフローチャートの通りである。サーチモデル及び容器モデルの設定と、ロボットモデル、ハンドモデル及び把持位置の設定とは、どちらを先に行ってもよい。サーチモデル及び容器モデルの設定と、ロボットモデル、ハンドモデル及び把持位置の設定とは、図3に示す設定部20で行うことができる。
図7に示すサーチモデル及び容器モデルの設定の手順を示すフローチャートの開始後のステップSB1では、ワークWKのサーチモデルを登録する。ワークWKのサーチモデルとは、後述するサーチ処理を実行する際に使用されるワークWKの形状を表したモデルである。ステップSB1でワークWKのサーチモデルを登録する際には、ワークWKの三次元CADデータ(CADモデル)を読み込んで、ロボットピッキングシミュレーション装置200が有する記憶部42に一旦記憶させておく。CADデータは、ワークモデルのデータであり、従来から一般的に用いられているフォーマットのデータを使用することができる。
この実施形態では、CADデータのフォーマットとして最もシンプルなSTL形式を用いている。STL形式は、三角形のポリゴン情報(3点の座標とその面の法線ベクトル)の羅列のみで構成されるデータである。あるいはワークモデルとして、三次元情報を有する点群データで構成してもよい。あるいはまた、ワークモデルを、高さ情報を有する画像データ、例えば高さ画像や距離画像で構成してもよい。
ステップSB1は、ワークの三次元形状をモデル化したワークモデルを設定するワークモデル設定ステップでもあり、図3に示すロボット設定装置100が有する設定部20で行われる。このステップSB1で読み込んだCADデータのポリゴン数は、数千個から数万個ある場合がある。
ステップSB1でサーチモデルのCADデータを読み込んだ後、ステップSB2に進み、サーチモデルの確認及び登録を行う。例えば、読み込んだサーチモデルのCADデータを表示部3に表示させることにより、ロボットピッキングシミュレーション装置200の使用者が、所望のサーチモデルであるか否かを確認することができる。その結果、所望のサーチモデルである場合には、そのサーチモデルをロボットピッキングシミュレーション装置200に登録する。確認の結果、所望のサーチモデルでない場合には、別のCADデータを読み込み、再び確認する。
ステップSB2では、サーチモデルの登録の際、CADモデルの外接直方体を規定し、この外接直方体の中心をCADの原点に補正する原点補正処理を行う。ワークモデルの原点は、三次元CADデータが有する座標情報から、ロボット設定装置100が自動的に決定する。例えばワークモデルの三次元CADデータに対して、ワークモデルに外接する仮想直方体を規定し、この仮想直方体の重心をワークモデルの原点として設定することができる。
また、ステップSB1で読み込んだCADモデルの六面、即ち、CADモデルを「上」、「下」、「左」、「右」、「前」、「後」の各方向から見た高さ画像データをステップSB2で生成する。まず、CADモデルの平面図、底面図、左側面図、右側面図、正面図、背面図となるように、6つの高さ画像データを生成する。この高さ画像データから高さ画像が得られる。「上」はZ軸の正方向(プラス側)から見た高さ画像、「下」はZ軸の負方向(マイナス側)から見た高さ画像、「左」はX軸の負方向から見た高さ画像、「右」はX軸の正方向から見た高さ画像、「前」はY軸の負方向から見た高さ画像、「後」はY軸の正方向から見た高さ画像に対応する。ただ、これらは一例であって、異なる座標系を用いてもよいし、X-Y平面におけるX=Yの直線を軸として、この軸と互いに直交する座標系に基づいて、各軸の正負方向から見た高さ画像を用いてもよい。また、三次元CADデータから、高さ画像を生成する際、必ずしもCADデータの軸に直交した方向(「上」、「下」、「左」、「右」、「前」、「後」)から見た高さ画像である必要はなく、例えばワークモデルの姿勢(視点)を任意に変えて、変えた状態の視点から高さ画像を生成するようにしてもよい。
また、CADモデルが三次元CADデータからなるものであるので、三次元CADデータをCADモデルのX、Y、Z座標のそれぞれについてプラス方向及びマイナス方向の各方向から見たときの高さ画像に変換することで、CADモデルの六面について高さ画像を得ることができる。
上述のようにして生成した6つの高さ画像の中で同じ見え方になる高さ画像を削除することもできる。見え方の一致/不一致は、ワークの上下(Z軸の正負方向)、前後(Y軸の正負方向)、左右(X軸の正負方向)から見た、計六面の高さ画像を高さ画像データに基づいて生成し、高さ画像が一致しているか否かを確認する。ここでは90°の刻み角度で回転させて一致しているか否かを確認し、他の面と一致する見え方となる面は、サーチモデルの登録対象から除外する。このような除外は、ロボットピッキングシミュレーション装置200の使用者が手動で行うこともできるし、ロボットピッキングシミュレーション装置200または画像処理装置300側で自動で行わせてもよいし、あるいはこれらを組み合わせて行うようにしてもよい。
具体例について説明すると、例えば、ワークWKが直方体であった場合には、CADモデルを上から見た高さ画像と下から見た高さ画像とが同じになり、この場合には、いずれか一方を削除する。CADモデルを左から見た高さ画像と右から見た高さ画像も同じになるので一方を削除する。また、CADモデルを前から見た高さ画像と後から見た高さ画像も同じになるので一方を削除する。これにより、サーチモデルの数を減らすことができるので、後述する各処理の速度を向上させることができる。ワークWKが複雑な形状であっても、一方向から見た高さ画像と他方向から見た高さ画像が同じになることがあり、この場合も一方の高さ画像を削除することができる。ワークWKが立方体の場合は6面のうち、5面を削除することができる。
同じになる画像の一方を削除した結果、残った高さ画像データを保存する。保存する高さ画像データがCADモデルの上下左右前後のいずれの方向から見た画像であるかを示す情報、即ち方向に関する情報を当該高さ画像データに付与し、この方向に関する情報と高さ画像データとを関連付けてロボットピッキングシミュレーション装置200の記憶部42に保存しておく。これにより、上下左右前後の各面の関係性情報を持った状態で各高さ画像データを保存しておくことができるので、1つのワークモデルを異なる方向から見た複数の高さ画像データを相互に関連付けてロボットピッキングシミュレーション装置200または画像処理装置300に登録しておくことが可能になる。
したがって、高さ画像データを記憶部42から読み出したときに、例えば、CADモデルの6方向から見た高さ画像を関連付けて得ることができる。以上のように、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録することが可能になる。サーチモデルは、作業空間に積み上げられたワークWKの位置及び姿勢を検出するサーチ処理に用いられるモデルであり、複数種登録しておくこともできる。尚、面の関係性情報を保存することなく、高さ画像データのみ保存するようにしてもよい。
以上の方法は、ワークWKのCADデータが存在している場合の方法であるが、仮にワークWKのCADデータが無い場合には、ワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録するようにしてもよい。すなわち、登録したい面を上向きにしたワークWKを平面上に置き、三次元計測を行う。この三次元計測は、ロボットシステム1000のセンサ部2及び三次元計測部30を利用して行うことができる。三次元計測により得られた計測データは三次元計測部30から出力され、計測データに基づいて、ワークWKの登録したい面の高さ画像データを得ることができる。
このようにして得られた高さ画像データに基づいて高さ画像を得た後、その高さ画像をサーチモデルとして登録する。登録後、サーチに必要な分、登録し終えたか否かを判定する。この判定は使用者が行うことができるが、ロボットピッキングシミュレーション装置200または画像処理装置300に行わせるようにしてもよい。すなわち、ワークWKを上下左右前後の各方向から見た形状が全て異なれば、六面の全てについて高さ画像を取得するのが好ましいが、上述した長方形の場合のように、同じ形状の面がある場合には六面の全てについて行わなくてもよい。サーチに必要な分、登録し終えたら、終了する。
以上のようにしてワークモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録するサーチモデル登録ステップを行うことができる。サーチモデル登録ステップは、図3に示すロボット設定装置100が有するサーチモデル登録部27で行われる。
その後のステップSB3では、容器モデルを指定する。常に固定されている箱が容器である場合には、容器モデルを固定箱とする。ステップSB3に続くステップSB4では、容器モデルのサイズ、位置、姿勢を指定する。このステップSB4では、図9に示すようなユーザーインターフェース画面50を設定部20が生成し、表示部3に表示させる。ユーザーインターフェース画面50には、ばら積み状態のワークモデルの高さ画像や、ピッキング動作のシミュレーション画像を表示する画像表示領域50aが設けられている。容器モデルのサイズ、位置、姿勢を指定する際には、容器モデル設定用ウインドウ60が、ユーザーインターフェース画面50に重畳表示される。容器モデル設定用ウインドウ60には、容器モデルのサイズとして、横寸法、縦寸法、深さ寸法をそれぞれ入力可能な寸法入力領域60aが設けられている。操作部4を操作して寸法入力領域60aに各寸法を入力することができる。容器モデル設定用ウインドウ60には、容器モデルの位置を入力可能な位置入力領域60bが設けられている。位置入力領域60bには、システム上の原点に対する容器モデルの相対的な位置として、原点からのX方向の距離、Y方向の距離、Z方向の距離をそれぞれ入力することができる。X方向は横方向とし、Y方向は縦方向とし、Z方向は高さ方向とすることができる。容器モデル設定用ウインドウ60には、容器モデルの姿勢を入力可能な姿勢入力領域60cが設けられている。姿勢入力領域60cには、X軸周りの角度Rx、Y軸周りの角度Ry、Z軸周りの角度Rzをそれぞれ入力することができる。容器モデル設定用ウインドウ60に設けられているOKボタン60dを押せば、入力された値が確定されて反映される。一方、容器モデル設定用ウインドウ60に設けられているキャンセルボタン60eを押せば、入力した内容が反映されないようにキャンセルされる。
容器モデルのサイズ、位置を使用者が入力する以外にも、例えば、容器BXをセンサ部2で撮像し、取得された容器BXの画像に基づいて容器モデルのサイズ、位置を指定することもできる。例えば、平面視で四角形の容器BXの場合、容器BXの画像上で、内側の4つの角部を操作部4によって指定すると、その指定された位置の座標に基づいて容器BXの4辺の長さを設定部20で演算することができる。これにより、容器モデルのサイズ、位置を自動で入力することができる。また、通い箱など、ワークWKを収容する容器BXをモデル化した容器モデルを設定できるようにしてもよい。
図7に示すフローチャートのステップSB4に続くステップSB5では、サーチ条件を設定する。サーチ条件には、例えば、サーチ時に検出可能なワークの数、サーチモデルとワークとの相関値の下限、特徴抽出条件(エッジ抽出の閾値等)等が含まれている。サーチ条件は使用者が設定することで、設定部20により受け付けられる。
次に、図8に示すハンドモデル及び把持位置の設定の手順を示すフローチャートについて説明する。開始後のステップSC1では、図10に一例を示すようなロボットモデルRBTMを登録する。ロボットモデルRBTMは、現場で使用されるロボットRBTに関する各種情報を規定するものである。ロボットRBTに関する各種情報には、例えばアームARMの長さ、アームARMの可動域、ロボットRBTの位置、アームARMの可動部の揺動速度や回転速度等が含まれる。ロボットRBTに関する各種情報には、ロボットRBTの形状を表したモデルを含むことができ、この場合、ロボットRBTのポリゴンデータ(CADデータ)を読み込む。このステップがロボットモデルRBTMの登録ステップである。
ステップSC1でロボットモデルRBTMを登録した後、ステップSC2に進み、ロボットRBTのハンドモデルを登録する。ロボットRBTのハンドモデルとは、ハンド部(エンドエフェクタEET)の形状を表したモデルである。ロボットRBTのハンドモデルを登録する際には、ハンド部のポリゴンデータ(CADデータ)を読み込む。このステップSC2では、ハンド部のポリゴンデータを読み込むことから、ハンド部の形状を入力することができるステップであり、このハンド部形状入力ステップは、図3に示すロボット設定装置100が有するハンド部形状入力部35で行われる。また、ハンドモデルを登録する際、CADデータ以外にも、直方体や円柱などのパーツを組み合わせてハンドモデルを作成し、この作成したハンドモデルを登録するようにしてもよい。また、CADデータには無いケーブルなどを作成することもできる。
その後、ステップSC3に進み、ステップSC2で登録したハンドモデルと、そのハンドモデルが装着されるロボットモデルRBTM(ステップSC1で登録済み)のフランジ面との相対的な位置及び姿勢を定義する。具体的には、ハンドモデルにおける取付面と、ロボットモデルRBTMのフランジ面とが一致するように、両者の位置関係を定義しておく。
ステップSC3に続くステップSC4では、ロボットモデルRBTMのフランジ面に装着された状態にあるハンドモデルの先端座標を指定する。この先端座標は、ロボットコントローラ6から取得することも可能であるが、使用者が設定することも可能である。その後、ステップSC5では、ハンドモデルの登録完了確認を行う。
以上のようにしてロボットモデルRBTMのハンドモデルを登録した後、ステップSC6に進む。ステップSC6では、ロボットモデルRBTMのハンドモデルで把持するワークモデルの面を選択する。ワークモデルの面は、図7に示すフローチャートで登録した高さ画像で表すことができ、登録されている複数の高さ画像の中から、ロボットモデルRBTMのハンド部で把持することが可能な面に対応した高さ画像をユーザが選択する。高さ画像の選択にあたっては、高さ画像を表示部3に表示させておき、これら高さ画像の中から使用者が操作部4の操作によって選択することができる。
ステップSC6で高さ画像を選択した後、ステップSC7に進み、ステップSC6で選択した面を把持する時のハンド部の位置及び姿勢を登録する。例えば、X軸座標、Y軸座標、Z軸座標、X軸周りの回転角度、Y軸周りの回転角度、Z軸周りの回転角度を個別に入力し、入力された値に対応するように、ハンドモデルを移動させ、高さ画像中の所望位置に配置することができる。これにより、ハンドモデルの位置を調整しながら、ハンドモデルでサーチモデルのどの部位をどのような姿勢で把持するか、即ち把持位置及び姿勢を設定することが可能になる。把持位置及び姿勢の設定は、数値を入力する以外にも、例えばハンドモデルを操作部4のマウスで直接的に操作することによっても可能である。
ここで設定する把持位置は、ロボットモデルRBTMにより把持される把持候補位置である。ロボットモデルRBTMにより把持される把持候補位置は、サーチモデル登録部27で登録されている各サーチモデルに対応付けて複数設定することができる。例えば、あるサーチモデルには、2つの把持候補位置を対応付けて設定し、別のサーチモデルには、4つの把持候補位置を対応付けて設定することができる。設定された把持候補位置は、サーチモデルと対応付けられた状態でロボット設定装置100が有する把持位置設定部28の記憶部42に登録することができる。
一般に、一のワークに対して把持候補位置を複数登録することが多い。これは、把持候補位置を複数登録しておけば、複数の把持解の中から最適な解を選ぶことができるため、仮に得られた把持解候補が、例えばハンド部の他の物体との干渉によって最終的な解となり得ない場合、他の把持解候補があれば、把持可能と判定される可能性が高まるからである。このような把持候補位置を複数登録する際、その都度登録を一から行うと、同様の把持候補位置を登録する際に手数が多くなり作業が面倒となる。そこで、既に登録済みの把持候補位置情報をコピーして、この把持候補位置で設定された位置パラメータの一部を変更して、新たな把持候補位置として保存可能とすることで、手間を省いて複数の把持候補位置を容易に登録できるようになる。また、同様に既存の把持候補位置を読み出して、位置パラメータを適宜修正して上書き保存することも可能である。
把持候補位置を登録する際、サーチモデルの原点に対して、ワークモデルを把持する際のエンドエフェクタモデルの相対的な位置及び姿勢を登録する。一方、実際のエンドエフェクタ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に示すフローチャートのステップSC8では、必要数の把持候補位置を登録できたか否かを判定する。ハンド部で把持することが可能な部位が多数あれば、登録すべき把持候補位置の数が多くなるが、これは使用者が判断する事項であるため、ステップSC8の判定は使用者が判定することになる。ステップSC8でNOと判定して必要数の把持候補位置を登録できておらず、登録すべき把持候補位置が他にも残っている場合には、ステップSC6を経てステップSC7に進み、他の把持候補位置を設定し、登録する。一方、ステップSC8でYESと判定して必要数の把持候補位置を登録できている場合には、ステップSC9に進む。
ステップSC9では、開始位置と、把持したワークモデルを載置する載置位置とを登録する。開始位置は、ハンド部によってワークモデルの把持を行う位置であり、搬送開始位置に相当する。開始位置は、容器モデルBXM内にばら積みされているワークモデルWKMの把持候補位置とすることができる。図10及び図11は、ハンド部が開始位置にある状態を示しており、ロボットモデルRBTMは、これら図に示すような姿勢になる。開始位置は、ワークモデルWKMが容器モデルBXM内のどこに存在しているかによって異なることになるが、これは三次元サーチによって取得することができる。
一方、載置位置は、ロボットモデルRBTMのハンド部によりワークモデルWKMが載置される位置であり、例えば図1に示すステージSTG上に設定することができる。図12及び図13は、ハンド部が載置位置にある状態を示しており、ロボットモデルRBTMは、これら図に示すような姿勢になる。上記開始位置及び載置位置の設定は、座標等を数値で入力する方法によっても可能であるが、それ以外にも、例えばハンドモデルを操作部4のマウスで直接的に操作することによっても可能である。
ステップSC9が完了すると、ステップSC10に進む。ステップSC10では、把持位置から載置位置へ移動する間に経由する経由点を登録する。経由点は、2以上登録することもできる。経由点は、複数箇所に登録することができ、この場合、経由点1、経由点2、…というように名称を付して記憶させておくことができる。この例では、経由点を使用者が登録する場合について説明するが、これに限らず、後述するように、ロボット設定装置100が経由点を算出して使用者に提示するように構成することもでき、この場合はステップSC10が省略されることになる。
ステップSC10で登録する経由点は、ロボットモデルRBTMのハンド部がワークモデルWKMを把持した後、載置位置に載置するまでの間に当該ハンド部またはワークモデルWKMが経由する点である。経由点の設定は、座標等を数値で入力する方法によっても可能であるが、それ以外にも、例えばハンドモデルやワークモデルWKMを操作部4のマウスで直接的に操作することによっても可能である。経由点が設定された場合、ロボットモデルRBTMのハンド部がワークモデルWKMを把持して開始位置から載置位置へ搬送される途中で、ハンド部の一部またはワークモデルWKMの一部が経由点を通過するように、ロボットモデルRBTMの動作がシミュレーションされる。図14及び図15は、ハンド部の一部またはワークモデルWKMの一部が経由点にある状態を示しており、ロボットモデルRBTMは、経由点の位置によって異なるが、これら図に示すような姿勢になる。図8に示すフローチャートのステップSC10が完了すると、ステップSC11に進む。
ステップSC11では、ワークモデルWKMの搬送時に障害となり得る障害物A(図10~図15に示す)を登録する。障害物Aの登録ステップは、設定部20により行うことができる。障害物Aは、ワークモデルWKMを把持位置から載置位置まで搬送する際に、ハンド部やワークモデルWKMと接触するおそれがある物であり、例えば周辺機器、装置、部材、容器の一部、フェンス等を挙げることができる。障害物Aを登録する際には、障害物Aとなり得る物のCADデータを読み込んで作業空間に配置し、登録すること、作業空間に障害物Aを描画することによって登録すること、座標を指定することによって登録することができる。ステップSC11の後、本フローを終了する。
図6に示すステップSA1のシミュレーション環境設定ステップでは、上述のようにサーチモデルの設定及び登録、ハンドモデルの設定及び登録、容器モデルの設定及び登録、ロボットモデルの設定及び登録、開始位置の設定及び登録、載置位置の設定及び登録、経由点の設定及び登録等を行うことができるが、これら以外にもシミュレーションを行う上で必要な各種情報の入力や設定を行うことが可能である。
また、設定部20では、ロボットモデルのハンド部の待機位置を設定することができるとともに、待機位置にあるロボットモデルのハンド部が容器モデル内のワークモデルを把持するまでの間に当該ハンド部が経由する往き経路上の経由点を設定することも可能である。ハンド部の待機位置及び往き経路上の経由点は、シミュレーション環境に含まれる。ハンド部の待機位置及び往き経路上の経由点の設定は、座標等を数値で入力する方法によっても可能であるが、それ以外にも、例えばハンドモデルやワークモデルWKMを操作部4のマウスで直接的に操作することによっても可能である。
(物理シミュレーション)
以上が図6に示すフローチャートのステップSA1で実行されるステップである。ステップSA1に続くステップSA2は、物理シミュレーションの実行ステップである。物理シミュレーションを実行する前に、図16のフローチャートに示す物理シミュレーションの設定を行う。ステップSD1では、ピッキングシミュレータを起動する。例えば表示部3にピッキングシミュレータの起動用アイコンを表示させておき、この起動用アイコンがクリックされた時にピッキングシミュレータを起動する等の方法によってステップSD1を実現できる。
シミュレータが起動されると、図17に示すピッキングシミュレータの起動後に表示されるピッキングシミュレーション画面50を表示制御部26が表示部3にさせる。ピッキングシミュレーション画面50には、第1画像表示領域50aが設けられている。第1画像表示領域50aには、物理シミュレーションで生成されたばら積み状態のワークモデル及び容器モデルの高さ画像、サーチ結果、ワークモデルをハンドモデルで把持する様子、ハンド部やワークモデルの経路、経路生成時間、ロボット動作時間等が表示される。ピッキングシミュレーション画面50には、シミュレータの設定用ウインドウ52も表示可能になっている。設定用ウインドウ52には、画像生成方法の設定ボタン52a、閉じるボタン52b、画像生成ボタン52c等が設けられている。
また、ピッキングシミュレータの起動後には、物理シミュレーションの様子を表示する物理シミュレーション表示画面51を表示制御部26が表示部3にさせる。物理シミュレーション表示画面51は、ピッキングシミュレーション画面50と同時に表示させることができるが、どちらか一方の画面のみを使用者に選択させて表示するように構成することもできる。
ピッキングシミュレータの起動後、図16に示すステップSD2に進む。ステップSD2では、図18に示すような積み方設定ウインドウ53を表示制御部26が表示部3にさせる。積み方設定ウインドウ53には、ワークの積み方の選択を行うための積み方選択領域53aと、ワークモデルの読み込みを行うファイル選択ボタン53bと、ワークの配置設定を行うワーク配置設定領域53cとが設けられている。積み方選択領域53aでは、ばら積みシミュレーションを行うか、段積みのシミュレーションを行うかの選択が行えるようになっている。ファイル選択ボタン53bは、ワークモデルWKMの読み込みを開始する場合に操作するボタンである。ワークモデルWKMの読み込みは、図7に示すフローチャートのステップSB1と同様に、ワークWKの三次元CADデータ(CADモデル)を読み込んで、ロボットピッキングシミュレーション装置200が有する記憶部42に一旦記憶させておくことで可能になる。これにより、ワークの三次元形状をモデル化したワークモデルの形状を設定することができる。この設定は、シミュレーション環境の一つであり、設定部20で行われる。この設定を行うステップは設定ステップである。
図18に示す積み方設定ウインドウ53には、読み込んだワークモデルを表示させるワークモデル表示ボタン53eが設けられている。ワークモデル表示ボタン53eが押されると、表示制御部26はワークモデルWKMを表示部3に表示させる。表示部3に表示されたワークモデルWKMを使用者が見て、所望のワークモデルが読み込まれているか否かを確認することができる。
ワークモデルの読み込みが完了すると、図16に示すフローチャートのステップSD3に進む。ステップSD3では、ばら積みシミュレーションで使用するワークモデルの個数Nを設定する。具体的には、図18に示す積み方設定ウインドウ53のワーク配置設定領域53cを使用する。ワーク配置設定領域53cには、ワークモデルの個数入力部53dが設けられている。個数入力部53dには、使用者がマウスやキーボード等を利用して任意の数を入力することができるようになっている。入力された数が、ばら積みシミュレーションで使用するワークモデルの個数Nになる。よって、個数入力部53dに数を入力するステップは、ワークモデルの個数Nを設定する設定ステップであり、設定部20で行われる。また、ワークモデルの個数Nは、シミュレーション環境の一つである。図18に示す積み方設定ウインドウ53のOKボタン53fを押すと、設定が反映されて積み方設定ウインドウ53が閉じる一方、キャンセルボタン53gを押すと、設定が反映されずに積み方設定ウインドウ53が閉じる。
ワークモデルの個数Nの設定が完了すると、図16に示すフローチャートのステップSD4に進み、容器モデルを読み込む。ここでは、図7に示すフローチャートのステップSB3で指定した容器モデルを読み込むことで容器モデルに関するシミュレーション環境の設定が可能になる。また、図7に示すフローチャートのステップSB4で指定された容器モデルのサイズ、位置、姿勢も容器モデルに関するシミュレーション環境であり、図16に示すフローチャートのステップSD4で同様に読み込む。このステップは、容器モデルに関するシミュレーション環境を設定する設定ステップであり、設定部20で行われる。
次いで、使用者が物理シミュレーション開始操作を行う。例えば、図17に示すシミュレータの設定用ウインドウ52に設けられている画像生成ボタン52cを押す操作が物理シミュレーション開始操作の一例である。これにより、上述したように設定されたシミュレーション環境に基づいて物理シミュレーションが開始される。画像生成ボタン52cが押されると、図17に示す物理シミュレーション表示画面51に容器モデルBXMを表示させる。
物理シミュレーション部22は、設定部20により設定された個数NのワークモデルWKMを容器モデルBMX内に落下させることにより、ピッキングシミュレーション用のばら積み状態を生成するように構成されている。
具体的には、まず、容器モデルBXM内に落下させるワークモデルWKMの落下姿勢及び位置をランダムに決める。落下させる前の位置は、容器モデルBXMの底面から上方に離れたところであればよく、平面視における容器モデルBXMの中心であってもよいし、中心から水平方向にオフセットしていてもよい。
決定した落下姿勢及び位置からワークモデルWKMを1つまた複数容器モデルBXM内に落下させる。このときに物理シミュレーション部22が物理シミュレーションを実行する。物理シミュレーションは、従来から周知の物理シミュレーションエンジンを用いて実行することができる。落下後、容器モデルBXM内に落下させたワークモデルWKMが静止するまで待つ。N個のワークモデルWKMが落下して静止すると、物理シミュレーションが完了する。ワークモデルWKMを落下させる際、ワークモデルWKMに対して落下方向に初速を与えるように、物理シミュレーション部22が構成されていてもよい。
物理シミュレーションでは、ワークモデルWKM同士の衝突による作用、容器モデルBXM等の障害物の情報に基づいてワークモデルWKMを仮想的に配置していく。また、物理シミュレーションでは、例えばワークモデルWKM同士が衝突した場合に、予め設定された反発係数や摩擦係数を考慮して、その後、ワークモデルWKMがどのような動きになるかが示される。また、例えば、容器モデルBXMに複数のワークモデルWKMを上方から投下または投入して容器モデルBXMの内部にばら積み状態を生成する場合を挙げることができる。「投入」や「投下」とは、物理的に高所から落下させる動作に限られず、例えば転がりを検証するため、所定の高さから水平方向に押し出しながら落下させたり、放物線状に投げ上げて落下させたり、あるいは容器モデルBXMや床面にワークモデルWKMを載置、あるいは静置する動作も含む意味で使用する。さらに、物理シミュレーションは、ワークモデルWKMを1つずつ作業空間内に順次投入する他、複数のワークモデルWKMを同時に投入、例えば落下させたり静置させる動作をシミュレーションすることもできる。
また、設定部20により設定された個数Nよりも少ない個数のX個のワークモデルWKMを容器モデルBMX内に落下させる第1物理シミュレーションを実行するとともに、当該第1物理シミュレーションにより生成されたばら積み状態となっている複数のワークモデルWKMをコピーして容器モデルBXMの上方から容器モデルBXM内に落下させる第2物理シミュレーションを実行することにより、ピッキングシミュレーション用のばら積み状態を生成するように構成されていてもよい。この場合、X個のワークモデルWKMを容器モデルBXM内に落下させることにより、第1物理シミュレーションが終了する。これにより、X個のワークモデルWKMが容器モデルBXM内で干渉状態になる。第1物理シミュレーション後、容器モデルBXM内のX個のワークモデルWKMをコピーする。コピーしたワークモデル群の位置補正及び姿勢補正を行った後、容器モデルBXM内に落下させる。
いずれの方法であっても、図19に示すように、N個のワークモデルWKMを容器モデルBXMに落下させた場合のばら積みシミュレーション結果が得られ、物理シミュレーション表示画面51に表示される。以上が、ピッキングシミュレーション用のばら積み状態を生成する物理シミュレーション工程である。
物理シミュレーションを行うことで、明らかに不自然な姿勢のワークモデルを除外するなど、使用者の実運用環境に合わせたばら積みデータを生成して後述するピッキング動作シミュレーションを行うことができるため、実物のワークを用意することなく、実運用時に近い形で事前に適切な設定調整や、検証を行うことができるようになる。物理シミュレーション部22は、物理的に発生確率が低いワークモデルを排除したバラ積みデータを生成するよう構成してもよい。
使用者は、物理シミュレーション表示画面51を見て、物理シミュレーションの結果が、後述するピッキング動作シミュレーションに不適な結果であると思われる場合には、その物理シミュレーションの結果を破棄して改めて物理シミュレーションを実行することができる。
以上のようにして、図6に示すフローチャートのステップSA2の物理シミュレーション実行ステップが完了する。物理シミュレーションの実行前、ワークモデルWKMのデータを圧縮するデータ容量圧縮ステップを実行してもよい。データ容量圧縮ステップは、図3に示すデータ容量圧縮部21で行うことができ、例えばCADデータで表されるワークモデルWKMの形状を極力保ちながら、ポリゴン数を削減したワークモデルを作成して、物理シミュレーション部22による物理シミュレーション時の演算負荷の軽減するために行うステップである。CADデータのポリゴン数を削減するということは、ワークモデルのデータ容量が圧縮されて小さくなるということである。また、ワークモデルのデータを間引くことによってデータ容量を圧縮することも可能である。
三次元CADデータは、一般に、三角形の面情報の集合体として表されるポリゴンデータで表され、ワークモデルの形状を極力保ちながらポリゴン数を削減する方法としては、例えば、Hoppeらが提案するプログレッシブメッシュ法や、Garlandらが提唱するQEM(Quadratic Error Metirc)法という手法があり、これら従来から周知の手法のうち、いずれの手法を用いてポリゴン数の削減処理を行ってもよい。
例えば、QEM法では、隣接するポリゴンのエッジを消去し、2つの頂点を結合して新たな頂点を生成し、この操作を繰り返すことで、CADデータ全体を構成するポリゴン数を大幅に削減し、データ容量を圧縮することができる。また、CADデータのデータ容量を圧縮することができればよいので、ポリゴン数を削減する方法以外にも、各種方法によってデータ容量を圧縮するようにしてもよい。
(高さ画像生成)
図6に示すフローチャートのステップSA2の物理シミュレーション実行ステップを経て、ステップSA3に進む。ステップSA3では、物理シミュレーションで得られたばら積み状態のワークモデルWKMの各部の高さを表す高さ画像データを生成する。高さ画像データから得られる高さ画像の一例を図20に示す。高さ画像は、高さ情報を有する画像であって、距離画像、三次元画像等とも呼ばれる。サーチ処理用データにはワークモデルWKMの高さに関する情報が含まれているので、これに基づいて周知の手法によって高さ画像データを得ることができる。高さ画像データに基づいて得ることができる高さ画像は、物理シミュレーションの結果を示す画像と共に表示部3に表示することができる。
図19に示す物理シミュレーション表示画面51に表示する物理シミュレーション結果画像と、図20に示すピッキング動作のシミュレーション画像を表示する画像表示領域50aに表示する高さ画像とは、視点、即ち見る角度を互いに変えた画像にすることができる。図19の物理シミュレーション結果画像と、図20の高さ画像とは、1つの表示画面上の任意の位置にそれぞれ配置することができる。また、物理シミュレーション結果画像は、例えば物理シミュレーションの実行開始から終了までを動画として表示可能にしてもよい。この場合、容器モデルBXMの上方から複数のワークモデルWKMを容器モデルBXMに投下する様子、ワークモデルWKM同士が衝突する様子、ワークモデルWKMが容器モデルBXMの側壁や底面に衝突する様子も見ることができ、最終的にどのようしてばら積み状態が生成されたのかを使用者が把握できる。
物理シミュレーション前にワークモデルWKMのデータ容量を削減している場合、ワークモデルWKMのばら積み状態データを生成した後、ワークモデルWKMのばら積み状態データの中のワークモデルWKMをポリゴン数削減前のCADデータと置換する。すなわち、物理シミュレーション部22で生成されたばら積み状態のデータの中の各ワークモデルWKMの位置及び姿勢にしたがって、物理シミュレーション部22で用いたワークモデルWKMよりもデータ容量が大きくかつ実際のワークの三次元形状に近いワークモデルWKMを配置する。このようにして、各ワークモデルWKMの位置及び姿勢を検出するサーチ処理を実行するためのサーチ処理用データが生成される。物理シミュレーション部22で用いたワークモデルよりもデータ容量が大きくかつワークWKの三次元形状に近いワークモデルというのは、データの圧縮量が低く、物理シミュレーションステップで用いたワークモデルよりも精緻な形状を持ったワークモデルである。このワークモデルに置き換えることで、後述するピッキング動作シミュレーションの結果の再現性を高めることができる。このサーチ処理用データの生成は、図3に示すロボット設定装置100が有するばら積みデータ生成部23で行われる。尚、物理シミュレーション前にワークモデルWKMのデータ容量を削減していない場合には、この処理は不要である。
ばら積みデータ生成部23は、物理シミュレーション部22で生成されたばら積み状態のデータの中の各ワークモデルWKMの位置及び姿勢にしたがって、データ容量圧縮部21による圧縮処理を行う前のワークモデルWKMを配置することによってサーチ処理用データを生成することもできる。こうすれば後述するピッキング動作シミュレーションの結果がより一層再現性の高い結果になる。
(サーチ処理)
図6に示すステップSA3で高さ画像を生成した後、ステップSA4に進み、ばら積みデータ生成部23により生成されたサーチ処理用データに対し、各ワークモデルWKMの位置及び姿勢を検出するサーチ処理を実行する。これはサーチ処理ステップであり、図3に示すロボット設定装置100が有するサーチ処理部24が行う。
サーチ処理は高さ情報を含むサーチ処理用データに対してサーチをかけるので、三次元サーチと呼ぶことができる。具体的には、サーチモデル登録部27で登録されたサーチモデルを用いて、各ワークモデルWKMの姿勢と位置を特定する三次元サーチを行う。まずサーチモデルの各特徴点が、最も一致する状態の位置及び姿勢(X、Y、Z、RX、RY、RZ)を、高さ画像の中から探索する。ここでRX、RY、RZは、それぞれX軸に対する回転角、Y軸に対する回転角、Z軸に対する回転角を表す。このような回転角度の表現方法は種々提案されているところ、ここではZ-Y-X系オイラー角を用いることができる。また一致する位置及び姿勢は、各サーチモデルに対して、1つである必要はなく、一定以上一致する位置及び姿勢を、複数検出してもよい。
たとえば、図21に示すように、高さ画像の中で特徴点の一致に基づいてワークモデルWKMを検出した場合には、その検出位置にサーチモデルの特徴点を、周囲よりも明るい色で重畳表示させることができる。このように三次元サーチに用いるサーチモデルとして、ワークを六面図のように、面ごとに見た画像を用いることで、斜視図などを用いる場合と比べ、三次元サーチの演算処理を簡素化でき、処理を軽負荷、高速化できる利点が得られる。また、サーチモデルの登録作業に際しても表示された状態が見易くなり、使用者にも視覚的に判り易くできる。また、三次元サーチの結果の位置に、サーチモデルの各特徴点を重畳表示させた結果を二次元表示することや、三次元表示することもできる。対応する特徴点が、高さ画像中に対してどの程度存在したか(例えば、高さ画像に対し、一定の距離以下の誤差で対応した特徴点の点数割合など)によって、サーチ結果をスコア付けすることができる。
サーチ処理部24が高さ画像中にサーチモデル登録部27で登録されたサーチモデルが存在するか否かをサーチした結果、高さ画像中に、サーチモデルが存在しない場合、即ちワークモデルを検出できない場合には、図6に示すステップSA5においてNOと判定されて残ったワークモデルWKMの情報を抽出し、このフローを終了する。
(ピッキング動作シミュレーション)
ステップSA4の三次元サーチの結果、高さ画像の中にワークモデルWKMを検出できた場合には、ステップSA5でYESと判定されてステップSA6に進み、干渉判定及び把持解、即ち干渉等しないでワークモデルWKMを把持可能な把持位置を算出する。このステップSA6~SA11は、サーチ処理部24によりサーチに成功したワークモデルWKMに対して、ロボットRBTによりピッキング動作のシミュレーションを実行するピッキング動作シミュレーション部25が行うピッキング動作シミュレーションステップである。三次元サーチの結果、高さ画像の中に複数のワークモデルWKMを検出できる場合もある。尚、ピッキング動作シミュレーション部25に物理シミュレーションの機能や高さ画像生成機能を持たせてもよい。
このように、ピッキング動作シミュレーション部25は、生成されたばら積みデータに対して、仮想作業空間内のワークモデルWKMのばら積みピッキング動作を検証するための部分である。ピッキング動作シミュレーションを行うことにより、実際のワークの三次元位置及び姿勢の検出可否など、手間のかかる確認作業や設定調整を、ワークを用意することなく、実運用に近い形で事前に行うことができる。
特に物理シミュレーション部22は、ピッキング動作シミュレーション部25による一のワークモデルWKMをハンドモデルで把持し少なくとも取り出し動作を開始した後、このワークモデルWKMが取り出された後の状態のばら積みデータに対して物理シミュレーションを再度実行するように構成することができる。物理シミュレーションを再度実行するタイミングは、ワークモデルWKMをハンドモデルで把持し、載置位置にプレースされた後とする他、ワークモデルWKMの取り出し作業の途中であってもよい。すなわち、ハンドモデルでワークモデルWKMを把持して、このワークモデルWKMが持ち上げられた状態では、一のワークモデルWKMが除去されたことで、このワークモデルWKMの周辺にあった他のワークモデルWKMが移動可能となるため、把持されたワークモデルWKMが載置されるまで待つ必要はない。よって、物理シミュレーションの再実行のタイミングは、一のワークモデルWKMがハンドモデルで把持されて持ち上げられたタイミング、あるいはその後、他のワークモデルWKMの状態が重力の作用で移動して安定するまで待った後のタイミングとすることができる。例えば、ワークモデルWKMが把持されて持ち上げられた時点から所定の時間の経過後(例えば10秒後)としてもよい。物理シミュレーションを再度実行した後、ばら積みデータを更新する。
したがって、ピッキング動作シミュレーション中にばら積みデータからワークモデルWKMが一つ取り出されると、これに応じてバラ積みされたワークモデル群が崩れるといった動作も物理シミュレーション部22により演算され、この演算後のばら積みデータを利用してピッキング動作シミュレーション部25がその後のピッキング動作シミュレーションを実行するので、より正確なばら積みピッキングのシミュレーションが実現される。
図6に示すフローチャートのステップSA6では、高さ画像の各1点1点のpixelデータが示す三次元点群と、ハンド部形状入力部35で予め入力されているハンドモデルとが干渉するか否かを判定する。干渉判定の前に、三次元サーチで検出された一のワークモデルWKMに対して、このワークモデルWKMの位置と、登録してあるワークモデルWKMの把持姿勢とに基づいて、エンドエフェクタEETを配置すべき位置と姿勢を計算する。計算された位置において、エンドエフェクタEETが周囲の物体と干渉しないかどうかを、ハンドモデルを利用して判定する。この干渉判定では、ハンドモデルの断面モデルを利用して三次元点群が断面モデルと干渉しているか否かを判定することができる。例えば、断面モデルから全ての三次元点が離れている場合には、三次元点群、すなわち高さ画像とハンドモデルとが干渉していないと判定し、一方、断面モデルの内側に三次元点が1つでも入っている、または断面モデルの縁部に三次元点が1つでも接している場合には、三次元点群、すなわち高さ画像とハンドモデルとが干渉していると判定する。干渉していない場合は、このワークモデルWKMに対して把持解を算出することができた、即ち把持位置を算出できたということであり、ステップSA7においてYESと判定されてステップSA8に進む。一方、三次元点群とハンドモデルとが干渉している場合は、このワークモデルWKMに対して把持解を算出することができないということであり、ステップSA7においてNOと判定されて残ったワークモデルWKMの情報を抽出し、このフローを終了する。
一方、把持解を算出することができてステップSA8に進むと、ロボットモデルRBTMのハンド部の現在位置からステップSA6で算出した把持位置までのハンド部の経路を生成する。その後、ステップSA9に進む。ステップSA9では、図8に示すフローチャートのステップSC9で登録した開始位置(把持位置)から載置位置までのハンド部の経路を生成する。このステップSA9で生成する経路は、図8のステップSC10で登録した経由点を経由する経路である。また、ステップSA9で生成する経路には、経由点を経由しない経路を含むことができる。
経由点が登録されている場合、把持位置から載置位置までの経路は、把持位置から経由点までの第1経路と、載置位置から経由点までの第2経路とに分割して生成し、その後、第1経路と第2経路とを繋ぐことで、把持位置から載置位置までの連続した経路を得ることができる。経由点が1つだけ設定されている場合には、把持位置から載置位置までの経路が2つに分割されることになる。経由点の登録数は複数あってもよいので、例えば経由点が2つ設定されている場合には、把持位置から載置位置までの経路が3つに分割されることになる。尚、経由点を経由しない場合の経路は、把持位置から載置位置まで1つの経路として生成すればよい。
また、経由点が複数通り登録されている場合には、経由点ごとに把持位置から載置位置までの経路を生成する。すなわち、経由点1と経由点2とが登録されている場合には、把持位置から経由点1までの第1経路と、載置位置から経由点1までの第2経路とに分割して生成し、その後、第1経路と第2経路とを繋ぐことで、把持位置から載置位置までの一の経路を得ることができ、また、把持位置から経由点2までの第1経路と、載置位置から経由点2までの第2経路とに分割して生成し、その後、第1経路と第2経路とを繋ぐことで、把持位置から載置位置までの他の経路を得ることができる。同様に、経由点3が設定されている場合の経路、経由点4が設定されている場合の経路、…を得ることができる。
このように、把持位置から載置位置までの経路を複数に分割することで、図10~図15に示すように、把持位置と載置位置との間に障害物Aが存在する場合のように、ロボットの自由度が多く想定される場合に、経路生成の問題が複数に分割されることにより解の安定性が高まるとともに、経路生成時間が短くなる。
本例において使用されるロボットの経路生成のアルゴリズムは特に限定されるものではないが、その一例として、RRT(Rapidly-Exploring Random Trees)アルゴリズムを挙げることができる。RRTアルゴリズムは、高次元の空間でも高速にパスプランニングできる点で有利である。RRTアルゴリズムでは、把持位置と載置位置とのそれぞれから探索木を成長させていき、両探索木のつながったところで経路成立となる。
具体的には、図22Aに示すように、空間上に始点PSと終点PGとがある場合、まず、ランダムな点PRを置く。始点PSから成長させた探索木の末端の点P1、P2、P3の中から、点PRに最も近い点を見つける。図22Bでは、点PRに最も近い点を点P2としている。
点PRに最も近い点を決定した後、図22Cに示すように、点PRに最も近い点を点P2から点PRに向かって一定距離D1だけ移動した点を、点PRに最も近い新たな点P4とする。このとき、もし、点P2から点P4のパスで干渉が発生する場合は、点P4を削除して図22Aに戻る。点P4と終点PGとの距離が一定以内になれば、それが経路となるが、超えていれば上記手順を繰り返す。
図6に示すフローチャートのステップSA9で把持位置から載置位置までの経路を生成した後、その経路生成に要した時間を記憶部42に記憶させておく。また、経路生成後はステップSA10に進み、ロボット動作時間を算出する。ロボット動作時間は、図8に示すフローチャートのステップSC1で登録されたロボットに関する各種情報と、図6に示すフローチャートのステップSA9で生成された経路とに基づいて算出することができる。ロボットに関する各種情報には、アームARMの可動部の揺動速度や回転速度等が含まれているので、これら速度と経路とが分かれば、ハンド部またはワークモデルWKMが把持位置から載置位置まで移動するのに要する時間が得られ、この時間がロボット動作時間となる。
ステップSA11では、図23に示すようにハンド部(エンドエフェクタEET)で把持されたワークモデルWKMを容器モデルBXM内から除去する。つまり、容器モデルBXM内のワークモデルWKMの数を1つ減らす。このステップSA11で減らすワークモデルWKMは把持解を算出することができたワークモデルWKMである。ワークモデルWKMを1つ減らした後、ステップSA12に進み、ワークモデルWKMの除去をN回行ったか否かを判定する。ステップSA12でNOと判定された場合には、ステップSA2に進み、ワークモデルWKMが1つ除去されたときの物理シミュレーションを実行し、ステップSA3に進む。一方、ステップSA12でYESと判定された場合には、ステップSA13に進む。また、三次元サーチで得られた他のワークモデルWKMがあればステップSA2に進み、他のワークモデルWKMが無ければステップSA13に進むようにしてもよい。
このようにして、ピッキング動作シミュレーションが実行されるとともに、その実行時に把持可能であると判定されたワークモデルWKM毎に経路(経由点を経由する経路と経由しない経路)及びロボット動作時間を算出して記憶部42に記憶させておくことができる。ロボット動作時間は、経由点を経由する経路の動作時間と、経由点を経由しない経路の動作時間とがある。
ステップSA13では、経路生成時間、ロボット動作時間のそれぞれについて平均値と、ばらつき(分散)を計算する。経由点が複数通り設定されている場合には、経由点1を経由した場合の経路生成時間、ロボット動作時間の平均値とばらつきを計算し、経由点2を経由した場合の経路生成時間、ロボット動作時間の平均値とばらつきを計算する。経由点3、4、…についても同様である。
次に、ステップSA14に進み、ステップSA13で計算した結果を表示部3に表示する。このとき、図24に示すような表示画面70を表示制御部26が生成し、これを表示部3に表示させるように構成することができる。表示画面70には、経由点を経由しない場合を表示する第1表示領域71と、経由点1を経由する場合を表示する第2表示領域72と、経由点2を経由する場合を表示する第3表示領域73とが設けられている。第1~第3表示領域71~73には、経由点情報表示部71a、72a、73aがそれぞれ設けられている。第1表示領域71の経由点情報表示部71aには、「経由点なし」と表示される。また、第2表示領域72の経由点情報表示部72aには、「経由点1」が表示されるとともに、ハンド部またはワークモデルWKMが通過した複数の経路がロボットモデルRBTM及び屈曲点1と共に重畳表示される。また、第3表示領域73の経由点情報表示部73aには、「経由点2」及びハンド部またはワークモデルWKMが通過した複数の経路がロボットモデルRBTM及び屈曲点2と共に重畳表示される。
第1~第3表示領域71~73には、時間情報表示部71b、72b、73bがそれぞれ設けられている。第1表示領域71の時間情報表示部71bには、経由点がない経路を生成するのに要する時間の平均値と分散とが表示されるとともに、経由点がない経路で動作するロボット動作時間の平均値と分散とが表示される。また、第2表示領域72の時間情報表示部72bには、経由点1を経由する経路を生成するのに要する時間の平均値と分散とが表示されるとともに、経由点1を経由する経路で動作するロボット動作時間の平均値と分散とが表示される。また、第3表示領域73の時間情報表示部73bには、経由点2を経由する経路を生成するのに要する時間の平均値と分散とが表示されるとともに、経由点2を経由する経路で動作するロボット動作時間の平均値と分散とが表示される。
経路を生成するのに要する時間の最大値や最小値、中央値を表示させたり、ロボット動作時間の最大値や最小値、中央値を表示させることもできる。また、経路を生成するのに要する時間とロボット動作時間との一方のみを表示させてもよい。平均値、分散、最大値、最小値及び中央値のいずれか1つのみ、または任意の複数を表示させてもよい。また、「経由点なし」、「経由点1」及び「経由点2」のそれぞれについて、N個のワークモデルWKMのピッキングを開始してから終了するまでに要するトータルの時間を表示画面70に表示させるようにしてもよい。さらに、時間に関する情報を表示することなく、経路及び経由点を表示させるようにしてもよい。
図6のフローチャートにおけるステップSA15は、図24に示すように複数の経路を重畳表示させるステップである。このステップSA15はステップSA14の前に行ってもよいし、ステップSA14と同時に行ってもよい。表示する経路は、ハンド部の特定の部位の軌跡であってもよいし、ワークモデルWKMの特定の部位の軌跡であってもよい。複数の経路は、記憶部42から読み込んで互いに区別可能な表示形態で表示部3に重畳表示させることができる。区別可能な表示形態とは、例えば、経路毎に表示色を変えた形態を挙げることができる。また、経路を図形の集合で示している場合には、図形の色を変えること、図形の形状を変えることによっても、複数の経路を区別することができる。また、経路を線で示している場合には、線の色を変えること、線種を変えることによっても、複数の経路を区別することができる。以上のステップが表示ステップである。
図24に示す表示画面70に第1表示領域71と第2表示領域72と第3表示領域73とを設けているので、「経由点なし」と「経由点1」と「経由点2」を比較可能な表示形態で表示部3に表示させることができる。これにより、使用者は、経由点を設定するかしないかを判定することができるとともに、経由点を設定する場合にはどこに設定するのが効率良く作業できるかを判定することができる。
ピッキング動作シミュレーションの実行結果を表示部3に表示させることで、使用者は表示部3に表示されたピッキング動作シミュレーションの実行結果に基づいて、現在の設定の適否を判断できる。また必要に応じて、各種の設定を変更することができる。例えばロボットRBTの設置位置や容器BXを置く位置、センサ部2の姿勢などを調整する。変更した設定を、シミュレーション環境として入力し直して、再度ピッキング動作シミュレーションを実行し、その適否を確認するという作業を繰り返して、使用者の環境に応じた適切な設定条件を決定できる。
また、物理シミュレーション部22は、物理シミュレーションを繰り返して行うことができるが、毎回、ワークモデルWKMが同じ配置にならないようにランダムにばら積みすることができるように構成されている。従って、物理シミュレーション部22は、以前行った物理シミュレーションで得られたばら積み状態と同じ状態を作ることができない。すなわち、物理シミュレーションの度毎にランダムなばら積みデータが生成されるため、物理シミュレーションの結果に再現性がない。
一方、使用者がピッキング動作の環境設定の見直しなどを行い、その効果を確認しようとする場合、以前のピッキング動作シミュレーションでうまくいかなかった状態を再現して、このばら積みデータに対して確認するのが最も効率的である。例えば、あるワークモデルWKMに対するエンドエフェクタEETのモデルの把持解が見つからずに全てのワークモデルWKMを取り出せなかった場合に、その対策として使用者が把持候補位置や把持姿勢を増やした場合を考える。この場合、使用者が変更した設定が、前回発生した問題に対して有効な解決策であったか否かを判断するためには、前回うまく行かなかった状態、又はこれと近い状態を再現して確認することが最も有効である。
加えて、問題が発生した状態だけでなく、その問題が発生するに至った途中の状態からピッキング動作シミュレーションを開始できるようにしてもよい。例えば問題が発生したばら積みデータを、ワークモデルWKMを順次追加して構成している場合は、問題が発生した段階の数回前の、ワークモデルWKMの数が数回分少ない状態で、対応できるかどうかを確認することが考えられる。
これらを実現するために、本実施形態においては、ばら積みデータの初期状態や終了状態、あるいは中間状態等、使用者が再利用したいと考える状態のばら積みデータを保存しておき、環境設定をし直した後に、このような保存済みのばら積みデータを呼び出して、検証することを可能としている。ばら積みデータは、記憶部42に保存しておくことができ、使用者の指定によって呼び出すことができる。
以上の手順では、いずれかのワークモデルWKMで把持解が得られると、その時点で把持候補位置を検討する処理を終了して、得られた把持解に該当する把持候補位置でワークモデルWKMを把持するように処理している。ただ、この方法に限らず、例えば把持可能なすべての把持候補位置を1つのワークモデルWKMについて求めた上で、いずれの把持候補位置を選択するかを使用者が決定するように構成してもよい。また、ワークモデルWKMの置かれた高さ情報に注目し、ワークモデルWKMが置かれた高さが高いもの、いいかえると、ばら積みされたワークモデルWKM群の内で、より上方に位置するものを把持候補位置として選択することもできる。
以上のようにしてピッキング動作シミュレーションを行うことができ、このピッキング動作シミュレーションは複数回行うのが好ましい。つまり、サーチ処理部24によりサーチに成功したワークモデルWKMに対応付けられた把持候補位置のそれぞれについて、ロボットRBTによる把持が可能か否かを判定し、把持が可能と判定された把持候補位置をロボットRBTにより把持するピッキング動作シミュレーションを繰り返し実行するように、ピッキング動作シミュレーション部25が構成されている。ピッキング動作シミュレーションが終了すると、物理シミュレーション部22は自動的に新たな物理シミュレーションを実行し、この新たな物理シミュレーション結果を利用してピッキング動作シミュレーションが行われる。
また、ピッキング動作シミュレーション部22は、サーチ処理部24によりサーチに成功したワークモデルWKMをハンド部形状入力部35で入力されたハンド部により把持するピッキング動作シミュレーションを、各ハンド部を用いて繰り返し実行するように構成されている。ハンド部の形状を複数入力した場合には、それらのうち、一のハンド部のハンドモデルを用いてピッキング動作シミュレーションを行った後、他のハンド部のハンドモデルを用いてピッキング動作シミュレーションを行う。全てのハンド部についてピッキング動作シミュレーションが終了した後、再び全てのハンド部のハンドモデルを用いてピッキング動作シミュレーションを行う。これを繰り返して行うことができる。また、一のハンド部のハンドモデルを用いてピッキング動作シミュレーションを複数回行った後、他のハンド部のハンドモデルを用いてピッキング動作シミュレーションを複数回行うこともできる。ピッキング動作シミュレーションは、ハンド部毎に数百回~1000回程度行うことができる。ピッキング動作シミュレーションを複数回行ってその結果を蓄積することができる。
また、ピッキング動作シミュレーション部25は、ロボットモデルのハンド部が待機位置から往き経路上の経由点を経由し、容器モデル内のワークモデルを把持するシミュレーションを繰り返し実行可能に構成されている。このシミュレーションは、上述した経由点を経由するシミュレーションを実行する場合と同様に行うことができる。また、このシミュレーションの結果、経路生成時間、ロボット動作時間を表示部3に表示することができる。
また、往き経路上の経由点が設定されていない場合、ピッキング動作シミュレーション部25は、待機位置にあるロボットモデルのハンド部が容器モデル内のワークモデルを把持するシミュレーションを繰り返し実行可能に構成することができる。この場合、経由点算出部25aは、ピッキング動作シミュレーション部25によるシミュレーションの結果を解析し、待機位置にあるロボットモデルのハンド部が容器モデル内のワークモデルを把持するまでの間にハンド部が経由する往き経路上の経由点を自動的に算出するように構成することができる。往き経路上の経由点の算出手順は、上述した経由点の算出手順と同様にすることができる。
(露光時間の設定)
形状測定装置400は、図3に示すように、カメラCME1、CME2、CME3、CME4の露光時間(シャッタースピード)を段階的に変化させるための露光制御部40を備えている。露光制御部40は、露光時間を等比で増加させるように構成されているが、これに限られるものではない。この実施形態では、露光時間を1.5倍ずつ伸ばすように構成されているが、この倍率は任意に設定することができる。
形状測定装置400は高さ画像データ生成部33を備えている。高さ画像データ生成部33は、露光制御部40が段階的に変化させた各露光時間においてカメラCME1、CME2、CME3、CME4から出力された受光量を得て、得られた受光量に基づいて、各画素値が測定対象物表面(ワークWKの表面)の各部位の高さを示す高さ画像データを生成するように構成されている。これは例えば位相シフト法等の手法によって生成することができる。
(画素判定部の構成)
形状測定装置400は図3に示す画素判定部34を備えている。画素判定部34は、露光制御部40が段階的に変化させた各露光時間において受光部が受光した受光量を得て、得られた受光量に基づいて、高さ画像データ生成部33により生成される各高さ画像の各画素が有効か無効かを判定するように構成されている。プロジェクタPRJが周期的な照度分布を有するパターン光を照射するように構成されている場合、画素判定部34は、カメラCME1、CME2、CME3、CME4の撮像によって得られた各画素の光量のコントラストが閾値以上の画素を有効と判定するように構成されている。また、三次元形状を取得する方法として、光切断法を用いる場合には、各画素の光量が小さすぎるか、飽和している場合には、当該画素が無効であると判定し、その他の画素を有効と判定する。つまり、高さ画像を生成した際に高さを表示することができない画素(画面上で黒く潰れたようになってしまう画素や白く飛んでしまう画素)が無効であると判定し、一方、高さを表示することができる画素を有効と判定する。画素判定部34は、カメラCME1、CME2、CME3、CME4による撮像範囲内に設定される注目領域内の各画素が有効か無効かを判定するように構成することができる。
(露光時間設定部の構成)
形状測定装置400は図3に示す露光時間設定部41を備えている。露光時間設定部41は、画素判定部34により有効と判定された画素の数が所定条件を満たしている高さ画像に対応する露光時間を設定値として設定する。設定値とは、ロボットシステム1000の実運用を行う際に用いる露光時間のことである。露光時間は手動操作によって調整することもできるが、手動操作の場合、使用者は自分で設定した露光時間で得られた高さ画像を見ながら、最適な露光時間の範囲を探索していくプロセスが必要になる。また、最適な露光時間を絞り込むための探索を手作業で行う場合、属人性があるとともに再現性が悪く、様々なケースで適切な露光時間を得ることは難しい。さらに、高さ画像を構成する画素の場合は、見た目で有効画素であるか否かを判定するのは難しく、特に手作業で決定した露光時間が妥当な時間であるか否かを短時間で検証して判断することは困難である。よって、この実施形態では、適切な露光時間を自動で設定することができるようになっている。
例えば、ある固定されたワークを、カメラCME1、CME2、CME3、CME4の露光時間を段階的に変えながら撮像して高さ画像を得て、その高さ画像に含まれる有効画素数を露光時間毎に得る。ある露光時間の範囲内では、露光時間が変化しても有効画素数は殆ど変化せず、その範囲外では、有効画素数が急激に少なくなる場合がある。例えば、有効画素が最大値の95%となる露光時間を設定値として設定することで、有効と判定された画素の数が最も多くなる露光時間以下の所定時間を設定値として設定することができる。
高さ画像生成部33での高さ画像の生成方法の一例について説明する。高さ画像とは、画像を構成する各画素値に、高さの値が格納されている画像である。典型的には、高さを輝度値で表現した画像である。高さ画像の生成方法については、Zバッファ法が好適に利用できる。
すなわち、ワークのCADデータであるワークモデルで構成された三次元のバラ積みデータに基づいて、陰影を消去するレンダリングによって二次元の高さ画像を描画する。レンダリング方法には、Zバッファ法、Zソート法、スキャンライン法、レイトレーシング法等が利用できる。ここではZバッファ法を用いて、複数のワークモデルを高さ画像に描画していく。Zバッファ法では、Zバッファ=高さ画像として実現される。また、Zバッファの初期化を、無限遠で行うのではなく、床面や箱の情報で最小に初期化する形を取る。Zバッファ法の過程で、画素毎にワークモデルの面の法線情報を保持した、法線画像も同時に作成する。ここではZバッファを上書きした画素について、法線データも更新する。なお、本明細書中では、高さ画像への変換方法としてZバッファ法を例示するが、本発明はZバッファ法に限定するものでなく、上述の通り、他の方法も適宜利用できる。このようにして三次元のばら積みデータから高さ画像に描画し直す。
(三次元計測部)
三次元計測部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による判定手法は、ピッキング動作シミュレーションで行った手法と同じにすることができる。
(把持位置決定部)
把持位置決定部32は、画像処理装置300に設けることができる。把持位置決定部32は、干渉判定部31により周囲の物体と干渉することなく把持が可能と判定された把持候補位置を実際の把持位置として決定するように構成されている。
(実運用時の手順)
次に、実運用時には、まず、図1に示すようにセンサ部2を用いて容器BXにばら積みされているワークWKを三次元計測する。そして、三次元計測部30から出力された計測データに基づいて高さ画像生成部33で高さ画像を生成しておく。
その後、高さ画像に対して上述した三次元サーチを実施し、ワークの位置及び姿勢を検出した後、ワークモデルの位置と、登録してあるワークモデルの把持姿勢とに基づいて、ハンド部を配置すべき位置と姿勢を計算する。
計算された位置において、ハンド部が周囲の物体と干渉しないかどうかを、ハンドモデルの断面モデルを利用して判定する。具体的には、高さ画像の各1点1点のpixelデータが示す三次元点群と、ハンド部形状入力部35で予め入力されているハンドモデルとが干渉するか否かを、ハンドの断面モデルを用いて判定する。ハンド部が周囲の物体と干渉していない場合には、把持解有りとする。この把持解がロボットコントローラ6に送信され、ロボットコントローラ6がアーム部ARM及びハンド部を制御してワークWKをピックして搬送する。
一方、ハンド部が周囲の物体と干渉している場合には、登録されている別の把持候補位置があるか否かを判定する。別の把持候補位置がある場合には、干渉判定を行う。別の把持候補位置がない場合には、ワークが他にもあるか否かを判定する。別のワークがある場合には、把持可能か否かを判定する。別のワークがない場合には把持解無しとして終了する。このように三次元サーチで複数のワークが検出された場合、検出されたワークを1つずつ把持可能か否かを判定していく。
(経由点の自動算出)
次に、ロボットモデルRBTMのハンド部またはワークモデルWKMが把持位置から載置位置へ移動する間に経由する経由点を自動的に算出する手順について、図25に示すフローチャートに基づいて説明する。この例は、最適な経由点をロボット設定装置100が自動的に算出して使用者に提示する機能を有している例であり、使用者は経由点を登録していない場合に実行される。
尚、使用者が経由点を登録しているか否かを判定する判定ステップを設け、使用者が経由点を登録していない場合には、経由点の自動算出を実行し、使用者が経由点を登録している場合には、経由点の自動算出を実行しないように構成することもできる。また、使用者が経由点を登録していても、ロボット設定装置100が最適であると推定される経由点を自動的に算出して使用者に提示するようにしてもよい。
図25に示すフローチャートのステップSE1~SE13は、図6に示すフローチャートのステップSA1~SA13と同じである。これにより、経由点がない場合の複数の経路、当該経路の生成に要する時間、ロボット動作時間が得られるとともに、それらの平均値や分散等も得られる。
ステップSE14では、経由点を算出し、設定する。このステップは、経由点算出ステップであり、図3に示す経由点算出部25aで実行される。経由点算出部25aは、ピッキング動作シミュレーション部25によるシミュレーションの結果を解析し、ロボットモデルRBTMのハンド部がワークモデルWKMを把持した後、載置位置に載置するまでの間にハンド部またはワークモデルWKMが経由する経由点を自動的に算出するように構成されている。例えば、経由点算出部25aは、ピッキング動作シミュレーション部25によるシミュレーションの結果得られた複数の経路の近接度が所定以上となる点を算出し、当該点を前記経由点とするように構成することができる。すなわち、ピッキング動作シミュレーションを繰り返し実行することで、その結果によりロボットモデルRBTMのハンド部またはワークモデルWKMが通る経路を複数得ることができる。これら複数の経路が互いに接近すればするほど近接度が高くなり、この近接度が所定以上となる点は複数の経路に近いところに位置することになる。この点を経由点とすることで、全ての経路に対してロボットの動作軌跡が無用に長くならないような経由点を設定することができる。
経由点の自動算出手順について、図26に示すフローチャートに基づいて説明する。ステップSF1では、記憶部42に記憶されているN回分の経路生成結果を読み込む。尚、N回分の経路生成結果が無い場合には、N回よりも少ない数の経路生成結果を読み込めばよい。
ステップSF2では、ステップSF1で読み込んだ複数の経路生成結果の中から、任意の1つのマスター経路(経路1)を選択する。図27に経路1を符号L1で示しており、この経路1は、把持位置PAからステージSTG上の載置位置PCまでの経路である。
ステップSF2の後、ステップSF3では、ステップSF2で選択したマスター経路とは異なる経路(経路2)を選択する。図27では、把持位置PBからステージSTG上の載置位置PCまでの経路2を符号L2で示している。
ステップSF3の後、ステップSF4では、図28に示すように、動的時間伸縮法(DTW:Dynamic Time Warping)を実施して経路2上の各点において経路1上の対応点を算出する。つまり、2つの時系列(経路1と経路2)の各点の距離を総当りで比較した後、系列同士の距離が最短となるパスを探索する。図28の矢印は経路の探索の様子を示しており、探索の結果、太字で示されている矢印が最短経路として算出され、最短経路を結ぶ位置同士が対応点となる。図29の矢印は経路L1とL2の対応点を示している。ステップSF4の後、ステップSF5に進み、図29に示すように対応点同士の距離を算出する。
ステップSF5の後、ステップSF6では、図30に示すように、対応点同士の距離が所定の閾値以内、かつ、載置位置から最も遠い点PDを経由点の候補とする。この経由点の算出は、XYZ空間で行うことができるが、コンフィギュレーション空間(各軸空間)で行うようにしてもよい。
ステップSF7では、ステップSF3~SF6がN-1回実行されたか否かを判定する。尚、ステップSF1でNよりも少ない数の経路生成結果を読み込んでいる場合には、ステップSF7において、その数から1を差し引いた回数実行されたか否かを判定すればよい。ステップSF7でNOと判定された場合には、ステップSF3に進む。ステップSF7でYESと判定された場合には、ステップSF8に進む。ステップSF8では、全経由点候補の平均値を算出をし、その平均値を新しい経由点として追加するか、全経由点候補の中央値を新しい経由点として追加する。
ステップSF8が終了すると、図25に示すフローチャートのステップSE15に進む。ステップSE15では、把持位置から載置位置までの経路において、ステップSF8で設定された経由点を通過する経路を生成し、ピッキングシミュレーションを実行する。経路の生成、ピッキングシミュレーションは、それぞれ上述した方法で実行できる。
ステップSE15の後、ステップSE16では、図6に示すフローチャートのステップSA13と同様に、ステップSE15で生成した経路の生成に要した時間、ロボット動作時間の平均及びバラつきを計算する。
ステップSE17では、経由点を設定する前と、経由点を設定した後とで、経路の違い、経路の生成に要する時間の違い、ロボット動作時間の違いの少なくとも1つを表示部3に表示させることができる。表示形態としては、例えば、図24に示すような表示画面70を挙げることができる。この表示形態によれば、経由点を設定した場合と、経由点がない場合とを時間や経路について比較可能な形態で表示することができる。
図31は、ロボットモデルRBTMのアーム部ARMのある軸の動きを把持位置から載置位置まで示しており、ピッキングシミュレーションを4回行った場合である。この図に示すように、把持位置が4回とも異なっていても、載置位置までの途中区間では、4回の経路が互いに接近している部分が存在することがある。この場合、4回の経路が互いに接近している部分を経由点とすれば、ロボットの動作時間は殆ど増加しない。このように、毎回の経路の対応点を算出し、対応点同士の乖離が少ない区間に経由点を設定すれば、ロボットの動作時間を増加させずに、経路の生成に要する時間を短縮できる。このような点は上述したDTWを用いることで見つけることができる。
図32は、経由点を設定しない場合の複数の経路を模式的に示した図である。黒い立方体の集合、白い立方体の集合、灰色の立方体の集合がそれぞれ経路を示しており、複数の経路が重畳表示されている。この図に示すように、把持位置と載置位置との間に障害物Aが存在し、ロボットの自由度が多く想定される場合に経由点がないと、毎回の経路が大きくバラついてしまう。一方、図33は、経由点を設定した場合の複数の経路を模式的に示しており、複数の経路が重畳表示されている。この図に示すように、経由点を設定することで、ロボットの自由度が多く想定される場合であっても、毎回の経路が途中から載置位置までの範囲でバラつき難くなる。
図32や図33に示す複数の経路を重畳表示した画像を、図24に示すような表示画面70に組み込むことができる。これにより、使用者は、経路と、経路の生成に要する時間と、ロボット動作時間とを把握することができ、経由点の妥当性を判断できる。また、図33に示すように、経由点PDを重畳表示させることもできる。
(実施形態の作用効果)
以上説明したように、この実施形態によれば、容器モデルBXM内にばら積み状態とされているワークモデルWKMをロボットモデルRBTMのハンド部が把持して経由点を経由し、載置位置まで搬送する動作をシミュレーションすることができる。このとき、経由点がワークモデルWKMの把持位置と載置位置との間に設定されているので、例えば把持位置と載置位置との間に障害物Aが存在する場合のように、ロボットモデルRBTMの自由度が多く想定される場合に、経路生成の問題が複数に分割されることにより解の安定性が高まるとともに、経路生成時間が短くなる。
このシミュレーションの結果に基づいて、ロボットモデルRBTMのハンド部またはワークモデルWKMが通過した経路、経路生成時間及びロボットモデルRBTMのハンド部により容器モデルBXM内のワークモデルWKMを把持してから経由点を経由し、載置位置に載置するまでのロボット動作時間の少なくともいずれか1つを表示部3に表示することができる。
経路を表示部3に表示する場合には、使用者は、ロボットモデルRBTMのハンド部またはワークモデルWKMがどのような経路により把持位置から載置位置まで搬送されるのかを経由点を含めて確認できる。これにより、経路が無用に長くなっていないか、適切な長さであるか否かを表示部3の表示内容に基づいて検討することが可能になる。
また、経路の生成に要する経路生成時間を表示部3に表示する場合には、使用者は、経路生成時間が妥当な時間となっているか否かを表示部3の表示内容に基づいて検討することが可能になる。
また、ロボット動作時間を表示部3に表示する場合には、使用者は、ロボット動作時間が妥当な時間であるか否かを表示部3の表示内容に基づいて検討することが可能になる。
また、シミュレーションの結果を経由点算出部25aが解析し、ロボットモデルRBTMのハンド部がワークモデルWKMを把持した後、載置位置に載置するまでの間にハンド部またはワークモデルWKMが経由する経由点を自動的に算出することができる。経由点算出部25aが解析するシミュレーションの結果には複数回のシミュレーション結果が含まれているので、それらに共通するような経由点を算出することで、経由点が適切なものになる。この経由点の設定により、経路生成の問題が複数に分割されて解の安定性が高まるとともに、経路生成時間が短くなる。
上述の実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内のものである。