(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、
図1〜
図15を参照して本発明の実施形態に係る物品取出装置について説明する。
図1は、本発明の一実施形態に係る物品取出装置10の概略構成を示す図である。物品取出装置10は、三次元測定機11と、ロボット12と、三次元測定機11とロボット12とに接続してロボット12を制御するロボット制御装置13とを有する。ロボット12は、アーム12aの先端部に取り付けられたハンド14を有する。ロボット12の側方にはコンテナ16が配置されている。なお、
図1には、XYZの直交3軸座標系を併せて示している。Z方向は鉛直方向、X方向及びY方向は水平方向であり、コンテナ16はXZ平面上に示されている。
【0011】
上方が開放されたコンテナ16内には、複数の物品20がバラ積みされている。本実施形態の物品取出装置10は、この複数の物品20がバラ積みされた状態から取出すべき物品20の位置及び姿勢を認識し、認識された物品20をコンテナ16の中からハンド14で取出して保持し、ロボット12の動作によりコンテナ16外の所定位置へ搬送する。複数の物品20は、
図1では互いに同一形状(L字型形状)として示しているが、L字型以外でもよく、不定形や複数の品種を含むものでもよい。なお、以下では、ハンド14で保持された物品20を、コンテナ16内の他の物品と区別するために符号21(
図13参照)で表すことがある。
【0012】
三次元測定機11は、コンテナ16の中央部上方に配置され、コンテナ16内にバラ積みされた物品20のうち、露出した物品20の表面を測定して、複数の三次元点の位置情報(三次元情報)を取得する。三次元測定機11の測定範囲は、コンテナ16を含む必要があるが、測定範囲が大き過ぎると測定分解能の低下を招く。したがって、測定範囲は、コンテナ16の占有範囲と同等、例えばコンテナ16の占有範囲に一致させることが好ましい。なお、
図1では、三次元測定機11が専用の架台15に固定されているが、ロボット12の先端部に三次元測定機11を取り付けてもよい。三次元測定機11とロボット制御装置13とは通信ケーブル等の通信手段によって互いに接続されており、互いに通信できるようになっている。
【0013】
三次元測定機11としては、種々の非接触方式のものを利用することができる。例えば、カメラ2台のステレオ方式、レーザスリット光を走査する方式、レーザスポット光を走査する方式、プロジェクタ等の装置を用いてパターン光を物品に投影する方式、光が投光器から出射されてから物品表面で反射し受光器に入射するまでの飛行時間を利用する方式などが挙げられる。
【0014】
三次元測定機11は、取得した三次元情報を距離画像または三次元マップといった形式で表現する。距離画像とは、画像形式で三次元情報を表現したものであり、画像の各画素の明るさや色により、その画像上の位置の高さまたは三次元測定機11からの距離を表す。一方、三次元マップとは、測定された三次元座標値(x,y,z)の集合として三次元情報を表現したものである。本実施形態では、距離画像における各画素や三次元マップにおける三次元座標値を有する点を、三次元点と称し、複数の三次元点からなる集合を、三次元点集合と称する。三次元点集合は、三次元測定機11で測定した三次元点全体の集合であり、三次元測定機11により取得できる。
【0015】
本実施形態では、三次元測定機11により、露出した物品20の表面の三次元位置を測定し、物品20の表面上の位置姿勢を検出する。ハンド14は、位置姿勢が検出された物品20の表面に接触し、物品20を保持する。このようなハンド14としては、例えば吸着パッド、吸引ノズル、吸着用磁石などが挙げられる。本実施形態では、吸着パッドをハンド14として用いている。
【0016】
吸着パッド14は、長手方向に延在する軸部14aと、軸部14aの先端に設けられたパッド部14bとを有する。パッド部14bの下端部には吸着面14cが設けられ、吸着面14cの中心は、軸部14aの中心を通る軸線L0上に位置する。この吸着面14cの中心から所定距離Δdだけ上方における軸線L0上の位置に、ハンド14の基準点14dが設定されている。ハンド14は、ロボット12の動作により、その位置姿勢が制御される。すなわち、三次元点空間における基準点14dの位置および軸線L0の向きが制御される。なお、本実施形態では、1つの物品20を保持するようにハンド14を構成しているが、同時に複数の物品を保持するようにハンド14を構成してもよい。
【0017】
図2は、ロボット制御装置13で実行される処理、特に物品取出しに係る処理の一例を示すフローチャートである。以下、物品取出装置10による動作を、
図2のフローチャート及び関連する図面を参照しつつ説明する。
【0018】
図2の処理は、例えば図示しない操作スイッチの操作により、物品20の取出開始指令が入力されると開始される。まず、ステップS1で、三次元空間にバラ積みされた複数の物品20の表面を三次元測定機11で測定して三次元点集合30を取得する。
図3は、三次元測定機11で取得した三次元点集合30と、三次元点集合30を構成する三次元点31の一例を示す図である。図では、三次元点31が黒丸で示されており、三次元点集合30は、黒丸全体を含む点線で囲まれた領域として示されている。
【0019】
次に、ステップS2で、三次元点集合30から1以上の連結集合32を求める(ステップS2)。
図4は、三次元点集合30から求めた連結集合32の一例を示す図である。図では、連結集合32は点線で囲まれた領域として示されている。すなわち、
図4には、4つの連結集合32が示されている。
【0020】
ここで言う連結集合32とは、三次元点集合30の部分集合であり、任意の三次元点(第1の三次元点)31の近傍にその三次元点31とは異なる他の三次元点(第2の三次元点)31が存在する場合、第1の三次元点31と第2の三次元点31とが連結されてなるものである。すなわち、連結集合32とは、互いに近傍に存在する三次元点31を連結してなる集合である。
図5は、連結集合32の概念を説明する図である。
図5では、隣り合う第1三次元点31と第2三次元点31との間の距離が所定値以内であるときに、第1三次元点31と第2三次元点31とを互いに連結している。
【0021】
例えば
図5に示すように複数の三次元点31(311〜317で表す)が三次元測定機11により測定され、このうち、311と312、312と313、313と314、及び315と316がそれぞれ所定距離内に存在するとき、これらは互いに連結される。この場合、312と313を介して311と314も連結されるため、311〜314は同一の連結集合321を構成する。一方、315と316は、311〜314のいずれにも連結されないため、別の連結集合322を構成する。317は、311〜316のいずれにも連結されないため、317のみで連結集合323を構成する。
【0022】
三次元的測定機11によりバラ積みされた物品20の表面が測定される場合、同一物品20上における隣り合う三次元点31(例えば
図5の313,314)は互いに近距離に位置する。これに対し、物品20の境界部では隣り合う三次元点(例えば
図5の314,315)の位置が大きく変化する。したがって、三次元点313,314は同一の連結集合32に属するのに対し、三次元点314,315は互いに異なる連結集合32に属する。このため、連結集合32を構成する3次元点間の最大距離や、連結集合32の最小点数、最大点数等を適宜設定することで、連結集合32を、単一の物品20の表面形状とみなすことができる。すなわち、単一の物品20に対して単一の連結集合32が1対1で対応し、連結集合32によって物品20を特定することができる。
【0023】
図6は、連結集合32を求めるための処理(連結集合演算処理)、すなわち
図2のステップS2の処理をより詳細に示すフローチャートである。まず、ステップS21で、三次元点集合30に属する全ての三次元点31に、初期のラベル番号として、どの連結集合32にも属していないことを表すラベル番号0を割り振る。以下では、自然数であるラベル番号jが割り振られた三次元点31を、31(j)で表す。ラベル番号jは、連結集合32に対応して割り振られる番号であり、0ではない同一のラベル番号jが割り振られていれば、同一の連結集合32に属することになる。次に、ステップS22で、1番目の連結集合32を求めるため、ラベル番号jを1とする(j←1)。
【0024】
次に、ステップS23で、三次元点集合30に属する三次元点31であって、ラベル番号が0である任意の三次元点31(0)を選択する。ステップS24では、ラベル番号が0である三次元点31(0)が選択されたか否かを判定し、肯定されるとステップS25に進む。三次元点31(0)が選択されなかった場合は、三次元点集合30に属する全ての三次元点31が何れかの連結集合32に属している。この場合は、ステップS24が否定され、連結集合演算処理が終了し、
図2のステップS3に進む。
【0025】
ステップS25では、ラベル番号がjである三次元点31(j)を格納するためのリストLjを準備する。ステップS26では、ステップS24で選択された三次元点31(0)にラベル番号jを割り振った後に、その三次元点31(j)をリストLjに追加する。ステップS27では、自然数値を取る変数kに対して、初期値1を与える(k←1)。kは、リストLjに含まれる三次元点31(j)を指定する番号である。なお、リストLjには、追加された三次元点31(j)が追加された順番に並んでいるものとする。
【0026】
ステップS28では、リストLjのk番目の三次元点31(j)の近傍に、ラベル番号が0である三次元点31(0)が存在するか否かを判定する。ステップS28が肯定されるとステップS29に進み、否定されるとステップS29をパスしてステップS30に進む。ステップS29では、リストLjのk番目の三次元点31(j)の近傍に存在すると判定された全ての三次元点31(0)にラベル番号jを割り振った後、これら三次元点31(j)をリストLjの最後に追加する。ステップS30では、変数kに1を追加する(k←k+1)。
【0027】
ステップS31では、kの値がリストLjに格納されている三次元点31(j)の数(要素数N)より大きいか否かを判定する。kが要素数Nより大きい場合、リストLjに格納されたN個の全ての三次元点31(j)に対する近傍判定の処理が終了しており、リストLj内の三次元点31(j)の近傍にある三次元点が既に同一のリストLj内に格納されている。このため、リストLjに三次元点31(j)を追加する処理を終了し、ステップS32に進む。それ以外の場合は、リストLj内の全ての三次元点31(j)に対し近傍判定の処理が終了していないため、ステップS28に戻り、リストLjへ三次元点31(j)を追加する処理を繰り返す。
【0028】
ステップS32では、ラベル番号jに1を追加し(j←j+1)、ステップS23に戻る。以降、ステップS23〜ステップS32と同様の処理を繰り返し、次のラベル番号jに対応する連結集合32を求める。
【0029】
以上の連結集合演算処理を、
図5を参照して具体的に説明する。連結集合演算処理の開始時には、全ての三次元点311〜317が連結集合32に属しておらず、三次元点311〜317のラベル番号は0である(ステップS21)。この状態から、ラベル番号1の連結集合32を作成するため、例えば三次元点313を選択すると(ステップS23)、その三次元点313にラベル番号1を割り振った後(313(1))、三次元点313をラベル番号1のリストL1の1番目に格納する(ステップS26)。
【0030】
次いで、リストL1の1番目の三次元点313の近傍に、ラベル番号0の三次元点31(0)が存在するか否かを判定する(ステップS28)。この場合、ラベル番号0の三次元点312,314が存在するため、これら三次元点312,314にラベル番号1をそれぞれ割り振り(312(1),314(1))、リストL1の2番目及び3番目にそれぞれ追加する(ステップS29)。これによりリストL1の要素数Nは3となる。
【0031】
その後、変数kが2(<N)となり(ステップS30)、リストL1の2番目の三次元点312の近傍に、ラベル番号0の三次元点31(0)が存在するか否かを判定する(ステップS28)。この場合、ラベル番号0の三次元点311が存在するため、この三次元点311にラベル番号1を割り振り(311(1))、リストL1の4番目に追加する(ステップS29)。これによりリストL1の要素数Nは4となる。
【0032】
その後、変数kが3(<N)となり(ステップS30)、リストL1の3番目の三次元点314の近傍に、ラベル番号0の三次元点31が存在するか否かを判定する(ステップS28)。この場合、三次元点314の近傍にラベル番号0の三次元点31は存在しないため、要素数Nが4のままkが4となり(ステップS30)、リストL1の4番目の三次元点311の近傍に、ラベル番号0の三次元点31(0)が存在するか否かを判定する(ステップS28)。この場合、三次元点311の近傍にラベル番号0の三次元点31は存在しないため、要素数Nが4のままkが5となる(ステップS30)。
【0033】
このとき、変数kは要素数Nよりも大きくなるため、ラベル番号1のリストL1の作成を終了し、ラベル番号を2として(ステップS32)、同様の処理を繰り返す。繰り返しの処理では、例えばラベル番号0の三次元点315,316にラベル番号2を割り振って、三次元点315(2),316(2)をリストL2に追加し、ラベル番号0の三次元点317にラベル番号3を割り振って、三次元点317(3)をリストL3に追加する。これにより、ラベル番号0の三次元点31が不存在となるため、ステップS24が否定され、連結集合演算処理を終了し、
図2のステップS3に進む。
【0034】
ステップS3では、各々の連結集合32に対し、連結集合32に属する三次元点31の位置に基づき、三次元点31を近似した平面33を求める。平面33は、三次元点31の存在する範囲にわたって延在する平面、すなわち有限な平面である。
図7は、平面33と平面33上の点から平面33に対して垂直に延びる法線ベクトル33aとを示す図である。法線ベクトル33aにより各平面33の姿勢を特定することができる。三次元点31が各物体20の単一の表面のみで計測されたと仮定すると、
図7に示すように、その物体20の表面が平面33となる。
【0035】
平面33は、例えば連結集合32に含まれる全ての三次元点31を用い、最小二乗法により演算することができる。なお、別途何らかの外れ値対策を行って平面33を求めてもよい。外れ値対策の方法としては、M推定法、RANSAC、LMedS、ハフ変換など、幾通りかの方法がある。ハフ変換などの処理を導入することで、連結集合32が、複数の物品20の表面に跨っている場合でも、その中から、一つの平面33を抽出して認識することが可能になる。平面33から所定距離以上離れている三次元点31を、以降の処理において、その三次元点31が含まれる連結集合32から除去するようにしてもよい。
【0036】
ステップS4では、連結集合32に属する三次元点31を、その連結集合32に対応する平面33に対して垂直に投影した投影点34の位置を演算する。
図8は、三次元点31を平面33に正射影した投影点34の一例を示す図である。
図8では、投影点34は白丸で示されている。なお、連結集合32に属する三次元点31の個数が所定値よりも少ない、すなわち物品20の露出した面積が所定値より小さい連結集合32(例えば
図7の32a)に対しては、ステップS4以降の処理を行わず、物品20の表面が十分に露出している場合にのみ、ステップS4以降の処理を行うようにしてもよい。これにより物品20の取出し時に、ハンド14が物品20を取り損ねる可能性を低減し、物品取出装置10により効率的な物品20の取出しを実現できる。
【0037】
ステップS5では、各平面33の全範囲にわたって各平面33上に計測点を設定し、各計測点から所定距離内にある投影点34の個数を求める。この個数は、各計測点における投影点34の密度に対応するものであり、ステップS5では、平面33上における投影点34の密度分布を演算する。投影点34は三次元点31に対応するため、投影点34の密度分布は三次元点31の密度分布とみなすことができる。
【0038】
図9は、計測点35と投影点34の一例を示す図である。
図9では、平面33上に、格子状に等間隔に計測点35を設定している。
図9において、計測点35aから所定距離r内にある投影点34の数、すなわち計測点35aを中心とした半径rの円37内に含まれる投影点34の個数は9個である。この場合、例えば投影点35aの密度を9とする。なお、投影点34の個数を円37の面積で除算した値を密度としてもよい。このような密度の計算を、全ての計測点35に対して行うことで、平面33上の投影点34の密度分布を求めることができる。平面33上に等間隔に計測点35を設定するのではなく、例えば各投影点34に計測点35を設定してもよい。各計測点35間における密度は、例えば補間処理によって求めることができ、これにより平面33全体の密度分布を求めることができる。
【0039】
ステップS6では、ステップS5で演算した密度分布に基づき、投影点34の密度が極大となる平面33上の点(密度極大点)の位置(密度極大位置)を演算する。なお、投影点34の密度分布は三次元点31の密度分布に対応するため、ステップS6の処理は、三次元点31の密度が極大となる密度極大位置を演算することに相当する。密度極大位置は、平面33上の所定範囲内における密度の大小を比較し、密度が最大となる平面33上の位置を演算することにより求めることができる。密度極大点が平面33上に複数求められた場合、例えば密度が大きい方を選択し、密度極大位置を演算すればよい。密度極大位置は、連結集合32を代表する代表位置である。
【0040】
図10は、密度極大点39の一例を示す図である。密度極大点39は、物品20の表面の三次元点31が密集した点である。したがって、物品20がL字型形状や他の複雑形状であっても、あるいは物品20の中央(重心位置)に孔が開口されている場合であっても、密度極大点39は、常に物品20の露出した表面上に存在する。なお、
図10では、密度極大点39における平面33に対する法線ベクトル39aを示している。
【0041】
ステップS7では、密度極大位置にある物品20を取出し可能なハンド14の位置及び姿勢(ハンド位置姿勢38)を演算する。
図10に示すように、ハンド位置姿勢38は、例えば直角に交差する一対の矢印38a,38bで示され、矢印38a,38bの交点がハンド位置姿勢38の位置を表し、矢印38a,38bの向きがハンド位置姿勢38の姿勢を表す。なお、
図10では、便宜上、ハンド位置姿勢38が2つの矢印38a,38bで示されているが、ハンド位置姿勢38は、二次元空間におけるものではなく三次元空間におけるものであり、実際には三次元の直交座標系で表される。直交座標系に限らず、種々の座標系でハンド位置姿勢38を表すこともできる。
【0042】
一対の矢印38a,38bの交点は、密度極大点39から法線ベクトル39aに沿って所定距離(例えば
図1のΔd)だけ離れた位置に設定される。矢印38bは、法線ベクトル39aと平行であり、矢印38aは、三次元点31によって求められた平面33と平行である。
【0043】
ステップS8では、各々のハンド位置姿勢38にP1,P2,・・・,Pnとナンバリングする。但し、nはハンド位置姿勢38の個数である。
図11は、ナンバリングされたハンド位置姿勢38を示す図であり、所定の座標軸40に対する座標値の降順、つまり、高い位置にある(z座標が大きい)ものから順番にナンバリングされている。ナンバリングの順序は、座標値の降順の他、連結集合32をなす面の面積の大きい順など、取得した三次元点集合に基づいて任意の方法で決定付けられる順番としてもよい。なお、
図11では、n=3である。
【0044】
ステップS9では、自然数値を取る変数jに対して初期値を与える。すなわち、j←1とする。変数jは、ハンド位置姿勢38の番号の指定に用いる。
【0045】
ステップS10では、ロボット駆動用のアクチュエータ(電動モータ)に制御信号を出力し、
図12に示すように、ハンド14をハンド位置姿勢Pj(例えばP1)に移動する。すなわち、ハンド14の基準点14dを、ハンド位置姿勢P1の矢印38a,38bの交点に一致させるとともに、ハンド14の軸線L0を矢印38bに一致させる。これによりハンド14の吸着面14cが、取出すべき物品20の表面に平行に配置される。ハンド位置姿勢Pjは、所定の座標軸40に対する降順にナンバリングしているので、取出すべき物品20はコンテナ16内の最も高い位置にある物品20となる。
【0046】
ステップS11では、ハンド駆動用のアクチュエータに物品20を保持するための制御信号を出力する。これにより、物品20が、ハンド14の吸着面14cに吸着され、保持される。吸着面14cは、物品20の現実に存在する表面に対向して配置されるため、ハンド14で物品20を安定的に保持することができる。この場合、例えば、ハンド14が吸引ノズルを有する場合、真空ポンプを作動し、吸引力で物品20を吸引、保持する。把持部14aが吸着用磁石を有する場合、電磁コイルに電流を流して磁石を作動し、磁力で物品20を吸着、保持する。
【0047】
次に、ステップS12で、ロボット駆動用のアクチュエータに制御信号を出力し、
図13に示すように、物品21を保持したハンド14を所定方向、例えば所定の座標軸40(
図11)の方向、あるいはハンド位置姿勢38の矢印38b方向(
図12)に沿って上昇させる。ハンド14を所定方向に上昇させることで、ロボット12の動作によりハンド14を移動させる際、ハンド14や物品21が他の物品20と衝突することを避けることができる。
【0048】
ステップS13では、ハンド14による物品21の保持が成功したか否かを判定する。例えば、ハンド14に重量を検出する重量検出器を設け、検出値が所定値以上となった場合に、保持が成功したと判定する。なお、ハンド14が吸着用磁石を有する場合、近接センサで物品21が存在するか否かを判定し、判定結果に応じて保持が成功したか否かを判定すればよい。ハンド14が吸引ノズルを有する場合、吸引時のエアの流量や圧力の変化に応じて保持が成功したか否かを判定すればよい。保持が成功したと判定されると、ステップS14へ進む。保持が成功していないと判定されると、ステップS15へ進む。
【0049】
ステップS15では、j<nか否かを判定する。この判定は、n個(
図12では3個)のハンド位置姿勢38の中にハンド14が未だ到達していないものが存在するか否かの判定である。j<nと判定されると、ハンド位置姿勢Pj+1にハンド14が未だ到達していないので、ステップS16でj←j+1とし、ステップS10へ戻る。そして、
図14に示すようにロボット12の動作により、ハンド14を次のハンド位置姿勢Pj(例えばP2)へ移動させる。次いで、ハンド駆動用のアクチュエータに物品20を保持するための制御信号を出力し、物品21を保持する(ステップS11)。ステップS15でj≧nと判定されると、n個のハンド位置姿勢38の全てにハンド14が到達したので、ステップS14へ進む。
【0050】
ステップS14では、ロボット駆動用アクチュエータに制御信号を出力し、物品21をロボット12の動作により所定位置に搬送し、物品21をハンド14から取り外す。以上で、1サイクルの処理が終了となる。
【0051】
本実施形態によれば以下のような作用効果を奏することができる。
(1)本実施形態では、三次元点空間にバラ積みされた複数の物品20の表面位置を三次元測定機11で測定して複数の三次元点31の位置情報を取得し(ステップS1)、測定された三次元点11の位置情報に基づき、三次元空間における三次元点11の分布の程度を表す密度分布を演算し(ステップS5)、演算された密度分布に基づき、密度が極大となる密度極大位置を演算し(ステップS6)、この密度極大位置に基づき、密度極大位置にある物品20を取出し可能なハンド位置姿勢38を演算し(ステップS7)、ハンド位置姿勢38へハンド14を移動して物品20を取出すようにロボット12を制御する(ステップS10〜ステップS12)。
【0052】
これにより、パターンマッチング等によらず物品20の位置及び姿勢を特定することができる。このため、物品20のモデルパターンを作成する必要がなく、多品種や不定形の物品20であっても容易にその位置及び姿勢を認識して、物品20を保持することができる。また、追加された新品種の物品20に対してもモデルパターンを追加することなく、その位置及び姿勢を認識することができ、物品20の位置姿勢の認識失敗や誤認識あるいは物品20の取損ねや衝突等の問題を回避し、上方にある取出し易い物品20へハンド14を高速に移動させて物品20を効率良く取出すことができる。さらに、三次元点31の密度が高い密度極大位置に基づきハンド位置姿勢38を演算するため、物品20の表面にハンド14を確実に接触させることができる。したがって、物品20がL字形状を呈する場合や、物品20の中央に穴が開口されている場合等、連結集合32の重心が物品20の表面上にない場合であっても、物品20を安定的に保持することができる。
【0053】
(2)三次元測定機11により取得された複数の三次元点31を近似する平面33を演算し(ステップS3)、その平面33に複数の三次元点31を投影した投影点34の位置を演算し(ステップS4)、平面33上の密度計測点35から所定距離r内にある投影点34の個数を求め、この個数に応じて密度計測点35における投影点34の密度を求めることで、密度分布を演算するようにした(ステップS5)。このように三次元点31を平面33上に投影することで、物品20の表面に密度が極大となる箇所が存在するようになり、物品20の表面をハンド14で良好に吸着することができ、物品取出装置10による物品取出しの信頼性が高まる。これに対し、近似平面33を導入しない場合、例えば物品20の角部に密度が極大となる箇所が存在することがあり、この場合には物品20の角部をハンド14で吸着することは困難である。
【0054】
(3)複数の三次元点31のうち、互いに近傍にある三次元点31を連結してなる連結集合32を構成し(ステップS2)、各連結集合32に含まれる三次元点31を用いて、連結集合32毎に密度分布を演算し(ステップS5)、密度極大位置を求めるようにした(ステップS6)。連結集合32は各物品20に対応した三次元点31の集合であるため、物品31毎に密度極大位置が求められることとなり、互いに姿勢の異なる複数の物品20をハンド14で保持することが可能となる。
【0055】
(4)連結集合32は、密度極大位置を含む平面33上の領域内における三次元点31によって構成され、連結集合32に含まれる三次元点31の位置情報に基づき、各物品20に対応した連結集合32を代表する位置、すなわち密度極大位置を演算し、この代表位置と代表位置の周囲の三次元点31の位置情報(例えば平面33をなす三次元点31の位置情報)とに基づき、ハンド位置姿勢38(
図12の矢印38a,38bの交点の位置および矢印38a,38bの向き)を演算するようにした(ステップS7)。これにより物品20毎にハンド位置姿勢38が演算され、個々の物品20を安定的に保持することができる。
【0056】
図15は、
図1のロボット制御装置13の内部構成を示すブロック図である。ロボット制御装置13は、密度演算部131と、極大位置演算部132と、ハンド位置姿勢演算部133と、ロボット制御部134と、集合設定部135とを有する。密度演算部131は、面演算部131Aと、投影点演算部131Bとを有する。
【0057】
上記実施形態では、三次元測定機11により取得された複数の三次元点31を平面33で近似したが(ステップS3)、曲面で近似するようにしてもよく、面演算部131Aの構成は上述したものに限らない。したがって、ステップS4において、平面33に複数の三次元点33を投影するのではなく、曲面に複数の三次元点31を投影するようにしてもよく、投影点34の位置を演算する投影点演算部131Bの構成も上述したものに限らない。上記実施形態では、平面33上の密度計測点35から所定距離r内にある投影点34の個数を求め、この個数に応じて密度計測点35における投影点34の密度を求め、この密度を用いて投影点34の密度分布を演算するようにしたが(ステップS5)、三次元点31を平面や曲面に投影することなく、三次元空間における複数の三次元点31の分布の程度を表す密度分布を演算するようにしてもよく、三次元測定機11により測定された位置情報に基づき密度分布を演算するのであれば、密度演算部131の構成はいかなるものでもよい。
【0058】
上記実施形態では、投影点34の密度分布に基づき、投影点34の密度が極大となる密度極大位置を演算したが(ステップS6)、投影点34を用いることなく三次元点31の密度分布に基づき、三次元点31の密度が極大となる密度極大位置を演算するようにしてもよく、極大位置演算部132の構成は上述したものに限らない。
【0059】
上記実施形態では、密度極大点39から平面33の法線ベクトル39aに沿って所定量離れた点にハンド位置姿勢38の位置を設定し、平面33および法線ベクトル39aに平行な方向(矢印38a,38b)にハンド位置姿勢38の姿勢を設定したが(
図10)、極大位置演算部132により演算された密度極大位置に基づいてハンド位置姿勢38を設定するのであれば、上述したのとは別の位置および姿勢にハンド位置姿勢38を設定してもよく、ハンド位置演算部133の構成は上述したものに限らない。上記実施形態では、密度極大位置にある物品20を取出し可能なハンド14の位置姿勢をハンド位置姿勢38としたが、密度極大位置の近傍にある物品20を取出し可能な位置姿勢をハンド位置姿勢38としてもよい。
【0060】
上記実施形態では、ハンド14の軸線L0および基準点14dをハンド位置姿勢38に一致させるようにロボット14を制御したが(ステップS10)、ハンド位置姿勢演算部133により演算されたハンド位置姿勢38へハンド14を移動して物品20を取出すようにロボット12を制御するのであれば、ロボット制御部134の構成はいかなるものでもよい。ハンド14は物品20の形状に応じて適宜変更されるものであり、本発明は、上述した以外の種々の形状の物品20に対し適用可能である。
【0061】
上記実施形態では、複数の三次元点31のうち、互いに近傍にある三次元点31を連結してなる連結集合32を設定した(ステップS2)。この連結集合32は、極大位置演算部132により演算される密度極大位置を含む領域内、すなわち単一の物品32の表面上の閉じた領域内における三次元点31によって構成される集合に相当するが、互いに近傍にある三次元点31によって構成される集合は、連結集合32以外であってもよく、集合設定部135の構成は上述したものに限らない。
【0062】
なお、バラ積みされた複数の物品31の表面位置を三次元測定機11で測定して、複数の三次元点31の位置情報を取得し、三次元測定機11により測定された位置情報に基づき、三次元空間における複数の三次元点31の分布の程度を表す密度分布を演算し、演算された密度分布に基づき、密度が極大となる密度極大位置を演算し、演算された密度極大位置に基づき、密度極大位置またはその近傍にある物品20を取出し可能なハンド14の位置及び姿勢であるハンド位置姿勢38を演算し、演算されたハンド位置姿勢38へハンド14を移動して物品20を取出すようにロボット12を制御するのであれば、三次元空間にバラ積みされた複数の物品20を取出す物品取出方法の構成はいかなるものでもよい。
【0063】
以上の説明はあくまで一例であり、本発明の特徴を損なわない限り、上述した実施形態及び変形例により本発明が限定されるものではない。上記実施形態及び変形例の構成要素には、発明の同一性を維持しつつ置換可能かつ置換自明なものが含まれる。すなわち、本発明の技術的思想の範囲内で考えられる他の形態についても、本発明の範囲内に含まれる。また、上記実施形態と変形例の1つまたは複数を任意に組み合わせることも可能である。