(57)【特許請求の範囲】
【請求項１】
物品の外観を非接触で計測し、物品の既知の形状との照合により物品の位置および角度を求めた後、物品の位置および角度に基づいて干渉検出領域を設定し、干渉検出領域において検出された他部材について、干渉検出領域外の面積が所定値を越えるときに干渉があると判断することを特徴とする物品の干渉検出方法。
【請求項２】
物品の外観を非接触で計測し、物品の既知の形状との照合により物品の位置および角度を求めた後、物品の位置および角度に基づいて干渉検出領域を設定し、干渉検出領域内に含まれる他部材の面積が所定値を越えるときに干渉があると判断し、干渉検出領域内に含まれる他部材の面積が所定値以下であるときには物品の高さを計測し、物品の高さが所定値を越えるときには干渉があると判断することを特徴とする物品の干渉検出方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、主として生産ラインにおいてロボットでピッキングしようとする部品と他部材との干渉の有無を検出することにより、他部材との干渉が生じていない部品をピッキングの可能な部品として検出する物品の干渉検出方法に関するものである。
【０００２】
【従来の技術】
一般に、生産ラインにおいてロボットを用いて部品をピッキングする際に、ピッキングしようとする部品が他部材（他の部品や装置）と干渉（近接、接触、重複）していると、その部品をロボットでピッキングすることができない場合があり、その部品をピッキングしようとした処理に要した時間が無駄になる。また、部品をピッキングすることができたとしても、干渉していた部材が部品のピッキングに伴って移動する（たとえば、重なっていた部品が落ちたり、近接ないし接触していた部品がロボットの移動で押されたりする）ことにより、他の部品の位置が変化することがある。ここで、ロボットでのピッキングの際には処理効率を向上させるために、通常はピッキングしようとする部品の位置を一度に複数個ずつ計測しているものであるから、ピッキングの際に他の部品の位置が変化すると、位置が変化した部品はピッキングすることができなくなる。
【０００３】
このように、部品の干渉があるとピッキングの際に作業時間が増加したり、作業ができなくなるなどの不都合が生じるから、部品のピッキングの際には部品の干渉を検出することが要求される。
物品の干渉を検出する技術としては、着目する物品をＴＶカメラのような画像入力装置によって撮像し、濃淡を２値化することによって着目する物品の画像内での面積を求め、この面積が物品の既知の面積に基づいて設定した閾値を越えるときには他部材との干渉があると判断するものが知られている。
【０００４】
【発明が解決しようとする課題】
上記技術を採用すれば、着目する物品と他部材とが接触しているような場合には干渉を検出することができるが、１つの物品の上に他の物品が載っているような場合や、物品同士が離れて位置しているがロボットには干渉する程度に近接しているような場合には干渉として検出することができない。
【０００５】
本発明は上記事由に鑑みて為されたものであり、その目的は、接触、近接、重複のいずれの状態でも干渉として検出することが可能な物品の干渉検出方法を提供することにある。
【０００６】
【課題を解決するための手段】
請求項１の発明では、物品の外観を非接触で計測し、物品の既知の形状との照合により物品の位置および角度を求めた後、物品の位置および角度に基づいて干渉検出領域を設定し、干渉検出領域において検出された他部材について、干渉検出領域外の面積が所定値を越えるときに干渉があると判断することを特徴とする。
この方法では、物品の位置および角度に応じて干渉検出領域を設定し、干渉検出領域において検出された他部材について干渉検出領域の外側の面積を検出するから、ごみ等の異物程度では干渉とみなさないようにすることができる。つまり、物品をロボットでピッキングする場合にはロボットの稼働率を高めることが可能になる。
【００１３】
請求項２の発明では、物品の外観を非接触で計測し、物品の既知の形状との照合により物品の位置および角度を求めた後、物品の位置および角度に基づいて干渉検出領域を設定し、干渉検出領域内に含まれる他部材の面積が所定値を越えるときに干渉があると判断し、干渉検出領域内に含まれる他部材の面積が所定値以下であるときには物品の高さを計測し、物品の高さが所定値を越えるときには干渉があると判断することを特徴とする。
この方法によれば、最初は面積を用いて干渉を判定することによって、ほとんどの干渉については比較的短時間で検出できるようにし、面積によっては検出されないような干渉（重複の場合）については、高さ情報を用いることによって検出することができるのであって、比較的短時間で各種の干渉状態を確実に検出することができる。
【００１５】
【発明の実施の形態】
（実施形態１）
本実施形態では、物品として生産ラインにおいてロボットによりピッキングする部品を対象とし、図２に示すように、部品Ｘの外観を計測する手段としてＴＶカメラ１１を用いる。部品ＸにはＴＶカメラ１１の光軸方向と同じ方向から光源１２によって光が照射されており、ＴＶカメラ１１では部品Ｘの外表面の陰影を撮像する。ＴＶカメラ１１で撮像した画像はデジタル信号として取り出され画像メモリ１３に格納される。また、画像メモリ１３に格納された濃淡情報を含む画像（白黒画像でもカラー画像でもよいがここでは白黒画像）に基づいて、マイクロコンピュータよりなる画像処理部１４では着目する部品と他部材との干渉の有無を検出する。ここに、ＴＶカメラ１により撮像された画像には少なくとも１つの部品Ｘの画像が含まれるようにしてあり、通常は複数の部品Ｘが１画面に含まれることになる。
【００１６】
画像処理部１４の処理手順は、基本的には図１のようになる。まず、画像メモリ１３に格納された濃淡画像に基づいて画像内の部品Ｘの位置および角度を認識する（Ｓ１）。ここで、部品Ｘの位置とは画像内での部品Ｘの代表点（たとえば、画像内での重心）の座標であり、部品Ｘの角度とは画像内での部品Ｘの向き（たとえば、慣性主軸の方向）である。
【００１７】
画像内の部品Ｘの位置および角度が認識されると、他部材との干渉の有無を判定する干渉検出領域Ｄ1 を設定する（図３参照）。干渉検出領域Ｄ1 は、各部品Ｘの形状に応じてあらかじめ設定され領域設定ファイルＦ1 に格納されている。そこで、着目する１種類の部品Ｘについて領域設定ファイルＦ1 から干渉検出領域Ｄ1 を読み出し（Ｓ２）、ステップＳ１において求めた部品Ｘの位置に応じて領域設定ファイルＦ1 から読み出した干渉検出領域Ｄ1 の位置を合わせる（Ｓ４）。こうして干渉検出領域Ｄ1 を設定した後に、干渉検出領域Ｄ1 の中に他部材が存在するか否かを判定し、他部材の存在が検出されると干渉があると判断する（Ｓ５）。干渉を判定した後、画像内に他に部品Ｘが存在していれば（Ｓ３）、他の部品Ｘについても干渉検出領域Ｄ1 の位置を合わせて干渉の判定を繰り返して行なう。ただし、繰り返し処理は同種類の部品Ｘについて行ない、繰り返し処理の際には領域設定ファイルＦ1 からの干渉検出領域Ｄ1 の読み出しは行なわない。こうしてＴＶカメラ１１の視野内に存在する着目すべき１種類の部品Ｘのすべてについて干渉の判定を行なうと、ＴＶカメラ１１によって次にピッキングすべき部品Ｘを撮像する。
【００１８】
以下では、ステップＳ１において部品の位置を検出する方法と、ステップＳ５において干渉を判定する方法について具体的に説明する。
１．部品の位置を認識する方法
１．１  パターンマッチングによる方法
部品Ｘの位置をパターンマッチングにより認識する場合には、画像処理部１４を図４のように構成しておく。すなわち、画像処理部１４に、パターンマッチング部２１を設け、テンプレートファイルＦ2 にあらかじめ設定してあるテンプレートとＴＶカメラ１１により撮像した部品Ｘの画像とのパターンマッチングを行なう。パターンマッチングの際には、ＴＶカメラ１１により撮像した画像（以下では原画像という）の中で、テンプレートを１゜ずつ回転させ、各角度のテンプレートを１画素ずつラスタスキャンするとともに一致度を判定する。ここで、テンプレートは、検査対象となる部品Ｘと同じ条件（照明方向や撮像倍率）で基準とする部品Ｘを撮像し、濃度を正規化したものを用いる。したがって、原画像についても濃度を正規化する。濃度の正規化には各画素の濃度を画像内の全画素の濃度の総和で除算する。このように濃度を正規化しておくことにより、光源１２の光量変化によらずパターンマッチングを行なうことができる。
【００１９】
しかして、テンプレートをラスタスキャンし、原画像と重なる位置の各画素の濃度差の総和を求めると、部品Ｘが存在しかつ角度が一致するときに差濃度の総和は極小値になる。つまり、パターンマッチング部２１でのテンプレートの回転およびスキャンと一致度の演算との結果に基づいて、位置角度検出部２２では差濃度の総和が極小値をとるようなテンプレートの位置および角度を部品Ｘの位置および角度として求める。このような処理を正規化相関演算と称している。
【００２０】
つまり、正規化相関演算の処理をまとめると、図５に示すように、まずテンプレートの回転角度θを０°に初期化し（Ｓ１１）、テンプレートの位置を初期化した後（Ｓ１４）、画素の差濃度の総和を求める（Ｓ１６）。次に、テンプレートの位置を１画素分移動して（Ｓ１７）、同様に一致度を求める（Ｓ１６）。このようにして画像内の全位置について一致度を求めた後（Ｓ１５）、テンプレートの角度を１゜だけ回転させ（Ｓ１８、Ｓ１３）、位置を再び初期化し、同様の手順でテンプレートをラスタスキャンして一致度を求める（Ｓ１４〜Ｓ１７）。以上の処理を繰り返すことにより、テンプレートの回転角度が３６０゜に達すれば（Ｓ１２）、テンプレートはすべての位置と角度についてスキャンされたことになるから、次に差濃度の総和の極小値を求めると（Ｓ１９）、その位置および角度が部品Ｘの位置および角度になる（Ｓ２０）。ここで、極小値を求める際に閾値を設定しておき閾値以下の極小値のみを対象として位置および角度を求めるようにすれば誤検出を防止することができる。
【００２１】
上述のようにして部品Ｘの位置および角度が求まれば、領域設定部２３において領域設定ファイルＦ1 から部品Ｘに応じた干渉検出領域Ｄ1 を読み出し、この干渉検出領域Ｄ1 内での干渉の有無を干渉検出部２４において判定する。
１．２  一般化ハフ変換による方法
部品Ｘの位置は一般化ハフ変換により求めることができる。一般化ハフ変換を適用するには、原画像（濃淡画像）から求めた方向値（各画素間の濃度勾配の方向）を用いる。方向値φは、各画素の近傍（一般に８近傍）の画素の濃度を用いて水平方向（ｘ方向）と垂直方向（ｙ方向）との濃淡の変化率（微分値ｄｘ，ｄｙ）を求め、φ＝Arctan（ｄｙ／ｄｘ）として求められる。ただし、方向値φは量子化されている。
【００２２】
ここで、一般化ハフ変換を適用する場合には、図８に示すように、部品Ｘに対するテンプレートＭが設定されており、テンプレートＭについて輪郭線Ｌｂ上の各画素の極座標（ｒi ，αi ）と方向値φi とが求められ、さらに、同じ方向値φi を持つ画素（極座標（ｒi ，αi ）で表す）がまとめられる。つまり、方向値φk は量子化されており、輪郭線Ｌｂの上の各画素はいずれかの方向値を持つから、表１のように、各方向値φi ごとに画素の極座標（ｒi ，αi ）を分類したテンプレートテーブルＴ1 が作成される。このテンプレートテーブルＴ1 がテンプレートＭに相当するものとして使用される。
【００２３】
【表１】
0003543442.tif 000002
【００２４】
テンプレートＭに対する部品Ｘの画像の相対位置を求めるには、図９のように、まず部品Ｘの画像の輪郭線（輪郭線の抽出には周知のエッジ抽出処理を施す）の上の各画素について画像の水平方向および垂直方向の座標軸を持つ右手系の直交座標系での座標（ｘj ，ｙj ）を求めるとともに、各画素の方向値φj を求める。
【００２５】
いま、上記直交座標系において、部品Ｘの画像のテンプレートＭに対する相対位置が（ｘ，ｙ）であり、部品Ｘの画像のテンプレートＭに対する角度がθであるものとする。ここで、上記直交座標系において部品Ｘの輪郭線上の座標（ｘj ，ｙj ）の画素の方向値がφj であるものとすると、テンプレートＭの対応する画素の方向値φi は（φj −θ）になる。また、部品Ｘの画像はテンプレートＭに対して（ｘ，ｙ）だけ離れて位置しているから、テンプレートＭの基準点の座標を（０，０）とすれば、部品Ｘの画像の基準点の座標は（ｘ，ｙ）であって、テンプレートＭの基準点（０，０）を原点としテンプレートＭの基準方向に対して角度θだけ回転した極座標系を考えると、上記直交座標系での座標（ｘj ，ｙj ）と極座標（ｒj ，αj ）との間には次の関係式が成立する。
ｘ＝ｘj −ｒj ・cos(αj ＋θ）
ｙ＝ｙj −ｒj ・sin(αj ＋θ）
上式が一般化ハフ変換式であって、部品Ｘの画像の輪郭線上の画素とテンプレートＭの輪郭線Ｌｂの上の画素とが等価であれば、ｒj ＝ｒi かつαj ＝αi であるから、角度θを所定角度ずつ変化させながら部品Ｘの画像の輪郭線の上の各画素の方向値φi に対して（φi −θ）を求め、この値をテンプレートテーブルＴ1 に照合して得た極座標（ｒi ，αi ）を上式に適用したときに、部品Ｘの輪郭線の上の多数の点について（ｘ，ｙ）がほぼ一致していれば、そのときの角度θを部品Ｘの角度とし、求めた（ｘ，ｙ）を部品Ｘの位置とみなせる。
【００２６】
ここで、部品Ｘの画像の輪郭線の上の各画素の方向値φi を求め、テンプレートテーブルＴ1 に照合し、さらにテンプレートテーブルＴ1 から求めた極座標（ｒi ，αi ）を一般化ハフ変換式に適用して、部品Ｘの輪郭線の上の多数の点について（ｘ，ｙ）がほぼ一致するか否かを判定するという演算が必要であるから、この演算を簡単に行なうために、以下の手法が考えられている。つまり、テンプレートテーブルＴ1 との照合によって得られた極座標（ｒi ，αi ）を一般化ハフ変換式に代入して得た座標（ｘ，ｙ）の発生度数を求め、発生度数が極大になれば部品Ｘの画像とテンプレートＭとの一致度が高いと考えることができる。そこで、座標（ｘ，ｙ）の発生度数を求めるために、図１０に示すように、部品Ｘを含む画像と同じサイズを有するアドレス空間（アキュムレータ配列Ａと称する）を各角度θごとに設け、各角度θごとに一般化ハフ変換によって上述のようにして座標（ｘ，ｙ）を求めたときに、その座標（ｘ，ｙ）に対応したアドレスのアキュムレータ配列Ａの格納値を１つずつインクリメントする。このような処理によって、アキュムレータ配列Ａの各アドレスには、一般化ハフ変換によってそのアドレスに対応する座標（ｘ，ｙ）が得られた度数が格納される。
【００２７】
このようにアキュムレータ配列Ａに度数を格納する処理を、各角度θごとに設けたすべてのアキュムレータ配列Ａに対して行なえば、角度θが部品Ｘの角度θに一致するアキュムレータ配列Ａでは、特定の座標（ｘ，ｙ）に対応したアドレスの格納値が他のすべてのアキュムレータ配列Ａの各アドレスの格納値よりも大きくなると考えられる。つまり、格納値の大きなアドレスを持つアキュムレータ配列Ａに対応する角度θが部品Ｘの角度θであり、そのアキュムレータ配列Ａのうち格納値が極大値になるアドレスに対応した座標（ｘ，ｙ）が部品Ｘの位置（ｘ，ｙ）になる。要するに、パターンマッチングの場合と同様に、各アキュムレータ配列Ａの中で各アドレスの格納値が極大になるものを求めれば、部品Ｘの位置および角度を求めることになる。ここで、格納値について閾値を設定しておき、格納値が閾値以上になるもののみを採用すれば、誤検出を防止することができる。
【００２８】
上述の処理を行なう画像処理部１４は、図６のように、テンプレートテーブルＴ1 を用いて各角度θのアキュムレータ配列Ａを作成するハフ変換処理部２５と、アキュムレータ配列Ａの各アドレスの格納値の極大値に基づいて部品Ｘの位置および角度を求める位置角度検出部２６とにより構成される。部品Ｘの位置および角度が求められると、領域設定部２３において領域設定ファイルＦ1 から部品Ｘに応じた干渉検出領域Ｄ1 が読み出され、この干渉検出領域Ｄ1 内での干渉の有無が干渉検出部２４において判定される。
【００２９】
以上の処理をまとめると、図７のようになる。つまり、まずテンプレートＭについて角度θを初期化し（Ｓ２１）、テンプレートテーブルＴ1 を用いて一般化ハフ変換を施し１つの角度についてのアキュムレータ配列Ａを作成する（Ｓ２３）。その後、角度θをインクリメントして（Ｓ２４）、同様の処理を角度θが３６０゜になるまで繰り返し（Ｓ２２）、各角度θのアキュムレータ配列Ａを作成する。このようにしてテンプレートＭのすべての角度θについてアキュムレータ配列Ａが作成されると、各アキュムレータ配列Ａの格納値が極大であるアドレスを求める（Ｓ２５）。このアドレスが部品Ｘの位置を示し、アキュムレータ配列Ａの角度θが部品Ｘの角度θを示すのである（Ｓ２６）。
【００３０】
２．干渉を判定する方法
干渉を判定するには、上述のように干渉検出領域Ｄ1 を各部品Ｘごとに設定し領域設定ファイルＦ1 に格納しておくことが必要である。干渉検出領域Ｄ1 は、以下のようにして設定される。まず、登録すべき部品Ｘを画像の基準方向に対して角度が０゜となるように配置した状態でＴＶカメラ１１により撮像し、表２に示すような微分マスクを用いることにより、各画素の濃度に重み付けを行なって、各画素の近傍での濃度の変化の大きさを求める。
【００３１】
【表２】
0003543442.tif 000003
【００３２】
ここで、濃度の変化は、微分マスクを演算子として用いた結果であるｘ方向の微分値ｄｘとｙ方向の微分値ｄｙとを用いて、（ｄｘ2 ＋ｄｙ2 ）1/2 で表す。
このような濃度変化の大きい場所は部品Ｘと背景との境界線であると考えられるから、濃度変化が所定の閾値以上になる画素を求めれば、図１１（ａ）のように部品Ｘの輪郭線を求めたことになる（図１２のＳ３１，Ｓ３２）。ここで、輪郭線処理では１画素幅になるように処理を行ない、その後、輪郭線が閉じた図形を形成するように線の延長処理を行なう。この種の処理は細線化処理として周知のものである。次に、求めた輪郭線を図１１（ｂ）の斜線部のように３画素の幅に膨張させる（図１２のＳ３３）。最後に、図１１（ｃ）のように部品Ｘと重複する部分を消去すれば、斜線部のような干渉検出領域Ｄ1 が得られる（図１２のＳ３４）。このように干渉検出領域Ｄ1 を設定すれば、部品Ｘの外側に干渉検出領域Ｄ1 を設定することになる。以上のような処理を各種の部品Ｘについて行ない、各部品Ｘごとに干渉検出領域Ｄ1 を求めて領域設定ファイルＦ1 に登録しておくのである。
【００３３】
２．１  干渉検出領域内での干渉検出
干渉検出領域Ｄ1 を用いた干渉の有無の判定は、図１３のような手順で行なう。まず、上述のように部品Ｘの位置および角度を求めた後に（Ｓ４１）、干渉検出領域Ｄ1 を領域設定ファイルＦ1 から読み出し（Ｓ４２）、部品Ｘの位置および角度に干渉検出領域Ｄ1 の位置および角度を合わせる（Ｓ４４）。このようにして部品Ｘの位置および角度に合わせた干渉検出領域Ｄ1 の上で走査しつつ、濃度が所定の閾値以上になる画素の個数を計数する（Ｓ４５）。ただし、これは部品Ｘなどの存在箇所が、背景よりも濃度が高くなる（明るい）ように照明している場合であり、背景よりも濃度の低い部品Ｘでは濃度が閾値以下の画素を計数することになる。干渉検出領域Ｄ1 の走査は、図１４に矢印で示すように周回するようにして外側から内側に向かって行ない、１周すれば次に内側でまた１周するように走査する。このようにして干渉検出領域Ｄ1 の全画素について走査が終了した後に計数値を所定値と比較し（Ｓ４６）、所定値以上であれば干渉があると判断するのである（Ｓ４７）。また計数値が閾値よりも小さいときには、他に部品Ｘがあるか否かを判定し（部品の位置および角度を求める処理によって部品の個数は認識されている）、部品Ｘが残っていれば（Ｓ４３）、残りのすべての部品Ｘについても同様の処理を繰り返す。
【００３４】
２．２  干渉検出領域外での干渉検出
干渉の有無の判定は、図１５の手順で行なうことができる。まず、上述のように部品Ｘの位置および角度を求めた後に（Ｓ５１）、干渉検出領域Ｄ1 の位置および角度を領域設定ファイルＦ1 から読み出し（Ｓ５２）、部品Ｘの位置および角度に干渉検出領域Ｄ1 の位置および角度を合わせる（Ｓ５４）。このようにして部品Ｘの位置および角度に合わせた干渉検出領域Ｄ1 を図１６に矢印で示すように周回するようにして外側から内側に向かって走査する（Ｓ５５）。走査の途中で濃度が所定の閾値以上になる画素があれば（Ｓ５６）、その画素を始点として、濃度が閾値以上になる部分を干渉検出領域Ｄ1 の外側で追跡し（Ｓ５７）、その画素数を求める（Ｓ５８）。このようにして求めた画素数（面積）が所定値以上であれば（Ｓ５９）、干渉があると判断し、閾値より小さければ、ごみ等の異物の付着であってピッキングに影響がないものとし干渉がないと判断するのである（Ｓ６０）。このようにして１つの部品Ｘについて干渉の有無を判断した後、他の部品Ｘがあるか否かを判定し、部品Ｘが残っていれば（Ｓ５３）、残りのすべての部品Ｘについても同様の処理を施す。
【００３５】
２．３  高さ情報を用いた干渉検出
上述した干渉検出の方法は、部品Ｘの位置がずれている場合には適用可能であるが、図１８のように、複数の部品Ｘ1 ，Ｘ2 が重なっている場合には干渉を検出することができない。そこで、高さ情報を用いることによって部品Ｘ1 ，Ｘ2 が重なっている場合の干渉を検出する方法について説明する。ここでは、部品Ｘ1 ，Ｘ2 は異品種であって、部品Ｘ2 は部品Ｘ1 よりもサイズが小さいものとする。また、部品Ｘ1 ，Ｘ2 が近接ないし接触しているような状態は高さ情報のみでは検出できないことがある（部品Ｘ1 ，Ｘ2 の高さが等しい場合）。そこで、濃度を用いる干渉検出と高さを用いる干渉検出とを併用する。
【００３６】
すなわち、図１７に示すように、部品Ｘ1 ，Ｘ2 の品種ごとに位置および角度を求め（Ｓ６１）、部品Ｘ1 ，Ｘ2 の品種ごとに領域設定ファイルＦ1 に格納されている干渉検出領域Ｄ1 を読み出して（Ｓ６２）、干渉検出領域Ｄ1 を設定する（Ｓ６４）。基本的には「２．１」の手法を用いるのであって、干渉検出領域Ｄ1 の上で走査しつつ、濃度が閾値以上である画素の個数を計数する（Ｓ６５）。画素数が所定個数以上であれば（Ｓ６６）干渉があると判断する（Ｓ６７）。ここで、「２．１」の方法では画素数が所定個数以下であると干渉がないものとしていたが、ここでは濃度が閾値以上である画素数が所定個数以下であるときには、部品Ｘ1 ，Ｘ2 について高さを計測する（Ｓ６８）。
【００３７】
高さの計測には図１９に示すように部品Ｘに線状の光パターンを形成するスリット光を照射し、部品Ｘをスリット光の長手方向に直交する方向に搬送することによって、部品Ｘの上で光パターンが走査されるようにする。つまり、ＴＶカメラ１１と光源１２との位置関係は固定的に設定されているから、ＴＶカメラ１１の受光面に形成される光パターンの像の位置に基づいて基線長三角測量法を適用して光切断法により部品Ｘの高さを求めることができる。また、光パターンの長手方向の位置情報はＴＶカメラ１１の受光面の上でも保存され、光パターンの長手方向に直交する方向の位置情報は部品Ｘを搬送する装置の情報（あるいは光源１２の点灯後の時間情報）として得ることができる。
【００３８】
このようにして得た画像は３次元画像（画像の各画素に高さ情報を対応付けた画像）であり、部品Ｘの高さが得られているから、この高さが部品Ｘの既知の高さに対して設定した基準値を越えるとき（Ｓ６９）、図１８のような状態であって干渉があるものと判断する（Ｓ６７）。このようにして１箇所で干渉の有無を判断した後、他箇所に部品Ｘ1 ，Ｘ2 があるか否かを判定し、部品Ｘ1 ，Ｘ2 が残っていれば（Ｓ６３）、残りのすべての部品Ｘ1 ，Ｘ2 についても同様の処理を施す。
【００３９】
ところで、濃度と高さとを併用する場合に、高さを用いる前に濃度を用いて干渉を検出しているのは、濃度を用いる方法では複数の部品Ｘ1 ，Ｘ2 の情報を短時間で得ることができるからであって、この段階で干渉を検出することができれば、干渉の判定を短時間で行なうことができるからである。高さを計測する方法は、スリット光を部品Ｘ1 ，Ｘ2 に対して相対的に走査する必要があるから計測に時間がかかるのであり、このように時間のかかる測定の機会を低減することによって比較的短時間で干渉の有無を検出できることになる。また、濃度を用いる場合に、サイズの大きい部品Ｘ1 の干渉検出領域Ｄ1 で部品Ｘ2 の干渉を検出することはできないが、サイズの小さい部品Ｘ2 の干渉検出領域Ｄ1 では部品Ｘ1 の干渉を検出することができる可能性があるから、サイズの小さい部品Ｘ2 から順に干渉検出領域Ｄ1 を設定すれば、高さを計測する機会をさらに低減することができる。
【００４０】
（実施形態２）
上述した実施形態では、部品Ｘの全体を照明する光源１２を用いて部品Ｘの位置および角度を求めていたが、本実施形態では実施形態１における「２．３」と同様の方法で部品Ｘの高さを計測し、高さに基づいて部品Ｘの位置および角度を求める。つまり、図１９に示すように、部品Ｘに線状の光パターンを形成するスリット光を照射し、部品Ｘをスリット光の長手方向に直交する方向に搬送することによって、部品Ｘの上で光パターンが走査されるようにして部品Ｘの高さ情報を得ている。つまり、ＴＶカメラ１１と光源１２との位置関係は固定的に設定されているから、ＴＶカメラ１１の受光面に形成される光パターンの像の位置に基づいて基線長三角測量法を適用して部品Ｘの高さを求めることができる。また、光パターンの長手方向の位置情報はＴＶカメラ１１の受光面の上でも保存され、光パターンの長手方向に直交する方向の位置情報は部品Ｘを搬送する装置の情報（あるいは光源１２の点灯後の時間情報）として得ることができる。
【００４１】
このようにして得た画像は３次元画像（画像の各画素に高さ情報を対応付けた画像）であるから、画像内でラスタスキャンを行ない、最初に高さ情報に閾値以上の変化を生じた画素を始点として高さ情報が許容範囲内である画素をトレースする。このような処理によって高さ変化のある部分（つまり部品Ｘの輪郭）に沿ったエッジを求めることができる。また、１つの部品Ｘについてトレースが終了すると（トレースした画素が始点に戻る）、始点の次の画素からラスタスキャンを再開して部品Ｘの内側や外側における高さ情報の変化を検出する。このようにして高さ情報の変化により、部品Ｘの上に重なっている他部材の存否や画面内の他の部品Ｘの存否を知ることができる。
【００４２】
本実施形態では、図２０に示すように、上述のようにして部品Ｘの輪郭線を抽出した後（Ｓ７１）、この輪郭線を用いて部品Ｘの位置（たとえば、重心の位置）を求める（Ｓ７２）。部品Ｘの位置が求められると、テンプレートの位置を部品Ｘに一致させ、テンプレートを０゜から始めて１゜ずつ回転させ各角度での部品Ｘとの一致度（重なる画素数）を判定することにより一致度が最大になる角度を部品Ｘの角度として求めることができる（Ｓ７３）。部品Ｘの位置と角度とが求まると（Ｓ７４）、実施形態１と同様に領域設定ファイルＦ1 から部品Ｘに応じた干渉検出領域Ｄ1 を読み出し、この干渉検出領域Ｄ1 内での干渉の有無を判定する。
【００４３】
（実施形態３）
図２２のように、複数の部品Ｘが完全に一致して重なっている場合には高さ情報を用いることによって干渉を検出する。
すなわち、図２１に示すように、部品Ｘの位置および角度を求めた後（Ｓ８１）、部品Ｘの位置および角度に基づいて制限した領域内で部品Ｘについて高さを計測する（Ｓ８３）。ここでは、干渉検出領域Ｄ1 の設定は不要であるから、干渉検出領域読Ｄ1 を領域設定ファイルＦ1 から読み出すことはしない。高さの計測には、実施形態１の「２．３」の方法と同様に、部品Ｘに線状の光パターンを形成するスリット光を照射し、部品Ｘをスリット光の長手方向に直交する方向に搬送することによって、部品Ｘの上で光パターンが走査されるようにする。そして、ＴＶカメラ１１の受光面に形成される光パターンの像の位置に基づいて基線長三角測量法を適用して光切断法により部品Ｘの高さを求める。また、高さの計測の際には部品Ｘの位置および角度に基づいてスリット光を照射する計測領域を制限する。
【００４４】
このようにして部品Ｘの高さが得られるから、高さが部品Ｘの既知の高さに対して設定した基準値を越えるとき（Ｓ８４）、部品Ｘの重複による干渉があるものと判断する（Ｓ８５）。このようにして１つの部品Ｘについて干渉の有無を判断した後、他の部品Ｘがあるか否かを判定し、部品Ｘが残っていれば（Ｓ８２）、残りのすべての部品Ｘについても同様の処理を施す。他の方法は実施形態１と同様である。
【００４５】
【発明の効果】
請求項１の発明は、物品の外観を非接触で計測し、物品の既知の形状との照合により物品の位置および角度を求めた後、物品の位置および角度に基づいて干渉検出領域を設定し、干渉検出領域において検出された他部材について、干渉検出領域外の面積が所定値を越えるときに干渉があると判断するものであり、物品の位置および角度に応じて干渉検出領域を設定し、干渉検出領域において検出された他部材について干渉検出領域の外側の面積を検出するから、ごみ等の異物程度では干渉とみなさないようにすることができる。つまり、物品をロボットでピッキングする場合にはロボットの稼働率を高めることが可能になる。
【００４９】
請求項２の発明は、干渉検出領域内に含まれる他部材の面積が所定値を越えるときに干渉があると判断し、干渉検出領域内に含まれる他部材の面積が所定値以下であるときには物品の高さを計測し、物品の高さが所定値を越えるときには干渉があると判断するから、最初は面積を用いて干渉を判定することによって、ほとんどの干渉については比較的短時間で検出できるようにし、面積によっては検出されないような干渉（重複の場合）については、高さ情報を用いることによって検出することができるのであって、比較的短時間で各種の干渉状態を確実に検出することができるという利点がある。
【図面の簡単な説明】
【図１】実施形態１を示す基本の動作説明図である。
【図２】実施形態１における装置の概略構成図である。
【図３】実施形態１における干渉検出領域の概念図である。
【図４】実施形態１における画像処理部のブロック図である。
【図５】実施形態１における動作説明図である。
【図６】実施形態１における画像処理部のブロック図である。
【図７】実施形態１における動作説明図である。
【図８】実施形態１における一般化ハフ変換のテンプレートを示す図である。
【図９】実施形態１における一般化ハフ変換の概念を説明する図である。
【図１０】実施形態１で用いるアキュムレータ配列を示す図である。
【図１１】実施形態１における干渉検出領域の設定手順の概念説明図である。
【図１２】実施形態１における干渉検出領域の設定手順の動作説明図である。
【図１３】実施形態１における干渉検出方法を示す動作説明図である。
【図１４】実施形態１における干渉の概念を示す図である。
【図１５】実施形態１における干渉検出方法を示す動作説明図である。
【図１６】実施形態１における干渉の概念を示す図である。
【図１７】実施形態１における干渉検出方法を示す動作説明図である。
【図１８】実施形態１における干渉の概念を示す図である。
【図１９】実施形態１における高さ計測装置の概略構成図である。
【図２０】実施形態２の動作説明図である。
【図２１】実施形態３の動作説明図である。
【図２２】実施形態３における干渉の概念を示す図である。
【符号の説明】
１１  ＴＶカメラ
１２  光源
１３  画像メモリ
１４  画像処理部
【図１】
0003543442.tif 000004
【図２】
0003543442.tif 000005
【図３】
0003543442.tif 000006
【図４】
0003543442.tif 000007
【図５】
0003543442.tif 000008
【図６】
0003543442.tif 000009
【図７】
0003543442.tif 000010
【図８】
0003543442.tif 000011
【図９】
0003543442.tif 000012
【図１０】
0003543442.tif 000013
【図１１】
0003543442.tif 000014
【図１２】
0003543442.tif 000015
【図１３】
0003543442.tif 000016
【図１４】
0003543442.tif 000017
【図１５】
0003543442.tif 000018
【図１６】
0003543442.tif 000019
【図１７】
0003543442.tif 000020
【図１８】
0003543442.tif 000021
【図１９】
0003543442.tif 000022
【図２０】
0003543442.tif 000023
【図２１】
0003543442.tif 000024
【図２２】
0003543442.tif 000025