(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、
図1〜
図15を参照して本発明の実施形態に係る物品取出装置について説明する。
図1は、本発明の一実施形態に係る物品取出装置10の概略構成を示す図である。物品取出装置10は、三次元測定機11と、ロボット12と、三次元測定機11とロボット12とに接続してロボット12を制御するロボット制御装置13とを有する。ロボット12は、アーム12aの先端部に取り付けられたハンド14を有する。ロボット12の側方にはコンテナ16が配置されている。なお、
図1には、XYZの直交3軸座標系を併せて示している。Z方向は鉛直方向、X方向及びY方向は水平方向であり、コンテナ16はXZ平面上に示されている。
【0012】
上方が開放されたコンテナ16内には、複数の物品20がバラ積みされている。本実施形態の物品取出装置10は、この複数の物品20がバラ積みされた状態から取出すべき物品20の位置及び姿勢を認識し、認識された物品20をコンテナ16の中からハンド14で取出して保持し、ロボット12の動作によりコンテナ16外の所定位置へ搬送する。複数の物品20は、
図1では互いに同一形状として示しているが、不定形のものでもよく、複数の品種を含むものでもよい。なお、以下では、ハンド14で保持された物品20を、コンテナ16内の他の物品と区別するために保持物品21(
図11参照)と呼ぶことがある。
【0013】
ハンド14は、不図示の昇降機構により昇降可能な一対の保持部14aを有する。保持部14aは、通常は
図1に示すように上昇状態にある。この上昇状態から下降して物品20を保持した後に、再度上昇する。これにより、保持物品21が他の物品20よりも上方(保持部14aの上昇する方向)に取出され、ロボット12の動作により保持物品21を搬送する際、保持物品21やハンド14とコンテナ16内の他の物品20との衝突を避けることができる。
【0014】
三次元測定機11は、コンテナ16の中央部上方に配置され、コンテナ16内にバラ積みされた物品20のうち、露出した物品20の表面を測定して、複数の三次元点の位置情報(三次元情報)を取得する。三次元測定機11の測定範囲は、コンテナ16を含む必要があるが、測定範囲が大き過ぎると測定分解能の低下を招く。したがって、測定範囲は、コンテナ16の占有範囲と同等、例えばコンテナ16の占有範囲に一致させることが好ましい。なお、
図1では、三次元測定機11が専用の架台15に固定されているが、ロボット12の先端部に三次元測定機11を取り付けてもよい。三次元測定機11とロボット制御装置13とは通信ケーブル等の通信手段によって互いに接続されており、互いに通信できるようになっている。
【0015】
三次元測定機11としては、種々の非接触方式のものを利用することができる。例えば、カメラ2台のステレオ方式、レーザスリット光を走査する方式、レーザスポット光を走査する方式、プロジェクタ等の装置を用いてパターン光を物品に投影する方式、光が投光器から出射されてから物品表面で反射し受光器に入射するまでの飛行時間を利用する方式などが挙げられる。
【0016】
三次元測定機11は、取得した三次元情報を距離画像または三次元マップといった形式で表現する。距離画像とは、画像形式で三次元情報を表現したものであり、画像の各画素の明るさや色により、その画像上の位置の高さまたは三次元測定機11からの距離を表す。一方、三次元マップとは、測定された三次元座標値(x,y,z)の集合として三次元情報を表現したものである。本実施形態では、距離画像における各画素や三次元マップにおける三次元座標値を有する点を、三次元点と称し、複数の三次元点からなる集合を、三次元点集合と称する。三次元点集合は、三次元測定機11で測定した三次元点全体の集合であり、三次元測定機11により取得できる。
【0017】
ハンド14は、物品20を取出し、かつ、保持することができるが、それが可能なハンドの形態としては、例えば吸引ノズル、吸着用磁石、吸着パッドまたはチャックなどが挙げられる。ハンド14は、ロボット12の動作により、その位置姿勢が制御される。
【0018】
図2は、ロボット制御装置13で実行される処理、特に物品取出しに係る処理の一例を示すフローチャートである。以下、物品取出装置10による動作を、
図2のフローチャート及び関連する図面を参照しつつ説明する。
【0019】
図2の処理は、例えば図示しない操作スイッチの操作により、物品20の取出開始指令が入力されると開始される。まず、三次元空間にバラ積みされた複数の物品20の表面を三次元測定機11で測定して三次元点集合30を取得する(ステップS1)。
図3は、三次元測定機11で取得した三次元点集合30と、三次元点集合30を構成する三次元点31の一例を示す図である。図では、三次元点31が黒丸で示されており、三次元点集合30は、黒丸全体を含む点線で囲まれた領域として示されている。
【0020】
次に、三次元点集合30から1以上の連結集合32を求める(ステップS2)。
図4は、三次元点集合30から求めた連結集合32の一例を示す図である。図では、連結集合32は点線で囲まれた領域として示されている。すなわち、
図4には、4つの連結集合32が示されている。
【0021】
ここで言う連結集合32とは、三次元点集合30の部分集合であり、任意の三次元点(第1の三次元点)31の近傍にその三次元点31とは異なる他の三次元点(第2の三次元点)31が存在する場合、第1の三次元点31と第2の三次元点31とが連結されてなるものである。例えば、
図15に示すように複数の三次元点31(311〜317で表す)が測定され、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を構成する。すなわち、連結集合32とは、互いに近傍に存在する三次元点を連結してなる三次元点の集合である。
【0022】
三次元的測定機11によりバラ積みされた物品20の平面が測定される場合、同一物品20上における隣り合う三次元点31(例えば
図4の31a,31b)は互いに近距離に位置する。これに対し、物品20の境界部では隣り合う三次元点(例えば
図4の31b,31c)の位置が大きく変化する。したがって、三次元点31a,31bは同一の連結集合32に属するのに対し、三次元点31b,31cは互いに異なる連結集合32に属することになり、連結集合32により物品20を特定することができる。なお、連結集合32を求める具体的処理については、後述する(
図14)。
【0023】
次に、同一の連結集合32に属する三次元点31の位置に基づき、各々の連結集合32を代表する代表位置姿勢33を求める(ステップS3)。連結集合32は物品20の露出する表面を特定するものであるので、代表位置姿勢33は、物品20を代表する位置及び姿勢となる。すなわち、ステップS3は、連結集合32を用いて物品20の位置及び姿勢を特定する処理であり、これにより物品20の位置及び姿勢を認識することができる。なお、物品20の位置及び姿勢は、三次元測定機11によって取得した三次元点31の位置情報に基づいて特定される。すなわち、物品20の露出部を計測して得られる三次元点31に基づき、計算により求められる。このため、物品20の配置が同じでも、露出状況が異なると、特定される物品20の位置及び姿勢は異なる。つまり、物品20の位置及び姿勢は、物品20の配置に対応して一義的に特定されるのではなく、物品20の表面の露出状況に応じて特定される。
【0024】
図5は、連結集合32に属する三次元点31の位置に基づいて計算した代表位置姿勢33の一例を表す示す図である。代表位置姿勢33は、直角に交差する一対の矢印33a,33bで示されているが、これは代表位置姿勢33が直交座標系で表されるためである。
図5では、代表位置姿勢33が2つの矢印33a,33bで示されているが、代表位置姿勢33は二次元空間におけるものではなく、三次元空間におけるものである。
【0025】
代表位置姿勢33の求め方には、幾通りかの方法がある。まず、1つ目の例として、連結集合32に属する三次元点31の重心位置と所定の姿勢(例えば矢印33aを鉛直方向上方に向けた姿勢)とを組合せて代表位置姿勢33とする方法がある。重心位置の計算には、連結集合32に属する全ての三次元点31を利用しても良いし、別途、外れ値対策等の処理を導入して、選別した三次元点31を利用しても良い。外れ値対策としては、例えば、始めに連結集合32に属する全ての三次元点31を重心計算に利用して重心位置を求め、重心計算に利用した三次元点31で重心位置との距離が所定距離以上である三次元点31が存在する場合、重心計算に利用した三次元点31から重心位置との距離が大きい順に所定割合の三次元点31を除去する。そして残った三次元点31を重心計算に利用して重心位置を再計算する。この処理を、重心計算に利用した全ての三次元点31が重心位置から所定距離内に収まるまで繰り返せば良い。
【0026】
2つ目の例として、連結集合32に属する三次元点31の位置に基づいて平面を求め、その平面上の1つの点(例えば重心となる点)の位置とその平面の法線方向に基づく姿勢とを組合せて代表位置姿勢33とする方法がある。平面は、連結集合32に属する全ての三次元点31を用いて最小二乗法で求めてもよいし、別途、何らかの外れ値対策の処理を導入して求めてもよい。外れ値対策の方法としては、M推定法、RANSAC、LMedS、ハフ変換など、幾通りかの方法がある。ハフ変換などの処理を入れることで、連結集合32が、複数の物品20の表面に跨っている場合でも、その中から、一つの平面を抽出して認識することが可能になる。
【0027】
連結集合32が、複数の物品20の表面に跨る場合とは、物品20の境界部における三次元点31(例えば
図4の31b,31c)が互いに近距離に位置する場合であり、この場合には三次元点31b,31cが同一の連結集合32に属する。なお、ハフ変換を行って連結集合32内の複数の三次元点31が同一平面上にあるか否かを判定し、互いに異なる平面上にあると判定されると、連結集合32を各平面に対応した連結集合(例えば三次元点31bを含む連結集合32と三次元点31cを含む連結集合32)に分割するようにしてもよい。これにより連結集合32が修正され、物品20毎に精度よく連結集合32を求めることができる。
【0028】
3つ目の例として、連結集合32に属する三次元点31の位置に基づいて曲面を求め、その曲面上の1つの点(例えば重心に最も近い曲面上の点)の位置とその位置における曲面の法線方向とに基づく姿勢とを組合せて代表位置姿勢33とする方法がある。曲面は、連結集合32に属する全ての三次元点31を用いて最小二乗法で求めてもよいし、別途、何らかの外れ値対策の処理を導入して求めてもよい。外れ値対策の方法としては、M推定法、RANSAC、LMedS、ハフ変換など、幾通りかの方法がある。ハフ変換などの処理を用いることで、連結集合32が、複数の物品の表面に跨っている場合でも、その中から、一つの曲面を抽出して認識することが可能になる。
【0029】
4つ目の例として、連結集合32に属する各三次元点31の位置に基づいて穴を求め、その穴の位置及び姿勢(穴が穿設される方向)を代表位置姿勢33とする方法がある。この方法は、物品20に穴が設けられている場合に有効である。一例を示せば、まず、連結集合32内に、所定面積以上の三次元点31が存在しない閉じた領域(三次元点不存在領域)があるか否かを判定し、三次元点不存在領域があると判定されると、その三次元点不存在領域が穴であると仮定する。次に、穴の縁にある三次元点31の重心位置を求め、これを穴の位置とする。さらに、穴の縁にある三次元点31の位置に基づいて平面を求め、その平面の法線方向に基づく姿勢を、穴の姿勢とする。
【0030】
図5は、上記4つの例のうち、2つ目の例によって代表位置姿勢33を求めた場合を示している。ステップS3では、連結集合32に属する三次元点31が存在する領域の面積を演算し、面積が所定値より小さい連結集合32(
図4の32a)からは、代表位置姿勢33を取得しない。すなわち、表面が十分に露出していると判断される連結集合32に対してのみ、代表位置姿勢33を求める。代表位置姿勢33を求めていない連結集合32aは、物品取出しの対象としない。これにより、連結集合32aによって表される物品20、すなわち上面の一部が他の物品20で覆われている奥側の物品20にハンド14が接近することを防止でき、ハンド14と取出し対象以外の物品20とが衝突することを抑制できる。
【0031】
次に、各々の代表位置姿勢33に対応するハンド位置姿勢34を求める(ステップS4)。
図6は、代表位置姿勢33に対応するハンド位置姿勢34の一例を表す示す図である。ハンド位置姿勢34は、代表位置姿勢33と同様に、直角に交差する一対の矢印34a,34bで示されている。
【0032】
ハンド位置姿勢34の位置(矢印34a,34bの交点)及び姿勢(矢印34a,34bの方向)の求め方には、それぞれ幾通りずつかの方法がある。位置に関しては、例えば、代表位置姿勢33の位置をそのままハンド位置姿勢34の位置とする方法がある。別の例として、代表位置姿勢33の位置よりも所定の座標軸35(例えばZ軸)の向きに沿って所定長移動した位置を、ハンド位置姿勢34の位置とする方法もある。
図6は、後者の例で位置を示している。姿勢に関しては、例えば、代表位置姿勢33の姿勢をそのままハンド位置姿勢34の姿勢とする方法がある。別の例として、代表位置姿勢33の位置がコンテナ16の壁に近い場合、壁とハンドとの衝突を避ける目的で壁から離れる方向にハンドを傾けるようにする方法もある。
図6は、前者の例で姿勢を示している。
【0033】
次に、各々のハンド位置姿勢34にP1,P2,・・・,Pnとナンバリングする(ステップS5)。但し、nはハンド位置姿勢34の個数である。
図7は、ナンバリングされたハンド位置姿勢34を示す図であり、所定の座標軸35に対する座標値の降順、つまり、高い位置にあるものから順番にナンバリングされている。なお、
図7では、n=3である。
【0034】
次に、ハンド14の保持部14aにH1,H2,・・・,Hmとナンバリングする(ステップS6)。但し、mは保持部14aの個数である。
図8は、ナンバリングされた保持部14aを示しており、
図8では、m=2である。
【0035】
次に、自然数値を取る変数j,kに対して初期値を与える。すなわち、j←1,k←1とする(ステップS7)。変数jは保持部14aの番号の指定に用い、変数kはハンド位置姿勢34の番号の指定に用いる。
【0036】
次に、
図9に示すように、保持部14a駆動用のアクチュエータ(電動モータあるいはシリンダ)に制御信号を出力し、保持部Hjを下降させるとともに、ロボット駆動用のアクチュエータ(電動モータ)に制御信号を出力し、ロボット12の動作により保持部Hjをハンド位置姿勢Pkへ移動させる(ステップS8)。変数の初期値j=1,k=1に対しては、Hj=H1,Pk=P1である。
【0037】
次に、保持部Hj駆動用のアクチュエータに物品20を保持するための制御信号を出力し、
図10に示すように保持部Hjの下端面で保持物品21を保持する(ステップS9)。例えば、保持部Hjが吸引ノズルを有する場合、真空ポンプを作動し、吸引力で保持物品21を吸引、保持する。保持部Hjが吸着用磁石を有する場合、電磁コイルに電流を流して磁石を作動し、磁力で保持物品21を吸着、保持する。保持部Hjがチャックである場合、チャックを開くあるいは閉じることで、保持物品21を保持する。
【0038】
次に、
図11に示すように、保持部Hj駆動用のアクチュエータに制御信号を出力し、保持物品21を保持した保持部Hjを上昇させる(ステップS10)。保持部Hjを上昇させることで、ロボット12の動作によりハンド14を移動させる際、保持物品21や保持部Hjと他の物品20との衝突を避けることができる。
【0039】
次に、保持部14aによる保持物品21の保持が成功したか否かを判定する(ステップS11)。この判定は、例えば、保持部14aが吸引ノズルを有する場合、吸引時のエアの流量や圧力の変化に応じて保持が成功したか否かを判定すればよい。保持部Hjが吸着用磁石を有する場合、近接センサで保持物品21が存在するか否かを判定し、その存否に応じて保持が成功したか否かを判定すればよい。保持部Hjがチャックを有する場合、開閉確認センサでチャックの開閉状態を確認し、保持が成功したか否かを判定すればよい。保持が成功したと判定されると、ステップS12へ進む。保持が成功していないと判定されると、ステップS14へ進む。
【0040】
ステップS12では、j<mか否かを判定する。この判定は、m個(
図11では2個)の保持部14aの中に保持物品21を未だ保持していないものが存在するか否かの判定である。j<mと判定されると、保持部Hj+1が保持物品21を未だ保持していないので、j←j+1とし(ステップS13)、ステップS14へ進む。j<mでないと判定されると、全ての保持部14aが保持物品21を保持しているので、ステップS16へ進む。
【0041】
ステップS14では、k<nか否かを判定する。この判定は、n個(
図11では3個)のハンド位置姿勢34の中に保持部14aが未だ到達していないものが存在するか否かの判定である。k<nと判定されると、ハンド位置姿勢Pk+1に保持部14aが未だ到達していないので、k←k+1とし(ステップS15)、ステップS8へ戻る。そして、
図12に示すように次の保持部Hjを下降させながらロボット12の動作により次のハンド位置姿勢Pkへ移動させる。なお、
図12は、Hj=H2,Pk=P2の例である。次いで、この保持部Hjに物品吸着用の制御信号を出力し、
図13に示すように、次の保持物品21を保持する(ステップS9)。ステップS14でk<nでないと判定されると、n個のハンド位置姿勢34の全てに保持部14aが到達したので、ステップS16へ進む。
【0042】
ステップS16では、ロボット駆動用アクチュエータに制御信号を出力し、ハンド14を所定位置に移動する。これにより保持物品21がロボット12の動作により所定位置に搬送される。その後、保持部駆動用アクチュエータに制御信号を出力し、保持物品21を保持部14aから取外す。以上で、1サイクルの処理が終了となる。なお、未到達のハンド位置姿勢34があるにも拘わらず(k<n)、全ての保持部14aで保持物品21を保持している場合(j≧m)、ステップS16で保持物品21を所定位置に搬送して保持部14aから取外した後に、保持部14aの番号jを初期値1にして、ステップS8以降の処理が繰り返される。
【0043】
ここで、連結集合32(ステップS2)を求めるための具体的処理について説明する。
図14は、連結集合32を求めるための処理(連結集合演算処理)の一例を示すフローチャートである。
【0044】
まず、ステップS21で、三次元点集合30に属する全ての三次元点31に、初期のラベル番号として、どの連結集合32にも属していないことを表すラベル番号0を割り振る。以下では、自然数であるラベル番号jが割り振られた三次元点31を、31(j)で表す。ラベル番号jは、連結集合32に対応して割り振られる番号であり、0ではない同一のラベル番号jが割り振られていれば、同一の連結集合32に属することになる。次に、ステップS22で、1番目の連結集合32を求めるため、ラベル番号jを1とする(j←1)。
【0045】
次に、ステップS23で、三次元点集合30に属する三次元点31であって、ラベル番号が0である任意の三次元点31(0)を選択する。ステップS24では、ラベル番号が0である三次元点31(0)が選択されたか否かを判定し、肯定されるとステップS25に進む。三次元点31(0)が選択されなかった場合は、三次元点集合30に属する全ての三次元点31が何れかの連結集合32に属している。この場合は、ステップS24が否定され、連結集合演算処理が終了し、
図2のステップS3に進む。
【0046】
ステップ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)が追加された順番に並んでいるものとする。
【0047】
ステップ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)。
【0048】
ステップ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)を追加する処理を繰り返す。
【0049】
ステップS32では、ラベル番号jに1を追加し(j←j+1)、ステップS23に戻る。以降、ステップS23〜ステップS32と同様の処理を繰り返し、次のラベル番号jに対応する連結集合32を求める。
【0050】
以上の連結集合演算処理を、
図15を参照して具体的に説明する。連結集合演算処理の開始時には、全ての三次元点311〜317が連結集合32に属しておらず、三次元点311〜317のラベル番号は0である(ステップS21)。この状態から、ラベル番号1の連結集合32を作成するため、例えば三次元点313を選択すると(ステップS23)、その三次元点313にラベル番号1を割り振った後(313(1))、三次元点313をラベル番号1のリストL1の1番目に格納する(ステップS26)。
【0051】
次いで、リストL1の1番目の三次元点313の近傍に、ラベル番号0の三次元点31(0)が存在するか否かを判定する(ステップS28)。この場合、ラベル番号0の三次元点312,314が存在するため、これら三次元点312,314にラベル番号1をそれぞれ割り振り(312(1),314(1))、リストL1の2番目及び3番目にそれぞれ追加する(ステップS29)。これによりリストL1の要素数Nは3となる。
【0052】
その後、kが2(<N)となり(ステップS30)、リストL1の2番目の三次元点312の近傍に、ラベル番号0の三次元点31(0)が存在するか否かを判定する(ステップS28)。この場合、ラベル番号0の三次元点311が存在するため、この三次元点311にラベル番号1を割り振り(311(1))、リストL1の4番目に追加する(ステップS29)。これによりリストL1の要素数Nは4となる。
【0053】
その後、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)。
【0054】
このとき、kは要素数Nよりも大きくなるため、ラベル番号1のリストL1の作成を終了し、ラベル番号を2として(ステップS32)、同様の処理を繰り返す。繰り返しの処理では、例えばラベル番号0の三次元点315,316にラベル番号2を割り振って、三次元点315(2),316(2)をリストL2に追加し、ラベル番号0の三次元点317にラベル番号3を割り振って、三次元点317(3)をリストL3に追加する。これにより、ラベル番号0の三次元点31が不存在となるため、ステップS24が否定され、連結集合演算処理を終了する。
【0055】
以上の処理では、連結集合32を求める際に、近傍判定部としての機能を有するロボット制御装置13内での処理により、三次元点31の近傍に他の三次元点31が存在するか否かを判定するようにした(ステップS28)。近傍判定部では、例えば、予めXYZの三次元の座標系に対応して所定距離aを定め、三次元点集合30に属する第1三次元点31(例えば
図15の311)と第2三次元点31(例えば
図15の312)との間の距離Dが所定距離a以内である場合に、第1三次元点311の近傍に第2三次元点312が存在すると判定すればよい。XYZの三次元の座標系ではなく、XYの二次元の座標系とZの一次元の座標系に対応してそれぞれ所定距離xya,zaを定め、XYの二次元の座標系とZの一次元の座標系に関する三次元点311,312間の距離Dxy,Dzを求め、この距離Dxy,Dzがそれぞれ予め定めた所定値xya,za以内のときに、三次元点311の近傍に三次元点312が存在すると判定してもよい。
【0056】
三次元点集合30が距離画像の形で表され、距離画像の各画素が縦横等間隔に並んでいるとき、近傍判定部は、例えば以下のようにして三次元点同士の近傍判定を行うようにしてもよい。すなわち、距離画像の各画素の明るさの尺度となる1次元座標系を定義し、1次元座標系に対し、所定距離に対応して明るさの差を表す閾値を定義する。第1三次元点と第2三次元点が距離画像上で隣接する画素であり、かつ、対応する画素間の明るさの差が閾値以内のときに、第1三次元の近傍に第2三次元点があると判定すればよい。
【0057】
本実施形態によれば、以下のような作用効果を奏することができる。
(1)三次元空間にバラ積みされた物品20の表面位置を三次元測定機11で測定して複数の三次元点31の位置情報を取得するようにした。さらに、ロボット制御装置13での処理により、三次元点集合30から互いに近傍にある三次元点31を連結してなる連結集合32を求め(ステップS2)、連結集合32に属する三次元点31の位置情報に基づき、物品20を取出可能なハンド14(保持部14a)の位置姿勢(ハンド位置姿勢34)を求め(ステップS3〜ステップS4)、求められたハンド位置姿勢34にハンド14を移動してコンテナ内から物品21を取出すようにロボット12を制御した(ステップS8〜ステップS10)。
【0058】
このようにして求められた連結集合32は、三次元測定機11に向けて露出している物品表面の位置及び姿勢(傾き)を反映するものであり、パターンマッチング等によらず物品20の位置及び姿勢を特定することができる。このため、物品20のモデルパターンを作成する必要がなく、多品種や不定形の物品20であっても容易にその位置及び姿勢を認識して、物品20を保持することができる。また、追加された新品種の物品20に対してもモデルパターンを追加無しでその位置及び姿勢を認識することができ、物品20の位置姿勢の認識失敗や誤認識、或いは物品20の取損ねや衝突等の問題を回避し、上方にある取出し易い物品20へハンド14を高速に移動させて物品20を効率良く取出すことができる。
【0059】
これに対し、例えば、物品の二次元モデルパターンを用いて二次元パターンマッチングにより物品の位置を認識する方法では、二次元モデルパターンを作成する必要があり、手間を要する。とくに、物品が多品種の場合には、品種数分のモデルパターンを作成する必要があり、多大な手間が必要となる。さらに、この方法には、本実施形態と比較した場合に以下のような問題点がある。バラ積みされた物品20は様々な姿勢となり、各姿勢に対応した二次元パターンマッチングを行う場合、例えば二次元の幾何学的変換を施して得られる変換二次元モデルパターンを利用する必要があるが、この方法で対応できるのは、平面的な物品に限られる。通常の立体的な物品に二次元パターンマッチングを適用しようとすると、幾何学的変換では補い切れない見え方の多様性を考慮して、物品一品種についてだけでも表・裏・横・斜めと幾つかの方向から二次元モデルパターンを作成する必要が生じる。さらに、多品種への対応を考慮すると、品種数を乗じた膨大な数の二次元モデルパターンを作成する必要が生じ、多大な手間を要する。また、不定形の物品の場合には、二次元モデルパターンを作成できないので、その位置を認識することはできない。バラ積みされた物品20は、照明の当たり具合が悪かったり他の物品20の影が写ったり物品20が想定以上に傾いたりするため、撮像条件が悪い。したがって、物品20の位置姿勢の認識失敗や誤認識が発生したり、上方に位置する取出すべき物品の位置の認識に失敗したり、下方に位置する物品の位置が先に認識されたりするおそれがある。誤認識された物品位置姿勢や下方にある物品位置を目掛けてロボット12のハンド14の位置姿勢を制御すると、物品20を取損ねて装置の作業効率が落ちるばかりか、ハンド14と物品20とが衝突してそれらを損傷させるおそれがある。損傷を回避しようとすると、ロボット12の移動速度を遅くせざるを得ず、作業効率が悪化する。
【0060】
また、例えば、物品の三次元モデルパターンを用いて三次元パターンマッチングにより物品の位置を認識する方法においても、三次元モデルパターンを作成する必要があり、手間を要する。とくに、物品が多品種の場合には、品種数分のモデルパターンを作成する必要があり、多大な手間が必要となる。さらに、この方法には、本実施形態と比較した場合に以下のような問題点がある。不定形の物品は、三次元モデルパターンを作成できないので、その位置を認識することはできない。バラ積みされた物品20は、三次元測定機11に向いていない側の三次元点31を取得でない上に、大きく傾いたり近隣の物品に邪魔されたりするため、撮像条件が悪い。このため、三次元パターンマッチングにより物品の三次元姿勢を決定できるほど量・質ともに十分な三次元点集合を得るのは困難であり、物品の位置姿勢の認識失敗や誤認識が発生したり、上方に位置する取出すべき物品の位置の認識に失敗し、下方に位置する物品の位置が先に認識されたりするおそれがある。誤認識された物品位置姿勢や下方にある物品位置を目掛けてロボット12のハンド14の位置姿勢を制御すると、物品20を取損ねて装置の作業効率が落ちるばかりか、ハンド14と物品20とが衝突してそれらを損傷させるおそれがある。損傷を回避しようとすると、ロボット12の移動速度を遅くせざるを得ず、作業効率が悪化する。
【0061】
(2)ロボット制御装置13での処理により、三次元点集合30に属する任意の三次元点31(第1三次元点)とこれとは別の三次元点31(第2三次元点)との間の所定の座標系(例えばXYZ座標系)に関する距離Dが、予め定められた所定距離a以内にあるか否かを判定し、所定距離a以内にあると判定されると、第1三次元点31と第2三次元点31に同一のラベル番号jを割り振ってこれらを連結するようにした(ステップS28、ステップS29)。したがって、各物品20の表面の位置姿勢を表す連結集合32を、容易かつ精度よく作成することができる。また、三次元点集合30から抽出されたエッジによって囲まれた部分領域に三次元点集合30を分割する手法に比べ、三次元点集合30のデータに欠損がある場合においても、安定して物品20を保持可能な面の位置及び姿勢を認識することができる。
【0062】
(3)ロボット制御装置13での処理により、連結集合32に属する三次元点31の位置に基づき、連結集合32を代表する位置及び姿勢である代表位置姿勢33を求め、この代表位置姿勢33に対応してハンド位置姿勢34を求めるようにした(ステップS3、ステップS4)。これにより、物品20とハンド14との位置関係を、ハンド14の種類等に応じて適切に設定することができる。
【0063】
(4)ロボット制御装置13での処理(ステップS3)により、連結集合32に属する三次元点31の重心位置とこの重心位置における所定の姿勢とを組合せて代表位置姿勢を求めるようにすると、保持物品21をハンド14で安定して保持することができる。連結集合32に属する三次元点31の位置に基づいて平面または曲面を求め、求めた平面または曲面上の1つの点の位置と平面または曲面の法線方向に基づく姿勢とを組合せて代表位置姿勢33を求めるようにすると、物品20の表面が傾いている場合に、その傾きに合わせて代表位置姿勢33を算出することができる。
【0064】
(5)表面に穴を有する物品20に対しては、連結集合32に属する三次元点31の位置に基づいて穴を求め、その穴の位置及び姿勢(穴の方向)を代表位置姿勢33とすることで、保持部14aがチャックであるハンド14を用い、内径把持にて物品20を保持することができる。
【0065】
なお、バラ積みされた複数の物品20の表面位置を三次元測定機11で測定して複数の三次元点31の位置情報を取得し、複数の三次元点点31の中から、互いに近傍にある三次元点31を連結してなる連結集合32を求め、連結集合32に属する三次元点31の位置情報に基づき、取出し可能な物品20の位置及び姿勢を特定し、この位置姿勢に対応したハンド位置姿勢34を求め、ハンド位置姿勢34にハンド14を移動して物品20(保持物品21)を取出すようにロボット12を制御するのであれば、物品取出方法の構成はいかなるものでもよい。
【0066】
上記実施形態では、ハンド14に2つの保持部14aを設けるようにしたが、保持部14aを3個以上設けてもよく、1つだけ設けるようにしてもよい。三次元点集合30に属する第1三次元点31(例えば
図15の311)と第2三次元点31(例えば
図15の312)との間の所定の座標系に関する距離が所定距離内にあるときに、第1三次元点311と第2三次元点312を連結して連結集合32を演算するようにしたが(ステップS2)、互いに近傍にある三次元点31,31を連結してなる連結集合32を求めるのでれば、連結集合演算手段としてのロボット制御装置13の構成は上述したものに限らない。
【0067】
連結集合32に属する三次元点31の位置情報に基づき、連結集合32を代表する代表位置姿勢33を演算するようにしたが(ステップS3)、連結集合32によって表される物品20の位置及び姿勢を特定するのであれば、物品特定手段としてのロボット制御装置13の構成は上述したものに限らない。ここで、連結集合32を代表する位置及び姿勢は、物品20を代表する位置及び姿勢でもあり、物品20の位置及び姿勢を特定するとは、物品を代表する位置及び姿勢を求めて物品20の配置を特定することを意味する。
【0068】
上記実施形態では、代表位置姿勢33からハンド位置姿勢34を演算するようにしたが(ステップS4)、代表位置姿勢33として特定された物品20を取出し可能なハンド位置姿勢34を求めるのであれば、ハンド位置姿勢演算手段としてのロボット制御装置13の構成は上述したものに限らない。ハンド位置姿勢34へハンド14を移動して物品20を取出すようにロボット12を制御するのであれば、ロボット制御手段としてのロボット制御装置13の構成はいかなるものでもよい。
【0069】
すなわち、上述した物品取出装置10の構成(
図1)は一例であり、連結集合演算手段(ステップS2)、物品特定手段(ステップS3)、ハンド位置姿勢演算手段(ステップS4))、ロボット制御手段(ステップS8〜ステップS10)としてのロボット制御装置13の構成は上述したものに限らない。
【0070】
以上の説明はあくまで一例であり、本発明の特徴を損なわない限り、上述した実施形態及び変形例により本発明が限定されるものではない。上記実施形態及び変形例の構成要素には、発明の同一性を維持しつつ置換可能かつ置換自明なものが含まれる。すなわち、本発明の技術的思想の範囲内で考えられる他の形態についても、本発明の範囲内に含まれる。また、上記実施形態と変形例の1つまたは複数を任意に組み合わせることも可能である。