以下、本発明の実施形態を図面に基づいて説明する。ただし、以下に示す実施形態は、本発明の技術思想を具体化するための例示であって、本発明は以下のものに特定されない。また、本明細書は特許請求の範囲に示される部材を、実施形態の部材に特定するものでは決してない。特に実施形態に記載されている構成部品の寸法、材質、形状、その相対的配置等は特に特定的な記載がない限りは、本発明の範囲をそれのみに限定する趣旨ではなく、単なる説明例にすぎない。なお、各図面が示す部材の大きさや位置関係等は、説明を明確にするため誇張していることがある。さらに以下の説明において、同一の名称、符号については同一若しくは同質の部材を示しており、詳細説明を適宜省略する。さらに、本発明を構成する各要素は、複数の要素を同一の部材で構成して一の部材で複数の要素を兼用する態様としてもよいし、逆に一の部材の機能を複数の部材で分担して実現することもできる。
(ロボットシステム)
ロボットシステム1000を用いた、ワークのバラ積みピッキング動作が行われている。このようなロボットシステム1000の構成例を図1に、またロボットシステム1000のブロック図を図2に、それぞれ示す。このようなバラ積みピッキングでは、作業空間に積み上げられた複数のワークWKを、ロボットを用いて順次取り出し、所定の位置に配置する。例えば、収納容器BXに無作為に投入された多数の部品を、カメラや照明等のセンサ部で三次元形状を取得し、ワークWKを一つづつ、ロボットのアームARMの先端に設けられたエンドエフェクタEETでもって把持し、所定の位置、例えばコンベアベルト状に並べていく。
(ピッキング動作シミュレーション)
このようなロボットシステム1000でバラ積みピッキング動作を行うにあたり、予めシミュレーションを行ってバラ積みピッキング動作の検証を行うことが行われている。例えばロボットの設置位置やワークの収納容器BX、載置位置の相対位置、高さ等によっては、正しくワークを把持できないことがある。またセンサ部の設置される位置や角度によっては、ワークを正しく撮像できず、その三次元形状を正確に測定することも困難となる。そこで、予めバラ積みピッキングを行うロボットのピックやプレース動作の三次元的なピッキング動作シミュレーションを、ロボットシミュレーション装置を用いて行う。ロボットシミュレーション装置では、ワークの三次元形状を有するCADモデルをワークモデルとして、仮想的な作業空間である仮想作業空間に無作為に配置して、ロボットの取出工程、すなわちバラ積みピッキングをシミュレーションする。このようなシミュレーションで十分にピッキングが成功していないとユーザが判断した場合、ユーザはロボットを動作させるパラメータを修正してシミュレーションをやり直す。
(実施形態1)
(ロボットシミュレーション装置)
そこで、実施形態1においては、実際のワークを三次元計測した状態にできる限り近い状態でシミュレーションできるように、バラ積み状態のワークモデルの姿勢に基づいて、計測不可能となる部分を除外した三次元計測データを生成し、これに基づいてピッキング動作シミュレーションを行う。具体的には、バラ積み状態の姿勢から定まる、ワークモデルの表面の角度に基づいて、一定以上急峻な角度となる部分は三次元計測不可として、ピッキング動作シミュレーションで生成するバラ積みデータから除外する。これにより、センサ部を設置したりワークを実際に準備するといった手間のかかる確認作業や設定調整をしなくても、実際にバラ積みワークを撮像した状態に近い状態を実現できる。
このような本発明の実施形態1に係るロボットシミュレーション装置100のブロック図を図3に示す。図3に示すロボットシミュレーション装置100は、ワークモデル設定部11と、バラ積みデータ生成部20と、バラ積みデータ記憶部23と、ピッキング動作シミュレート部30と、シミュレーションパラメータ調整部29とを備える。
ワークモデル設定部11は、ワークの三次元形状をモデル化したワークモデルを設定するための部材である。
バラ積みデータ生成部20は、姿勢条件設定部16により設定された姿勢条件に従って、仮想作業空間内に複数のワークモデルを積み上げたバラ積みデータを生成するための部材である。
ピッキング動作シミュレート部30は、バラ積みデータ生成部20で生成されたバラ積みデータに対して、仮想作業空間内のワークモデルのピッキング動作を検証するバラ積みピッキング動作シミュレーションを実行するための部材である。
バラ積みデータ記憶部23は、ピッキング動作シミュレート部30によるピッキング動作シミュレーションの実行前のバラ積みデータ、又はピッキング動作シミュレーション実行途中のバラ積みデータの少なくとも何れかを記憶するための部材である。
シミュレーションパラメータ調整部29は、ピッキング動作シミュレート部30によるピッキング動作シミュレーションの結果、ロボットによる取り出しが不可能なワークモデルが存在する場合に、ロボットの動作に係るシミュレーションパラメータを調整するための部材である。
ピッキング動作シミュレート部30は、シミュレーションパラメータ調整部29により調整されたシミュレーションパラメータを用いて、バラ積みデータ記憶部23に記憶されたシミュレーション実行前またはシミュレーション実行途中のバラ積みデータを読み出して、ピッキング動作シミュレーションを再実行としている。これにより、ピッキング動作シミュレーションに用いたバラ積みデータを記憶することで、シミュレーションパラメータを調整した結果が効果的であったかどうかの判断が容易となる。
(表示部3)
またロボットシミュレーション装置は、バラ積みデータ記憶部23に記憶されたバラ積みデータを表示可能な表示部3を備えることもできる。これにより、保存済みのバラ積みデータをユーザが視覚的に確認しながら、シミュレーションパラメータを調整することが可能となり、操作性を向上させることができる。
(実施形態1B)
さらにロボットシミュレーション装置は、ピッキング動作シミュレート部30によるピッキング動作シミュレーションの結果、ロボットによる取り出しが不可能なワークモデルが存在する場合に、このワークモデルの取り出し失敗原因が、予め定義された複数の原因候補の中のいずれに該当するかを解析するための原因解析部24を備えることもできる。これにより、取り出しが不可能となった取り出し失敗原因を表示させることで、どのように修正すればよいかの対策を講じ易くなり、バラ積みピッキング動作をシミュレーションしながら、適切な設定に調整する作業を容易に行うことが可能なる。このような例を実施形態1Bとして、図4に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部11と、バラ積みデータ生成部20と、バラ積みデータ記憶部23と、ピッキング動作シミュレート部30と、シミュレーションパラメータ調整部29と、表示部3と、原因解析部24を備える。実施形態1Bにおいても、上述した実施形態1と同じ部材については、同一の符号を付して詳細説明を適宜省略する。原因解析部24の詳細については後述する。
(実施形態2)
ピッキング動作シミュレーションにおいて、ロボットのエンドエフェクタを模したエンドエフェクタモデルで把持可能と判定されても、実際に運用しようとすると、うまくバラ積みピッキングできないことがある。これは、ピッキング動作シミュレーション時には、図79Aに示すような、仮想的な三次元形状を有するワークモデルWMでもって判定しているところ、実際の運用時にはワークの三次元形状を取得できない場合があることに起因する。例えばワークが金属製の場合など、鏡面反射が強い場合には、ワークの姿勢によって計測できない部位が生じる。例えば図79Bに示すように、作業空間の上方からセンサ部で撮像する結果、ワークWKの傾斜が急峻となる部位については三次元形状を計測できない。さらに複数のワークが重なり合っている際に、下側にあるワークの形状を三次元計測できないという問題もある。この結果、シミュレーション上では三次元形状をサーチできるが、実運用時にはサーチに失敗してしまうことがあった。
そこで、実施形態2においては、実際のワークを三次元計測した状態にできる限り近い状態でシミュレーションできるように、バラ積み状態のワークモデルの姿勢に基づいて、計測不可能となる部分を除外した三次元計測データを生成し、これに基づいてピッキング動作シミュレーションを行う。具体的には、バラ積み状態の姿勢から定まる、ワークモデルの表面の角度に基づいて、一定以上急峻な角度となる部分は三次元計測不可として、ピッキング動作シミュレーションで生成するバラ積みデータから除外する。これにより、センサ部を設置したりワークを実際に準備するといった手間のかかる確認作業や設定調整をしなくても、実際にバラ積みワークを撮像した状態に近い状態を実現できる。
(物理シミュレーション部)
またロボットシミュレーション装置は、ワークを積み上げたバラ積み状態を仮想的に再現する物理シミュレーションを行って、バラ積みデータを生成することもできる。このような例を実施形態2として図5に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部11と、姿勢条件設定部16と、物理シミュレーション部60と、バラ積みデータ生成部20と、バラ積みデータ記憶部23と、領域推定部22と、ピッキング動作シミュレート部30とを備える。このロボットシミュレーション装置は、ワークを積み上げたバラ積み状態を仮想的に再現する物理シミュレーションを行って、バラ積みデータを生成する。
これにより、明らかに不自然な姿勢のワークモデルを除外するなど、ユーザの実運用環境に合わせたバラ積みデータを生成してピッキング動作シミュレーションを行えるため、実際にワークを用意することなく、実運用時に近い形で事前に適切な設定調整や、検証を行うことができるようになる。
バラ積みデータ生成部20は、姿勢条件設定部16で設定された姿勢条件に合致しないワークモデルを排除したバラ積みデータを生成することができる。あるいはバラ積みデータ生成部20は、物理的に発生確率が低いワークモデルを排除したバラ積みデータを生成するよう構成してもよい。この場合は、物理的に発生確率が低いワークモデルを、ユーザが姿勢条件設定部16で指定する他、予めロボットシミュレーション装置側で物理的に発生確率が低いワークモデルの条件を用意しておくこともできる。このような規定値による姿勢条件の設定も、姿勢条件設定部16に包含する。
またバラ積みデータ生成部20は、姿勢条件設定部16で設定された姿勢条件に合致しないワークモデルが、バラ積みデータ内に存在する場合、あるいは所定割合以上存在する場合は、バラ積みデータを作成し直すよう構成してもよい。これにより、実運用時から懸け離れたバラ積みデータが得られた場合には、ピッキング動作シミュレーションを行わずに、バラ積みデータを作成し直し、実運用時に近いバラ積みデータに対してのみピッキング動作シミュレーションを行うことで、より正確なシミュレーション結果を得ることができる。
姿勢条件設定部16は、ワークモデル設定部11で設定されたワークモデルを、仮想的な作業空間である仮想作業空間内に配置する際に、このワークモデルが取り得る姿勢に関する条件を姿勢条件として設定するための部材である。姿勢条件は、ユーザが手動で設定する他、予めロボットシミュレーション装置側で既定値として提示する構成としてもよい。また、ロボットシミュレーション装置が提示する姿勢条件の初期値を、ユーザが調整可能としてもよい。なお姿勢条件設定部16は、ワークモデルの基準姿勢からの許容回転角度、傾斜角度を姿勢条件として設定可能に構成できる。また姿勢条件設定部16は、ワークモデルの床面または他のワークモデルとの接触位置を真上から投影し、投影された接触位置を囲む外接矩形の面積と、ワークモデルの最大外接矩形の最大面積の比率を、姿勢条件として設定可能に構成してもよい。さらに姿勢条件設定部16は、ワークモデルの床面との接触位置や他のワークモデルとの接触位置、あるいは接触面の内で、最下方に位置する接触位置と重心位置との高さ方向の差分を姿勢条件として設定可能に構成することもできる。重心に対して低い位置で支えられているワークモデルは不安定と捉えることができる。さらにまた姿勢条件設定部16は、ワークモデルの特定の面が底面となるように姿勢条件を設定可能に構成してもよい。加えて姿勢条件設定部16は、ワークモデル間のX方向及び/またはY方向の配置間隔と、ワークモデルの段数を、姿勢条件として設定可能に構成することも可能である。
物理シミュレーション部60は、ワークモデル設定部11で設定されたワークモデルを用いて、ワークを重力の作用を受けて作業空間に投入する動作を、ワークモデルを仮想作業空間に投入することでシミュレーションするための部材である。また、このようなワークモデルを仮想作業空間に投入するシミュレーションを、物理シミュレーションや投入動作シミュレーションと呼ぶ。また、本明細書において「投入」や「投下」とは、物理的に高所から落下させる動作に限られず、例えば転がりを検証するため、所定の高さから水平方向に押し出しながら落下させたり、放物線状に投げ上げて落下させたり、あるいは収納容器や床面にワークモデルを載置、あるいは静置する動作も含む意味で使用する。さらに、物理シミュレーションは、ワークモデルを一つづつ作業空間内に順次投入する他、複数のワークモデルを同時に投入、例えば落下させたり静置させる動作をシミュレーションすることもできる。
このようにして物理シミュレーションを複数回繰り返し、あるいは一括して行い、得られた結果、すなわち複数のワークモデルが無作為に、あるいは所定の態様で積み上げられたワークモデル群に基づいて、バラ積みデータ生成部20は、仮想作業空間内に複数のワークモデルが積み上げられた、仮想的な三次元のバラ積みデータを生成する。
ピッキング動作シミュレート部30は、生成されたバラ積みデータに対して、仮想作業空間内の前記ワークモデルのバラ積みピッキング動作を検証するための部材である。これにより、ワークの三次元位置及び姿勢の検出可否など、手間のかかる確認作業や設定調整を、実際にワークを用意することなく、実運用に近い形で事前に行うことができる(詳細は後述)。
特に物理シミュレーション部60は、ピッキング動作シミュレート部30による一のワークモデルを把持し少なくとも取り出し動作を開始した後、このワークモデルが取り出された後の状態のバラ積みデータに対して物理シミュレーションを再度実行する。物理シミュレーションを再度実行するタイミングは、ワークモデルを把持し、載置位置にプレースされた後とする他、ワークモデルの取り出し作業の途中であってもよい。すなわち、エンドエフェクタモデルでワークモデルを把持して、このワークモデルが持ち上げられた状態では、一のワークモデルが除去されたことで、このワークモデルの周辺にあった他のワークモデルの配置が移動可能となるため、把持されたワークモデルが載置されるまで待つ必要はない。よって、物理シミュレーションの再実行のタイミングは、一のワークモデルが把持されて持ち上げられたタイミング、あるいはその後、他のワークモデルの状態が重力の作用で移動して安定するまで待った後のタイミングとすることができる。例えば、ワークモデルが把持されて持ち上げられた時点から所定の時間の経過後(例えば10秒後)としてもよい。
これを受けてバラ積みデータ生成部20は、物理シミュレーション部60による物理シミュレーションの再実行の結果に応じて、ピッキング動作シミュレート部30によるピッキング動作のシミュレーション中に、バラ積みデータを更新する。このようにしてピッキング動作シミュレート部30は、ピッキング動作シミュレーション中にバラ積みデータからワークモデルが一つ取り出されると、これに応じてバラ積みされたワークモデル群が崩れるといった動作も物理シミュレーションにより演算されるので、より正確なバラ積みピッキングのシミュレーションが実現される。
また物理シミュレーション部は、バラ積みデータ生成部20が姿勢条件設定部16で設定された姿勢条件に合致しないワークモデルを排除した場合、この姿勢条件に合致しないワークモデルを排除した後の状態のバラ積みデータに対して、再度物理シミュレーションを適用するよう構成することもできる。これにより、例えば空中に浮いている等、物理的に存在し得ない姿勢のワークモデルが物理シミュレーション時には発生し得るため、このようなワークモデルを排除することで、信頼性の高い物理シミュレーション結果を得ることが可能となる。
(初期姿勢)
物理シミュレーション部は、姿勢条件設定部16により設定された姿勢条件に基づいてワークモデルの初期姿勢を決定し、初期姿勢のワークを作業空間に落下させる物理シミュレーションを実行するよう構成してもよい。また物理シミュレーション部により物理シミュレーションを実行した場合、更に姿勢条件設定部16により設定された姿勢条件に合致しないワークモデルを排除するよう構成してもよい。
これらの部材は、例えばマイクロプロセッサ(MPU)やCPU、LSI、FPGAやASIC等のゲートアレイ、DSP等のハードウエアやソフトウエア、あるいはこれらの混在により実現できる。また必ずしも各構成要素が図3等に示した構成と同一でなくてもよく、その機能が実質的に同一であるもの、及び一つの要素が図3に示す構成における複数の要素の機能を備えるものは、本発明に含まれる。
例えば、図5の例では物理シミュレーション部60はバラ積みデータ生成部20と個別に用意されているが、バラ積みデータ生成部に物理シミュレーション部を統合することもできる。あるいはピッキング動作シミュレート部に、物理シミュレーション部とバラ積みデータ生成部とを統合させてもよい。
一方、図2のブロック図に示すロボットシステム1000は、センサ部2と、画像処理部1と、表示部3と、操作部4と、ロボット本体5と、ロボットコントローラ6と、ロボット操作具7とを備える。センサ部2は、作業空間を撮像すると共に、三次元形状を計測する部材である。また画像処理部1は、三次元サーチ、干渉判定、把持解算出を行う部材である。なおセンサ部2を、作業空間を撮像するのみとして、画像処理部1側で三次元形状を計測する構成とすることもできる。三次元形状を取得する方法は、パターン投影法、ステレオ法、レンズ焦点法、光切断法、光レーダ法、干渉法、TOF方式などがある。本実施形態においては、パターン投影法の内、位相シフト法を用いている。
このような三次元形状計測技術に応じて、センサ部2の構成が決定される。センサ部2は、カメラ、照明又はプロジェクタ等を備える。例えば位相シフト法でワークの三次元形状を計測する場合は、センサ部2として図6に示すように、プロジェクタPRJと複数のカメラCME1、CME2、CME3、CME4を備える。センサ部2は、カメラやプロジェクタといった複数の部材で構成する他、これらを一体的に構成してもよい。例えばカメラやプロジェクタを統合してヘッド状とした3D撮像ヘッドをセンサ部とすることができる。
画像処理部1は、このようにして得られたワークのバラ積みデータに基づいて、三次元サーチ、干渉判定、把持解算出等を行う。この画像処理部1は、専用の画像処理プログラムをインストールした汎用のコンピュータや、専用のコントローラ等が利用できる。なお図2では、画像処理部1を別個の部材で構成する例を示しているが、本発明はこの構成に限られず、例えばセンサ部と画像処理部を一体化したり、あるいはロボットコントローラに画像処理部を組み込むこともできる。また、センサ部側で撮像したデータに基づいて、画像処理部側でワークの三次元形状を取得するように構成してもよい。
表示部3は、画像処理部1で取得されたワークの三次元形状を表示させたり、各種設定や動作状態の確認を行うための部材であり、液晶モニタや有機ELディスプレイ、CRT等が利用できる。操作部4は、画像処理等の各種設定を行うための部材であり、キーボードやマウス等の入力デバイスが利用できる。また表示部3をタッチパネルとすることで、操作部と表示部を一体化することもできる。
例えばロボットシミュレーション装置や画像処理部を、ロボットシミュレーションプログラムをインストールしたコンピュータとした場合、表示部上にはロボットシミュレーションプログラムのグラフィカルユーザインターフェース(GUI)画面が表示される。表示部上に表示されたGUI上から各種の設定を行うことができ、またシミュレーション結果等の処理結果を表示させることができる。この場合、表示部を各種の設定を行うための設定部として利用できる。
ロボットコントローラ6は、センサ部2で撮像した情報に基づいてロボットの動作を制御する。またロボット操作具7は、ロボット本体5の動作設定を行うための部材であり、ペンダントなどが利用できる。
ロボット本体5は、可動式のアームARMと、アームARMの先端に固定されたエンドエフェクタEETを備える。このロボット本体5はロボットコントローラ6に制御されて、アームARMを動作させ、一個のワークWKをピッキングして、これを所望の位置に移動させてプレースした後、リリースする。このためアームARMの先端には、ワークWKを把持するためのエンドエフェクタEETを備えている。またワークWKをプレースする載置位置は、例えばトレイ上やコンベア上等が挙げられる。
ワークWKは、図1に示すように複数個が通い箱等の収容容器BXに無作為に収納されている。このような作業空間の上方には、センサ部2が配置されている。センサ部2はカメラや照明を備えており、このセンサ部2で、ワークWKの三次元形状を計測することができる。ロボットコントローラ6は、センサ部2で計測されたワークWKの三次元形状に基づいて、複数のワークの内から、把持対象のワークWKを特定して、このワークWKを把持するよう、ロボットを制御する。そして、ワークWKを把持したまま、アームARMを動作させて予め定められた載置位置まで移動させ、所定の姿勢でワークWKを載置する。いいかえると、ロボットコントローラ6は、センサ部2でピッキング対象のワークWKを特定し、このワークWKをエンドエフェクタEETで把持して、把持したワークWKを所定の基準姿勢にて、プレースする位置である載置位置に載置してエンドエフェクタEETを開放するようにロボットの動作を制御する。
ここで本明細書においてバラ積みピッキングとは、図7Aに示すような収納容器BXに入れられて無作為に積み上げられたワークWKを、ロボットで把持して、所定の位置に載置する他、図7Bに示すような収納容器を用いずに所定の領域に積み上げられたワークWKに対して把持、載置を行う例、あるいは図7Cに示すような所定の姿勢で並べられて積み上げられたワークWKを順次把持、載置する例も含む意味で使用する。
また、図1の例ではセンサ部2を作業空間の上方に固定しているが、作業空間を撮像できる位置であれば足り、例えば斜めや側方、下方など、任意の定位置に配置できる。ただし、アームARM上のような、可動する不定位置にセンサ部を配置する態様は除かれる。さらにセンサ部が有するカメラや照明の数も、一に限らず複数としてもよい。さらにまたセンサ部2やロボット、ロボットコントローラ6との接続は、有線接続に限られず、無線接続としてもよい。
またワークの把持とは、図8Aに示すようにワークWKの外側を挟み込む把持の他、図8Bに示すような、空洞を有するワークWK2の内部にエンドエフェクタEET2の爪部を挿入して拡開させることによって保持する例や、図8Cに示すような板状のワークWK3を吸引して保持するエンドエフェクタEET3の例を含む意味で使用する。以下では、ワークの把持の例としてワークの外側面を両側から掴む態様について説明する。またワークは、図1に示すように収納容器BXに多数個が収納されて無作為に積み上げられた状態で、このような複数のワークWKに対して一つづつ、エンドエフェクタEETでピックして、載置位置にプレースする作業を繰り返すバラ積みピッキング動作を、シミュレーションすることについて、以下説明する。
次に、ピッキング動作シミュレーション時のシステム構成のブロック図を図9に示す。この図に示すピッキング動作シミュレーションシステムは、画像処理部1と、表示部3と、操作部4を備える。この構成においては、画像処理部1上ですべてのシミュレーションを行う。すなわち、実運用時に画像処理部1となる部材が、ピッキング動作シミュレーション時にはロボットシミュレーション装置として機能する。ただ、ロボットシミュレーション装置を画像処理部と兼用する構成に限られず、ロボットシミュレーション装置を画像処理部とは個別に用意することもできる。
(実施形態4)
また本発明は、物理シミュレーションによりバラ積みされたワークモデル群に対して、そのままピッキング動作シミュレーションを実行する構成に限られず、バラ積みされたワークモデル群に対して、部位毎に三次元計測が可能かどうかを判定し、判定結果に基づいてピッキング動作シミュレーションを行うように構成してもよい。このような例を実施形態4に係るロボットシミュレーション装置として、図10に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部11と、姿勢条件設定部16と、バラ積みデータ生成部20と、領域推定部22と、ピッキング動作シミュレート部30と、表示部3とを備える。実施形態4において、上述した実施形態1と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
(領域推定部22)
図10に示す領域推定部22は、バラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、センサ部により三次元計測が困難と推定される推定領域を特定するための部材である。
このようにして得られた推定領域のデータに基づいて、ピッキング動作シミュレート部30は、仮想作業空間内のワークモデルのバラ積みピッキング動作を検証するピッキング動作シミュレーションを実行する。すなわちピッキング動作シミュレート部30は、バラ積みデータから推定領域を除去して、ピッキング動作シミュレーションを実行する。
なお、上記の例では領域推定部で推定される推定領域を、センサ部で三次元計測が困難と推定される領域としたが、逆にセンサ部で三次元計測が可能と推定される領域を推定領域としてもよい。
(実施形態5)
また、バラ積みデータから推定領域を除去したシミュレーション用データを生成するシミュレーション用データ生成部を付加してもよい。このような例を実施形態5として図11に示す。この図に示すロボットシミュレーション装置200は、ワークモデル設定部11と、姿勢条件設定部16と、物理シミュレーション部60と、バラ積みデータ生成部20と、領域推定部22と、ピッキング動作シミュレート部30と、シミュレーション用データ生成部40と、表示部3を備えている。実施形態5において、上述した実施形態1と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
(シミュレーション用データ生成部40)
シミュレーション用データ生成部40は、領域推定部22により特定された推定領域のデータを含まないバラ積みデータをシミュレーション用データとして生成するための部材である。ピッキング動作シミュレート部30は、シミュレーション用データ生成部40で生成されたシミュレーション用データを用いて、ピッキング動作シミュレーションを実行する。
また表示部3は、バラ積みデータ生成部20で生成されたバラ積みデータを表示させることができる。このバラ積みデータは、物理シミュレーション部60により更新された際には、リアルタイムに更新して表示部3に表示させることもできる。これにより、従来のようにワークモデルが取り出された後、物理シミュレーションが再実行されずに中に浮いたワークモデルが存在するような状態を回避すると共に、表示部3上で物理シミュレーションを再実行した結果を表示させることで、ユーザに対し違和感なくバラ積み状態のワークを表示させることができる。
さらに表示部3は、シミュレーション用データ生成部40で生成されたシミュレーション用データを表示させて、ユーザに対し、確認させることが可能となる。この際、後述する図60Dや図62A、図62C等に示すように、実運用時には計測できない領域を、測定可能な領域と区別して表示させてもよい。これにより、ユーザに対して実運用時にどのような見え方となるのかを視覚的に把握させやすくなる。
(実施形態6)
さらに、ピッキング動作シミュレーションに際して、仮想的なセンサモデルを設定するセンサモデル設定部を付加することもできる。このような例を実施形態6に係るロボットシミュレーション装置300として図12に示す。
図12に示す実施形態6に係るロボットシミュレーション装置300は、シミュレーション環境設定部10と、検出用設定部50と、バラ積みデータ生成部20と、領域推定部22と、シミュレーション用データ生成部40と、ピッキング動作シミュレート部30と、表示部3を備える。バラ積みデータ生成部20は、物理シミュレーション部60を備える。実施形態6においても、上述した実施形態1等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
(検出用設定部50)
検出用設定部50は、位置や姿勢の検出や、干渉判定、把持解算出を行うための各種の設定を行うための部材である。ここでの設定には、位置や姿勢の検出(三次元サーチ)に関する設定(例えば、データの間引き量や、姿勢制限、重視する特徴部位の指定など)、ワークに対するエンドエフェクタの把持姿勢の設定等が挙げられる。
(シミュレーション環境設定部10)
またシミュレーション環境設定部10は、バラ積み画像を取得するための各種の設定を行うための部材である。ここでのシミュレーション環境の設定には、バラ積みをさせるワークの数、収納容器の情報、床の情報、センサ部を構成するカメラやプロジェクタの設計情報等が挙げられる。またピッキング動作シミュレーション時には、収納容器に対して、実運用上発生し得る、ランダムな位置ずれを発生させることもでき、この際の位置ずれの範囲等をシミュレーション環境の設定に含めることもできる。シミュレーション環境設定部10は、ワークモデル設定部11と、センサモデル設定部15と、姿勢条件設定部16を備える。
(ワークモデル設定部11)
ワークモデル設定部11は、ワークモデルに関する条件を設定する。ワークモデルは、CADで作成されたCADデータが利用できる。ワークのCADデータについて、CADのデータ形式は特に限定されないが、本実施形態においては、三次元のCADデータとして、最もシンプルなSTL形式を用いている。STLは、三角形のポリゴン情報(3点の座標とその面の法線ベクトル)の羅列のみで構成されるデータである。あるいはワークモデルとして、三次元情報を有する点群データで構成してもよい(後述する図60Eにおいて、表示部3に表示された点群表示画像を示している)。あるいはまた、ワークモデルを、高さ情報を有する画像データ、例えば高さ画像や距離画像で構成してもよい。
(表面状態パラメータ設定部)
またワークモデル設定部11は、表面状態パラメータ設定部12を備えてもよい。表面状態パラメータ設定部12は、ワークモデルの表面状態に関するパラメータを入力するための部材である。表面状態パラメータは、例えばワーク表面の反射率等を数値で規定する。あるいは、ワークの材質を規定する。個の場合、選択肢として「金属」、「ガラス」、「樹脂」等を挙げて、何れかをユーザに選択させるように構成してもよい。あるいはまた、表面状態を区別する官能的な選択肢、例えば「ぴかぴか」、「ざらざら」、「透明」、「つや消し」、「白っぽい」、「黒っぽい」等から選択させてもよい。この表面状態パラメータ設定部12で設定された表面状態パラメータによって、後述する角度閾値(しきい値)を変化させることができる。
(容器モデル設定部14)
さらにシミュレーション環境設定部10は、通い箱など、ワークを収納する収納容器をモデル化した容器モデルを設定する容器モデル設定部14を含めてもよい。この場合は、センサモデルと容器モデルとの相対的な位置関係に基づいて、推定領域を推定するよう構成できる。
姿勢条件設定部16は、ワークモデルの特定の面又は辺が、容器モデルに対して、特定の関係となるように姿勢条件を設定可能に構成できる。
また物理シミュレーション部は、容器モデル設定部で設定される容器モデルの段数を設定し、複数のワークモデルを容器モデル内に同時に落下させる物理シミュレーションを実行可能に構成してもよい。
(センサモデル設定部15)
センサモデル設定部15は、センサ部を構成する部材、例えばワークの三次元計測を行うためのカメラやのいずれか又はすべてについて、位置や姿勢を仮想的に示すカメラモデルやプロジェクタモデルを設定する。センサモデルがカメラモデルのみか、あるいはプロジェクタモデルも含むかについては、センサ部が採用するワークの三次元形状の測定方法、及びこれを実現するための部材に依存する。例えばパッシブステレオ方式の場合は、プロジェクタが不要なのでカメラモデルのみで足りる。
この場合、領域推定部22は、推定領域を、センサモデル設定部15で設定されたセンサモデルから見て死角となる領域を、計測困難な死角領域として推定するよう構成できる。死角領域の定義は、センサモデル設定部15で設定されたセンサモデルの種別によって異なる。例えばセンサ部で採用された三次元計測方法が縞投影方式や光切断方式の場合は、カメラモデルとプロジェクタモデルのいずれかから死角となる領域が死角領域となる。また複数のカメラを用いたステレオ法の場合は、複数のカメラモデルのいずれかから死角となる領域が死角領域となる。
さらに死角領域を、ワークモデルの平面内の位置に応じて変化させてもよい。計測視野の中央部よりも周辺部の方が死角が発生し易いため、これに対応させて死角領域を変化させることで、シミュレーションの精度を高めることできる。
(シミュレーション用データを更新)
さらにピッキング動作シミュレーションの実行中に、いずれか一つのワークモデルが取り出されると、残りのワークモデルに対して領域推定部22が計測可能な領域を再度推定し、シミュレーション用データを更新することもできる。すなわちシミュレーション用データ生成部40は、ピッキング動作シミュレート部30によるバラ積みピッキング動作のシミュレーション実行中にいずれか一のワークモデルが取り出されると、残りのワークモデルに対して計測可能な領域を再度推定し、シミュレーション用データを更新することができる。これにより、従来は一度ピッキング動作シミュレーションが実行されると、ワークモデルが順次取り出されてもシミュレーション用データはそのまま維持されている結果、宙に浮いたような不自然なワークモデルが残る状態となっていたところ、実施形態5によれば、上方のワークモデルが取り出された場合に生じ得る、残りのワークモデルの変化を考慮した上で、その下方に位置するワークモデルの計測が可能となり、より正確なバラ積みピッキングのシミュレーションが実現される。
なおこの動作は、上述した実施形態1や後述する他の実施形態においても、領域推定部22で再度推定された死角領域を、ピッキング動作シミュレート部30で再度読み出してピッキング動作シミュレーション結果を更新させることができる。
(実施形態7)
以上の例では、領域推定部でバラ積みデータ内の各ワークモデルの位置と姿勢に基づいて、センサ部により三次元計測が可能か否かを推定して推定領域を特定している。ただ本発明はこの構成に限られず、例えばワークモデルの表面状態に応じて三次元計測の可否を推定するよう構成することもできる。このような例を実施形態7に係るロボットシミュレーション装置として、図13に基づき説明する。この図に示すロボットシミュレーション装置600は、シミュレーション環境設定部10と、バラ積みデータ生成部20と、領域推定部22と、シミュレーション用データ生成部40と、ピッキング動作シミュレート部30と、表示部3を備える。バラ積みデータ生成部20は、物理シミュレーション部60を備える。実施形態7においても、上述した実施形態1等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
シミュレーション環境設定部10は、ワークモデル設定部11と、姿勢条件設定部16を備える。ワークモデル設定部11は、表面状態パラメータ設定部12と、角度閾値決定部13を備える。表面状態パラメータ設定部12は、ワークモデルの表面状態に関する表面状態パラメータを設定するための部材である。この表面状態パラメータ設定部12により設定された表面状態パラメータに基づいて、角度閾値決定部13は、センサ部により三次元計測が困難となるセンサ部の測定軸に対するワークモデル表面の角度閾値を決定する。そして領域推定部は、角度閾値決定部13で決定された角度閾値よりも大きな傾斜角度を有するバラ積みデータ内の領域を、三次元計測が困難と推定される推定領域として特定する。この結果、シミュレーション用データ生成部は、領域推定部により推定された推定領域のデータを含まないバラ積みデータを、シミュレーション用データとして生成し、ピッキング動作シミュレート部30が、このシミュレーション用データを用いて、ピッキング動作シミュレーションを実行する。これによって、ワークの表面状態に応じた三次元計測の結果を推測でき、より精度の高いピッキング動作のシミュレーションが可能となる。すなわち、ユーザが指定したワークの表面状態の情報から、三次元計測データとして採否を決定する角度閾値を決定できるので、用いるワークに応じた柔軟な調整が容易に行える利点が得られる。
特に従来のピッキング動作シミュレーションでは、単にワークモデルを読み込み、物理シミュレーションを行ってバラ積みデータを生成し、各ワークモデルが安定する位置や姿勢を求めて、その位置や姿勢にワークモデルを配置しているに過ぎなかった。このため、現実に作業空間内のワークを三次元計測する際には、計測できないはずの領域、例えばオクルージョンが発生していたり、ワークの表面が鏡面に近く、データが得られないといったデータも得られることになる。この結果、ピッキング動作シミュレーションン上では三次元サーチができたのに、実運用時にはサーチに失敗するなど、シミュレーション結果と、実際の結果が大きく乖離してしまうことが発生していた。
これに対して実施形態7では、ワークの表面状態を示す表面状態パラメータをユーザが指定可能としたことで、センサ部でプロジェクタの反射光をカメラで適切に受光できるかを正確に予測しやすくなり、ワーク上の各位置における三次元計測の可否の判定の精度を向上できる。
(実施形態7に係るシミュレーション環境の設定手順)
ここで、実施形態7に係るシミュレーション環境を設定する手順を、図14のフローチャートに基づいて説明する。
まずステップS1401において、ワークモデルの表面状態を指定する。ここでは表面状態パラメータ設定部12にて、対象となるワークに応じた表面状態パラメータを、ワークモデルの表面状態として指定する。
次にステップS1402において、表面状態が指定されたワークモデルのCADデータを、所定の数だけバラ積みして、三次元のバラ積みデータを得る。この例では、Zバッファ法を用いて高さ画像を生成していく中で、内部的に1ワーク毎に処理を行っている。1つのバッファに対し、全データを書き込んでいった後に、高さ画像が完成する。
そしてステップS1403において、このバラ積みデータから高さ画像を生成する。ここで高さ画像の生成方法について説明する。まず、ワークのCADデータであるワークモデルで構成された三次元のバラ積みデータに基づいて、陰影を消去するレンダリングによって二次元の高さ画像を描画する。レンダリング方法には、Zバッファ法、Zソート法、スキャンライン法、レイトレーシング法等が利用できる。ここではZバッファ法を用いて、複数のワークモデルを高さ画像に描画していく。Zバッファ法では、Zバッファ=高さ画像として実現される。また、Zバッファの初期化を、無限遠で行うのではなく、床面や箱の情報で最小に初期化する形を取る。Zバッファ法の過程で、各画素毎にワークモデルの面の法線情報を保持した、法線画像も同時に作成する。ここではZバッファを上書きした画素について、法線データも更新する。なお、本明細書中では、高さ画像への変換方法としてZバッファ法を例示するが、本発明はZバッファ法に限定するものでなく、上述の通り、他の方法も適宜利用できる。
このようにして三次元のバラ積みデータから高さ画像に描画し直す。次に、ステップS1404において、すべてのワークモデルを描画したかを判定し、未だの場合はステップS1403に戻って処理を繰り返す。この結果、すべてのワークモデルの描画を終えた場合は、ステップS1405に進む。
ステップS1405では、画素毎に、指定された表面状態に基づいてデータを除去する角度閾値を決定する。この角度閾値の決定は、角度閾値決定部13で行われ、詳細については後述する。そしてステップS1406において、当該画素における法線の角度が、決定された閾値を超えるものを除去する。この処理も、ワークモデル設定部11の、例えば角度閾値決定部13で行う。さらにステップS1407において、すべての画素で実施したか否かを判定し、未だの場合はステップS1406に戻って処理を繰り返す。そして、すべての画素で実施したと判定されると、処理を終了する。このようにして、ピッキング動作シミュレーションの環境設定が行われる。
(表面状態パラメータ)
ここで、ステップS1401においてワークモデルの表面状態を指定する手順について詳述する。表面状態を指定する表面状態パラメータには、ワークの材質、表面粗さ、加工方法、色、反射率等が挙げられる。これらは単独でも、あるいは複数を組み合わせて用いてもよい。
ワークの材質を表すパラメータ値の例としては、金属、樹脂、セラミック等が挙げられる。また表面粗さを表すパラメータ値の例としては、Raなどの数値、三角記号、仕上げ面の名称(粗仕上げ、鏡面仕上など)等が挙げられる。さらに加工方法を表すパラメータの例としては、研削、フライス、ラップなどが挙げられる。さらにまた色を表すパラメータとして、黒、白、銀、つやあり、つやなし等が挙げられる。
また、ワークに対する指定方法として、ワーク全体に対して同じ表面状態を指定してもよいし、あるいは部分的に異なる表面状態を指定することもできる。このようなワークの表面を指定するには、ワークを仮想的に表したワークモデルを表示部上に表示させて行う。ここで、部分的に異なる表面状態の指定方法の一例として、図15A〜図15Bに示すように、表示部上に三次元状に表示されたワークモデルに対して設定を行う方法が挙げられる。例えば図15Aに示すワークモデルWMの斜視図上において、表面状態を設定したい面をユーザがマウス等のポインティングデバイスで直接指定する。指定された指定領域DSAは、図15Bに示すように着色されたりハイライトされる等して、指定された領域が他の領域と視覚的に区別し易くなるように表示態様を変更させることが好ましい。
あるいは図16Aに示すように、ワークモデルをワイヤーフレーム状WMFに表示させた状態で、表面状態を指定したい面を構成する頂点DSPを、図16Bに示すように個別に指定あるいは選択するように構成してもよい。この場合は、選択された頂点で規定された領域が、表面状態を指定する領域として特定される。
また、3D表示状態で設定を行う方法に限られず、2D表示状態で設定を行う方法としてもよい。例えば、図17に示すワークをA、Bの方向からそれぞれ見た平面図を、図18に示すように表示させる。このように、ワークモデルの展開図WMDを作成して表示部上に表示させ、展開図WMD上で指定を行ってもよい。
(角度閾値の決定方法)
次に、以上のようにしてワークモデルの表面状態が指定された状態から、図14のステップS1405において、角度閾値を決定する方法を説明する。ここでは、プロジェクタモデルの光源の位置と反射モデルの式に基づいて、観測点における光と入射光との比率をワーク角度毎に算出し、この比率に対して閾値を設定する。設定された閾値を外れるワーク角度では計測できないものと判断して、三次元計測データから除去する。以下、具体的な方法を説明する。
シミュレーションにおける反射のモデルは、主にコンピュータグラフィックスの分野において多く研究され、提唱されている。ここでは簡単のため、Phongの反射モデルを用いて具体的な手順を記載する。なお本発明においては、反射モデルはPhongの反射モデルに限定されず、他の反射モデルを用いてもよい。
Phong反射モデルによれば、表面からの反射光は次式のように表現される。
…(1)式
なお上式において、各項は以下を表している。
I:反射光;Id:拡散反射成分;Is:鏡面反射成分;Ia:環境光成分
ここでは、光源から出射した光線がどの程度、観測点に到達するかを算出することが目的であるので、簡単のため、ここではIa=0とする。なお環境光が強い場合には、計測可否に影響が発生する場合があるので、Ia≠0として計算することもできる。Ia=0と仮定した結果、(1)式は次式のように表現できる。
…(2)式
次に、それぞれの成分について説明する。ここでは、各反射成分を記述する数式は入射光が平行光線だった場合を想定している。なお、光源が他の様態であった場合には、その光源に合ったモデル式を用いればよい。
[拡散反射成分]
まず拡散反射のモデルとして、Lambert反射モデルを用いることができる。Lambert反射モデルは、理想的な拡散反射面が持つべき性質であり、どの方向から見ても輝度が一定になる反射モデルである。この様子を図19Aに示す。ここで入射光の輝度をI、入射角をα、拡散反射成分の割合をkd、拡散反射光の反射率をrdとすると、拡散反射光の輝度Idは次式で表される。
上式において、α:ワーク法線と入射光の角度を示している。なおここではLambert反射モデルを用いて説明を行うものの、本発明においてはLambert反射モデルに限定せず、他の拡散反射モデルを用いてもよい。
[鏡面反射成分]
次に鏡面反射モデルとして、例えばPhong鏡面反射モデル、Blinn−Phong鏡面反射モデル、Torrance−Sparrow鏡面反射モデル、Blinn鏡面反射モデル等が挙げられる。本明細書においてはPhong鏡面反射モデルを説明するが、本発明はこれに限らず、上述したものを含め、他の鏡面反射モデルを用いることもできる。
図19Bに、Phong鏡面反射モデルの概略図を示す。この図において、αはワーク表面に対する法線と入射光の角度、βは正反射方向と観測点の角度、nは光の広がり度合いを表すパラメータを、それぞれ示している。図19Bに示すように、鏡面反射の場合、正反射方向を中心として少し広がりを持って反射する。また正反射方向から観測点が外れると、輝度が低下する。ここで入射光の輝度をI、正反射方向と観測点の角度をβ、拡散反射成分の割合をks、鏡面反射光の反射率をrsとすると、拡散反射光の輝度Isは次式で表される。
上式におけるnは、鏡面反射の度合いを表す係数である。nが大きいほど、広がりが少ない反射をすることになる。またここでは、環境光だけでなく、物体の自発光や物体による光の吸収がないものとして計算する。この反射光の輝度Irは次式で表される。
上式における各係数をどのように設定するかについては、前もって積分球などを使った測定器によって計測された値を設定しておいてもよい。あるいは、複数方向から照明をあてて簡易的に求めたり、ユーザが入力したりするのでも良い。ここでは各係数を、kd=0.5ks;ks=0.5;rd=0.7;rs=0.98;入射角度(α)=25°;鏡面反射光の広がり度合い(n)=200;観測点角度=15°とする。この係数での反射光の分布は、図20のようになる。
このように、観測される方向によって、光の強さが変化する。観測される光の強さが小さいということは、光が当たっていない部分との差が小さいので、三次元計測ができないことになる。ここでプロジェクタから構造化されたパターンの光(構造光)をワークに照射することを考えると、光が当たっている部分からの反射光が、観測点にどの程度届くかによって、光が当たっていない部分とのコントラストが取れるかが決まってくるため、その度合いによって計測ができるかどうかが決まる。例えば、下記のような実施例を考える。
(実施例1)
拡散反射:鏡面反射=9:1;ワークの傾き=40°;入射光の強さ=I;kd=0.9I;ks=0.1I;rd=0.70;rs=0.98;α=40°;β=50°;n=100
この場合、ある点に当たった光を観測点から観察した時の輝度は、次式で表現される。
(実施例2)
拡散反射:鏡面反射=1:9;ワークの傾き=40°;入射光の強さ=I;kd=0.1I;ks=0.9I;rd=0.70;rs=0.98;α=40°;β=50°;n=100
この場合、ある点に当たった光を観測点から観察した時の輝度は、次式で表現される。
このように、図21Aに示すような入射光、観測点方向、正反射方向において、入射方向や観測方向、ワークの角度が同じであったとしても、拡散反射と鏡面反射の割合が異なると、観測される輝度は大きく異なることになる。ここで図21Bのような状況を考える。ここで、入射光の強さ=I;kd=0.1I;ks=0.9I;rd=0.70;rs=0.98;n=100とすると、図21Bのワークを傾けた時の入射光と反射光の比率は、図22のグラフに示すようになる。
入射光と反射光の比率が低いということは、ワークのある部分に光が当たっていても、観測点に光が返ってこないので、光が当たっていない部分との区別がつかないということを意味する。つまり、この比率はワーク面を観測したときに得られるコントラストの値に近いものと考えられる。そこで、この比率に対して閾値を設け、計測結果を計算する時の角度閾値とする。例えば、比率の閾値を0.4としたとき、ワーク角度20°のものについては、拡散反射割合が0.6より大きいワークであれば計測できるものとする。
また、閾値は、上述したように一つの固定値としてもよいし、何らかの関数としたり、ユーザに指定させてもよい。
鏡面反射成分が大きい場合、観測点がちょうど正反射方向にあると、かなり強い光が観測点方向に来てしまうため(例えば図21Bのワーク角度10°の場合)、カメラなどで受けた場合、画素が飽和して計測できなくなってしまうことがある。そういった箇所も判断するために、上側に閾値を設けるようにしてもよい。
このように決められた閾値を用いて計測を行った時の模式図を、図23A〜図23Dに示す。これらの図において、図23Aは拡散反射の割合が高い高さ画像を二次元表示した例を示すイメージ図、図23Bは図23Aを三次元表示した斜視図、図23Cは鏡面反射の割合が高い高さ画像の例を示すイメージ図、図23Dは図23Cの斜視図を、それぞれ示している。
この方法を用いれば、より現実に近いシミュレーションを行うことができる。また、そのための設定方法をユーザがわかりやすい「材質」や「表面粗さ」などのキーワードで設定することができるようになるので、より簡単に設定を行うことができる。
(実施形態8)
以上の例では、ピッキング動作シミュレート部30とは別に、バラ積みデータ生成部20や領域推定部22を設ける例を説明した。ただ本発明はこの構成に限らず、ピッキング動作シミュレート部にバラ積みデータやバラ積み画像の生成機能を持たせてもよい。このような例を実施形態8に係るシミュレーション装置400として、図24の機能ブロック図に示す。この図に示すロボットシミュレーション装置400は、ピッキング動作シミュレート部30Bと、シミュレーション環境設定部10と、検出用設定部50と、バラ積みデータ記憶部23を備える。実施形態8においても、上述した実施形態1等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
ピッキング動作シミュレート部30Bは、バラ積み画像生成部31と、位置姿勢検出部32と、把持解算出部33を備える。バラ積み画像生成部31は、複数のワークモデルがバラ積みされた三次元のバラ積みデータから、バラ積みされた状態を示す二次元の高さ画像として、バラ積み画像を生成する。このバラ積み画像は、センサ部から見た平面図とできる。位置姿勢検出部32は、バラ積み画像に含まれる各ワークモデルの位置及び姿勢を検出するための部材である。把持解算出部33は、各ワークモデルの位置及び姿勢から、ワークモデル同士の干渉判定を行い、さらにエンドエフェクタを模したエンドエフェクタモデルで把持可能な場合は、このワークモデルを把持するためのエンドエフェクタモデルの姿勢を算出する。
(ピッキング動作シミュレーションの手順)
次に、ピッキング動作シミュレーションの手順を、図25のフローチャートに基づいて説明する。まず、ステップS2501において、シミュレーション環境を設定する。例えば、図24のシミュレーション環境設定部10から、バラ積み画像を生成するための設定をユーザに行わせる。
次にステップS2502において、ワークモデルのバラ積み画像を生成する。ここでは、ワークを作業空間内に積み上げた状態を仮想的に再現するため、物理シミュレーションを実行する。物理シミュレーションは、ワークモデルを一つづつ仮想作業空間に落下させる動作を繰り返して、複数のワークモデルが無作為に積み上げられたバラ積みデータを構成するものである(詳細は後述)。
このようにしてステップS2502でバラ積み画像が得られると、次にステップS2503において、ワークモデルの位置及び姿勢を示す位置姿勢情報を出力するか否かを判定する。出力する場合はステップS2504に進み、ワークモデルの位置姿勢情報を出力した上でステップS2505に進む。一方、位置姿勢情報を出力しない場合は、ステップS2504を経ることなく、ステップS2505に進む。
そしてステップS2505において、各ワークモデルの位置及び姿勢の検出を試みる。さらにステップS2506において、各ワークモデルの位置と姿勢が検出できたか否かを判定し、検出できる場合はステップS2507に進む。
一方、検出できない場合はステップS2511にジャンプして、残ったワークモデルに関する情報を抽出する。ここで残ったワークモデルに関する情報には、認識が正しくなされなかった結果ピッキングできずに残ってしまったワークモデルの個数や、位置姿勢情報が検出できたワークモデルについては当該位置姿勢情報を含む。
続いてステップS2512で、この抽出されたワークモデルの位置姿勢情報を出力するか否かを判定する。出力する場合はステップS2513に進み、ワークモデルの位置姿勢情報を出力して処理を終了し、一方出力しない場合はそのまま処理を終了する。
ステップS2506でワークモデルの位置と姿勢が検出できた場合は、ステップS2507において、エンドエフェクタモデルと周辺データとの干渉判定と、把持解の算出を試みる。そしてステップS2508において、把持解を算出できたか否かを判定し、算出できた場合はステップS2509に進み、算出できない場合はステップS2511にジャンプして、上述の通り残ったワークモデルに関する位置姿勢情報を抽出し、ステップS2512で出力を判定した後、処理を終了する。
ステップS2508で把持解を算出できた場合は、ステップS2509に進み、バラ積みデータを構成するワークモデルの数を一つ減らす。そしてステップS2510において、未処理のワークモデルが残っているか否かを判定し、残っている場合はステップS2502に戻ってバラ積み画像の生成から上記処理を繰り返し、一方残っていない場合は処理を終了する。
このようにして、ピッキング動作シミュレーションがピッキング動作シミュレート部によって実行される。実行された結果は、必要に応じて表示部に表示させることができる。ユーザはこれに基づいて、現在の設定の適否を判断できる。また必要に応じて、各種の設定を変更する。例えばロボット本体部の設置位置や収納容器を置く位置、センサ部の姿勢などを調整する。変更した設定を、シミュレーション環境設定部に入力して、再度ピッキング動作シミュレーションを実行し、その適否を確認するという作業を繰り返して、ユーザの環境に応じた適切な設定条件を決定できる。
(バラ積み画像の生成手順)
次に、上記図25のフローチャートのステップS2502において、ワークモデルのバラ積み画像を生成する手順の詳細を、図26のフローチャートを用いて説明する。
まずステップS2601において、初期状態データを読み込むか否かを判定する。この判定は、ユーザに対して初期状態データを読み込むか否かの判断を促す。なお、初期状態データは、予めバラ積みデータ記憶部23等に保存されているものとする。
初期状態データを読み込む場合はステップS2602に進み、保存された初期状態データに記録されている位置、姿勢にワークモデルを設定する。次いでステップS2603において、物理シミュレーションを実行する。例えば、ワークモデルを所定の高さから落下させる(詳細は後述)。さらにステップS2604において、シミュレーション環境設定部で指定された数のワークモデルが配置されたか否かをシミュレーションパラメータが判定し、未だの場合はステップS2602に戻って処理を繰り返す。そして、指定された数のワークモデルが投下されたと判定されると、ステップS2608に進み、ワークモデルの位置及び姿勢に基づいたバラ積み画像を生成し、処理を終了する。
一方、ステップS2601において初期状態データを読み込まないと判定された場合は、ステップS2605に進み、ワークモデルの初期状態を設定する。初期状態には、ワークモデルに物理シミュレーションを行う開始位置と姿勢が含まれる。例えば、収納容器の壁際の位置にワークモデルを配置したい場合等、ユーザが所望の位置にワークモデルをバラ積みしたい場合は、そのような位置と姿勢とを決定する。あるいは、乱数に基づいてワークモデルの位置と姿勢とを決定する。
次にステップS2606において、このワークモデルに対して物理シミュレーションを実行する。さらにステップS2607において、指定された数のワークモデルが配置されたか否かを判定し、未だの場合はステップS2605に戻って処理を繰り返す。そして、指定された数のワークモデルが投下されたと判定されると、上記と同様にステップS2608に進み、ワークモデルの位置及び姿勢に基づいたバラ積み画像を生成し、処理を終了する。このようにしてバラ積み画像が生成される。
(物理シミュレーション)
なお、物理シミュレーションを行うに際には、必ずしもワークモデルを落下させる必要はない。例えば床面上にワークモデルを配置させたり、あるいは既存のワークモデルの上に他のワークモデルを接するように配置させた状態から物理シミュレーションをスタートさせても良い。すなわち、ワークモデルを落下させるという動作は、物理シミュレーションにおいては必ずしも必要でない。ただし、ワークを実際に床面上やバラ積みされた他のワーク上に置いた状態で、倒れたり、傾いたり、滑ったりといった、実際のワークが重力や摩擦などの自然に作用する応力や抵抗を受けて動く可能性を考慮する。また、ワークを配置させた直後のみならず、その後に他のワークをピッキングしたことで、バラ積みされたワークのバランスが崩れてさらに動くといった動作も考慮して、ワークモデルの仮想的な動きをシミュレーションする。すなわち本明細書でいうワークやワークモデルが「重力の作用を受け」るとは、ワーク等を落下させることに限定されず、載置されたワーク等が傾いたり崩れたり滑ったり、あるいは摩擦によって滑らない状態となること、ワークの反発係数により移動量が変わること等、自然界に働く応力や抵抗力により、安定した状態から不安定な状態となって動くことを包含する意味で使用する。
(シミュレーションの初期状態の再現)
ここで、図27に示すような円筒形のワークモデルWMCをバラ積みして、ピッキング動作シミュレーションを行う例について説明する。ここでは、図28Aに示すワークモデルWMCをバラ積みしたバラ積みデータの初期状態に対して、ピッキング動作シミュレーションを行い、ワークモデルの一つづつ取り出す処理を行った結果、図28Dに示す状態で、ピッキング動作シミュレーションが終了した場合を考える。
ここで、バラ積みデータの初期状態がランダムの場合は、以前の物理シミュレーションで得られた状態を同じ状態を作ることができない。すなわち、物理シミュレーションの度毎にランダムなバラ積みデータが生成されるため、図28Aに示す初期状態は一過性のものとなって、再現性がない。
一方、ユーザがピッキング動作パラメータの設定の見直しなどを行い、その効果を確認しようとする場合、以前のピッキング動作シミュレーションでうまくいかなかった状態を再現して、このバラ積みデータに対して確認するのが最も効率的である。例えば、あるワークモデルに対するエンドエフェクタモデルの把持解が見つからずに全てのワークモデルを取り出せなかった場合に、その対策としてユーザが把持の教示位置を増やした場合を考える。この場合、ユーザが変更した設定が、前回発生した問題に対して有効であったか否かを判断するためには、前回うまく行かなかった状態、又はこれと近い状態を再現して確認することが最も有効である。
加えて、問題が発生した正にその状態だけでなく、その問題が発生するに至った過程の状態から開始できるようにしてもよい。例えば問題が発生したバラ積みデータを、ワークモデルを順次追加して構成している場合は、問題が発生した段階の数回前の、ワークモデルの数が数回分少ない状態で、対応できるかどうかを確認することが考えられる。
これらを実現するために、本実施形態においては、バラ積みデータの初期状態や終了状態、あるいは中間状態等、ユーザが再利用したいと考える状態のデータを保存しておき、ピッキング動作パラメータの調整後に、このような保存済みのバラ積みデータを呼び出して、検証することを可能としている。
例えば図28Dの終了状態をバラ積みデータ記憶部23に保存しておくことで、ユーザがピッキング動作に失敗した原因を推測し、予想されるシミュレーションパラメータをシミュレーションパラメータ設定部で再設定後、この状態で再度ピッキング動作シミュレーションを実行し、ピッキングが可能かどうかを確認できる。あるいは、ピッキング動作シミュレーションに失敗して終了した状態のみならず、その前の段階からピッキング動作を検証するため、ピッキング途中の状態のバラ積みデータをバラ積みデータ記憶部23に保存しておくこともできる。例えば図28Cは、図28Dの終了状態から10回遡った状態のバラ積みデータを示しており、この段階から、シミュレーションパラメータを再設定したピッキング動作を検証することもできる。あるいはより古いデータに遡って、図28Bに示すように、図28Dの終了状態から20回遡った状態のバラ積みデータを保存し、これを読み出して再度ピッキング動作シミュレーションを実行することもできる。
また、バラ積みデータの保存は、上述したようにユーザが所定のタイミングで行う他、所定のタイミングで自動で保存されるように構成してもよい。所定のタイミングとして、例えば、ピッキング動作シミュレーション実行前の初期状態や、ピッキング動作シミュレーション完了後の最終状態で、これ以上ピッキングできるワークモデルがない状態、あるいは中間でワークモデルが取り出される際毎に定期的に保存するようにしてもよい。
また、別の所定のタイミングとして、例えばバラ積みされるワークの数が、5個おきや10個おきといった一定個数毎としたり、あるいはバラ積みデータを作成する経過時間で5分おき、10分おきなどとしてもよい。また、自動保存されるバラ積みデータの容量や数に制限を設けてもよい。例えば自動保存されたバラ積みデータが500個を越えると、古いデータを上書きするようにしたり、あるいは自動保存されたデータの総和が500MBを越えた場合に、古いデータから順に上書きして削除するようにするなどのルールを設けることができる。
さらに、これら自動又は手動で保存されたデータを遡って読み出す際のユーザインターフェース画面として、例えば早送り、巻き戻しのようなVTR等で一般的なボタン類を配置したり、ジョグシャトルやジョグダイヤルのような回転式の部材でもって送り方向と戻し方向をスムーズに切り替え可能な操作部を用意することもできる。または、スクロールバーやスライダのような、直線的な部材でもって過去の位置を指定するように構成してもよい。
また、このような保存済みのバラ積みデータを読み出す代わりに、新たにバラ積みデータをランダムに生成することもできる。例えばピッキング動作シミュレーション中にユーザに対し、過去のバラ積みデータを利用するか、新規のバラ積みデータを利用するかを選択させるように構成してもよい。
(物理シミュレーションの過程におけるデータの保存)
一般的にバラ積みデータでシミュレーションを行うには、物理シミュレーションが用いられる。物理シミュレーションでは、重力が設定された仮想作業空間において、質量を持つワーク等の物体の動きが動的にシミュレーションされる。各々の物体が衝突した場合には、予め設定された反発係数や摩擦係数を考慮して、物体が衝突後どのような動きになるかが示される。このような物理シミュレーションの手順を、図29A、図29Bのフローチャートに基づいて以下説明する。
まずステップS2901において、仮想空間を作成する。次にステップS2902において、作成された仮想空間の設定を行う。ここでは、仮想空間内の重力など、物理シミュレーション全体に拘わるパラメータを設定する。なお、仮想空間の作成と設定を同時に行ってもよい。
さらにステップS2903において、ワークモデルをばら積みする収納容器を設定する。例えば、収納容器の縦、横、高さの長さ等を設定する。次にステップS2904において、ワークモデルをばら積みする収納容器の配置を設定する。バラ積みデータを生成する物理シミュレーションでは多くの場合、収納容器は静的なオブジェクトとして配置される。
そしてステップS2905において、ワークモデルのサイズを設定する。例えばワークモデルのサイズや形状、密度、重量など、ワークモデルに特有の設定を行う。次にステップS2906において、ワークモデル位置情報の読み取りを行う。
さらにステップS2907において、ワークモデルの初期位置が指定されているか否かの判定を行う。指定されていない場合は、ステップS2908において、ワークモデルの初期位置及び姿勢をランダムに設定してステップS2910に進む。一方、ワークモデルの初期位置が設定されている場合は、ステップS2909において、ワークモデルの位置及び姿勢を指定位置姿勢に設定してステップS2910に進む。なお、ワークモデルの初期位置は、例えばテキストデータ等の設定ファイルを読み込んで設定してもよいし、あるいはGUI等を用いてユーザが指定できるようにしてもよい。
次にステップS2910において、ワークモデルの生成を行う。そしてステップS2911において、指定された数量のワークモデルが生成されたか否かを判定し、未だの場合はステップS2906に戻って上記工程を繰り返す。一方、指定された数のワークモデルが生成された場合は、ステップS2912に進み、単位時間後のワークモデルの位置・姿勢をシミュレーションする。ここでは、ワークモデルに限らず、全ての物体について、他のワークモデルとの衝突なども考慮した上で、単位時間後のワークモデルの位置・姿勢を計算する。そしてステップS2913において、全てのワークモデルがその位置及び姿勢で安定しているか否かを判定する。安定していない場合はステップS2912に戻って上記工程を繰り返す。一方、安定していると判定された場合はステップS2914に進み、ワークモデルの位置・姿勢情報を保存するか否かを判定する。保存の要否はユーザが判断する。ユーザは、例えば後に設定の見直しやシミュレーションのやり直しをする可能性がある場合など、データ保存の必要性を感じる場合に保存する。保存する場合はステップS2915に進み、ワークモデルの位置・姿勢情報の保存や出力処理を行った上で処理を終了する。なおここで、ユーザに出力の有無を都度指定させても良い。あるいは物理シミュレーション部の内部で、常にロギングしておいてもよい。さらには、保存するデータを回数で指定させてもよい。例えばN回ごとや10回分など、任意のタイミングや数を指定できる。一方、保存が不要と判断された場合は、そのまま処理を終了する。
このようにして、ワークモデルの位置や姿勢を考慮した物理シミュレーションが行われる。この方法によれば、ステップS2914においてユーザが設定の見直しをする必要性を感じた状態を保持しておき、後から呼び出すことが可能となる。この結果、ユーザが行った設定の見直しが、ユーザが直面している課題に対して効果的だったかどうかを明確に判断することが可能となる。このため、ユーザがロボットの立ち上げを行うときに、より短い時間で正しい設定を行うことができるようになり、立ち上げ時間の短縮、実運用の安定化に?がる。
(ワークモデルの姿勢の制限)
また、三次元のバラ積みデータやバラ積み画像の生成において、仮想作業空間上に配置するワークモデルの姿勢に制限を加えてもよい。すなわち従来のバラ積みピッキングのシミュレーションに際して、ワークモデルを仮想作業空間上にランダムに配置させる結果、実際の運用時の環境と異なる状態でのシミュレーションとなってしまっていることがあった。例えば図30に示すように、T字型のワークモデルWMTが直立するような不安定な姿勢で存在することが生じていた。実際の運用時には、このような不安定な姿勢でワークが存在することは起こり難い。
また実際にピッキング対象のワークが提供される態様は、無作為に積み上げられた状態に限られず、段積み状態のケースや、ワークの向きが固定化された状態で積まれているケースも多く、実運用時のワークの状態に合わせた適切な設定調整や、検証が行えない状態であった。
そこで本実施の形態では、ワークの姿勢を完全にランダムとするのでなく、一定の制限を加えた状態でバラ積みデータを準備することにより、実運用時の環境や条件に合わせたシミュレーション結果が得られるようにしている。すなわち、バラ積みデータの生成を、ユーザの用途やワークの形状等に応じてカスタマイズした、バラ積みデータ生成の個別設定を可能としている。
このようなワークの姿勢の制限は、物理シミュレーションの実行に際して行うことができる。一例として、(I)物理シミュレーションを行う際に、仮想作業空間上にワークモデルをランダムな姿勢で投下させるのではなく、姿勢制限を加えた状態で投下させる。また、姿勢制限を超えた姿勢になってしまったものは、物理シミュレーション過程で除外することで、姿勢制限を行うこともできる。
あるいは、(II)物理シミュレーションを行う際に、仮想作業空間上にワークモデルを1つ1つランダムな姿勢で投下させるのではなく、規定の姿勢で、一定の間隔で複数配置させた状態で、同時に落下させてもよい。
このようにして、実運用時の状態に合わせたバラ積みデータを生成することができるため、ピッキング動作シミュレーションの結果も実運用時に近い状態で実行でき、より正確なシミュレーション結果が得られる。これにより、実際にワークを用意することなく、実運用時に近い形で事前に適切な設定調整や、検証を行うことができるようになる。以下、図25のステップS2502において、ワークモデルのバラ積み状態を、姿勢条件設定部16で姿勢に制限を加えた上で、バラ積みデータ生成部20で生成する際の手順を説明する。
(I:ワークモデルを一つづつ投下させる物理シミュレーションにおける姿勢制限)
まず、物理シミュレーションにおいてワークモデルを一つづつ投下させる際の姿勢制限について、説明する。ここでは、ワークモデルの姿勢のみに制限を加える方法について説明する。ここでは、ワークモデルの位置については制約のないランダムとしている。姿勢制限を加える方法としては、
1.物理シミュレーションにおけるワークモデルの投下時に、姿勢制限を加える。
2.物理シミュレーションの実行後に、姿勢制限範囲外のワークモデルを除外する。
3.上記1.、2.の両方を行う。
の3パターンが挙げられる。
(1.ワークモデルの投下時に姿勢制限)
まず、1.の物理シミュレーションにおけるワークモデルの投下時に、姿勢制限を加える手順について、図31のフローチャートに基づいて説明する。ここでは、ワークモデルに対して許容される姿勢を、姿勢条件設定部16で予め姿勢条件として設定されたものとする。例えば、ワークモデルに対して許容される姿勢の角度範囲を、姿勢制限範囲として規定する。あるいは、ワークモデルの基準姿勢からの許容回転角度、傾斜角度を姿勢条件として設定することもできる。
このように姿勢条件が設定された状態で、まずステップS3101において、乱数に基づいてワークモデルの姿勢及び投下位置を生成する。次に、ステップS3102において、生成されたワークモデルの姿勢が、姿勢条件設定部16で設定された姿勢制限範囲内の姿勢か否かを判定する。この判定は、バラ積みデータ生成部で行う。姿勢制限範囲でないと判定された場合は、ステップS3101に戻って、新たなワークモデルの姿勢及び投下位置を生成し直す。なお、姿勢及び投下位置を生成して投下されるワークモデルは、1つずつとすることもできるし、複数のワークを一括して姿勢、投下位置を生成して、これらを同時に落下させてもよい。
一方、姿勢制限範囲と判定された場合は、ステップS3103に進み、このワークモデルを投下させる物理シミュレーションを実施する。そしてステップS3104において、指定された数だけワークモデルが投下されたか否かを判定し、未だの場合はステップS3101に戻り、処理を繰り返す。このようにして、指定された数のワークモデルが投下されたと判定された場合は、処理を終了する。以上のようにして、ワークモデルを投下させる前の姿勢を、姿勢制限範囲内にあるか判定し、制限範囲外のワークモデルを除外することで、不自然なワークモデルの存在を排除できる。この方法であれば、制限範囲外のワークモデルに対しては、落下させる物理シミュレーション自体を行わないので、シミュレーションに係る処理を簡素化できる利点が得られる。
(2.ワークモデルの投下後に姿勢制限)
一方、ワークモデルを投下させた後の姿勢に対して、制限範囲内にあるか否かを判定することでも、不自然なワークモデルを排除できる。以下、2.の物理シミュレーションの実行後に、姿勢制限範囲外のワークモデルを除外してバラ積みデータを生成する手順について、図32のフローチャートに基づいて説明する。
まずステップS3201において、乱数に基づいてワークモデルの姿勢及び投下位置を生成する。次にステップS3202において、このワークモデルを投下させる物理シミュレーションを実施する。ここでも、姿勢及び投下位置を生成して投下されるワークモデルは、1つずつとすることもできるし、複数のワークを一括して姿勢、投下位置を生成して、これらを同時に落下させてもよい。
そしてステップS3203において、落下されたワークモデルの内、姿勢条件設定部16で設定された姿勢制限範囲外のワークモデルがあるか否かを判定する。姿勢制限範囲外にあるワークありと判定された場合は、ステップS3204に進み、姿勢制限範囲外のワークモデルを除外して、再度落下させる物理シミュレーションを実施した上で、ステップS3203に戻って判定を繰り返す。
一方、姿勢制限範囲外のワークモデルなしと判定された場合は、ステップS3205に進み、指定された数だけワークモデルが投下されたか否かを判定し、未だの場合はステップS3201に戻り、処理を繰り返す。このようにして、指定された数のワークモデルが投下されたと判定された場合は、処理を終了する。以上のようにして、ワークモデルを投下させた後の姿勢が、姿勢制限範囲内にあるかを判定し、制限範囲外のワークモデルを除外することで、不自然なワークモデルの存在を排除できる。この方法であれば、落下されたワークモデルに対して姿勢を判定することから、不自然なワークモデルをより確実に除外できる利点が得られる。
(3.ワークモデルの投下前後に姿勢制限)
さらに、ワークモデルを投下させる前の姿勢と、透過後の姿勢の両方に対して、制限範囲内にあるか否かを判定することでも、不自然なワークモデルを排除できる。ここでは、ワークモデルに対して許容される投下時の姿勢を投下後の姿勢を、姿勢条件設定部16で予め設定する。これらは同じ姿勢とすることもできるが、好ましくは投下時のワークモデルの姿勢と、投下後のワークモデルの姿勢とを個別に設定することが好ましい。以下、3.の物理シミュレーションの実行の前後に、姿勢制限範囲外のワークモデルを除外してバラ積みデータを生成する手順について、図33のフローチャートに基づいて説明する。
まずステップS3301において、乱数に基づいてワークモデルの姿勢及び投下位置を生成する。次に、ステップS3302において、生成されたワークモデルの姿勢が、姿勢条件設定部16で設定された姿勢制限範囲内の姿勢か否かを判定する。姿勢制限範囲でないと判定された場合は、ステップS3301に戻って、新たなワークモデルの姿勢及び投下位置を生成し直す。なお、ここでも姿勢及び投下位置を生成して投下されるワークモデルは、1つずつとすることもできるし、複数のワークを一括して姿勢、投下位置を生成して、これらを同時に落下させてもよい。
一方、姿勢制限範囲と判定された場合は、ステップS3303に進み、このワークモデルを投下させる物理シミュレーションを実施する。そしてステップS3304において、落下されたワークモデルの内、姿勢条件設定部16で設定された姿勢制限範囲外のワークモデルがあるか否かを判定する。姿勢制限範囲外にあるワークありと判定された場合は、ステップS3305に進み、姿勢制限範囲外のワークモデルを除外して、再度落下させる物理シミュレーションを実施した上で、ステップS3304に戻って判定を繰り返す。
一方、姿勢制限範囲外のワークモデルなしと判定された場合は、ステップS3306に進み、指定された数だけワークモデルが投下されたか否かを判定し、未だの場合はステップS3301に戻り、処理を繰り返す。このようにして、指定された数のワークモデルが投下されたと判定された場合は、処理を終了する。以上のようにして、ワークモデルを投下させた後の姿勢が、姿勢制限範囲内にあるかを判定し、制限範囲外のワークモデルを除外することで、不自然なワークモデルの存在を排除できる。この方法であれば、落下の前後でワークモデルの姿勢を確認することから、最も確実に不自然なワークモデルを除外できる。
このようにして、ワークモデル投下時や投下後、あるいはその両方のタイミングでワークの姿勢に対し制限を加えることで、不自然な形で直立するワークが存在しこのようなワークに対してもピッキング動作シミュレーションを実行してしまう事態を避けることが可能となる。また、ワークの形状によって片面しか見えないようなバラ積み状態を実現することもできる。例えば図34A、図34Bに示すような、表面と裏面の面積が異なるワークWK6に対して、図35に示すように、バラ積み状態では各ワークWK6の表面側のみしか見えないような場合であっても、実運用に合わせてこのようなバラ積み状態を生成し、仮想的に再現することが可能となる。例えば、許容される姿勢条件として、ワークモデルの特定の面が底面となるように姿勢条件設定部16で設定する。これによって、ピッキング動作シミュレーションにおける設定の調整や検証といった時間のかかる作業を、実際にワークを用意することなく、実運用に近い形で事前に行うことができるようになる。また、対象となるワークがどのようなバラ積みをされるかによって、最適な設定が変わるところ、姿勢条件に制限を加えることで、ピッキング動作シミュレーションの実行前に設定を合わせこむことが可能となる。
(実施形態9)
以上の方法では、バラ積みデータの生成に際してワークモデルの姿勢にのみ制限をかける例を説明した。ただ本発明は、この例に限られず、ワークモデルの姿勢と位置の両方に制限を加えることもできる。例えば、図36Aに示すように、収納容器に板状のワークWK7が整列されて詰め込まれた状態や、図36Bに示すように、円筒状のワークWK8が収納容器内で段積みされた状態を考える。このようなバラ積み状態にあるワークは、収納容器内にランダムに存在しているのでなく、概ね一定の姿勢や位置にあるという制約を受ける。このため、従来の物理シミュレーションのような、ワークを完全にランダムに生成される方法では、このようなバラ積み状態を再現できない。そこで、このようなバラ積み状態にあるワークに対しても、正確なピッキング動作シミュレーションが実行できるよう、バラ積み状態を生成する条件として、ワークの姿勢のみならず位置にも制約を設ける。以下、このような方法を実施形態9として、図37のフローチャートに基づき説明する。
まずステップS3701において、規定の姿勢、規定の間隔で複数のワークモデルの投下位置及び姿勢を設定する。ここでは、ワークモデルに対して許容される姿勢や位置、間隔などの配置条件を、姿勢条件設定部16で設定する。例えば、ワークモデルの姿勢、X方向の配置数と配置間隔、Y方向の配置数と配置間隔、ワークモデル段数等が挙げられる。例えば図36AのワークWK7のバラ積み状態を物理シミュレーションするには、配置条件として、X方向の配置数を8個、Y方向の配置数を1個、段数を1に設定する。また例えば図36BのワークWK8のバラ積み状態を物理シミュレーションするには、配置条件として、X方向の配置数を5個、Y方向の配置数を3個、段数を3に設定する。
次にステップS3702において、乱数に基づいて、複数のワークモデルの位置及び姿勢に外乱を加える。さらにステップS3703において、ワークモデルを同時に投下させて物理シミュレーションを実施する。このようにして、規定の姿勢で、指定された配置位置にワークモデルを用意した状態で、ワークモデルを同時に投下させて物理シミュレーションを行うことができる。特にワークモデルを投下させる前に、乱数に基づいて、位置及び姿勢に外乱を加えることで、毎回異なる状態のデータを作成することができる。
そしてステップS3704において、指定された段数分、ワークモデルが投下されたか否かを判定し、未だの場合はステップS3701に戻って処理を繰り返す。すべてのワークモデルが投下されたと判定された場合は、処理を終了する。このようにして、ワークが収納容器内に整列されて詰め込まれた状態や、段積み状態にあるバラ積み状態を再現したシミュレーション用のバラ積みデータを作り出すことができる。特に規定の姿勢で一定の間隔で複数配置させた状態で、ワークモデルを同時に投下させることで、ワークモデルの位置と姿勢の両方に制限を加えることが可能となる。この結果、設定の調整や検証といった時間のかかる作業を、実際にワークを用意することなく、実運用時に近い形で事前に行うことができるようになる。特に対象となるワークがどのようなバラ積みにされるかに応じて、最適な設定が変わるところ、事前に設定をカスタマイズして合わせこむことができる。
(姿勢条件の設定画面)
次に、このような姿勢条件を設定する手順の一例を、図38、図39等に基づいて説明する。これらの図において、図38は姿勢条件設定部16の一態様であるロボットシミュレーションプログラムのユーザインターフェース画面において、表示部上に示されたワークモデルWM6に対して基本姿勢を規定する様子を示すイメージ図であり、図39は、同じく姿勢条件を設定する姿勢条件設定画面110を示している。
(基本姿勢の設定)
まず、ワークモデルの投下時の基本姿勢を規定する。例えば、図38に示す基本姿勢設定画面上で、投下方向に対するワークモデルWM6の姿勢を調整する。この例では、Z軸方向が投下方向である。例えば画面上でワークモデルWM6をドラッグして投下姿勢を自由に変更できる。
次に、基本姿勢の状態に対する、許容角度を指定する。角度の指定方法は、投下方向の軸に対する傾斜角度と、投下方向に軸に対する回転角度の2つを、範囲で指定する。例えば、図39に示す姿勢条件設定画面110上で、傾斜角度と回転角度を数値で入力する。この例では回転角度の範囲を±で示しているが、下限と上限の値を個別に指定可能にしてもよい。例えば傾斜角度を0°、回転角°を±180°に指定した場合、図40に示すように、基本姿勢に対し、投下方向に向かって傾斜のない姿勢で投下される。なお、投下方向の軸に対する回転角度はランダムに変化される。また傾斜角度を15°、回転角度を±0°に指定すると、図41に示すように、基本姿勢に対し、投下方向の軸に対する回転方向には変化がないが、傾斜角のみに外乱が加わった姿勢にてワークモデルが投下されることになる。なお、傾斜角度の範囲、回転角度の範囲がいずれもゼロでない場合、それぞれの範囲内で傾斜角度、回転角度がランダムに変化させた姿勢にて、ワークモデルが投下されることになる。
このようにして、基本姿勢と、この基本姿勢に対する傾斜角度、回転角度の範囲を1セットとし、これを必要に応じて複数セット設定する。例えば、ワークの表面のみが見えるようなバラ積み状態に対しては、1セットのみを設定して実現できる。一方、ワークの側面は上を向かないが、表面と裏面の両面が上を向くようなバラ積みに対しては、「表面が上を向いた状態の基本姿勢で設定」したものと、「裏面が上を向いた状態の基本姿勢で設定」したものの2セットをそれぞれ定義し、1回の投下毎に、どのセットが選ばれるか自体をランダムに選択させることで、所望のバラ積み状態を実現できる。
(ワークモデルの配置条件設定)
次に、実施形態9として説明した、ワークモデルの配置条件を設定する方法について、以下説明する。ワークモデルの姿勢のみならず、位置等に関しても設定する方法としては、例えば、1.X方向の配置数と配置間隔、Y方向の配置数と配置間隔、ワークモデルの段数を入力させる方法や、2.最初に配置パターンを選択させ、それに応じて必要な配置条件を入力させる方法等が挙げられる。まず、1.の方法について説明する。姿勢条件設定部16の他の態様として、例えば図42に示すような配置条件設定画面120から、ワークモデルのX方向の配置数と配置間隔、Y方向の配置数と配置間隔、ワークモデルの段数を、それぞれ入力させる。
(配置パターン選択)
次に、2.の方法について説明する。この方法では、先にワークモデルの配置パターンをユーザに選択させて、次に選択に応じた必要なパラメータを入力させる。ワークモデルの配置パターン選択画面として、例えば、図43A、図43B、図43Cに示すように、ワークモデルが収納容器内で完全ランダムな場合、一方向に配置されている場合、それ以外の複数方向、複数段に配列されている場合の3パターンを、表示部にそれぞれ表示させる。表示は、これらを一覧表示させてもよいし、複数の画面を切り替えて表示させてもよい。ユーザが、いずれかの配置パターンを選択すると、詳細な配置条件のパラメータを設定する配置条件設定画面が表示される。例えば、図43Aの完全ランダムな配置パターンが選択された場合、配置条件としてバラ積みの個数のみを入力させる。また図43Bの一方向に配置されている配置パターンが選択された場合は、配置数、配置方向(X又はY)、配置間隔をそれぞれ入力させる。あるいは図43Cの複数方向、複数段に配列されている配置パターンが選択された場合は、X方向の配置数、配置間隔、Y方向の配置数、配置間隔、Z方向の段数を、それぞれ入力させる。このようにして、ユーザは表示部に表示されたガイダンスに従い、必要な設定を順次遺漏なく行うことができる。
(姿勢安定性パラメータ決定部17)
以上のようにして、ユーザがワークモデルの許容される姿勢等の姿勢条件を予め設定し、条件に合致しないワークモデルを排除することで、バラ積みデータに不自然な姿勢や不安定な姿勢のワークモデルが含まれないようにできる。ただ本発明は、ワークモデルが安定な姿勢にあるかどうかを判定できるよう、ワークモデルが不安定な姿勢であることを自動検知するように構成してもよい。例えば、不安定な姿勢のワークモデルが検知されると、このようなワークモデルをバラ積みデータから自動的に除外するよう構成することで、同様にバラ積みデータを実運用環境に近い状態として、ピッキング動作シミュレーションの精度を高めることが期待できる。またこの場合は、姿勢安定性が悪いワークモデルを表示部上で、排除対象のワークモデル候補として表示させてユーザに対し排除するよう促したり、あるいはこのような姿勢安定性のワークモデルを選択する指針をユーザに対して与えることもできる。さらには、ユーザが姿勢条件等を手動で設定しなくとも、ロボットシミュレーション装置側で自動的に不自然な姿勢や不安定な姿勢のワークモデルを排除させて、適切な条件に設定された状態でピッキング動作シミュレーションを実行させることもでき、ユーザの利便性の面でも有利となる。
このような姿勢安定性の演算は、姿勢安定性パラメータ決定部で行うことができる。姿勢安定性パラメータ決定部17は、例えば図12に示すように、姿勢条件設定部16に含めることができる。例えば、姿勢条件設定部16で姿勢条件を設定する際、姿勢安定性パラメータ決定部17で演算された姿勢安定性に基づき、好ましい数値範囲をユーザに提示することができる。ユーザは提示された数値を参照して、姿勢条件として姿勢範囲の角度などを設定、あるいはこれを微調整することができる。また姿勢安定性パラメータ決定部は、必ずしも姿勢条件設定部に含める必要はなく、別部材としてもよい。
さらに、予め姿勢安定性パラメータをロボットシミュレーション装置側で規定しておき、既定値の姿勢安定性パラメータに従い、姿勢安定性が低いワークモデルを自動的に排除するよう構成してもよい。この場合は、姿勢安定性パラメータを含めた姿勢条件の設定をユーザが行う必要はない。このように、姿勢条件の設定をユーザが行わない態様も、本発明に包含する。いいかえると、姿勢条件設定部16は、必ずしもユーザによる姿勢条件の設定を受け付ける構成は必須でなく、姿勢条件設定部16による姿勢条件の設定には、ユーザ指定の他、既定値による設定も含む意味で使用する。
(姿勢安定性の演算方法)
ここで、姿勢安定性を演算する方法を、図44のフローチャートに基づいて説明する。ここでは、図30に示したT字型のワークモデルWMTを例に挙げて説明する。まず、ステップS4401でワークモデルWMTの形状に外接する立方体を求める。例えば図45Aに示すワークモデルWMTに対する外接立方体を求めると、図45Bのようになる。次に、外接立方体を構成する6面の中で最大面積となる面を求める。例えば図45Bの例では、図45Cのように側面が最大面積となる。
次にステップS4402で、ワークモデルWMTに対して物理シミュレーションを行い、このワークモデルWMTが他の物体に接触している部位を、真上から投影した領域を求める。例えば物理シミュレーションの結果、図45AのワークモデルWMTが図46Aのように倒れた姿勢で仮想作業空間内に置かれた場合は、このワークモデルWMTが仮想作業空間の床面と接触している部位を真上から見た投影領域は、図46Bのようになる。
また、物理シミュレーションの結果、図45AのワークモデルWMTが図47Aのように直立した姿勢で仮想作業空間内に置かれた場合は、このワークモデルWMTが仮想作業空間の床面と接触している部位の投影領域は、図47Bのようになる。
あるいはまた、物理シミュレーションの結果、図45AのワークモデルWMTが図48Aのように収納容器の壁面にもたれかかる姿勢で置かれた場合は、このワークモデルWMTが仮想作業空間の床面と接触している部位の投影領域は、図48Bのようになる。
このようにして得られた投影領域に対して、ステップS4403で最小面積で外接する矩形を求める。例えば図49Aに示す投影領域に対する最小面積外接矩形は、図49Bのようになる。また図50Aに示す投影領域に対する最小面積外接矩形は、図50Bのようになる。さらに図51Aに示す投影領域に対する最小面積外接矩形は、図51Bのようになる。
最後にステップS4404で、ステップS4401で求めた最大面の面積に対するステップS4403で求めた外接矩形の面積の比率を求め、これを姿勢安定性とし、一定以下の比率のものは不安定姿勢と判定する。例えば、図46B及び図49Bの場合は、(最小面積外接矩形の面積)÷最大面積)=28/49≒約57%となる。また図47B及び図50Bの場合は、(最小面積外接矩形の面積)÷最大面積)=4/49≒約8%となる。さらに図48B及び図51Bの場合は、(最小面積外接矩形の面積)÷最大面積)=20/49≒約41%となる。この結果から、姿勢安定性の低い図47Aの直立姿勢のワークモデルWMTを不安定として排除することができる。ここで不安定姿勢と判定する閾値は、固定値とする他、必要に応じてユーザが調整可能としてもよい。
(実施形態10)
以上の例では、ユーザがワークモデルの許容される姿勢等を予め設定し、条件に合致しないワークモデルを排除する構成、いいかえるとワークモデルをバラ積みデータから除外するための排除条件を予め設定することで、バラ積みデータに不自然なワークモデルが含まれないようにしてピッキング動作シミュレーションの精度や再現性を向上させる例を説明した。ここでは、ユーザが姿勢条件設定部16を用いて、ワークモデルの姿勢や位置に制限を加えることで、カスタマイズされたバラ積みデータを生成している。ただ、本発明は必ずしもユーザがワークモデルをバラ積みデータから除外するための排除条件を手動で設定する必要はなく、ワークモデルを除外する条件を自動で設定するように構成してもよい。このような例を実施形態10に係るロボットシミュレーション装置として、図52のブロック図に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部11と、バラ積みデータ生成部20と、表示部3と、除外ワーク選択部18と、除外条件算出部19と、ピッキング動作シミュレート部30とを備える。実施形態10において、上述した実施形態1等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
除外ワーク選択部18は、表示部3上に表示されたバラ積みデータを構成するワークモデルの内、ピッキング動作シミュレーションから除外したいワークモデルをユーザに選択させるための部材である。
除外条件算出部は、除外ワーク選択部で選択された除外対象のワークモデルに対して、該ワークモデルを除外するための除外条件を自動的に算出するための部材である。
これにより、ユーザが手動で不自然な姿勢のワークモデルを除外するための条件を設定すること無く、除外するように指定されたワークモデルの位置や姿勢から、自動的にワークモデルを排除する条件を算出して、このような排除条件に合致するワークモデルをバラ積みデータから排除するように構成できる。この結果、ユーザ側でワークの排除条件を詳細に設定する手間をなくすことができる。またユーザは、除外したいワークモデルの一部を選択することで、自動的に排除条件が算出されて、他の排除すべきワークモデルも自動で選択されるので、この点においても利便性の向上が図られる。
(実施形態11)
また、ユーザがワークモデルを排除するための排除条件を手動で設定することと、ロボットシミュレーション装置側での排除条件の自動算出を併用することもできる。このような例を実施形態11に係るロボットシミュレーション装置として、図53のブロック図に示す。この図に示すロボットシミュレーション装置は、ワークモデル設定部11と、検出用設定部50と、バラ積みデータ生成部20と、表示部3と、除外ワーク選択部18と、除外条件算出部19と、ピッキング動作シミュレート部30とを備える。検出用設定部50は、姿勢条件設定部16を備えている。実施形態11においても、上述した実施形態1等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。このように、ユーザが手動でワークモデルの排除条件を設定しつつ、ロボットシミュレーション装置側でも自動的に排除条件を算出して、必要に応じて排除条件の修正や好ましい角度範囲を提案するなどして、ユーザによる姿勢条件等の排除条件の設定作業をサポートすることが可能となる。
なお、ワークモデルの姿勢を制限する方法は、上述した図38等の方法に限定されるものでなく、他の方法も適宜採用できる。例えば、ワークモデルの姿勢をZYXオイラー角で表現する場合、X軸に対する角度Rx、Y軸に対する角度Ry、Z軸に対する角度Rzのそれぞれに対し、規定の範囲内になるように制限を行うことができる。また、Z軸に対する第一の回転角R1、Y軸に対する第二の回転角R2、Z軸に対する第三の回転角R3のそれぞれに対し、規定の範囲内になるように制限を行うように構成してもよい。
さらにワークを段積みして収納容器に収納する態様には、図54で示すような中敷きや、図55で示すような間仕切りが存在する場合もある。このような場合に、各段の間に、中敷きや間仕切りをモデル化したデータを介在させて物理シミュレーションを実行することで、このような中敷きや間仕切りも考慮した段積み状態を生成することができる。これら中敷きや間仕切りもCADデータ等でモデル化することができる。また、これら中敷きや間仕切りもロボットでピッキングする場合のピッキング動作シミュレーションも合わせて行うこともできる。この場合、中敷きや間仕切りは、吸引式のエンドエフェクタで排除する他、予め中敷きや間仕切りの一部に、把持式や挿入式のエンドエフェクタで把持し易いように、開口部やスリット等を設けておくこともできる。
(ワークモデルを一つ取り出したことによる残りのワークモデル群の変化)
ここで、ワークモデルを一つ、ワークモデル群から取り出した後のワークモデル群の変化について検討する。従来、バラ積みされたワークモデルのいずれかがエンドエフェクタモデルで把持可能と判断され、ピッキング動作シミュレーションによって取り出される場合、取り出し時や取り出された後の、バラ積みされたワークモデル群の状態については、考慮されていなかった。例えば、図56に示すバラ積みされたワークモデル群において、破線の丸で囲まれたワークモデルは、その下に位置するハッチングで示すワークモデルが存在することによって支えられている。このため、ハッチングされたワークモデルが取り去られたとすれば、本来は倒れるべきである。
しかしながら、従来の物理シミュレーションでは、ハッチングされたワークモデルがなくなったとしても、図57に示すように、その他のワークモデルの位置や姿勢に変化は生じなかった。これは、物理シミュレーションの動作自体が重い処理のため、一度実行させるのみで足りるとして、敢えて再実行させることが考慮されていなかったためと考えられる。しかしながら、図57に示す破線の丸で囲まれたワークモデルのように、支えるものがないのに宙に浮いたような姿勢で止まることには現実にはあり得ず、このような状態でピッキング動作シミュレーションを行っても、現実のワークの位置や姿勢と合致せず、よってピッキング動作シミュレーションが成功したとしても、実運用時には失敗するなど、ピッキング動作シミュレーションの再現性や精度に問題が生じることが考えられる。また、ワークの下側に位置するワークのみならず、周囲で接触しているワークであっても、これらが取り出されると、その近傍のワークモデルにも影響が生じて、バランスが崩れるなどしてワークモデルの位置が変わることも考えられる。従来は、このようなワークの取り出しによる、残りのワーク群の変化については考慮されておらず、このことがピッキング動作シミュレーションの精度に影響を与えることを本発明者らは見出した。
そこで、このような知見に基づき、ワークが取り出された結果、残りのワーク群の位置や姿勢に変化が生じることをも推測することで、より実運用時のワークのバラ積み状態に近付けた精度の高いピッキング動作シミュレーションを実現するべく、本発明を成すに至った。具体的には、物理シミュレーションを再実行することを許容するものである。この結果、図58に示す破線の丸で囲まれたワークモデルのように、位置のワークモデルが除去された後、ワークモデル群が重力の作用を受けて状態が変化した様子を再現できるので、ピッキング動作シミュレーションもこれに基づいて、より実運用時に近い状態で実行させることができる。
(物理シミュレーションを再実行する範囲)
物理シミュレーションを再実行する範囲は、例えば、ピッキング動作シミュレート部により一のワークモデルの取り出しが行われた後、バラ積みデータに含まれる残りのワークモデルのすべてに対して、再実行するよう構成することができる。あるいは、一のワークモデルの取り出しが行われた後、バラ積みデータに含まれる残りのワークモデルの内、取り出されたワークモデルの周囲に存在するワークモデルに対して、物理シミュレーションを再実行するよう構成してもよい。あるいはまた、一のワークモデルの取り出しが行われた後、バラ積みデータに含まれる残りのワークモデルの内で、取り出されたワークモデルに接触していたワークモデル、又は取り出しの過程でロボット又はこれに把持されたワークモデルと干渉するワークモデルに対して、物理シミュレーションを再実行するよう構成してもよい。
(物理シミュレーションを再実行するタイミング)
また物理シミュレーションを再実行するタイミングは、典型的には、ピッキング動作シミュレーション中にワークモデルを取り出すタイミングである。すなわち上述した図25のステップS2509のような、ワークモデルの数を一つ減らすタイミングである。例えばピッキング動作シミュレーションで一のワークモデルが取り出される度に、毎回物理シミュレーションを再実行するよう構成できる。ただ本発明は、物理シミュレーションを再実行するタイミングを、ワークモデルを取り出すタイミングに限定しない。例えば、ピッキング動作シミュレーションが実行されている間、予め定めた頻度で物理シミュレーションを再実行するよう構成してもよい。あるいは、一のワークモデルが取り出される度毎に、物理シミュレーションを再実行するか否かの要否を判定してもよい。この場合、不要と判定された場合は物理シミュレーションの再実行を行わない。
さらに、一のワークモデルが取り出された際に、この取り出されるワークモデルに接触していたワークモデルが存在しない場合には、物理シミュレーションの再実行が不要と判定してもよい。
(表示ユーザインタフェース)
さらに、表示部において、更新されたバラ積みデータをリアルタイムに更新して、ユーザに視覚的にバラ積みデータの変化の状態を示すことも可能となる。特に表示部の表示内容の更新頻度を上げることで、バラ積みデータすなわちバラ積みされたワークモデル群がワークモデルの取り出しによって移動したり崩れる様子などを動画のように表示でき、ユーザに対してより視覚的に判り易い表示態様を提供できる。
(ワークモデルの数を一つ減らす手順)
ここで、上記図25のステップS2509において、ワークモデルの数を一つ減らす手順の詳細を、図59のフローチャートに基づいて説明する。
まずステップS5901において、ピッキング動作により取り出される対象となるワークモデルの、取り出し経路等の取り出しパラメータを設定する。取り出しパラメータとは、例えばどのワークを、どの位置で把持して、どの方向に、どのくらいの速度で取り出すか、ワークの特性(例えば反発係数)、等が挙げられる。
次にステップS5902において、物理シミュレーション部が起動しているか否かを判定し、起動している場合はステップS5904に進み、物理シミュレーション部を起動する。一方、起動していない場合は、ステップS5903に進んで、物理シミュレーション部を起動した上でステップS5904に進む。
ステップS5904においては、ワークモデルの取り出し動作を実行する。この段階で、ワークモデルの状態に応じて、物理シミュレーションの再実行の有無を判定させてもよい。例えば上述の通り、ユーザに対し、物理シミュレーションの再実行の有無を選択させるように、表示部のユーザインターフェース画面上から促す。あるいは、取り出されるワークモデルが、他のワークモデルに接触していない場合は、物理シミュレーションの再実行をしないと判定する。
そして、物理シミュレーションの再実行がユーザにより指定されるなど、物理シミュレーションの再実行がなされた場合には、ステップS5905において、一定時間後の各ワークモデルの状態を確認する。すなわち、ワークモデルが取り出されることで、他のワークモデルが崩れたり滑ったり傾いたりといった何らかの移動が生じている場合には、その移動が終わって静止状態となるまでの間、待った上で、静止状態を表示させる。なお、このようなワークモデル群の動きは、表示部上でリアルタイムに表示させる他、非表示としてロボットシミュレーション装置で内部的に行わせてもよい。この場合は、演算により物理シミュレーション後の状態を生成するため、一定時間の経過を物理的にウェイトする必要は必ずしも必須でない。
次にステップS5906において、取り出し対象のワークモデルが他のワークモデルに干渉しないか否かを判定し、干渉する場合はステップS5904に戻って処理を繰り返し、干渉している場合は、ステップS5907に進み、取り出し対象であるワークモデルが取り出されたものとして、仮想作業空間から削除する。
さらにステップS5908において、一定時間後の各ワークモデルの状態を確認して、ステップS5909に進み、全てのワークモデルの位置及び姿勢が前回の確認時から変化していないか否かを判定し、変化が生じている場合はステップS5908に戻って処理を繰り返し、変化が生じていない場合は処理を終了する。このようにして、ピッキング動作シミュレーションにおいて、物理シミュレーションを必要なタイミング、範囲で再実行することにより、ワークが順次ピッキングされる度に生じ得る変化をも再現して、より正確なシミュレーション結果を得ることが可能となり、実運用時との乖離の少ない、適切な条件設定に寄与し得る。
なお、上記の例ではピッキング動作シミュレーションにおいて、ワークモデルを取り出すシミュレーションを行う例を説明したが、本発明はこの例に限らず、例えばワークモデルの取り出しシミュレーションを行わずに、取り出し対象のワークモデルを一つ削除し、削除後の状態を初期状態として物理シミュレーションを開始しても良い。この方法であれば、シミュレーションの処理を簡素化できる。また物理シミュレーションの再実行は、毎回行うのではなく、所定の回数毎に物理シミュレーションを行うようにしても良い。さらに、取り出し対象のワークモデルの近傍のワークモデルに関してのみ、物理シミュレーションを行うように、物理シミュレーションの範囲を制限してもよい。この設定は、例えば後述するシミュレーション環境設定部で行わせることができる。あるいは、取り出し対象のワークモデルの周囲の状況を確認し、このワークモデルが取り出される経路上に他のワークモデルがあるときのみ、物理シミュレーションを実行するようにしても良い。
このようにして、より実運用時に近い状態のピッキング動作シミュレーションをユーザに提供することが可能となる。また、ピッキング動作シミュレーションを用いた網羅的な機能を確認することもできる。例えば、ピッキング動作において、前回取り出されたワークモデルの周辺のワークモデルは、次回の取り出し対象としないといった技術が提供されている。この方法では、あるワークモデルを取り出した後に、位置や姿勢が変化していないと想定されるワークモデルについては、再撮像実行しないでピッキング動作に移ることとしている。しかしながら、いずれかのワークモデルを取り出した後の状態を再度物理シミュレーションしないと、本来崩れるはずの場所も崩れない状態となっているため、その機能については正しく検証できない状態になってしまう。そこで、上述の通りワークモデルの取り出し後に再度物理シミュレーションを実行させることで、ワークモデルの動きによって動作の成否が変わる機能に対しても、検証を行うことができるようになる。
以上のようにして、バラ積みデータから順次ワークモデルを取り出すピッキング動作シミュレーションにおいて、いずれか一つのワークモデルがロボットにより取り出された後に、このワークモデルが取り出された後の状態のバラ積みされたワークモデル群に対して、重力の作用を適用する物理シミュレーションを適用して、バラ積みデータを更新することができる。これにより、いずれか一つのワークモデルが取り出されたことにより、取り出されたワークモデルに接触していた他のワークモデルが物理的に不自然な状態、例えば中に浮いたような状態になることを防止できる。
(ワークモデルのバラ積み画像の生成)
ここで上記図25のステップS2502における、物理シミュレーションによって得られるワークモデルのバラ積み画像の生成について詳述する。図26に示した物理シミュレーションにより得られた、複数個のワークモデルが積み上げられた位置姿勢データを元に、三次元のバラ積みデータ(3D計測データ)が生成される。ステップS2502では、このバラ積みデータから、バラ積み画像として高さ画像を生成する。高さ画像とは、画像を構成する各画素値に、高さの値が格納されている画像である。典型的には、高さを輝度値で表現した画像である。高さ画像の生成方法については、上述した通りZバッファ法が好適に利用できる。
(無効画素)
このようにして高さ画像を生成した後、同時に作成しておいた法線画像を参照して、面が一定以上傾いている画素を無効画素化する。この高さ画像と法線画像とは、各画素が一対一で対応している。なお、無効画素とは、三次元計測することができなかった箇所を示す画素である。例えば、画素値が0になっておれば、当該画素を無効画素と判断できる。
例えば、センサ部を構成するプロジェクタとカメラの両方で見えていない部位すなわち画素を無効画素とする。なお、画素の無効化については、一定の閾値を基準として一律に無効化する他、角度範囲に応じて重み付けをしてもよい。
以上の構成により、実運用時の三次元計測の可否を考慮した正確なバラ積みデータを構築できる。金属ワーク等の鏡面反射の強いワークは、面が一定以上傾くと、センサ部を構成するプロジェクタからの投影パターンが反射しなくなるため、三次元計測ができなくなる。従来のピッキング動作シミュレーションでは、この点が考慮されておらず、すべてのワークの三次元形状が計測されるものとの前提でシミュレーションが行われていたため、実運用時との齟齬や乖離が生じていた。例えば物理シミュレーションの結果、図60Aに示すようなバラ積みデータが得られた状態で、ワークモデルWMの各面の傾斜などを考慮することなく単純に高さ画像としたバラ積み画像では、図60Bの平面図や図60Cの点群表示画像に示すようになる。このバラ積み画像では、実運用時には三次元計測できない急峻な傾斜面も計測できる結果となってしまっている。
これに対し本実施形態によれば、バラ積みデータをそのまま利用するのでなく、ピッキング動作シミュレーション上でワークの三次元形状の計測の可否状態を再現したシミュレーション用データを生成することができる。この結果、図60Aのバラ積みデータから、図60Dの平面図や図60Eの斜視図に示すような、急な斜面は三次元計測できない無効画素として表示された、より実運用時に近いバラ積み画像を生成することができる。これにより、ピッキング動作シミュレーションを実運用時と近付けて、より正確なシミュレーションに基づき、事前の設定作業を行うことが可能となる。
以上のように、CADデータがあれば、実際のワークを用意したりバラ積みさせたりしなくても、実運用に近い状態で、効率的に検証することができるようになる。ただ、実際のワークを用意してバラ積みした状態でピッキング動作シミュレーションを行うことも可能である。
(角度閾値)
次に、ワークモデルを構成する面の傾斜角度の閾値を設定する手順について説明する。ここで、図6のセンサ部2を用いて、鏡面反射の弱いワークWK4の三次元形状を取得可能な角度範囲を図61Aに、鏡面反射の強いワークWK5の三次元形状を取得可能な角度範囲を図61Bに、それぞれ示す。これらの図に示すように、ワークを構成する材質が、樹脂等のような、鏡面反射が弱い、いいかえると拡散反射の強い場合と、金属等のような、鏡面反射が強い、いいかえると拡散反射の弱い場合とでは、計測可能な角度範囲に違いが生じる。すなわち、鏡面反射が強いと、プロジェクタの投影パターンがワークの表面で反射され難くなり、面が少し傾くと計測不可となる。図61Aに示す樹脂製のワークWK4では、センサ部2からワークに下ろした鉛直面から75°の範囲までの傾斜面であれば計測可能となっている。一方図61Bに示す金属製のワークWK5では、鉛直面から45°の範囲までの傾斜面であれば計測可能となっている。なお角度閾値は、上述の通り鉛直方向からの傾斜角度として表現する他、カメラとプロジェクタの傾斜角度で表現してもよい。
そこで本実施形態では、水平面に対し何度の傾斜面まで計測できるかを示す角度閾値を設定可能とすることができる。角度閾値を、対象となるワークの材質に応じて、調整できるようにすることで、ワークに応じた適切なピッキング動作シミュレーションが実現される。
(検出用設定部50)
このような角度閾値は、上述した図24の検出用設定部50から行うように構成できる。検出用設定部50で行われた角度閾値の設定に基づいて、領域推定部22は、センサモデル設定部15で設定されたセンサモデルの仮想的な三次元測定光源から延長された測定軸に対して、予め定めた角度閾値以上の傾斜角度を有する領域を、三次元計測が困難な領域として推定する。
角度閾値は、予め定めた固定値としてもよい。あるいは、角度閾値を、表面状態パラメータ設定部12で設定された表面状態パラメータによって変化させてもよい。さらにセンサ部で実測した三次元計測データに基づいて、角度閾値を変化させてもよい。
上述の通り角度閾値は、対象となるワークに応じて設定できる。例えば、樹脂製のワークを想定し、75°の傾斜面まで計測可能として角度閾値を設定した場合に得られるバラ積み画像の例を図62Aに、その要部拡大図として樹脂製ワークモデルWM4を示す拡大図を図62Bに、それぞれ示す。また金属製のワークを想定し、45°の傾斜面まで計測可能として角度閾値を設定した場合に得られるバラ積み画像の例を図62Cに、その内の金属製ワークモデルWM5を拡大した要部拡大図を図62Dに、それぞれ示す。これらの図に示すように、樹脂製のワークに対して金属製のワークは計測できる部分が限られることから、ピッキング動作シミュレーションの対象が金属製ワークである場合に、この限られた形状特徴でも、ワークの位置及び姿勢を正しく検出できるか否かを、事前に検証することができる。
また、角度閾値によって、計測できる/できないを単純に2値化的に決定するのではなく、乱数を用いて確率的に決定することもできる。ここで、実運用時の計測では、表面状態が一様ではないため、計測できる/できないの境目が綺麗に境界になるわけではない。この結果、無効画素へのなり易さ、なり難さが確率的に変わるような形になる。そのため、乱数を用いて、傾斜角度が小さいところは、除外する確率を下げ、傾斜角度が大きいところは、除外する確率を上げるようにする。このように乱数によって確率的に決定することで、より実際の計測に近い状態を実現できる。
このようにロボットシミュレーション装置によれば、ピッキング動作シミュレーションにおいて、実運用時の計測結果に近い状態の画像を用いて、設定パラメータの調整や最適化が可能となる。例えば、ピッキング動作シミュレーションの結果、ワークの検出自体が難しいことが判明した場合には、対策としてワークの搬送方法や積み方を改善する必要があるなどを講じることができるようになる。このようにして、実際にワークを準備したり、センサ部を設置することなく、事前に順当な対応策を検証できるようになる。
(カメラの位置に基づく困難領域の排除)
(実施形態12)
また、領域推定部で困難領域を推定する方法は、上述した面の傾斜角度に限られず、センサ部のカメラの位置に基づいて決定することもできる。このようなロボットシミュレーション方法を、実施形態12として以下説明する。
上述した通り、バラ積みピッキングのシミュレーションにおける、シミュレーション用データの生成に際して、ワークの三次元のCADモデルと、このCADモデルをワークモデルとしてバラ積みしたときの各ワークモデルの位置及び姿勢のデータがあれば、上述したZバッファ法等を利用して、上から見たときの仮想的な画像、すなわちバラ積み画像を生成できる。
しかしながら、Zバッファ法では上から見えるデータはすべて描画される。この結果、周囲にワークモデルが積まれていても、上から見たときに見えている限りは描画されてしまう。例えば図63のバラ積み画像に示す例を考える。ここで三次元計測を行うセンサ部が、例えばTOF方式を用いたTOFセンサの場合は、実際もこのような画像になる。しかしながら、図64に示すようなパターンプロジェクション方式のように、投影位置と撮像位置が異なる場合は、両方の位置から見えることが計測できる条件になる。そのため、図64のように、プロジェクタモデルPMからは見えても、カメラモデルCMMから見えない位置にある奥まった部位は計測できないことになる。実運用時に近いピッキング動作シミュレーション結果を得るには、このような点は除去することが望ましい。
そこで実施形態12においては、高さ画像を作成した後に、この高さ画像を構成する各画素で、カメラモデルから見えるかどうかを判定し、見えるものだけを残すようにする。例えば、図3等の領域推定部22が、センサモデルで三次元計測を行う際の仮想的な三次元測定光源と、バラ積みデータを構成する各点とをそれぞれ結ぶ線分を仮想光軸として定義し、仮想光軸上に別のワークモデルの点が存在するか否かを判定する。そして別のワークモデルの点がある場合は、三次元計測が困難な点と推定し、このような三次元計測が困難な点の集合でもって推定領域を規定する。これにより、仮想光軸とワークモデルとの干渉の有無に基づいて、計測の困難さを推定することができ、もってシミュレーションの精度を高めることができる。
このような他のワークモデルにより死角となる領域の判定する具体的な手法として、三次元のバラ積みデータを構成する各点(ボクセル)において、この点とカメラモデルとを結ぶ線分を定義する。この線分上に、別のボクセル点がある場合は、カメラモデルからその点は見えないと判定する。
また図6に示したように、センサ部2にカメラが2つ以上ある場合は、少なくとも1つのカメラモデルから見えている点を残すようにする。例えば図65Aにおいては、カメラモデルCMMからワークモデルWMが見えているので、有効なボクセルと扱う。一方、図65Bに示すように、ワークモデルWM6の一部が他のワークモデルWM7に隠れてカメラモデルCMMから見えない場合は無効なボクセルと扱う。また図65Cに示すように複数のカメラモデルCMM2、CMM3のいずれかでワークモデルWMが見えている場合は、有効なボクセルとして扱う。このようにすることで、奥まっていて実際には見えないような部位は、バラ積み画像上から除外して、実運用時に撮像した画像に近い画像を得ることで、正確なバラ積みシミュレーションを行える。
(実施形態12に係るピッキング動作シミュレーションの手順)
ここで、実施形態12に係るピッキング動作シミュレーションの手順を、図66のフローチャートに基づいて説明する。上述した実施形態1に係る図25のフローチャートと同じ動作については、詳細説明を適宜省略する。まず、ステップS6601において、シミュレーション環境を設定する。次にステップS6602において、ワークモデルのバラ積み画像を生成する。このワークモデルのバラ積み画像を生成する手順の詳細を、図67のフローチャートを用いて説明する。
(実施形態12に係るバラ積み画像の生成手順)
まずステップS6701において、乱数に基づいてワークモデルの姿勢、投下位置を設定する。次にステップS6702において、ワークモデルを投下させて物理シミュレーションを実施する。さらにステップS6703において、指定された数のワークモデルが投下されたか否かを判定し、未だの場合はステップS6701に戻って処理を繰り返す。そして、指定された数のワークモデルが投下されたと判定すると、ステップS6704に進み、各ワークモデルの位置、姿勢に基づいて、ワークモデルのバラ積み画像を生成する。ここでは、三次元のバラ積みデータから高さ画像を生成する。
(バラ積み画像の生成手順)
ここで、ステップS6704においてバラ積み画像を生成する手順の詳細を、図68のフローチャートに基づいて説明する。まずステップS6801において、バラ積みデータを、CADデータを登録された位置及び姿勢に変換する。次にステップS6802において、これをZバッファ法で高さ画像に描画し直す。そしてステップS6803において、すべてのワークモデルを描画したかを判定し、未だの場合はステップS6801に戻って処理を繰り返す。この結果、すべてのワークモデルの描画を終えた場合はステップS6804に進む。
ステップS6804では、高さ画像の1点とカメラモデルとを結ぶ直線を計算する。ここでは、三次元の仮想作業空間内におけるカメラモデルの位置は、事前に定義されているものとする。その上で、図69に示すようにワークモデルWMの高さ画像の各画素で各カメラモデルCMMと結ぶ直線式を計算する。例えば次式で近似する。
ax+by+cz=d
そしてステップS6805において、図70に示すように、カメラモデルCMMと結ぶ直線上に障害物、ここでは別のワークモデルWMが存在するかをチェックする。具体的な方法としては、高さ画像上での二次元線に変換する。その線上の高さ画像の各点と、その位置で線上のZ値を計算し、高さ画像の点のほうが高い位置にある場合は、カメラモデルから見えないと判断する。
さらにステップS6806において、すべてのカメラモデルから見えない点を除去する。さらにステップS6807において、すべての画素で実施したか否かを判定し、未だの場合はステップS6804に戻って処理を繰り返す。そして、すべての画素で実施したと判定されると、処理を終了する。
このようにして図68、図67の手順を経て、図66のステップS6602でバラ積み画像が得られると、次にステップS6603において、各ワークモデルの位置と姿勢の検出を試みる。さらにステップS6604において、各ワークモデルの位置と姿勢が検出できたか否かを判定し、検出できる場合はステップS6605に進み、検出できない場合はステップS6609にジャンプして、残ったワークモデルに関する情報を抽出した後、処理を終了する。
ワークモデルの位置と姿勢が検出できた場合は、ステップS6605において、エンドエフェクタモデルと周辺データとの干渉判定を行い、把持解の算出を試みる。そしてステップS6606において、把持解を算出できたか否かを判定し、算出できた場合はステップS6607に進み、算出できない場合はステップS6609にジャンプして、残ったワークモデルに関する情報を抽出した後、処理を終了する。
把持解を算出できた場合はステップS6607において、ワークモデルの数を一つ減らす。そしてステップS6608において、未処理のワークモデルが残っているか否かを判定し、残っている場合はステップS6602に戻って処理を繰り返し、残っていない場合はステップS6609に進む。ステップS6609においては、残ったワークモデルに関する情報を抽出する。
このようにして、ピッキング動作シミュレーションがピッキング動作シミュレート部によって実行される。このようにして、カメラを用いたセンサ部でワークの三次元形状を測定できない測定困難領域を、より正確に推定することが可能となる。
なお、以上の例では、カメラ側から見えるか否かで無効画素を判定したが、カメラだけではなくプロジェクタの位置も定義し、プロジェクタから見え、かつカメラの何れかから見えるという条件に設定することもできる。さらにカメラの位置を明確に定義せずに、周りの点よりも一定以上低い点は消すなどして、同様の効果を得てシミュレーションすることもできる。
以上のようにロボットシミュレーション装置によれば、現実にセンサ部を配置したりワークを積み上げる等の準備をしなくとも、バラ積みワークを撮像した状態に近い状態を仮想的に構築して、シミュレーションを事前に行うことが可能となる。特に実運用時に三次元計測ができない領域を考慮したシミュレーションを行うことで、シミュレーションと実運用時の乖離を低減でき、信頼性の高いシミュレーションが可能となる。
(角度閾値決定部54)
(実施形態13)
以上の例では、仮想的なバラ積みデータに基づいて角度閾値を設定する例を説明した。ただ本発明はこの構成に限らず、実際にワークをバラ積みした状態をセンサ部で測定した結果に基づいて、角度閾値を設定することもできる。この場合は、ワークを無作為にバラ積みしたワーク群に対して、実際にセンサ部で三次元計測を行う。このため、画像処理部であるロボットシミュレーション装置に、センサ部を接続する。
このようなロボットシミュレーション装置の詳細を、実施形態13として図71のブロック図に基づいて説明する。この図に示すロボットシミュレーション装置500は、センサ部2と、計測データ記憶部52と、角度閾値決定部54と、ワークモデル設定部11と、物理シミュレーション部60と、バラ積みデータ生成部20と、シミュレーション用データ生成部40と、ピッキング動作シミュレート部30とを備えている。実施形態13においても、上述した実施形態1等と同じ部材については、同一の符号を付して詳細説明を適宜省略する。
計測データ記憶部52は、積み上げられた複数の異なる姿勢のワークを、センサ部2により三次元計測した、センサ部2の測定軸に対する傾斜角度の情報を各位置毎に有する三次元計測データを記憶するための部材である。このような計測データ記憶部52は、ハードディスクのような固定記憶媒体、半導体メモリやその他の可搬メディア等が利用できる。
角度閾値決定部54は、計測データ記憶部52に記憶された複数のワークの三次元計測データを構成する各点の、センサ部2の測定軸に対する傾斜角度情報に基づいて、三次元計測の可否を判定する基準となる角度閾値を決定するための部材である。なおセンサ部2の測定軸とは、センサ部2が三次元計測を行うための三次元測定光源が発する測定光の光軸である。またセンサ部2の測定軸は、鉛直方向等、所定の方向としてもよい。
図71に示す領域推定部は、バラ積みデータ生成部20で生成されたバラ積みデータ内の各ワークモデルを構成する各点の仮想傾斜角度と、角度閾値決定部54で決定された角度閾値とを比較し、該角度閾値よりも大きな仮想傾斜角度を有する点を、計測困難と推定される推定領域として特定する。これにより、現実にセンサ部2で計測したワークの傾斜角度に基づいて定めた角度閾値を基準として、測定困難と推定されるデータを予め排除した上でシミュレーション用データを取得できるため、より精度の高いピッキング動作のシミュレーションが可能となる。
また実施形態13に係るロボットシミュレーション装置500は、表示部3を備えてもよい。この表示部3は、計測データ記憶部52に記憶された複数のワークの三次元計測データを構成する各点の、センサ部2の測定軸に対する傾斜角度情報に基づいて、各点の傾斜角度を累積した分布を示す角度分布ヒストグラムを表示可能としている。
ここで、実測データに基づいて三次元計測可能なワークモデルの姿勢を決定する方法について説明する。センサ部によってバラ積みされたワーク群の三次元計測できるか否かを判定する際には、上述の通り予め設定された角度閾値を参照する。しかしながら、角度閾値はワークによって異なる。例えば、相対的に計測し易い樹脂製のワークは、表面が傾斜していても計測できる。しかし、光沢の強い金属製のワークでは計測できない。そのため、対象となるワークに応じて角度閾値を調整することが望ましい。しかしながら、その設定は容易でなく、設定された値によっては望む結果を得ることができなくなる。
そこで実施形態13においては、実際にワークを三次元計測した三次元計測データに基づいて、最適な角度閾値を決定する。具体的には、角度閾値決定部54でもって、実際にバラ積みされたワーク群を撮像した画像の、各画素に対して表面傾きを計算し、全体の角度分布を測定する。この角度分布を使って、どの程度表面が傾いても計測できるワークであるかを判定し、最適な閾値を決定する。この方法であれば、ワークの材質や表面状態のばらつき、用いられるセンサとの相性や湿度、気温等による変動等によらず、実際に計測した三次元計測データに基づいて、角度閾値を決定できるため、信頼性の高い角度閾値の選択が可能となる。
(角度分布ヒストグラム)
ワークの三次元計測データを構成する各点の傾斜角度を累積した分布を示す角度分布ヒストグラムは、例えば角度閾値決定部54で行われる。あるいは、センサ部に角度閾値決定部や計測データ記憶部を統合してもよい。
一例として、図72に示すようなバラ積みされたワーク群を実際に三次元計測した高さ画像から、角度分布ヒストグラムを図73、図74にそれぞれ示す。図73は樹脂製のワークの角度分布ヒストグラムを、図74は金属製のワークの角度分布ヒストグラムを、それぞれ示している。樹脂製のワークは表面が乱反射するため、表面とセンサ測定軸との傾斜がある程度大きくても三次元形状を測定できる。そのため図27に示すように広い角度範囲に計測された点が分布している。一方、金属製のワークは正反射成分が大きいため、表面とセンサ測定軸との傾斜が大きくなると測定できなくなってしまう。よって図28のように傾斜角度が小さい領域に分布が固まっている。このような角度分布ヒストグラムは、表示部3の、例えば角度分布ヒストグラム表示領域に表示させる。角度分布ヒストグラム表示領域は、例えばロボットシミュレーション装置であるコンピュータにインストールされた、ロボットシミュレーションプログラムのGUIで実現される。
このようにして表示された角度分布ヒストグラムから、どのくらいの角度範囲において三次元計測結果が得られているかどうかを判断することができる。ユーザは、表示部上に表示された角度分布ヒストグラムから、多くの点すなわち画素で三次元測定がなされている角度範囲を数値で、あるいは画面上から直接指定して、角度閾値を手動で設定できる。例えば図73、図74の例では、いずれも80%以上の画素が含まれる角度範囲として、樹脂製のワークの場合60°、金属製のワークの場合35°を指定している。
また、角度閾値の設定は、ユーザが手動で行う他、ロボットシミュレーション装置側で自動的に設定するように構成してもよい。例えば、角度閾値決定部でもって、画素の80%以上で三次元測定可能な角度を角度閾値として、自動的に演算する。この場合、角度分布ヒストグラムの表示は任意であり、表示させずに内部的に演算してもよい。すなわち、角度分布の情報が得られれば、ヒストグラム状に表示させることは必須でない。また、自動的に演算された角度閾値を表示部上に表示させてもよい。この際、角度分布ヒストグラムに対し、角度閾値を満たす範囲をハイライトさせて表示させてもよい。
実施形態13に係るロボットシミュレーション装置500を用いたピッキング動作シミュレーションは、上述した図67、図68と同様の方法で行われる。角度閾値の設定は、例えば図67のステップS6701のシミュレーション環境の設定時に行う。ここで、シミュレーション環境の設定手順を、図75のフローチャートに基づいて説明する。
(実施形態13に係るシミュレーション環境の設定手順)
まずステップS7501において、バラ積み状態のワーク群の三次元形状をセンサ部で計測する。これによって、図76に示すような高さ情報を有する高さ画像が得られる。この例では、パターンプロジェクション方式で三次元計測を行っているが、他の方法、例えばステレオ計測やTOFなどを利用することもできる。
次にステップS7502において、撮像された三次元の高さ画像を構成する画素毎に、傾き情報を生成する。ここでは、高さ画像に対して微分処理を行うことで、法線マップを作成できる。この法線のZ成分から、各点の傾きを計算する。各点の傾きは、次式で表現できる。
θ=acosNz(Nz:法線のZ成分)
そしてステップS7503において、傾き情報の分布を示す角度分布を演算する。ここでは、選択した範囲内の傾き分布を作成する。ここで高さ画像中に含まれる床面を演算に含めると、傾き0の割合が増えてしまう。そこで、このような領域を排除するようマスク処理を行うことが好ましい。例えば、一定以下の高さは無視する。また、無効画素の近傍では、法線の情報が不安定になりやすいため、これも無視してもよい。
最後にステップS7504において、演算された角度分布から、ピッキング動作シミュレーションに用いる角度閾値を決定する。例えば、累積分布が80%以上になる角度を、計測できる角度の閾値とする。このようにして、ピッキング動作シミュレーションの環境設定の1つとして、角度閾値を決定できる。
なお、以上の例ではバラ積みされたワーク群を1回撮像した結果から角度分布を作成しているが、本発明はこの構成に限られない。例えば、ワーク群を複数回撮像した結果から分布を作成してもよい。例えば複数回の撮像で得られた高さ画像の平均から、角度分布を作成することで、散発的なノイズの影響等を低減して安定度を向上させることができる。
このように実施形態13によれば、バラ積みピッキングのシミュレーションを行う際に、ワークの位置及び姿勢を既知としてシミュレーションしない。これに代えて、センサ部での撮像を模した画像を作成し、この模擬画像に対して三次元サーチ処理を行って、ワークの位置及び姿勢を得る。これによって得られた位置及び姿勢を使ってシミュレーションを行う。これにより、仮想的に得たワークの位置及び姿勢でなく、実際のワークの位置及び姿勢に応じた、より実際に近いシミュレーション結果を得ることができる。
なお、さらに実際に近い模擬画像を得るために、ワークの表面のすべてを三次元計測可能とせず、ワークの表面の角度によって計測可能か否かを判断し、計測できない場合は模擬画像からデータを削除してもよい。例えば上述した実施形態1のように、領域推定部でもって無効画素をバラ積みデータから除去する。具体的には、図71に示す計測データ記憶部52に記憶された複数のワークの三次元計測データを構成する各点の、センサ部2の測定軸に対する傾斜角度情報に基づいて、三次元計測の信頼性が低い点を無効画素として除去する。そして無効画素を除去したデータに基づいて、角度閾値決定部54で角度分布を演算する。
このようにして、実施形態13に係るロボットシミュレーション装置500によれば、撮像シミュレーションを行う際の最適な角度閾値を実測データに基づいて決定でき、より実際に近いバラ積みシミュレーションを行える。
(実施形態14)
以上の例では、バラ積み状態のワーク群をセンサ部で実際に撮像した高さ画像のヒストグラム等に基づいて角度閾値を決定する例を説明した。さらに本発明は、実際に撮像した画像に対して三次元サーチを行い、このサーチ結果を用いて、計測できる角度範囲を決定することもできる。このような例を実施形態14として、図77A、図77Bに基づいて説明する。図77Aは、実際にバラ積み状態のワーク群を三次元計測して得られた点群データである三次元計測データのプロファイル、図77Bは、これにサーチ結果を重ね合わせた状態を、それぞれ示している。ここでは、三次元サーチ結果をもとに、サーチモデルとして用いたワークモデルの面上の各点を、図77Bに示すように計測データ上に配置する。そして各面上の点において、対応する計測データがあるかどうかをチェックし、計測できる角度範囲を決定する。図77Aでは、プロファイルの凸状部分が計測可能な領域、両側の平坦部分が計測不可能領域を示している。これに対して、同種のワークに対応するワークモデルでもって三次元サーチを行う。例えば円柱状のワークモデルで三次元サーチしたとすると、図77Bに示すように、合致した部分、図において左側の三点は計測可能と判定し、合致していない部分、図77Bにおいて右側の二点は、計測不可能と判定する。
このような実施形態14に係るロボットシミュレーション装置を用いたピッキング動作シミュレーションの手順やバラ積み画像の生成手順は、上述した図66や図67と同様の手順が利用できるので、詳細説明を省略する。三次元サーチのサーチ結果を用いた角度閾値の設定は、例えば図67のステップS6701のシミュレーション環境の設定時に行う。ここで、シミュレーション環境の設定手順を、図78のフローチャートに基づいて説明する。
まずステップS7801において、三次元サーチ用のサーチモデルの登録を行う。ここでサーチモデルは、上述の通りワークモデル、ここでは三次元のCADデータを用いて登録できる。あるいは、センサ部で実際に撮像した高さ画像を用いて登録してもよい。また登録時に、サーチモデル上の各点において面の傾きを示す法線情報を保存しておく。
次にステップS7802において、実際のワークのバラ積み状態を作り、三次元計測を行う。ここでは投影法で三次元計測を行い、点群データを取得しているが(図77A)、これに限らずステレオ計測やTOFなど、他の方法を用いてもよい。
次にステップS7803において、得られた点群データに対してサーチモデルを用いて三次元サーチを行い、各ワークの位置及び姿勢を決定する(図77B)。
そしてステップS7804において、サーチモデルの各点において対応する計測点が存在するか否かを確認する。ここでは三次元サーチの結果、決定されたワークの位置及び姿勢を用いて、サーチモデル上の点を三次元空間に配置する。この配置した点の近傍に三次元計測データが存在する場合は、当該点は計測ができているものと判定する(図77B)。
最後にステップS7805において、計測点が存在する点の傾き範囲に基づいて、角度閾値を決定する。ここでは三次元サーチで得られたサーチモデルの位置及び姿勢を用いて、計測できたワーク上の点の法線を、三次元空間に配置する。そして、この法線の傾きを計算する。このようにして計測できた点の法線角度範囲を集計することで、ワークが計測できる表面傾きの閾値を、角度閾値決定部でもって決定する。このようにして、三次元サーチの結果に基づいて、角度閾値を決定することができる。
なお、三次元サーチで用いるサーチモデルを構成する各点に法線情報を持たせることで、三次元サーチの結果位置及び姿勢が得られたサーチモデルと重ねたワークの実測値である点群データに傾き情報が得られていなくても、サーチモデル側の傾き情報を利用することができる。例えば図31Bにおいて、点で示す位置の傾き情報としてサーチモデル側の情報を利用することで、実測値が得られていない点(例えば計測不可とされた点)の情報を補うことが可能となる。この際、点群データの内、実測値が得られた点についても、サーチモデル側の傾き情報を利用してもよい。