以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものではない。
図1は、本発明の実施形態に係る測定装置100を備えたロボットシステム1000の構成例を示す模式図である。この図1は、各種製品の製造工場等にある作業空間に配置された複数のワークWKを、ロボットRBTに1つずつ把持させ、所定の場所に設置されているステージSTGまで搬送して該ステージSTG上に載置するばら積みピッキングを行う例について示している。
ロボットシステム1000は、ロボットRBTと、ロボットRBTを制御するロボットコントローラ6とを備えている。ロボットRBTは、産業用の汎用ロボットであり、ベース部が工場等の床面に対して固定されている。ロボットRBTは、例えばマニピュレータ等とも呼ばれており、6軸制御が可能に構成されている。このロボットRBTは、ベース部から延びるアーム部ARMと、アーム部ARMの先端部に設けられたロボットハンドHNDとを備えている。アーム部ARMは、可動部としての関節部を複数備えた多関節型に構成することができる。アーム部ARMの各関節部の動作及びアーム部ARM自体の回転動作によってロボットハンドHNDを可動範囲内の所望の位置まで移動させることができる。
ロボットハンドHNDは、ワークWKを把持することが可能に構成されており、その構造は特に限定されるものではない。例えば、ロボットハンドHNDは、図4Aに示すようにワークWKの外側を挟み込んで把持する構造のロボットハンドHND1、図4Bに示すように空洞部を有するワークWK2の内部に爪部を挿入して拡開させることによって保持する構造のロボットハンドHND2、図4Cに示すように板状のワークWK3を吸引して保持するロボットハンドHND3等があり、いずれのロボットハンドも使用することができる。また、本明細書で「把持」とは、図4Aに示すワークWKの外側を挟み込む方法、空洞部に爪部を挿入して拡開させる方法、吸引する方法等の全ての例を含む意味で使用する。
ロボットコントローラ6はアーム部ARMの動作やロボットハンドHNDの開閉動作(把持動作)等を制御する。またロボットコントローラ6は図2に示す測定装置100から、ロボットRBTの制御に必要な情報を取得する。例えば、図1に示す容器BXに無作為に投入された多数の部品であるワークWKの位置姿勢を、三次元カメラや照明等のセンサ部2を使用して取得し、測定装置100でワークWKの位置や姿勢を検出して、その情報をロボットコントローラ6が取得する。
ロボットシステム1000の機能ブロック図を図2に示す。この図に示すロボットシステム1000は、ロボットRBT及びロボットコントローラ6の他に、測定装置100と、表示部3と、操作部4と、ロボット操作具7とを備える。
操作部4では各種設定を行うための部分である。また、測定装置100は、測定部20を備えており、ワークWKを撮像してワークWKの位置姿勢を測定する。さらにユーザは、表示部3で、各種設定や、ロボットRBTの動作状態の確認、測定装置100の動作状態の確認等を行うことができる。
一方、ロボットコントローラ6は測定装置100から出力される信号に従い、ロボットRBTの制御を行うように構成された周知の部材である。またロボット操作具7は、ロボットRBTの動作設定を行う。なお、図2の例では操作部4とロボット操作具7を別個の部材としているが、これらを共通の部材としてもよい。
センサ部2は、ロボットビジョンなどと呼ばれる、作業空間やワークWKを撮像する部材であり、この実施形態では、ワークWKが少なくとも撮像対象物となり、撮像対象物には容器BXが含まれていてもよい。センサ部2で撮像された画像から、ばら積みされたワークWKの三次元形状を示す三次元形状データ(画像データ)を取得することが可能になる。容器BXの三次元形状を示す三次元形状データも、センサ部2で撮像された画像から取得することができる。
尚、ワークWKや容器BXの三次元形状を取得する方法は、例えば、パターン投影法、ステレオ法、レンズ焦点法、光切断法、光レーダ法、干渉法(白色干渉法)、TOF方式などがあり、これらの方法のうち、どの方法を用いてもよい。各方法は、従来から周知であるため、詳細な説明は省略する。本実施形態においては、パターン投影法のうち、周期的な照度分布を有するパターン光を撮像対象物に照射し、撮像対象物の表面で反射した光を受光する位相シフト法を用いている。
センサ部2と形状測定処理部200とにより、測定部20が構成されている。形状測定処理部200は、センサ部2で取得した画像データに基づいてワークWKの位置姿勢、形状、各部の寸法だけでなく、容器BXの位置、形状や寸法も測定することができる。形状測定処理部200は、測定装置100の一部とすることができるが、別部材として構成することもできる。
測定部20は、X方向及びY方向に加えてZ方向(高さ方向)を含む三次元の測定を行うことが可能な三次元測定部である。測定部20が備えるセンサ部2の具体的な構成は、三次元形状の計測技術に応じて決定される。この例では、センサ部2は、カメラ、照明又はプロジェクタ等を備えている。例えば位相シフト法でワークWKの三次元形状を計測する場合は、センサ部2として図3に示すように、プロジェクタ(投光部)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等を設ける。あるいは、三次元形状データの生成を、形状測定処理部200側で行わず、センサ部2で撮像した生画像を、測定装置100の別の部分で画像処理して三次元画像等の三次元形状データを生成する構成としてもよい。
さらに、センサ部2で取得された画像データに基づいて、キャリブレーションを実行することにより、実際のワークWKの位置座標(ロボットハンドHNDの移動位置の座標)と、表示部3上に表示された画像上の位置座標とをリンクさせることができる。
測定装置100は、測定部20で得られたワークWKの位置姿勢等の三次元形状データに基づいて、三次元サーチ、干渉判定、把持解算出等を行う。この測定装置100は、専用の画像処理プログラムをインストールした汎用のコンピュータや、専用に設計された画像処理コントローラ、専用のハードウェアで構成することができる。また、グラフィックボードなどのハードウェアを画像検査処理に特化させた専用のコンピュータに、画像処理プログラムをインストールした構成とすることもできる。
なお図2の例では、測定部20が備えるセンサ部2と形状測定処理部200とを別個の部材で構成する例を示しているが、本発明はこの構成に限られず、例えばセンサ部2と形状測定処理部200とを一体化したり、あるいはセンサ部2の一部を形状測定処理部200に組み込んだり、形状測定処理部200の一部をセンサ部2に組み込むこともできる。このように、図2に示す部材の区分けは一例であって、複数の部材を統合させたり、1つの部材を分けることもできる。例えば操作部4とロボット操作具7とを共通の部材としてもよい。
図1に示すように、センサ部2はロボットRBTと別体としている。すなわち、センサ部2をロボット本体5のアーム部ARMに設けない、オフハンド形式と呼ばれる形態となっている。尚、センサ部2をアーム部ARMに設けてもよい。
表示部3は、例えば、液晶モニタや有機ELディスプレイ、CRT等を利用できる。操作部4は、各種シミュレーションや画像処理等の各種設定を行うための部材であり、キーボードやマウス等の入力デバイスが利用できる。また表示部3をタッチパネルとすることで、操作部4と表示部3を一体化することもできる。
例えば測定装置100を、画像処理プログラムをインストールしたコンピュータで構成した場合、後述するように、表示部3上には画像処理プログラムを実行することによって生成されるグラフィカルユーザインターフェース(GUI)画面が表示される。表示部3上に表示されたGUI上から各種の設定を行うことができ、また処理結果等を表示させることができる。この場合、表示部3を各種の設定を行うための設定部や入力部としても利用でき、設定部や入力部には操作部4が含まれていてもよい。
ロボットコントローラ6は、例えばセンサ部2で撮像した情報や測定装置100から出力される情報等に基づいてロボットの動作を制御する。またロボット操作具7は、ロボットRBTの動作設定を行うための部材であり、いわゆるペンダントなどが利用できる。
ワークWKは、図1に示すように複数個が容器BXに無作為に収容されている。このような作業空間の上方には、センサ部2が配置されている。ロボットコントローラ6は、センサ部2で得られたワークWKの三次元形状に基づいて、複数のワークWKの内から、把持対象のワークWKを特定して、このワークWKを把持するよう、ロボットRBTを制御する。そして、ワークWKを把持位置で把持したまま、アーム部ARMを動作させて予め定められた載置位置、例えばステージSTG上まで移動させ、所定の姿勢でワークWKを載置する。いいかえると、ロボットコントローラ6は、センサ部2及び測定装置100で特定されたピッキング対象(把持対象)のワークWKをロボットハンドHNDで把持して、把持したワークWKを所定の基準姿勢にて、載置場所(ステージSTG)に載置してロボットハンドHNDを開放するようにロボットRBTの動作を制御する。ステージSTGは、例えばコンベアベルト上やパレット等を挙げることができる。また、把持動作のことをピッキングということもでき、把持位置はピッキング位置ということもできる。また、載置動作のことをプレースということもでき、載置位置はプレース位置ということもできる。
ここで、本実施形態が対象とするピッキングは、ばら積みピッキングに限られるものではなく、どのように載置されたワークWKであってもロボットRBTによって搬送することが可能である。本明細書において、ばら積みピッキングとは、容器BXに入れられて無作為に積み上げられたワークWKを、ロボットRBTで把持して、所定の位置に載置する他、容器を用いずに所定の領域に積み上げられたワークWKに対して把持、載置を行う例、あるいは所定の姿勢で並べられて積み上げられたワークWKを順次把持、載置する例も含む意味で使用する。また、必ずしもワークWK同士が積み重ねられている状態であることは要さず、ワークWK同士の重なりがない状態で平面上にランダムに置かれたワークWKについても、本明細書においてはばら積みと呼ぶ(順次ピッキングされていき、ピッキングの終盤でワークWK同士の重なりがない状態となった場合でも依然としてばら積みピッキングと呼ばれるのと同じ理由である)。なお、本発明はばら積みピッキングに必ずしも限定されるものでなく、ばら積みされていないワークWKをピックアップする用途にも適用できる。
また、図1の例ではセンサ部2を作業空間の上方に固定しているが、センサ部2の固定位置は、作業空間を撮像できる位置であればよく、例えば作業空間の斜め上方や側方、下方、斜め下方など、任意の位置に配置することができる。アーム部ARM上のような、可動する不定位置にセンサ部2を配置する態様であってもよい。さらにセンサ部2が有するカメラや照明の数も、1個に限らず複数個としてもよい。さらにまたセンサ部2やロボットRBT、ロボットコントローラ6との接続は、有線接続に限られず、周知の無線接続としてもよい。
ロボットシステム1000でばら積みピッキング動作を行うにあたり、予めばら積みピッキング動作を行わせるための設定を含めたティーチングを行うこともできる。具体的には、ワークWKのどの部位を、ロボットハンドHNDがどのような姿勢で把持するのか、把持位置及び把持時の姿勢などの登録や、載置位置及び載置時の姿勢などの登録を行うことができる。このような設定は、ペンダント等のロボット操作具7で行うことができる。また、後述するように、実際のロボットRBTを操作せずに、ビジョン空間上で設定を行うこともできる。
表示部3は、ワークWKの三次元形状を仮想的に表現するワークモデルや、ロボットハンドHNDの三次元形状を仮想的に表現する、三次元CADデータで構成されたロボットハンドモデルを、仮想的な三次元空間上でそれぞれ三次元状に表示させる。さらにこの表示部3は、ワークモデルの基本方向画像を六面図として表示させることもできる。これにより、ワークモデルの各姿勢を六面図で表示させて把持位置の設定作業を行えるようになり、従来面倒であった把持位置の設定作業を容易に行えるようになる。
(設定手順)
図5は、サーチモデルの設定の手順を示すフローチャートであり、また、図6は、ハンドモデル及び把持位置の設定の手順を示すフローチャートである。以下に述べる方法は一例であり、サーチモデルはCADデータから作成してもよいし、センサ部2で撮像した点群データから作成してもよく、特に限定されるものではない。
サーチモデルの設定と、ロボットモデル、ハンドモデル及び把持位置の設定とは、どちらを先に行ってもよい。サーチモデルの設定と、ロボットモデル、ハンドモデル及び把持位置の設定とは、図2に示す設定部21で行うことができる。
図5に示すサーチモデルの設定の手順を示すフローチャートの開始後のステップSB1では、ワークWKのサーチモデルを登録する。ワークWKのサーチモデルとは、後述するサーチ処理を実行する際に使用されるワークWKの形状を表したモデルである。ステップSB1でワークWKのサーチモデルを登録する際には、ワークWKの三次元CADデータ(CADモデル)を読み込んで、測定装置100が有する記憶装置42に一旦記憶させておく。CADデータは、ワークWKのサーチモデルのデータであり、従来から一般的に用いられているフォーマットのデータを使用することができる。
また、ワークWKのサーチモデルとしては、例えばある面から見たサーフェス形状をもとに生成した干渉判定モデル(後述する干渉判定部25で使用される)であってもよい。すなわち、サーチ用の点群をゼロ面(ワークWKの設置面)まで押し出したモデルを干渉判定モデルとして利用することができる。干渉判定モデルを取得する手順としては、まず、サーチモデルの点群情報を取得し、その後、ゼロ面の面情報からサーチモデルの高さ(押し出し量)およびモデルのフットプリントを求める。このとき、背景除去閾値によって背景を除去したり、マスク処理によって背景を除去することもできる。そして、押し出し量に基づき、点群を押し出す。このとき、フットプリントの範囲の高さ情報のみを使う。穴埋めやノイズ除去のために、任意で点群情報または高さ化した画像に対しX方向及びY方向の膨張収縮処理をする。
干渉判定モデルの表面をポリゴン化する際、頂点インデックス型とすることができる。これにより、頂点アレイ、頂点インデックスアレイでポリゴンを表現することができ、例えばSTL形式に比べて扱いやすく、必要容量も少なくすることができる。干渉判定モデルの表面をポリゴン化する際、任意でポリゴン縮小処理を実施してもよい。また、点群情報について、任意で間引きを行うことができる。さらに、点群が高さ画像となっている場合は、画像縮小によって画素値の削減も可能である。
上述のように押し出した形状は、ワークWKが複雑な形状をしていたとしても、それよりも大きな範囲を囲っているため、後述する干渉判定には有効である。また、複数の面を組み合わせる必要がないので、操作が簡便である。さらに、あるワークWKに対して複数の押し出し干渉判定モデルを持つことで、把持位置姿勢やサーチ位置姿勢に対応した最良の干渉判定モデルを選択することができる。
また、ワークWKのサーチモデルとしては、CADデータのフォーマットとして最もシンプルなSTL形式を用いることができる。STL形式は、三角形のポリゴン情報(3点の座標とその面の法線ベクトル)の羅列のみで構成されるデータである。あるいはワークWKのサーチモデルとして、三次元情報を有する点群データで構成してもよい。あるいはまた、ワークWKのサーチモデルを、高さ情報を有する画像データ、例えば高さ画像や距離画像で構成してもよい。
ステップSB1でワークWKのサーチモデルのCADデータを読み込んだ後、ステップSB2に進み、ワークWKのサーチモデルの確認及び登録を行う。例えば、読み込んだワークWKのサーチモデルのCADデータを表示部3に表示させることにより、測定装置100の使用者が、所望のサーチモデルであるか否かを確認することができる。その結果、所望のサーチモデルである場合には、そのサーチモデルを測定装置100に登録する。確認の結果、所望のサーチモデルでない場合には、別のCADデータを読み込み、再び確認する。
ステップSB2では、ワークWKのサーチモデルの登録の際、CADモデルの外接直方体を規定し、この外接直方体の中心をCADの原点に補正する原点補正処理を行う。ワークWKのサーチモデルの原点は、三次元CADデータが有する座標情報から、測定装置100が自動的に決定する。例えばワークWKのサーチモデルの三次元CADデータに対して、当該サーチモデルに外接する仮想直方体を規定し、この仮想直方体の重心をサーチモデルの原点として設定することができる。
また、ステップSB1で読み込んだCADモデルの六面、即ち、CADモデルを「上」、「下」、「左」、「右」、「前」、「後」の各方向から見た高さ画像データをステップSB2で生成する。まず、CADモデルの平面図、底面図、左側面図、右側面図、正面図、背面図となるように、6つの高さ画像データを生成する。この高さ画像データから高さ画像が得られる。「上」はZ軸の正方向(プラス側)から見た高さ画像、「下」はZ軸の負方向(マイナス側)から見た高さ画像、「左」はX軸の負方向から見た高さ画像、「右」はX軸の正方向から見た高さ画像、「前」はY軸の負方向から見た高さ画像、「後」はY軸の正方向から見た高さ画像に対応する。ただ、これらは一例であって、異なる座標系を用いてもよいし、X−Y平面におけるX=Yの直線を軸として、この軸と互いに直交する座標系に基づいて、各軸の正負方向から見た高さ画像を用いてもよい。また、三次元CADデータから、高さ画像を生成する際、必ずしもCADデータの軸に直交した方向(「上」、「下」、「左」、「右」、「前」、「後」)から見た高さ画像である必要はなく、例えばワークWKのサーチモデルの姿勢(視点)を任意に変えて、変えた状態の視点から高さ画像を生成するようにしてもよい。
また、CADモデルが三次元CADデータからなるものであるので、三次元CADデータをCADモデルのX、Y、Z座標のそれぞれについてプラス方向及びマイナス方向の各方向から見たときの高さ画像に変換することで、CADモデルの六面について高さ画像を得ることができる。
上述のようにして生成した6つの高さ画像の中で同じ見え方になる高さ画像を削除することもできる。見え方の一致/不一致は、ワークの上下(Z軸の正負方向)、前後(Y軸の正負方向)、左右(X軸の正負方向)から見た、計六面の高さ画像を高さ画像データに基づいて生成し、高さ画像が一致しているか否かを確認する。ここでは90°の刻み角度で回転させて一致しているか否かを確認し、他の面と一致する見え方となる面は、ワークWKのサーチモデルの登録対象から除外する。
除外した結果、残った高さ画像データを保存する。保存する高さ画像データがCADモデルの上下左右前後のいずれの方向から見た画像であるかを示す情報、即ち方向に関する情報を当該高さ画像データに付与し、この方向に関する情報と高さ画像データとを関連付けて記憶装置42に保存しておく。これにより、上下左右前後の各面の関係性情報を持った状態で各高さ画像データを保存しておくことができる。尚、面の関係性情報を保存することなく、高さ画像データのみ保存するようにしてもよい。
以上の方法は、ワークWKのCADデータが存在している場合の方法であるが、仮にワークWKのCADデータが無い場合には、ワークWKのサーチモデルを異なる方向から見た複数の高さ画像データをサーチモデルとして登録するようにしてもよい。すなわち、登録したい面を上向きにしたワークWKを平面上に置き、三次元計測を行う。この三次元計測は、ロボットシステム1000のセンサ部2及び形状測定処理部200を利用して行うことができる。形状測定処理部200による三次元計測で得られた計測データは形状測定処理部200から出力され、計測データに基づいて、ワークWKの登録したい面の高さ画像データを得ることができる。
このようにして得られた高さ画像データに基づいて高さ画像を得た後、その高さ画像をサーチモデルとして登録する。登録後、サーチに必要な分、登録し終えたか否かを判定する。この判定は使用者が行うことができるが、測定装置100または画像処理装置300に行わせるようにしてもよい。すなわち、ワークWKを上下左右前後の各方向から見た形状が全て異なれば、六面の全てについて高さ画像を取得するのが好ましいが、上述した長方形の場合のように、同じ形状の面がある場合には六面の全てについて行わなくてもよい。サーチに必要な分、登録し終えたら、終了する。
図5に示すフローチャートのステップSB2に続くステップSB3では、サーチ条件を設定する。サーチ条件には、例えば、サーチ時に検出可能なワークWKの数、サーチモデルとワークWKとの相関値の下限、特徴抽出条件(エッジ抽出の閾値等)等が含まれている。サーチ条件は使用者が設定することで、設定部21により受け付けられる。
次に、図6に示すハンドモデル及び把持位置の設定の手順を示すフローチャートについて説明する。開始後のステップSC1では、ロボットモデルを登録する。ロボットモデルは、現場で使用されるロボットRBTに関する各種情報を規定するものである。ロボットRBTに関する各種情報には、例えばアームARMの長さ、アームARMの可動域、ロボットRBTの位置、アームARMの可動部の揺動速度や回転速度等が含まれる。ロボットRBTに関する各種情報には、ロボットRBTの形状を表したモデルを含むことができ、この場合、ロボットRBTのポリゴンデータ(CADデータ)を読み込む。このステップがロボットモデルの登録ステップである。
ステップSC1でロボットモデルを登録した後、ステップSC2に進み、ロボットハンドモデルを登録する。ロボットハンドモデルとは、ロボットハンドの形状を表したモデルである。ロボットRBTのハンドモデルを登録する際には、ロボットハンドのポリゴンデータ(CADデータ)を読み込む。
その後、ステップSC3に進み、ステップSC2で登録したロボットハンドモデルと、そのロボットハンドモデルが装着されるロボットモデル(ステップSC1で登録済み)のフランジ面との相対的な位置及び姿勢を定義する。具体的には、ロボットハンドモデルにおける取付面と、ロボットモデルのフランジ面とが一致するように、両者の位置関係を定義しておく。
ステップSC3に続くステップSC4では、ロボットモデルのフランジ面に装着された状態にあるロボットハンドモデルの先端座標を指定する。この先端座標は、ロボットコントローラ6から取得することも可能であるが、使用者が設定することも可能である。その後、ステップSC5では、ロボットハンドモデルの登録完了確認を行う。
以上のようにしてロボットハンドモデルを登録した後、ステップSC6に進む。ステップSC6では、ハンドモデルで把持するサーチモデルの面を選択する。サーチモデルの面は、図5に示すフローチャートで登録した高さ画像で表すことができ、登録されている複数の高さ画像の中から、ロボットハンドモデルで把持することが可能な面に対応した高さ画像をユーザが選択する。高さ画像の選択にあたっては、高さ画像を表示部3に表示させておき、これら高さ画像の中から使用者が操作部4の操作によって選択することができる。
ステップSC6で高さ画像を選択した後、ステップSC7に進み、ステップSC6で選択した面を把持する時のロボットハンドHNDの位置及び姿勢を登録する。例えば、X軸座標、Y軸座標、Z軸座標、X軸周りの回転角度、Y軸周りの回転角度、Z軸周りの回転角度を個別に入力し、入力された値に対応するように、ロボットハンドモデルを移動させ、高さ画像中の所望位置に配置することができる。これにより、ロボットハンドモデルの位置を調整しながら、ロボットハンドモデルでサーチモデルのどの部位をどのような姿勢で把持するか、即ち把持位置及び姿勢を設定することが可能になる。把持位置及び姿勢の設定は、数値を入力する以外にも、例えばロボットハンドモデルを操作部4のマウスで直接的に操作することによっても可能である。
ここで設定する把持位置は、ロボットハンドHNDにより把持される把持候補位置である。ロボットハンドHNDにより把持される把持候補位置は、既に登録されているワークWKの各サーチモデルに対応付けて複数設定することができる。例えば、あるサーチモデルには、2つの把持候補位置を対応付けて設定し、別のサーチモデルには、4つの把持候補位置を対応付けて設定することができる。このようにして設定されたワークWKの把持候補位置及びロボットハンドHNDの姿勢を示す把持情報は、サーチモデルと対応付けられた状態で測定装置100が有する記憶装置42の把持情報記憶部42a(図2に示す)に記憶することができる。
一般に、一のワークWKに対して把持候補位置を複数登録することが多い。これは、把持候補位置を複数登録しておけば、複数の把持解の中から最適な解を選ぶことができるため、仮に得られた把持解候補が、例えばロボットハンドHNDの他の物体との干渉によって最終的な解となり得ない場合、他の把持解候補があれば、把持可能と判定される可能性が高まるからである。このような把持候補位置を複数登録する際、その都度登録を一から行うと、同様の把持候補位置を登録する際に手数が多くなり作業が面倒となる。そこで、既に登録済みの把持候補位置情報をコピーして、この把持候補位置で設定された位置パラメータの一部を変更して、新たな把持候補位置として保存可能とすることで、手間を省いて複数の把持候補位置を容易に登録できるようになる。また、同様に既存の把持候補位置を読み出して、位置パラメータを適宜修正して上書き保存することも可能である。
把持候補位置を登録する際、ワークWKのサーチモデルの原点に対して、サーチモデルを把持する際のロボットハンドモデルの相対的な位置及び姿勢を登録する。一方、実際のロボットハンドHNDでワークWKをピッキングする際には、センサ部2でワークWKを撮像した三次元空間(ビジョン空間)の座標であるビジョン座標から、ロボットコントローラ6がロボットRBTを実際に動作させる際に用いるロボット座標に変換する必要がある。尚、座標はロボット座標(XYZ、RxRyRz)で与えることもできるが、アーム部ARMの軸角度(joint angle)で与えることが望ましい。これにより、後述する干渉判定時にロボットのアーム位置が一意に決定される。また、測定装置100内で把持位置等のロボット座標から、軸角度を求め、その軸角度をロボットコントローラ6側に伝えることができるようになっている。
具体的には、ワークWKのサーチモデルの位置及び姿勢は、ビジョン空間における、位置(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がロボットハンドHNDを動作させる座標系の位置及び姿勢に座標変換するための変換式を算出する処理は、キャリブレーションと呼ばれる。このキャリブレーションは従来から周知の手法で行うことができる。
図6に示すフローチャートのステップSC8では、必要数の把持候補位置を登録できたか否かを判定する。ロボットハンドHNDで把持することが可能な部位が多数あれば、登録すべき把持候補位置の数が多くなるが、これはユーザが判断する事項であるため、ステップSC8の判定はユーザが判定することになる。ステップSC8でNOと判定して必要数の把持候補位置を登録できておらず、登録すべき把持候補位置が他にも残っている場合には、ステップSC6を経てステップSC7に進み、他の把持候補位置を設定し、登録する。すなわち、把持情報記憶部42aには、複数の把持情報を記憶させておくことができる。一方、ステップSC8でYESと判定して必要数の把持候補位置を登録できている場合には、ステップSC9に進む。
ステップSC9では、開始位置と、把持したワークWKを載置する載置位置とを登録する。開始位置は、ロボットハンドHNDによってワークWKの把持を行う位置であり、搬送開始位置に相当する。開始位置は、容器内にばら積みされているワークWKの把持候補位置とすることができる。開始位置は、ワークWKが容器内のどこに存在しているかによって異なることになるが、これは三次元サーチによって取得することができる。
一方、載置位置は、ロボットハンドHNDによりワークWKが載置される位置であり、例えば図1に示すステージSTG上に設定することができる。上記開始位置及び載置位置の設定は、座標等を数値で入力する方法によっても可能であるが、それ以外にも、例えばロボットハンドモデルを操作部4のマウス等で直接的に操作することによっても可能である。
ステップSC9が完了すると、ステップSC10に進む。ステップSC10では、ワークWKを把持位置から載置位置へ移動する間に経由する経由点を登録する。経由点は、2以上登録することもできる。経由点は、複数箇所に登録することができ、この場合、経由点1、経由点2、…というように名称を付して記憶させておくことができる。この例では、経由点をユーザが登録する場合について説明するが、これに限らず、測定装置100が経由点を算出してユーザに提示するように構成することもでき、この場合はステップSC10が省略されることになる。
ステップSC10で登録する経由点は、ロボットハンドHNDがワークWKを把持した後、当該ワークWKを載置位置に載置するまでの間に当該ロボットハンドHNDまたはワークWKが経由する点である。経由点の設定は、座標等を数値で入力する方法によっても可能であるが、それ以外にも、例えばロボットハンドモデルを操作部4のマウス等で直接的に操作することによっても可能である。経由点が設定された場合、ロボットハンドHNDがワークWKを把持して開始位置から載置位置へ搬送する途中で、ロボットハンドHNDの一部またはワークWKの一部が経由点を通過するように、アーム部ARM及びロボットハンドHNDの動作が設定される。
また、設定部21では、ロボットハンドHNDの待機位置を設定することができるとともに、待機位置にあるロボットハンドHNDが容器BX内のワークWKを把持するまでの間に当該ロボットハンドHNDが経由する往き経路上の経由点を設定することも可能である。ロボットハンドHNDの待機位置及び往き経路上の経由点の設定は、座標等を数値で入力する方法によっても可能であるが、それ以外にも、例えばロボットハンドモデルを操作部4のマウス等で直接的に操作することによっても可能である。
(ロボットの基本制御)
図7は、ロボットRBTの基本制御のフローチャートの一例を示す図である。スタート後のステップSD1では、測定部20がワークWKを撮像してワークWKの位置姿勢を測定し、ステップSD2で実行されるサーチ処理用データ(高さ画像データ)を生成する。測定部20によって三次元計測が可能であるため、サーチ処理用データには高さ情報を含むことができる。
その後、ステップSD2に進み、ステップSD1で生成されたサーチ処理用データに対し、ワークWKの位置及び姿勢を検出するサーチ処理を実行する。サーチ処理は高さ情報を含むサーチ処理用データに対してサーチをかけるので、三次元サーチと呼ぶことができる。具体的には、登録されたワークWKのサーチモデルを用いて、ワークWKの姿勢と位置を特定するのであるが、まずサーチモデルの各特徴点が、最も一致する状態の位置及び姿勢(X、Y、Z、RX、RY、RZ)を、サーチ処理用データの中から探索する。ここでRX、RY、RZは、それぞれX軸に対する回転角、Y軸に対する回転角、Z軸に対する回転角を表す。このような回転角度の表現方法は種々提案されているところ、ここではZ−Y−X系オイラー角を用いることができる。また一致する位置及び姿勢は、各サーチモデルに対して、1つである必要はなく、一定以上一致する位置及び姿勢を、複数検出してもよい。
三次元サーチに用いるサーチモデルとして、ワークWKを六面図のように、面ごとに見た画像を用いることで、斜視図などを用いる場合と比べ、三次元サーチの演算処理を簡素化でき、処理を軽負荷、高速化できる利点が得られる。また、サーチモデルの登録作業に際しても表示された状態が見易くなり、ユーザにも視覚的に判り易くできる。また、三次元サーチの結果の位置に、サーチモデルの各特徴点を重畳表示させた結果を二次元表示することや、三次元表示することもできる。対応する特徴点が、サーチ処理用データ中に対してどの程度存在したか(例えば、サーチ処理用データに対し、一定の距離以下の誤差で対応した特徴点の点数割合など)によって、サーチ結果をスコア付けすることができる。
登録されたサーチモデルが存在するか否かをサーチした結果、サーチ処理用データ中に、サーチモデルが存在しない場合、即ちワークWKを検出できない場合には、このフローチャートを終了する。
また、ステップSD2では、図2に示す位置決定処理部22が、測定部20による測定結果と、把持情報記憶部42aに記憶された把持情報とに基づいて、作業空間に配置されたワークWKのロボットハンドHNDによる把持位置を決定する。さらに、位置決定処理部22は、把持位置を決定した後、当該把持位置を把持するためのロボットハンドHNDの移動目標座標を算出するように構成されている。
このとき図2に示す干渉判定部25の判定結果を使用することができる。干渉判定部25は、ロボットハンドHNDと障害物との干渉判定を行う部分である。例えば、図6に示すフローチャートに示す処理で登録されたロボットハンドHNDのモデルが容器BXの壁等の障害物に接触するか否かを判定することができる。
ロボットハンドHNDのモデルとの干渉判定においては、サーチ処理用データである高さ画像の各1点1点のpixelデータが示す三次元点群と、予め入力されているロボットハンドモデルとが干渉するか否かを判定する。この干渉判定の前に、三次元サーチで検出された一のワークWKに対して、このワークWKの位置と、登録してあるワークWKの把持姿勢とに基づいて、ロボットハンドHNDを配置すべき位置(把持座標)と姿勢を計算する。計算された位置において、ロボットハンドHNDが周囲の物体と干渉しないかどうかを判定する。この干渉判定では、ロボットハンドHNDの断面モデルを利用して三次元点群が断面モデルと干渉しているか否かを判定することができる。例えば、ロボットハンドHNDの断面モデルから全ての三次元点が離れている場合には、三次元点群、すなわち高さ画像とハンドモデルHNDとが干渉しないと判定し、一方、ロボットハンドHNDの断面モデルの内側に三次元点が1つでも入っている、またはロボットハンドHNDの断面モデルの縁部に三次元点が1つでも接している場合には、三次元点群、すなわち高さ画像とロボットハンドHNDとが干渉すると判定する。干渉しない場合は、このワークWKに対して把持解を算出することができた、即ち把持位置を算出できたということであり、ステップSD3に進む。一方、干渉する場合は、このワークWKに対して把持解を算出することができないということであり、このフローチャートを終了するか、別のワークWKに対して把持解の算出を試みる。
また、ステップSD3では、図2に示す経路生成部23が、ロボットハンドHNDで把持したワークWKをプレース位置まで搬送する搬送経路を生成する。例えば、経路生成部23は、ロボットハンドHNDの現在位置からアプローチ位置を介してステップSD2で算出した把持位置までの当該ロボットハンドHNDの経路を生成することや、開始位置(把持位置)から載置位置までのロボットハンドHNDの経路を生成することができる。このステップSD3で生成する経路は、経由点を経由する経路である。また、ステップSD3で生成する経路には、経由点を経由しない経路を含むことができる。
ステップSD4では、出力部24が、把持位置、載置位置、経由点等の座標及びステップSD2で算出した移動目標座標をロボットコントローラ6に出力する。ロボットコントローラ6は、出力部24から出力された把持位置、載置位置、経由点等の座標を受け取って制御信号を生成し、生成した制御信号をロボットRBTに出力する。その後、ステップSD5では、ロボットRBTが制御信号に従って動作してワークWKを所定の経路で搬送する。
(ロボットハンドの姿勢展開)
次に、ロボットハンドHNDの姿勢展開について説明する。図1に示すように、ばら積み状態のワークWKをピッキングして順次搬送するするばら積みピッキングの場合、ワークWKの姿勢が様々であることから、ワークWKがどのような姿勢にあってもピッキングできるように、ワークWKに対して複数の把持姿勢を予め設定しておくのが好ましい。
図8は、作業空間にX方向に細長い柱状のワークWKが配置されていて、そのワークWKをロボットハンドHNDで把持する場合を示している。この図8ではアーム部ARMを省略しており、ロボットハンドHNDの把持姿勢をZ軸周りに展開している。展開後のロボットハンドHNDの把持姿勢の例を仮想線で示している。
図9は、図8と同じワークWKを同じロボットハンドHNDで把持する場合を示しており、ロボットハンドHNDの把持姿勢をY軸周りに展開している。展開後のロボットハンドHNDの把持姿勢の例を仮想線で示している。
図10は、図8と同じワークWKを同じロボットハンドHNDで把持する場合を示しており、ロボットハンドHNDの把持姿勢をX軸周りに展開している。展開後のロボットハンドHNDの把持姿勢の例を仮想線で示している。尚、各図では、展開軸をツール座標基準で設定した例を示しているが、ワーク座標基準で設定することもできる。
一般的にロボットRBTの作業空間はX方向、Y方向、Z方向の3方向で定義することができるので、ロボットハンドHNDの把持姿勢を展開する際にも、図8に示すZ軸周りの展開、図9に示すY軸周りの展開、図10に示すX軸周りの展開の3つの展開が可能になる。細長い柱状のワークWKであれば、図8に示すZ軸周りの展開、図9に示すY軸周りの展開、図10に示すX軸周りの展開をそれぞれ行うことが可能であるが、Z軸周りの展開、Y軸周りの展開及びX軸周りの展開を組み合わせて行おうとすると、その順序が問題となることがある。
すなわち、図11は、X軸周りに90゜回転させてから、Y軸周りに30゜回転させたロボットハンドHNDの姿勢を示しており、この例では、ロボットハンドHNDはワークWKを把持候補位置にて把持可能な姿勢にある。一方、図12は、Y軸周りに30゜回転させてから、X軸周りに90゜回転させたロボットハンドHNDの姿勢を示しており、この例では、ロボットハンドHNDはワークWKを把持候補位置にて把持が困難な姿勢にある。つまり、複数の展開軸がある場合に、展開の順序が固定されていると、ワークWKの形状によってはロボットハンドHNDの姿勢を展開できない場合がある。
(展開順序の設定)
本例では、複数の展開軸がある場合に、展開の順序設定に柔軟性を持たせて適切な把持姿勢候補が得られるようにしている。図2に示すように、測定装置100の設定部21は、ユーザインタフェース生成部21aを備えている。ユーザインタフェース生成部21aは、測定装置100の各種設定用ユーザインタフェースやモデル登録用ユーザインタフェース、ウインドウ等を生成して表示部3に表示させる部分である。
図13は、ユーザインタフェース生成部21aが生成する展開設定用ユーザインタフェース60の一例を示す図であり、この展開設定用ユーザインタフェース60が表示部3に表示される。展開設定用ユーザインタフェース60は、展開順序に対応した複数のタブ60a、60b、60cを選択操作可能に示すとともに、選択されたタブ60a、60b、60c毎に、展開軸の選択と、当該展開軸周りに展開するときの角度範囲の設定とを受け付けることができるものである。タブ60a、60b、60cの選択は、操作部4のマウス等で行うことができ、この操作は設定部21により受け付けられる。
上述したように展開軸としてX軸、Y軸及びZ軸の3つの軸があるので、展開軸の数に対応するように第1タブ60a、第2タブ60b及び第3タブ60cを展開設定用ユーザインタフェース60に示している。第1タブ60a、第2タブ60b、第3タブ60cにはそれぞれ番号「1」、「2」、「3」が表示してあり、この番号は展開順序を示している。「1」が表示された第1タブ60aは、展開順序が1番目であることを示しており、「2」が表示された第2タブ60bは、展開順序が2番目であることを示しており、「3」が表示された第3タブ60cは、展開順序が3番目であることを示している。
設定部21は、第1タブ60aが選択されたこと検出すると、展開順序を1番目にする展開軸をX軸、Y軸及びZ軸の中から選択する展開軸選択領域60dを表示する。X軸、Y軸及びZ軸は、例えばプルダウンメニュー形式で表示することができるが、これに限らず、ボタンやチェックボックス等で選択する形式や、軸の名称を直接入力する形式であってもよい。また、設定部21は、第1タブ60aが選択されたこと検出すると、角度範囲設定領域60e、角度間隔設定領域60f、展開軸のオフセット設定領域60g、姿勢優先選択領域60h、姿勢固定選択領域60i及び展開姿勢確認ボタン60jを表示する。
角度範囲設定領域60eでは、ロボットハンドHNDを、展開軸選択領域60dで選択した展開軸周りに回転させる際の角度範囲を設定することができる。角度間隔設定領域60fでは、ロボットハンドHNDを展開軸周りに回転させる際の角度ピッチを設定することができる。展開軸のオフセット設定領域60gでは、展開軸をX方向にオフセットさせる場合のオフセット量と、Y方向にオフセットさせる場合のオフセット量とを個別に設定することができる。姿勢優先選択領域60hでは、展開軸を基準として0゜のときの姿勢を優先するか否かを選択することができる。姿勢固定選択領域60iでは、ワークWKの姿勢を所定の姿勢に固定する姿勢固定設定を受け付けることができる。姿勢固定設定については後述する。展開姿勢確認ボタン60jは、上記各領域で設定された展開条件に基づいてロボットハンドHNDを展開させた様子を図8等に示すような三次元画像にして表示部3に表示させるためのボタンである。
「1」が表示された第1タブ60aが選択されると、その選択された第1タブ60aの展開軸選択領域60d、角度範囲設定領域60e、角度間隔設定領域60f、展開軸のオフセット設定領域60g、姿勢優先選択領域60h、姿勢固定選択領域60i及び展開姿勢確認ボタン60jのみを表示する。「2」が表示された第2タブ60bが選択されると、その選択された第2タブ60bの展開軸選択領域(図示せず)等が表示され、第1タブ60aが選択されたときの展開軸選択領域60d等は消去される。「3」が表示された第3タブ60cが選択されたときも同様であり、第1タブ60aが選択されたときの展開軸選択領域60d及び第2タブ60bが選択されたときの展開軸選択領域等は消去される。これにより、1番目の展開軸について設定している時に2番目の展開軸や3番目の展開軸に関する設定が誤って行われることはない。
また、例えば、ユーザは、「1」が表示された第1タブ60aを選択してZ軸を選択し、「2」が表示された第2タブ60bを選択してY軸を選択し、「3」が表示された第3タブ60cを選択してX軸を選択すると、展開順序はZ軸、Y軸、X軸となる。このようにしてユーザが展開順序を任意に指定することができる。展開軸の順序を指定する際には、任意の2つの展開軸についてのみその順序を指定することもできる。つまり、設定部21は、ユーザの操作に基づいて、複数の互いに直交する展開軸と、各展開軸に対する展開順序の指定を受け付けるように構成されている。
図8に示す展開設定用ユーザインタフェース60は一例であり、展開軸をタブ毎に設定可能に構成されているが、これに限らず、1つの表示領域で展開順序を指定できるように構成されていてもよい。
(展開処理)
図2に示す位置決定処理部22は、ワークWKの把持位置やロボットハンドHNDの移動目標座標を算出するだけでなく、設定部21により指定された展開軸と、設定部21により指定された展開順序とに基づいて、把持候補位置を把持するためのロボットハンドHNDの姿勢を複数自動生成するように構成されている。具体的には、図13に示す展開設定用ユーザインタフェース60の展開姿勢確認ボタン60jが押されたことを設定部21が検出すると、位置決定処理部22は、ロボットハンドHNDのモデルを展開軸周りに、角度範囲設定領域60eで設定された角度範囲だけ、角度間隔設定領域60fで設定された角度ピッチで回転させる。これにより、ロボットハンドHNDの姿勢が複数得られる。このことをロボットハンドHNDの姿勢の展開という。
図8はZ軸が展開軸である場合に、位置決定処理部22が自動生成したロボットハンドHNDの姿勢を1つだけ仮想線で示しているが、位置決定処理部22が自動生成したロボットハンドHNDの姿勢が複数である場合には、複数のロボットハンドHNDの姿勢を重畳表示させることができる。図9はY軸が展開軸である場合に、位置決定処理部22が自動生成したロボットハンドHNDの姿勢を仮想線で示しており、また、図10はX軸が展開軸である場合に、位置決定処理部22が自動生成したロボットハンドHNDの姿勢を仮想線で示している。図9、図10に示す場合も、位置決定処理部22が自動生成したロボットハンドHNDの姿勢が複数である場合には、複数のロボットハンドHNDの姿勢を重畳表示させることができる。
展開順序を設定しておくことで、図12に示すような不適切な展開を回避することができ、図11に示すように、X軸周りに回転させた後、Y軸周りに回転させることができるので、適切な把持姿勢候補を得ることができる。
(プレース位置の登録)
ワークWKの把持候補位置を多く登録しておくことで、複数の把持解を得ることができ、これら複数の把持解の中から最適な解を選ぶことができる点で好ましい反面、ワークWKを一意の位置姿勢に置くためのプレース位置の登録に際してユーザの負担が増大するおそれがある。
これを解消するために、本実施形態では、図14に示すように、複数の把持姿勢候補のうち、任意の1つの把持姿勢候補でプレース位置を登録しておき、登録後、図15に示すように、他の把持候補位置では、相対位置関係からワークWKを一意の位置に置くための位置姿勢を自動計算する処理を行うようにしている。
(プレース位置姿勢の自動生成)
把持の展開処理についても同様の処理を行うことができる。すなわち、ロボットハンドHNDの姿勢を複数自動生成すると、把持姿勢候補が多くなり、ワークWKを一意の位置姿勢に置くためのプレース位置の登録に際してユーザの負担が増大する。
このことに対して、位置決定処理部22は、ワークWKの基準把持候補位置と、当該基準把持候補位置を把持した状態でプレース位置に載置するときのロボットハンドHNDの基準姿勢とに基づいて、設定部21により指定された展開軸に従って展開された把持候補位置に対応するプレース位置姿勢を自動生成するように構成されている。つまり、例えば展開前の姿勢でプレース位置姿勢を登録しておけば、展開後の姿勢で掴んだ時のプレース位置を自動計算することができ、把持の展開を行った際にもユーザの負担を軽減できる。
ところが、図16に示すようにロボットハンドHNDとして吸着把持可能な構造のものを用いると、ロボットハンドHNDによる把持の前後で、ロボットハンドHNDの位置姿勢が変化しないにも関わらず、ワークWKの位置姿勢変化してしまうことがある。このようなケースで上述したようなプレース位置の自動計算を行うと、ワークWKの位置姿勢を一意にすることができない。
これを解決するために、把持後のワークWKの姿勢を固定するかどうかをユーザが選択できるようにしている。具体的には、図13に示す展開設定用ユーザインタフェース60の姿勢固定選択領域60iのチェックボックスをチェックすると、展開軸選択領域60dで選択されている軸についてワークWKの姿勢が固定される。第1タブ60a、第2タブ60b、第3タブ60c毎に姿勢固定選択領域60iが設けられているので、把持の展開軸毎に、ワークWKの姿勢を固定するか否か選択することができる。ワークWKの姿勢を固定するか否か選択は、ユーザによる姿勢固定設定である。
展開処理時、「ワークWKの姿勢を固定する」と選択された軸については、ワークWKとロボットハンドHNDとの位置関係は展開前のデータのものを使ってプレース位置計算を行うようにする。つまり、位置決定処理部22は、設定部21により展開軸毎に姿勢固定設定を受け付けた場合、ロボットハンドHNDとワークWKとの位置関係を展開前の位置関係としてプレース位置姿勢を自動生成することができるので、ワークWKの姿勢が把持の前後で変化する展開と変化しない展開との両方を1つの把持設定で扱うことができる。
図17は、ワークWKの姿勢を固定しない展開軸周りに展開した場合の表示例を示す図であり、また、図18は、ワークWKの姿勢を固定する展開軸周りに展開した場合の表示例を示す図である。
(ワークの干渉判定)
図2に示す干渉判定部25は、搬送経路中におけるワークWKと障害物との干渉判定を行うこともできる。干渉判定部25は、判定時、例えば、図5に示すフローチャートに示す処理で登録されたワークWKのサーチモデル(干渉判定モデル)と、三次元サーチで検出された容器BXを構成する点群データ等とを用いる。点群データの例としては、容器BXのモデル、ロボット可動域にある障害物のモデル、ロボット自身のモデルなどがある。具体的には、例えばロボット(各軸、ベース)、ワーク、ハンド、これらに連動する障害物(ケーブルなど)に対して、ロボット(各軸、ベース)、容器、床、ロボット可動範囲内のレイアウト上の障害物(棚やコンベアなど)、カメラ、撮像した点群データ(箱やワークなど)が干渉しないかどうかを判定する。また、干渉判定の前提として、ロボットの可動範囲(角度)も確認する。そして、ワークWKのサーチモデルを所定の搬送経路で搬送したときに、ワークWKのサーチモデルが、上記点群に接触する場合には干渉すると判定し、接触しない場合には干渉しないと判定する。
干渉判定部25は、設定部21により姿勢固定設定を受け付けた場合、ロボットハンドHNDとワークWKとの位置関係を展開前の位置関係とし、搬送経路中におけるワークWKと障害物との干渉判定を行うように構成されている。
例えば、図19に示すように、ロボットハンドHNDとして吸着把持可能な構造のものを用いて容器BX内のワークWKを取り出す場合を想定する。ワークWKを把持して取り出す経路を生成する場合は、把持したワークWKの干渉判定も必要になり、この干渉判定を干渉判定部25が行う。この時、把持する前のロボットハンドHNDとワークWKの相対位置姿勢でワークWKの位置姿勢を計算していると、想定しているワークWKの姿勢(仮想線で示す)と実際のワークWKの姿勢(実線で示す)とが異なることになる。そのため、想定しているワークWKの姿勢では干渉しないと判定したが、実際に搬送してみるとワークWKが容器BXにあたってしまうというケースがある(破線で示す円70内)。
このような場合に、干渉判定部25は、ロボットハンドHNDとワークWKとの位置関係を展開前の位置関係としておくことで、把持後のワークWKの姿勢で干渉判定を行うことができる。また、ロボットハンドHNDについても、把持前と把持後でロボットハンドHNDの形状モデルを変えて干渉判定/経路生成可能に構成することもできる。
(実施形態の作用効果)
以上説明したように、この実施形態によれば、位置決定処理部22が、作業空間の三次元測定結果と、把持情報とに基づいてワークWKの把持位置を決定すると、当該把持位置を把持するためのロボットハンドHNDの移動目標座標を算出し、ロボットハンドHNDの移動目標座標をロボットコントローラ6に出力することができる。これにより、ロボットハンドHNDをその移動目標位置まで移動させてワークWKを把持し、所定の載置位置まで搬送することができる。
把持候補位置を把持するためのロボットハンドHNDの姿勢は、ロボットハンドHNDを各展開軸周りに回転させて展開することで複数自動生成することができるので、ユーザの負担を軽減できる。このとき、展開順序をユーザにより指定できるので、その展開順序に従って展開を行うことができ、適切な把持姿勢候補を得ることができる。
上述の実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内のものである。