【実施例1】
【0019】
[対象物移動装置]
図1は、対象物移動装置のブロック図である。なお、以下の説明において左をL、右をRと略称する。
【0020】
対象物移動装置1001は、対象物特定装置1003、左右2台のカメラ(L)1005、カメラ(R)1007、ロボット・コントローラ1009、ロボット/ハンド1011を備えている。
【0021】
対象物特定装置1003は、形状に空間部が存在して輪郭を分断された同一形状の対象物が不規則に集合した中で前記対象物を特定しハンドにより把持して移動するものである。
【0022】
対象物として、例えば巻ばねを適用している。巻ばねは、外形が複雑で、隙間があり、奥が見える形状であり、側面形状に空間部が存在して輪郭を分断された同一形状の対象物、すなわち、リング状の端面と空間部が存在して輪郭を分断された側面とを備えた同一形状の対象物の一例となる。この各巻ばねが、トレー内にばら積みされ、不規則に集合し、このばら積みの各巻ばねの中で、対象物特定装置1003は、各巻ばねを認識し、位置、姿勢を特定する。巻ばねの認識とは、2台のカメラ画像から個々の巻ばねがどこに存在するかを検出することであり、この認識の結果からステレオ画像処理により位置、姿勢を演算し、ピッキング対象の位置、姿勢を特定する。
【0023】
すなわち、対象物特定装置1003は、例えばCPU、ROM、RAM等を備えたコンピュータで構成され、左右2台のカメラ(L)1005、カメラ(R)1007で撮像した画像を入力し、対象物の認識を行い、位置、姿勢を演算してピッキング対象を特定する。
【0024】
ロボット・コントローラ1009は、制御部を構成し、前記のように演算された対象物の位置、姿勢によりハンド、すなわち、ロボット/ハンド1011の動作を制御し、後述のようにグリッパにより巻ばねを把持し移動させるものである。
【0025】
したがって、トレー内にばら積みされた巻ばねを左右2台のカメラ(L)1005、カメラ(R)1007で撮像し、その左右各画像から対象物特定装置1003がトレー内の巻ばねを認識し、その結果位置、姿勢を推定し、ロボット・コントローラ1009によりロボット/ハンド1011が制御され、グリッパにより巻ばねが把持され順次所定箇所へ移動させることができる。
【0026】
図2は、対象物特定装置のブロック図である。
【0027】
図2のように、対象物特定装置1003は、各巻ばね3が、トレー5内にばら積みされ、不規則に集合している中で、各巻ばね3を特定する。この巻ばね3の特定とは、上記のようにカメラ画像から個々の巻ばね3がどこに存在しどのような姿勢に有るかを検出することである。
【0028】
この対象物特定装置1003は、ばら積みされた巻ばね3・・・の認識を行う対象物認識部1を備えている。この巻ばね3の認識とは、カメラ画像から個々の巻ばね3がどこに存在するかを検出することである。
【0029】
トレー5内の巻ばね3・・・に、照明具として、例えばLEDスポットライト7により照明光が当てられ、この集合した対象物全体であるばら積みの巻ばね3・・・の全体に照明光を当てた状態で2台のカメラ1005、1007により撮像され、画像データが対象物認識部1へ入力され、データ記憶部11に記憶保持される。なお、図示の便宜上、2台のカメラ1005、1007を一つのブロックとして示している。
【0030】
対象物認識部1は、左右のカメラ1005、1007毎に処理を行い、左右画像でのグループ化処理及び端面ハイライト検出を行うものである。ここで、認識方法の概要を述べておく。巻ばねは、その形状に、
・平面部が少ない
・同じような形状が連続している
・隙間があり奥が見えてしまう
などの特徴があるため、一般に画像処理で用いられる形状特徴に乏しい。したがって、巻ばねが三次元的にばら積みされている場合は、汎用的な画像処理手法による認識は困難であった。
【0031】
これに対し、本発明実施例の手法では、照明によって巻ばねに生じるハイライト(
図3)に着目して認識する。通常、ハイライトは元の物体を隠してしまうものとして画像処理では敬遠されることが多い。しかし、巻ばねでは規則的にハイライトができることを利用し、認識処理を単純化することに成功した。
【0032】
認識処理ではまず、カメラ画像を二値化することによってハイライト部分を抽出する。巻ばねが寝ている場合には側面ハイライトが抽出され、立っている場合には端面ハイライトが主に抽出される。面積(ピクセル数)によって側面ハイライトと端面ハイライトとを分ける。面積が小さいもの、あるいは中途半端なものは、認識に利用するには不適切なハイライト(ノイズや複数のハイライトが結合してしまったものなど)として無視する。続いて、側面ハイライトについては、同一巻ばねに属するものをグルーピングする。グルーピングができれば、その巻ばねを認識できたと言ってよい。
【0033】
同一の巻ばねに属するハイライトは、
・距離が近接している
・形状が類似している
・一定間隔で一直線上に並んでいる
という性質があるので、これを利用してグルーピングを行う。距離の近接はハイライト重心間の距離をチェックし、形状の類似はハイライト面積(ピクセル数)・ハイライトに対する画像楕円の長軸方向・湾曲情報を表す三次元画像モーメントを用いる。一定間隔で一直線上に並んでいることは、ハイライト重心を見てチェックする。一定数以上のハイライトを同一のグループにまとめることができれば、一つの巻ばねを認識したとみなす。
【0034】
寝ているばねでありながら少数の側面ハイライトしか検出できないものは、他の巻ばねの下に一部が隠されているなどの状況であり、ピッキングには適さないと予想される。したがって、この時点で認識できなくてもかまわない(ピッキング作業が進むにつれて認識される)。
【0035】
端面ハイライトについては、それが一つ検出できれば、巻ばねを一つ認識できたと言える。端面はほぼ円形をしており、画像上は巻ばねの傾きに応じた楕円形になるとみなせる。そこで、楕円当てはめに成功したものを端面として検出する。本手法を実装し認識を行った結果の例は、後述する。
【0036】
そこで、対象物認識部1は、データ記憶部11の他、ハイライト抽出処理部13と、ハイライト判別処理部15と、特徴量抽出処理部17と、仮グループ化処理部19と、グループ化処理部21と、端面ハイライト検出部22と、登録部23とを備えている。なお、対象物が巻ばね3以外であり、球状等で有ればハイライト判別処理部15は、省略することもできる。
【0037】
ハイライト抽出処理部13は、画像を二値化処理して各反射形状のハイライトを抽出するものである。
【0038】
すなわち、カメラ1005、1007による画像データをデータ記憶部11から読み出し、二値化処理してハイライトを抽出する。
【0039】
ハイライト判別処理部15は、ハイライトを抽出した二値化画像データに面積の閾値処理を施し巻ばね3の側面に対応する側面のハイライト(以下、「側面ハイライト」と称する。)と巻ばね3の端面に対応する端面のハイライト(以下、「端面ハイライト」と称する。)とを判別するものである。
【0040】
すなわち、データ記憶部11から二値化画像データを読み出し、ラべリングにより得られた領域から面積の閾値により側面ハイライトと端面ハイライトとを抽出する。抽出した側面ハイライト及び端面ハイライトは、データ記憶部11に記憶される。
【0041】
特徴量抽出処理部17は、巻ばね3の側面形状(対象物の形状)に対応させるための複数の特徴量を各側面ハイライト(ハイライト)から抽出するものである。
【0042】
すなわち、データ記憶部11から側面ハイライトを順に読み出し、各側面ハイライトから、特徴量としてハイライトの形状、ハイライトの直線的な並び、間隔、及び数を抽出する。側面ハイライトの形状は、例えば、側面ハイライトの面積と側面ハイライトの長軸方向と側面ハイライトの湾曲情報としている。
【0043】
湾曲情報は、後述のように楕円の当てはめによる湾曲の大きさや向きとし、さらに精度を高めるために、後述のように画像モーメントを導入することもできる。画像モーメントでは、後述のように側面ハイライトの湾曲の大きさを3次モーメントとし、向きを3次モーメントの正負とする。
【0044】
仮グループ化処理部19は、複数の特徴量から選択した特定の特徴量により側面ハイライトを複数1組毎の仮グループとする処理を行う。
【0045】
すなわち、データ記憶部11から側面ハイライトを順に読み出し、特徴量として特定した形状の近さにより側面ハイライトを複数1組毎の仮グループとする処理を行う。この仮グループ化処理部19は、形状を側面ハイライトの面積と側面ハイライトの長軸方向と側面ハイライトの湾曲情報とする処理を行う。
【0046】
この場合、仮グループ化処理部19は、側面ハイライトの一つを選択すると共に近傍の側面ハイライトをリストアップしてから上記の仮グループとする処理を行う。
【0047】
グループ化処理部21は、仮グループとされた側面ハイライトを複数の特徴量から選択した特定の他の特徴量によりグループとして決定する処理を行う。
【0048】
すなわち、データ記憶部11から仮グループを順に読み出し、特徴量として選択した他の特徴量として側面ハイライトの直線的な並び、間隔、及び数により仮グループをグループとして決定する処理を行う。
【0049】
この場合、グループ化処理部21は、仮グループを順次選択すると共にこの選択された仮グループ毎にグループとして決定する処理を行う。
【0050】
端面ハイライト検出部22は、判別された端面のハイライトから最終的な端面のハイライトを決定するものである。本実施例の端面ハイライト検出部22は、ノイズとして除外された面積の大きなハイライトに収縮処理をかけ且つ端面のハイライトとみなす閾値範囲に入っていることにより大きなハイライトを切り離してそれぞれ端面のハイライトとする。この端面のハイライトから後述のように最終的な端面ハイライトが決定される。具体的には後述する。
【0051】
決定された側面ハイライトのグループ及び端面ハイライトは、登録部23に登録される。
【0052】
前記対象物特定装置1003は、前記対象物認識部1の他に、対応検出処理部25及び位置・姿勢演算部27を備えている。
【0053】
対応検出処理部25は、グループの左右の画像間での対応を検出し、位置・姿勢演算部27は、検出により対応したグループで巻ばね3・・・を認識し、各カメラ1005、1007の位置を基準とした巻ばね3・・・の位置、姿勢をステレオ画像処理により演算する。
【0054】
本実施例の対応検出処理部25は、端面ハイライトの左右画像間での対応も検出し、位置・姿勢演算部27は、検出により対応したグループ及び端面ハイライトにより巻ばね3・・・を認識し、各カメラ1005、1007の位置を基準とした巻ばね3・・・の位置、姿勢をステレオ画像処理により演算する。
【0055】
この場合、対応検出処理部25は、グループの対応をハイライトの面積、重心位置、並びの向き、グループ重心間距離、数、重心の縦方向位置の何れかの組み合わせにより後述のように検出する。
【0056】
対応検出処理部25は、側面ハイライトのグループの並びの向きが水平又は水平と看做されるときカメラ1005、1007により撮像された各画像の対比によりグループの対応を検出する。すなわち、カメラ1005、1007により撮像された各元画像に戻って画像マッチングにより対応を検出する。元画像を用いることで、ハイライト以外の部分や周囲のばねの情報なども利用して適切な対応関係を得ることが可能となる。
【0057】
したがって、対応検出処理部25は、水平又は水平と看做されるグループを含むカメラ1005、1007により撮像された元画像内の探索領域を拡大して周辺情報を含めるように設定する。
【0058】
こうして、ばら積みされた巻ばね3・・・を夫々認識し、位置、姿勢をステレオ画像処理により検出することが可能となり、ばら積みされた巻ばね3・・・のロボットによるピッキングの自動化に供することができる。
[巻ばねの認識]
(ハイライトの抽出と判別)
図3(A)は、カメラの画像データ、(B)は、(A)の二値化画像データ、(C)は、側面ハイライトの画像データ、(D)は、端面ハイライトの画像データである。
【0059】
ハイライトの抽出と判別は、LEDスポットライト7の照明光が巻ばね3に当たることでできるハイライトに着目する。カメラ1005、1007で捉えた
図3(A)の画像データに二値化処理を施すと
図3(B)のようにハイライトが抽出できる。
図3(B)の二値化画像データに対し、ハイライトの面積で閾値処理を施し、ノイズを除去し、
図3(C)の側面ハイライトと
図3(D)の端面ハイライトとを判別する。
【0060】
(楕円当てはめによるグルーピング)
本発明実施例のハイライトのグルーピングは、後述の画像モーメントによるものであり、制御フローチャートも画像モーメントによる処理である。しかし、楕円当てはめによるグルーピングを排除するものではなく、画像モーメントによるグルーピングの前に若干精度は落ちるものの、グループ化できる可能性のあるものとしてその手順を先に述べておく。
【0061】
図4は、側面ハイライトの面積等を示す説明図、
図5は、側面ハイライトの湾曲を示す説明図である。
【0062】
側面ハイライトは、端面ハイライトと異なり、一つのハイライトから巻ばね3の情報を得ることは困難である。そこで、同一の巻ばね3について側面ハイライトのグルーピングを行う。
【0063】
この場合、グルーピングに必要な各側面ハイライトのパラメータ(特徴量)を求めることになる。以下で計算方法を説明する。
【0064】
・ハイライトの面積、長軸方向、ハイライト間距離(
図4)
ハイライトの面積h
area[pixel]、長軸方向h
laxis[deg]は画像のモーメントから計算することができる。また、画像モーメントからハイライトの重心座標を計算することができる。ここで、ハイライトの重心座標間の距離をハイライト間距離d
r[pixel]と定義する。
【0065】
・ハイライトの湾曲(
図5)
ハイライトの湾曲を求めるために、ハイライトのスケルトンを抽出する。抽出したスケルトンを構成する点群に楕円を当てはめ、当てはめた楕円の中心とスケルトン間で最短距離となるスケルトン上の点を求める。当てはめた楕円中心と求めたスケルトン上の点を結ぶ直線の長さを、湾曲の大きさc
mag[pixel]とし、向きをハイライトの湾曲の向きc
dir[deg]とする。
【0066】
次に、以下のパラメータについて閾値を設定し、側面ハイライトのグルーピングを行う。
【0067】
・ハイライトの面積:h
area [pixel]
・ハイライトの長軸方向:h
laxis [deg](0
≦h
laxis<180°)
・ハイライトの湾曲の大きさ:c
mag [pixel]
・ハイライトの湾曲の向き:c
dir [deg](0
≦c
dir <360°)
・ハイライト間距離:d
r [pixel]
ハイライトのグルーピングの手順は、以下の通りである。
【0068】
(1)検出したすべての側面ハイライトからハイライトを一つ選ぶ(基準ハイライト)
(a)基準ハイライトの湾曲が大きい場合
i.基準ハイライト以外のハイライトで湾曲が大きいハイライトを選ぶ。
ii.ハイライトの面積h
area、長軸方向h
laxis、ハイライト間距離d
r、湾曲の向きc
dirを比較し、条件を満たす場合に基準ハイライトのグループに含める。
iii.すべてのハイライトに対して(a)のi、iiを行う。
(b)基準ハイライトの湾曲が小さい場合
i.基準ハイライト以外のハイライトで湾曲が小さいハイライトを選ぶ。
ii.ハイライトの面積h
area、長軸方向h
laxis、ハイライト間距離d
rを比較し、条件を満たす場合に基準ハイライトのグループに含める。
iii.すべてのハイライトに対して(b)のi、iiを行う。
(2)基準ハイライトを変えて(1)を行う。
(3)すべてのハイライトに対して(1)を行ったらグルーピング終了。
【0069】
湾曲の大きさによるグルーピング手順の違いは、パラメータに湾曲の向きc
dirが含まれるか否かのみである。これは、湾曲が小さいハイライトは、湾曲の向きが同一グループでも全く異なり、グルーピングに悪影響を与えるためである。また、湾曲の大きさc
magをグルーピングのパラメータに直接加えず、大きいか小さいかの二通りにしか分けていない。これは、湾曲の大きさについてはノイズの影響が大きく、グルーピングのパラメータに加えるとグルーピングに失敗しやすくなってしまうためである。
【0070】
ここまでの手順により、仮グループとする。
【0071】
しかし、上記の手順だけではグループの重複や巻ばねが並列に並んでいる場合にグルーピングの失敗が起こる。
【0072】
そこで、同一グループではハイライトが直線に並ぶことや隣接するハイライト間距離が等間隔であること、同一巻ばねを表すグループが重複した場合グループに含まれるハイライト数が多いものを採用することの条件を加えてグルーピングの結果を修正し、最終的なグルーピングとする。
【0073】
(画像モーメントによる湾曲情報及びグルーピング)
図6は、座標の回転を示す説明図、
図7は、側面ハイライトの湾曲方向を示す説明図、
図8は、側面ハイライトの湾曲方向を示す説明図である。
【0074】
図4、
図5の上記では、各側面ハイライトのスケルトンに楕円を当てはめ、その楕円より湾曲の大きさや向きを求めた。しかし、湾曲の大きさが小さいときは楕円当てはめによる湾曲情報の精度に限界がある。
【0075】
これに対し、画像モーメントを用いて湾曲情報を得ることで精度が向上する。
【0076】
まず、湾曲の大きさを3次モーメントμ´
21とする。
図6のようにxy座標を反時計回りにθ回転させた座標をx´y´座標と定義すると、μ´
21の値は式(1)で求められる。ただし、θは式(2)で表される。
【0077】
【数1】
【0078】
ただし,μは元の座標系における画像の(i+j)次モーメントである.
【0079】
【数2】
【0080】
このままでは画像の拡大・縮小の影響を受けてしまうため、式(3)のように無次元化する。
【0081】
【数3】
【0082】
次に、巻ばね3の側面ハイライトの形は通常湾曲しているので、その方向を判別する。ハイライトの長手方向は、画像楕円の長軸方向として判別できるので、それに直交する短軸方向のどちら側に湾曲しているかが問題となる。θだけ座標軸を回転すると、長軸方向がx´軸、短軸方向がy´軸となる。
【0083】
側面ハイライトの典型的な形状として三日月形を想定すると、x´軸方向にはほぼ対称であり、y´軸方向のどちらかに湾曲することとなる。
【0084】
・三日月形の両端付近では、x´は正負両方の値をとり絶対値は大きい。Y´は正負いずれかの値をとり、この符号が湾曲の向きと対応する。
【0085】
・三日月形の中心付近では、x´は正負両方の値をとり絶対値は小さい。Y´は正負いずれかの値をとり、両端付近と異符号となる。
【0086】
ここで、x´
2y´の積分に対応するμ
´21を計算すると、x´
2の重みつきでy´を積分するわけであるから、両端付近の符号が大きな重みがかかり、結果的に湾曲の向きが分かる。すなわち、
・μ
´21<0のとき:y´軸負方向に両端が突き出た湾曲(
図7)
・μ
´21>0のとき:y´軸正方向に両端が突き出た湾曲(
図8)
となる。
【0087】
以上より、ハイライトの湾曲の大きさに関係なく、ハイライトの湾曲の向きを、グルーピングのパラメータに用いる。すなわち、ハイライトのグルーピングアルゴリズムは以下のようになる。
【0088】
(1)検出したすべての側面ハイライトからハイライトを一つ選ぶ(基準ハイライト)
(a)基準ハイライト以外のハイライトを選ぶ。
(b)ハイライトの面積h
area、長軸方向h
laxis、ハイライト間距離d
r、湾曲の大きさ、湾曲の向きを比較し、条件を満たす場合に基準ハイライトのグループに含める。
(c)すべてのハイライトに対して(a),(b)を行う。
(2)基準ハイライトを変えて(1)を行う。
(3)すべてのハイライトに対して(1)を行ったらグルーピング終了。
【0089】
画像モーメントは画像全体の情報の総和として求まるので、ロバストなグルーピングができる。
【0090】
(側面ハイライト情報からの端面の検出)
図9は、側面ハイライトの情報からの端面の検出を示す説明図である。
【0091】
巻ばねが傾いている場合は側面と端面が見えるため、側面の情報からさらに端面検出を行うこともできる。側面ハイライトには水平では湾曲せず、傾きが垂直に近づくほど湾曲が大きくなる特徴がある。このことから、大きく湾曲しているハイライトを含むグループの巻ばねは端面が見えている可能性がある。グループの向きg
dir、湾曲の方向c
dirにより端面の位置を推定し、ROI(RegionofInterest)を設定し、RANSAC(RANdomSAmpleConsensus)[Fischler1981]による端面を検出し決定する。
【0092】
端面の形状を楕円と仮定すると巻ばねが傾いている場合は端面の形状が歪む。そのため、
図9のように、巻ばねの向きから端面の長軸・短軸方向がある程度推定できる。
【0093】
すなわち、RANSACで得られる楕円の短軸の向きの範囲をg
dirに対して、±Δφという制約を加えることができる。以下に、RANSACによる端面検出アルゴリズムを示す。
(1)二値化しCanny法でエッジを検出する。
(2)エッジからランダムに5点選択し、5点を通る楕円の式を求める。
(3)楕円の短軸の向きが[g
dir −Δφ, g
dir +Δφ]の範囲に入っているか確認する。
(4)(3)を満たせば、選んだ5点以外のすべての点について求めた楕円との距離を求め、設定したしきい値より距離が小さい点の個数を数え、その合計を楕円の得点とする。
(5)(2)から(4)を数回繰り返し、複数の楕円を検出する。
(6)得られた複数の楕円から、最も得点の高い楕円を端面形状として採用する。
【0094】
(端面ハイライトによる認識)
端面ハイライト近傍に注目してROIを設定し、端面検出を行う。巻ばね3が直立状態の場合、端面の形状は歪まないため、検出楕円に制約は加えない。
【0095】
設定したROIにおいて輪郭抽出を行い、楕円あてはめを行うことで端面を検出する。画像にノイズが多い場合には,上記と同様のRANSACを用いて検出をすることも可能である。
【0096】
上記では、エッジから5点の座標を選択し楕円を導出した。巻ばねのグループの向きと検出楕円の短軸の向きは等しいはずであるが、5点の座標を用いた場合、向きが正しくない楕円も導出してしまう。このため、無駄にRANSACによる計算を行なうことになる。
【0097】
そこで、楕円の向きは側面ハイライトのグループの向きからわかっているため、4点の座標と角度から楕円を導出することにしてもよい。すなわち、RANSACによる端面検出アルゴリズムは以下のようになる。
(1)二値化しCanny法でエッジを検出する。
(2)エッジからランダムに4点選択し、4点を通り、楕円の向きがグループの向きとなる楕円の式を求める。
(3)選んだ4点以外のすべての点について求めた楕円との距離を求め、設定した閾値より距離が小さい点の個数を数え、その合計を楕円の得点とする。
(4)(2)から(3)を数回繰り返し、複数の楕円を検出する。
(5)得られた複数の楕円から、最も得点の高い楕円を端面形状として採用する。
【0098】
これにより同等の計算時間でRANSACによる楕円検出数を増やすことができるので、楕円検出の成功率が向上する。
【0099】
(直立した巻ばねが並んだときの認識)
図10は、端面ハイライトの結合を示す画像データ、
図11は、最終的な端面ハイライトの検出を示す画像データである。
【0100】
図10のように、直立した巻ばねが並んでいる場合は、端面ハイライトの面積が大きくなり、上記[ハイライトの抽出と判別]での説明におけるハイライト抽出でノイズとみなされてしまう。
【0101】
そこでハイライト面積が大きい時は収縮処理によりハイライトの切り離しを行う。以下に、アルゴリズムを示す。
(1)ハイライトに収縮処理をかける。
(2)ハイライト面積が端面ハイライトとみなす範囲に入っているか確認する。
(3)(1)(2)を繰り返す。
(4)(2)を満たせば、ハイライトが切り離されたとみなす。
(5)切り離されたハイライトを別々の端面ハイライトとする。
【0102】
図10の端面ハイライトの結合においては、ハイライトがつながり、ハイライト面積が大きくなるため、ノイズとされてしまう。
【0103】
これに対し、上記アルゴリズムで切り離しを行った場合、
図11のように、ハイライト面積が大きい場合でも別々の巻ばねであると認識することができた。
【0104】
(側面ハイライトのグループ化及び端面ハイライトの検出)
図12、
図13は、側面ハイライトのグループ化及び端面ハイライトの検出を示す画像データである。
図12は、楕円当てはめによる側面ハイライトの認識及びハイライトの切り離しを行なわない端面ハイライトの認識アルゴリズムによる画像データであり、
図13は、画像モーメントによる湾曲情報を用いた側面ハイライトの認識及びハイライトの切り離しを行なった端面ハイライトの認識アルゴリズムによる画像データである。
【0105】
図12、
図13の何れの場合も、画像中の四角で囲まれた部分の認識ができている。特に
図13の場合は、
図12の場合に比較してグルーピング可能な数が増加している。グルーピングの成功率と端面検出の成功率は若干向上している。
[巻ばねの位置、姿勢推定]
(位置・姿勢検出の概要)
特定の巻ばねを認識できた後に、それをピッキングするためには、そのばねの位置と姿勢とを知る必要がある。単眼カメラを用いた場合、奥行き方向の情報を知ることは容易でない。このため、ここではステレオ画像処理を用いて三次元的な位置・姿勢推定を行う。一般的なステレオ画像処理では、2台のカメラ画像全体に対して対応点検出処理を行って三次元情報を獲得するのが普通だが、誤対応や計算負荷などが問題となる。特に巻ばねの場合は形状特徴が明確でないため難しい。
【0106】
そこで、本発明実施例では、2台のカメラの画像それぞれに対し、上述の巻ばね認識方法を適用し、そののちに、認識された巻ばねに対してのみのステレオ画像処理を行う。
【0107】
これによって簡便な処理で正確な位置・姿勢情報の取得を実現できた。本手法では視野の重なりを大きくとり、また左右の対応処理を容易にするため、2台のカメラを平行かつ近接して配置する。そして、右カメラと左カメラのそれぞれで上述の巻ばね認識方法を実行し、巻ばねに対応する側面ハイライトのグループおよび端面ハイライト(以降では便宜上これも「グループ」と呼ぶ場合がある。)を検出する。同一の巻ばねに対応するグループは、右カメラの画像と左カメラの画像でだいたい同じ位置にある。より詳しく言えば、上下方向には同じ位置にあり、左右方向にだけ(奥行きに応じて)少し異なる位置にあるはずである。
【0108】
そこで、一方のカメラの画像で認識されたグループに対して、もう一方のカメラの画像の限定された範囲内を探索すれば、対応するグループを見つけることができる。
【0109】
そして、左右の視差から奥行き情報を得ることができる。探索では、グループの形がほぼ同じであること、グループの位置関係が妥当であることを条件に、対応するグループを見つけている。形については、ハイライトの平均面積(ピクセル数)、ハイライト数、ハイライトの並びの向きを条件としている。また、位置関係については、グループ重心位置が左右方向には一定距離内であること、上下方向はほぼ同じであることを条件としている。
【0110】
但し、上述の方法では、左右でハイライトの認識結果が異なる場合(例えば、同一の巻ばねに対して、左カメラでは4個のハイライトが認識されたが、右カメラでは3個しか認識されなかった場合)に対応できない。
【0111】
そこで,グループ単位での対応がうまくとれなかった場合は、グループ内の個々のハイライト単位で左右の対応を調べ、対応を確認できたハイライトだけのグループについて、改めて対応するかどうかを調べる。
【0112】
個々のハイライトの対応づけは、重心位置が左右方向には一定距離内であること、上下方向はほぼ同じであることを調べて行う。
【0113】
なお,巻ばねが完全に左右方向を向いている場合は、ハイライトの対応の候補が複数考えられ、ハイライトだけからでは一つに絞り込むことができない。
【0114】
そこで、この場合は一方のカメラ側の元画像で、ハイライトのグループより一回り大きい領域を考える。そして、もう一方のカメラ側の元画像とのマッチングを行い、これを使って対応の位置関係を決定する。元画像を用いることで、ハイライトだけではない周囲の情報をもとに左右の対応を絞り込むことができる。
【0115】
以上の手法を用いて左右のカメラ画像から対応する巻ばねを求めた結果の例は後述する。
【0116】
左右のカメラ画像間で、ハイライトのグループの対応付けができれば、グループ重心の視差を用いて、ハイライトのグループ重心の奥行きを計算できる。これによって巻ばねの位置を求めることができる。巻ばねの姿勢(奥行き方向の傾き)については、側面ハイライトのグループに関し、ハイライト間の間隔と巻ばねのピッチとの関係から求めることができる。端面ハイライトについては、当てはめた楕円の長径と短径の比から求めることができる。
【0117】
なお、左右のカメラ画像において、ハイライトの出方は厳密には同じではない。これは、照明・カメラ・巻ばねの相対位置関係が異なるためである。このため、現在は視差を補正する実験式を用いることで、奥行き算出の精度を高めている。巻ばねの形状情報と照明の光源の情報から、補正式を理論的に算出することも可能である。
【0118】
以下、具体的に説明する。
【0119】
(奥行きの推定)
ステレオビジョンによる奥行きの理論式を導出する。
【0120】
図14は、ステレオ画像処理装置の模式図である。記号は以下のように定義する。
【0121】
・O
l,、Or:投影中心
・x
l、xr:画像平面のx方向原点
・c
xleft、c
xright:主点(光軸が画像平面と交差する点)
・P:実世界の点
・x
left、x
right:Pの画像平面上の水平座標
・f:焦点距離
・T:基線長
・d
p:視差
・Z:奥行き
・Ps:ピクセルサイズ
ステレオ装置は歪み補正され、行が揃い、正確に計測されていると仮定すると、奥行きZは式(4)で求められる。但し、d
p=x
left−x
rightである。
【0122】
【数4】
【0123】
また、奥行きの分解能ΔZは視差の誤差Δd
pを用いて式(5)で求められる。
【0124】
【数5】
【0125】
(視差の算出)
<視差の算出の位置>
ステレオビジョンにより奥行きを算出するためには、視差を求める必要がある。本発明実施例では、視差の算出位置を巻ばねのグループのハイライト重心、あるいは楕円当てはめで得られる楕円中心とする。そのため、巻ばねの認識時に側面ハイライト情報からのRANSACによる端面検出を行わなくてもよい。側面ハイライトが見えている巻ばねはハイライトのグルーピングのみ行い、端面ハイライトのみが見えている巻ばねは端面ハイライトに楕円当てはめを行う。
【0126】
また、視差を求めるためには左右の画像の対応付けを行う必要がある。一般的なステレオビジョンでは画像全体に対して対応付けを行うが、巻ばねには一般に画像処理で用いられる明確な特徴がない。そこで本実施例では、巻ばねのハイライトのグループ毎に対応付けを行う。対応付けを行うにあたって、左右のカメラの視野が重なっている領域は広いほうが良い。
【0127】
また、左右のカメラで同一の巻ばねが同じように見えている必要がある。そこで、2台のカメラは基線長が短く、左右のカメラの光軸が平行であり、それぞれの光軸が基準面と垂直になるように設置されているものとする。
【0128】
<巻ばねのグループのパラメータ>
巻ばねのグループの対応付けに用いるパラメータの計算方法について説明する。
【0129】
・グループ重心、平均ハイライト面積、ハイライト数、グループの向き
図15(A)は、各側面ハイライトの重心及びグループの重心を示し、(B)は、グループの並びの向きを示す説明図である。
【0130】
図15において、各ハイライトの重心座標、面積は画像モーメントにより求められる。よって、グループ重心はグループに含まれるハイライトの重心座標の平均値、平均ハイライト面積は、グループに含まれるハイライトの面積の平均値で計算できる。グループに含まれるハイライト数は、グルーピング時に求まる。グループの向きは各ハイライトの重心に直線をフィッティングすることで求める。
【0131】
・グループ重心間距離(
図16)
図16は、グループ重心間距離に係り、グループ重心のx座標を表示した側面ハイライトのグループを左右で示す説明図である。
【0132】
図16において、左画像のグループ重心x座標をx
lg、対応した右画像のグループ重心x座標をx
rgとする。左右の画像が平行化されていれば、左画像のグループ重心x座標の右画像での座標値x
tlgは式(6)で求められる。Zが既知であれば、x
tlg=x
rgとなる。しかし、Zは分からないため、Zが取りうる値の範囲の中央値を用いると、x
tlgとx
rgにはずれが生じる。このずれをグループ重心間距離g
disと定義し、式(7)で表す。
【0133】
【数6】
【0134】
【数7】
【0135】
<巻ばねのグループの対応付け方法>
巻ばねのグループの対応付けアルゴリズムを以下に示す。
(1)左右の画像の平行化を行い、y座標を揃える。
(2)左右の画像それぞれでグルーピングを行う。
(3)左画像で認識した巻ばねのグループから1つ選ぶ(左グループ)
(a)左グループのグループ重心座標を右画像での座標に変換する。
(b)右画像で認識した巻ばねのグループから1つ選ぶ(右グループ)
i.左グループと右グループのグループ重心間距離g
disを計算する。
(c)右画像で認識した巻ばねのグループ全てに対して(b)を行う。
(d)左グループと全ての右グループに対し、次の条件を確認する。
条件1-1グループの平均ハイライト面積がほぼ等しい
条件1-2グループ重心間距離g
dis<閾値
条件1-3グループの向きがほぼ等しい
(e)(d)の条件を全て満たした右グループを対応の候補とする(候補右グループ)
(f)候補右グループがある場合
i.左グループと候補右グループに対し、次の条件を確認する。
条件2-1グループに含まれるハイライト数が同じ
条件2-2グループ重心y座標がほぼ等しい
ii.i.の条件を全て満たした左グループと候補右グループは対応している。
(g)候補右グループがない場合、対応なしとする。
(4)左画像で認識した巻ばねのグループ全てに対して(3)を行う。
【0136】
端面ハイライトのみが見えている巻ばねについては、条件1-2、条件2-2のみで対応付けを行う。
【0137】
<グループ内のハイライト毎の対応付け方法>
巻ばねのグループの対応付け方法で述べたアルゴリズムは、左右の認識が同一の場合のみ対応を取ることが可能である。すなわち、左右の認識が異なる場合は、前記条件2-1、2-2を満たさないため、対応を取ることができない。
【0138】
そこで、条件2を満たさない場合は
図17のように、ハイライト毎の対応を取る。
図17は、側面ハイライトの対応付けに係り、グループ重心を表示した側面ハイライトのグループを左右で示す説明図である。
【0139】
以下にハイライト毎の対応付けアルゴリズムを示す。
(1)左グループに含まれるハイライトから1つ選ぶ(左ハイライト)。
(a)左ハイライトのハイライト重心座標を右画像での座標に変換する。
(b)候補右グループに含まれるハイライトから1つ選ぶ(右ハイライト)。
i.左ハイライトと右ハイライトのハイライト重心間距離を計算する。
(c)候補右グループに含まれるハイライト全てに対して(b)を行う。
(d)左ハイライトと全ての右ハイライトに対し、次の条件を確認する。
条件3-1ハイライト重心間距離<閾値
条件3-2ハイライト重心y座標がほぼ等しい
(e)(d)の条件を全て満たした左ハイライトと右ハイライトは対応している。
(2)左グループに含まれるハイライト全てに対して(1)を行う。
(3)対応付けされたハイライトのみを左右のグループに含める。
【0140】
ハイライト重心間距離は、巻ばねのグループのパラメータで述べたグループ重心間距離と同様に定義する。すなわち、左画像のハイライト重心x座標の右画像での座標値と対応した右画像のハイライト重心x座標のずれである。
【0141】
なお、
図18は、左右の側面ハイライトのグループが水平状態であることを示す説明図である。この
図18のように、巻ばねが完全に左右方向を向いている場合は、ハイライトの対応の候補が複数考えられ、ハイライトだけからでは一つに絞り込むことができない。
【0142】
そこで、この場合は一方のカメラ側の元画像で、
図19のように処理する。
図19は、左右の側面ハイライトのグループの元画像マッチング及び領域の拡大を示す説明図である。
図19のように、左側の元画像に対し、右側の元画像では、ハイライトのグループより一回り大きい領域を考え、領域を拡大した。
【0143】
そして、一方の元画像(右側の元画像)と他方のカメラの元画像(左側の元画像)とのマッチングを行い、これを使って対応の位置関係を決定する。元画像を用いることで、ハイライトだけではない周囲の情報をもとに左右の対応を絞り込むことができる。
【0144】
(巻ばね位置姿勢推定)
<高さと姿勢の定義>
図20は、巻ばねの高さと姿勢の定義に係る説明図である。
【0145】
図20において、巻ばねの高さHspr[mm]と,姿勢(θ[deg],φ[deg])を次のように定義する。
【0146】
・H
spr[mm]:グループ重心と基準面の距離
・θ[deg](0
≦θ
≦90°):中心線と巻ばねの中心線を基準面に投影した直線のなす角
・φ[deg](−90°
≦θ
≦90°):巻ばねの中心線を基準面に投影した直線とx軸のなす角
<位置の推定>
・垂直方向の位置推定
カメラと基準面までの距離をL
0と置く。カメラから被写体までの距離は式(4)で導出したZであるので、基準面と被写体の距離L´は次式で表される。
【0147】
【数8】
【0148】
【数9】
【0149】
これが、垂直方向の位置に関する理論式である。
【0150】
・水平方向の位置推定
図21は、変数を示すカメラの鳥瞰図である。
【0151】
図21に示すように、定義する変数は、次の通りである。カメラと被写体までの距離をL、画角の幅と高さをそれぞれ(W,H)、レンズの焦点距離をf、CCDサイズを(W´,V´)、画像の解像度をw×hと置くと、実距離とピクセル値の換算式は式(10)で表すことができ、実際の長さD
realと画像内のピクセル値D
pixelの関係は式(11)で表される。ここで、D
realはカメラからL離れた光軸に垂直な平面上に存在する必要がある。
【0152】
【数10】
【0153】
【数11】
【0154】
画像上の点をAp=(xp,yp)とする。ワールド座標Σwの原点を
図21のようにカメラの光軸と基準面の交点としているので、それに合わせて画像座標系Σpの原点を画像の中心へと移動した座標系Σ´
pを考える.この座標系でのA
pであるA´
pは次式で表される.
【0155】
【数12】
【0156】
撮像面(CCDセンサ)に投影されるA
´´pを求めると次式となる。
【0157】
【数13】
【0158】
図21に示すように、CCDセンサが作る高さfの四角錐と、カメラからL離れた平面が作る高さLの四角錐には相似関係があるため、次式が得られる。
【0159】
【数14】
【0160】
これが被写体の水平方向の位置(x
w,y
w座標)の理論式である。
【0161】
<姿勢の推定>
図22は、巻ばねの姿勢評価に係る説明図である。
【0162】
巻ばねの傾きはハイライト間距離を用いることで推定する。巻ばねのピッチをpとし、グループのハイライト数をN
hと置くと、画像に写るグループの長さD
planeの実際の距離d
realが次式で得られる。
【0163】
【数15】
【0164】
D
planeとグループの長さの実距離d
planeの関係は、カメラから被写体までの距離Z、焦点距離f、ピクセルサイズP
sを用いて次式となる。
【0165】
【数16】
【0166】
すなわち、
図22から、巻ばねの傾きθは次式で表すことができる。
【0167】
【数17】
【0168】
[認識・位置姿勢推定結果]
図23(A)は、左右の元画像を示す説明図、(B)は、左右画像でのグルーピングを示す説明図、(C)は、左右グループの対応を示す説明図、
図24(A)は、左右画像でのグルーピングを示す拡大説明図、(B)は、左右グループの対応を示す拡大説明図、
図25(A)は、左右画像でのグルーピングを示す拡大説明図、(B)は、左右グループの対応を示す拡大説明図、
図26(A)は、左右画像でのグルーピングを示す拡大説明図、(B)は、左右グループの対応を示す拡大説明図である。
【0169】
図23は、結果を示し、
図24〜
図26は、
図23のいくつかの巻ばねに注目し、拡大した。対応がとれた巻ばねは左右同じ四角で囲んである。グループ重心には、点を表示している。
【0170】
図23、
図24の画像のように、端面ハイライト、側面ハイライトのグループで左右の認識が同一の場合は正しい対応が取れた。また、同一の巻ばねに複数のグループが検出された場合や左右の認識が異なる場合でも
図25、
図26のように正しい対応が取れた。
[巻ばねのピッキング]
図27は、鉛直方向からのアプローチによる巻ばねのピッキングを示し、(A)は、θ=0、(B)は、0<θ<90°、(C)は、θ=90°の説明図、
図28は、姿勢に応じたアプローチによる巻ばねのピッキングを示し、(A)は、θ=90°(B)は、0≦θ<45°、(C)は、45°≦θ<90°の説明図である。
【0171】
個々の巻ばね3の位置、姿勢が求まれば、それをもとにロボット1011(
図1)によってピッキングすることができる。ここでの問題は、
・どれをピッキングするか
・どのようにピッキングするか
である。
【0172】
前者については、基本的に最も「高い」(カメラから見て奥行き方向に「近い」)巻ばね3をピッキングするのが有利と考えられる。障害物などを考慮すると必ずしもそうではない場合も考えられるが、現状では最も高い位置の巻ばね3をピッキングする。
【0173】
但し、ピッキングに失敗した場合は、一定回数は同じ巻ばね3をピッキングに行かないように設定している。これは、何らかの事情でピッキングが難しいものがあった場合,それにトライし続けると作業が全く進まなくなる恐れがあるためである。
【0174】
後者の「どのようにピッキングするか」については、グリッパである2本の爪1011a、1011bを用いたハンド1011により外径把持を行うことができた。
【0175】
図27の単純に鉛直方向からアプローチする実装のほか、
図28のように巻ばね3の姿勢に合わせてアプローチ方向をずらす実装も行うことができた。
[対象物特定方法、プログラム、及び記録媒体]
図29は、ピッキングに係るフローチャートである。
【0176】
対象物移動装置1001の稼働により、
図29のフローチャートが実行されると、ステップS1L、S1R(以下、各ステップSを「S」と略称する。)において、「画像取得(L)、(R)」が実行され、左右のカメラ(L)1005、(R)1007により撮像され、データ記憶部11に記憶されている元画像データが読み込まれ、S2(L)、S2(R)へ移行する。
【0177】
S2L、S2Rでは、それぞれ「巻ばね認識(L)」、「巻ばね認識(R)」の処理により、左右の元画像を基に側面ハイライト、端面ハイライトの判別、側面ハイライトのグループ化等を左右それぞれで行ない、巻ばねの認識が行われる。具体的には、
図31〜
図33のサブルーチンにより実行され、左右画像のそれぞれでの巻ばねの認識により認識結果を登録部23に登録し、S3ヘ移行する。
【0178】
S3では、「Lの巻ばねを一つ選ぶ」の処理により、登録部23に登録されている左画像で認識した巻ばねのグループから1つ選び、S4へ移行する。このグループの選択は、左右何れかを基準とするためのものであり、右のRのグループを選択する設定を行うこともできる。
【0179】
S4では、「側面ハイライトグループである?」の判断処理により、S3で選択されたものが側面ハイライトのグループか、端面ハイライトかを判断する。この判断は、ハイライトが複数か単一か等により行うことができる。側面ハイライトのグループであると判断されたときは(YES)、S5ヘ移行し、端面ハイライトと判断されたときは(NO)、S6へ移行する。
【0180】
S5では、「側面ハイライトグループ間対応検出」の処理により、選択された左Lの側面ハイライトのグループに対する右Rの側面ハイライトのグループ間の対応が検出される。具体的には、
図33のサブルーチンにより実行され、前記<巻ばねのグループの対応付け方法>のように、左右画像の対応グループが抽出され、S7ヘ移行する。
【0181】
S6では、「端面ハイライト対応検出」の処理により、左右画像の端面ハイライト間の対応が検出され、S7へ移行する。端面ハイライトは、楕円、円として対比される。
【0182】
S7では、「対応巻ばねがR内に見つかった?」の判断処理により、S5でのグループ間対応検出によりL内で選択された一つのグループに対し、対応するグループがR内に見つかったか否かが判断される。対応するグループが見つかれば(YES)、S8ヘ移行し、見つからなければ(NO)、S9ヘ移行する。
【0183】
S8では、「位置・姿勢算出」の処理により、S5での処理により、特定の巻ばねを認識できたとき、巻ばねの位置・姿勢が、上記[巻ばねの位置、姿勢推定]の手法により算出され、算出結果が登録部23に登録されてS9へ移行する。
【0184】
S9では、「Lの巻ばねをすべて調べ終えた?」の判断処理が行われ、調べ終えていないと判断されれば(NO)、S3へ処理が戻され、S3〜S9が繰り返される。調べ終えたと判断されれば(YES)、S10ヘ移行する。
【0185】
S10では、「ピッキング対象巻ばねの決定」の処理により、登録部23から登録されている位置、姿勢からピッキングすべき巻ばねが決定され、S11ヘ移行する。
【0186】
S11では、「ピッキング」の処理により、前記[巻ばねのピッキング]の手法で巻ばねがハンド1011により順次ピッキングされ、所定箇所へ移動され、処理は終了する。
【0187】
(巻ばね認識)
図30〜
図32は、
図29のS2L、S2Rを実行するものであり、
図30は、巻ばね認識のサブルーチンを示し、側面ハイライト及び端面ハイライトの検出に係るフローチャート、
図31は、同側面ハイライトの仮グループ化に係るフローチャート、
図32は、同側面ハイライトのグループ化に係るフローチャートである。
【0188】
ステップS21において、二値化処理が実行される。この処理では、カメラ1005、1007による画像データが二値化処理により二値化画像データとされ、S22ヘ移行する。
【0189】
S22では、ハイライト抽出の処理により、二値化画像データにおいてラベリングにより得られた領域から、面積によって側面ハイライトと端面ハイライトとを抽出し、S23、S24ヘ移行する。ハイライトの抽出では、各側面ハイライトから前記の特徴量が抽出され記憶される。
【0190】
S23では、「側面ハイライトの仮グルーピング」の処理により、すべての側面ハイライトを対象に仮グルーピングが行なわれてS25ヘ移行する。S23での仮グルーピングは、
図31のサブルーチンで実行される。
【0191】
S24では、「端面ハイライトの検出」が行われる。S24での端面ハイライトの検出は、上記の通りである。
【0192】
S25では、「側面ハイライトのグルーピング」の処理により、側面ハイライトがグループ化され、処理は終了する。S25のグルーピングは、
図32のサブルーチンで説明する。
【0193】
図30のS23を実行する
図31のサブルーチンでは、S2301の「ハイライトを一つ選ぶ」の処理により、側面ハイライトの一つが読み出され、S2302ヘ移行する。
【0194】
S2302では、「近傍のハイライトをリストアップ」の処理により、S2301で選ばれた一つの側面ハイライトに対し、ハイライト間距離、連続数等の閾値により近傍のハイライトを順にリストアップし、S2303ヘ移行する。このリストアップは、一つの側面ハイライトに対し、近傍の側面ハイライトを1個ずつリストとして読み込む。
【0195】
S2303では、「形状が近い?」の判断処理により、リストアップされた側面ハイライトのグループに対し、側面ハイライトの形状が近いか否かにより判別される。「形状が近い」か否かは、ハイライト面積(ピクセル数)、ハイライトの長軸方向、湾曲情報(三次画像モーメント)が近いかどうかで判断される。形状が近いと判断されれば(YES)、S2304ヘ移行し、形状が近くないと判断されれば(NO)、S2305ヘ移行する。
【0196】
S2304では、「仮グループに入れる」の処理により、形状が近い側面ハイライトが仮グループとして記憶され、S2305ヘ移行する。
【0197】
S2305では、「近傍のハイライトをすべて調べ終えた?」の判断処理が行われ、調べ終えていないと判断されれば(NO)、S2302へ処理が戻され、S2302、S2303、S2305が繰り返される。調べ終えたと判断されれば(YES)、S2306へ移行する。
【0198】
S2306では、「ハイライトをすべて調べ終えた?」の判断処理が行われ、調べ終えていないと判断されれば(NO)、S2301へ処理が戻され、S2301、S2302、S2303、S2305、S2306が繰り返される。調べ終えたと判断されれば(YES)、仮グルーピングの処理は終了する。
【0199】
図30のS25を実行する
図32のサブルーチンでは、S2501の「仮グループを一つ選ぶ」の処理により、S23で仮グループ化された側面ハイライトの仮グループの一つが読み出され、S2502ヘ移行する。
【0200】
S2502では、「直線状に並んでいない構成ハイライトを削除」の処理により、S2501で選ばれた仮グループを構成する側面ハイライトで、構成ハイライトがほぼ同一直線上に乗っているか確認し、乗っていないものは削除し、S2503ヘ移行する。巻ばね3の側面ハイライトは、ほぼ同一直線上に乗っている性質を利用して判断するものである。
【0201】
S2503では、「構成ハイライトが少ない?」の判断処理が行われる。S2502での削除の結果、巻ばね3の側面ハイライトを構成するには数が少ないと思われる仮グループか否かを判断する。構成ハイライトが少ないと判断されれば(YES)、S2504ヘ移行し、構成ハイライトが少なくないと判断されれば(NO)、S2505ヘ移行する。
【0202】
S2504では、「仮グループを削除」の処理により、側面ハイライトを構成するには数が少ないと思われる仮グループがデータとして削除され、S2505ヘ移行する。
【0203】
S2505では、「すべての仮グループを調べ終えた?」の判断処理が行われ、調べ終えていないと判断されれば(NO)、S2501へ処理が戻され、S2501〜S2505が繰り返される。調べ終えたと判断されれば(YES)、S2506へ移行する。
【0204】
S2506では、「構成ハイライト数の多い順(同じならハイライト面積の大きい順)でソート」の処理が行われる。この処理により、直線上に並んだ所定数の仮グループ群が、構成ハイライト数の多い順に整列され、S2507ヘ移行する。但し、構成ハイライト数が同じ時は、ハイライト面積の大きい順に並べられ、S2507ヘ移行する。
【0205】
S2507では、「仮グループを順に一つ選ぶ」の処理により、S2505でソートされた仮グループの一つが順に読み出され、S2508ヘ移行する。
【0206】
S2508では、「登録済み他グループと重複する構成ハイライトを消す」の処理により、既にグループとして決定された側面ハイライトに対しデータとして重複する構成ハイライトを現処理の仮グループから削除され、S2509ヘ移行する。
【0207】
S2509では、「ハイライト間距離が一定でない構成ハイライトを消す」の処理が行われる。巻ばね3の側面において素線間距離は一定であるため、距離が一定でないハイライトをノイズとして除去し、S2510ヘ移行する。
【0208】
S2510では、「構成ハイライト数が基準の範囲内?」の判断処理が行われる。巻ばね3の側面において素線の連続数は決まっており、仮グループを構成する側面ハイライトの数が、基準を越えていたり、少ない時は、グループとしての登録から排除される。したがって、S2510で構成ハイライト数が基準の範囲内であると判断されれば(YES)、S2511へ移行し、基準の範囲内ではないと判断されれば(NO)、S2512へ移行する。
【0209】
S2511では、「グループとして登録」の処理により、処理された仮グループがグループとして決定され、登録部23(
図2)に登録され、S2512へ移行する。
【0210】
S2512では、「すべての仮グループを調べ終えた?」の判断処理が行われ、調べ終えていないと判断されれば(NO)、S2507へ処理が戻され、S2507〜S2512が繰り返される。調べ終えたと判断されれば(YES)、グルーピングの処理は終了する。
【0211】
(側面ハイライトグループ間対応検出)
図33は、
図29のS5を実行するものであり、側面ハイライトグループ間対応検出のサブルーチンを示し、左右グループの対応付けに係るフローチャートである。
【0212】
S51では、「平均ハイライト面積がほぼ同じであるRのグループで最も重心間距離が近いものを探す」の処理により、S3で選択されたLの一つのグループに対し登録部23に登録されているRのグループから一つのグループが選択される。この選択は、グループの各側面ハイライトの面積の平均値がほぼ同じで、
図16においてx
tlgとx
rgのずれであるグループ重心間距離g
disが近いものとされる。この選択によりS52、S53へと順次移行し、さらに絞り込みが行われる。
【0213】
S52では、「ハイライトの並びの向きがほぼ同じで、かつグループ重心間距離がしきい値以下?」の判断処理が行われる。
図15のように、LRのグループ間の側面ハイライトの向きがほぼ同じであり、かつグループ重心間距離g
disがしきい値以下であると判断されたとき(YES)、S53ヘ移行し、LRのグループ間の側面ハイライトの向きが同じではなく、かつグループ重心間距離g
disがしきい値を上回っていると判断されたとき(NO)、処理は終了し、
図29のS7ヘ移行する。
【0214】
S53では、「ハイライト数が等しく、重心の縦方向位置がほぼ同じ?」の判断処理が行われる。LRのグループ間の側面ハイライトのハイライト数が等しく、グループ重心の縦方向位置がほぼ同じであると判断されたとき(YES)、S54ヘ移行し、LRのグループ間の側面ハイライトのハイライト数が異なり、グループ重心の縦方向位置が同じではないと判断されたとき(NO)、S55ヘ移行する。
【0215】
S54では、「対応グループと見なす」の処理により、該当するRのグループがLのグループの一つに対応するものとして登録部23に登録され、処理は終了し、
図29のS7ヘ移行する。
【0216】
S55では、「ハイライトの並びの向きがほぼ水平である?」の判断処理が行われる。対比されるLRのグループの側面ハイライトの向きが、
図18のように水平ではないと判断されたとき(NO)、S56ヘ移行し、水平であると判断されたとき(YES)、S57ヘ移行する。
【0217】
S56では、「ハイライト間対応検出」の処理により、LRのグループ間の側面ハイライトの対応が検出される。具体的には、
図34のサブルーチンにより実行され、前記<グループ内のハイライト毎の対応付け方法>のように、LRグループ間の側面ハイライト毎の対応が取られ、処理は終了し、
図29のS7ヘ移行する。
【0218】
S57では、「画像マッチング対応検出」の処理が行われ、
図29のS7ヘ移行する。S57は、
図35のサブルーチンにより実行される。
【0219】
(ハイライト間対応検出)
図34は、側面ハイライトグループ間対応検出のサブルーチンを示し、ハイライト間対応検出に係るフローチャートである。LRのグループの認識が異なる場合は、対応を取ることができない。そこで、
図17のように、ハイライト毎の対応を取る。
【0220】
S5601では、「Lのハイライトを一つ選ぶ」の処理により、登録部23からLの側面ハイライトが一つ読み込まれ、S5602ヘ移行する。
【0221】
S5602では、「縦方向の位置がほぼ同じであるRのハイライトで最も重心間距離が近いものを探す」の処理により、
図17のようにLの一つの側面ハイライトに対しRの側面ハイライトで縦方向の位置がほぼ同じで最も重心間距離が近いものが抽出され、S5603ヘ移行する。
【0222】
S5603では、「重心間距離が十分近い?」の判断処理が行われる。重心間距離が、同一の側面ハイライトであると見なせるほど近い場合は(YES)、S5604ヘ移行し、重心間距離が、同一の側面ハイライトと見なせない大きさであるとき(NO)、S5605へ移行する。
【0223】
S5604では、「対応ハイライトと見なす」の処理により、該当するRの側面ハイライトが、Lの側面ハイライトにS5601〜S5603のように対応付けられたので、これを対応ハイライトとして登録部23に登録し、S5605ヘ移行する。
【0224】
S5605では、「すべてのLのハイライトを調べ終えた?」の判断処理が行われ、調べ終えていないと判断されれば(NO)、S5601へ処理が戻され、S5601〜S5605が繰り返される。調べ終えたと判断されれば(YES)、S5606ヘ移行する。
【0225】
S5606では、「対応ハイライトのみを残して対応グループとする」の処理により、対応を確認できた側面ハイライトだけのRのグループを登録部23ヘ登録し、
図29のS7ヘ移行する。
【0226】
(画像マッチング対応検出)
図35は、側面ハイライトグループ間対応検出のサブルーチンを示し、画像マッチング検出に係るサブルーチンのフローチャートである。
図18のように、巻ばねが完全に左右方向を向いている場合は、ハイライトの対応の候補が複数考えられ、ハイライトだけからでは一つに絞り込むことができない。そこで、この場合は一方のカメラ側の元画像で、
図19のように、元画像に対し、ハイライトのグループより一回り大きい領域を考え、領域を拡大して判断する。
【0227】
S5701では、「Lのグループを含むLの元画像の領域をテンプレートとして設定」の処理により、選択されたLの一つのグループがほぼ水平であるとき、このグループを含む元画像の領域をテンプレートとして登録部23に登録し、S5702ヘ移行する。
【0228】
S5702では、「Rのグループを含むRの元画像に広めの探索領域を設定」の処理により、
図19のように、Rのグループの回りに拡大した領域をそれぞれ設定し、登録部23に登録し、S5703ヘ移行する。
【0229】
S5703では、「画像マッチングでマッチング位置を算出」の処理により、Rの拡大した各領域情報からLRの画像マッチングによりマッチング位置を算出し、S5704へ移行する。
【0230】
S5704では、「Lのハイライトを一つ選ぶ」の処理により、マッチング位置におけるLの側面ハイライトを一つ選択し、S5705ヘ移行する。
【0231】
S5705では、「Rのマッチング領域に位置の近いハイライトがある?」の判断処理が行われる。S5704で選ばれたLの側面ハイライトによりRの拡大されたマッチング領域でテンプレート・マッチングが行われる。このマッチングによりLの側面ハイライトに近いRの側面ハイライトがあれば(YES)、S5706ヘ移行し、なければ(NO)、S5707ヘ移行する。
【0232】
S5706では、「対応ハイライトと見なす」の処理により、該当するRの側面ハイライトが、Lの側面ハイライトに対応付けられたので、これを対応ハイライトとして登録部23に登録し、S5707ヘ移行する。
【0233】
S5707では、「すべてのLのハイライトを調べ終えた?」の判断処理が行われ、調べ終えていないと判断されれば(NO)、S5704へ処理が戻され、S5704〜S5707が繰り返される。調べ終えたと判断されれば(YES)、S5708ヘ移行する。
【0234】
S5708では、「対応ハイライトのみを残して対応グループとする」の処理により、対応を確認できた側面ハイライトだけのRのグループを登録部23ヘ登録し、
図29のS7ヘ移行する。
【0235】
このようにして、対象物移動プログラムは、ばら積みの巻ばね3を特定しハンド1011により把持して移動する機能をコンピュータに実現させる対象物移動プログラムであって、ばら積みの巻ばね3・・・全体にLEDスポットライト7により照明光を当てた状態で2台のカメラにより撮像された各画像を二値化処理して各反射形状のハイライトを画像毎にそれぞれ抽出するハイライト抽出機能S2L、S2R、S21、S22と、巻ばね3の形状に対応させるための特徴量を各ハイライトから抽出する特徴量抽出機能S2L、S2R、S22と、特徴量によりハイライトを複数1組毎のグループとして画像毎に決定するグループ化機能S2L、S2R、S23、S25と、グループの画像間での対応を検出する対応検出機能S5と、検出により対応したグループで巻ばね3を認識し各カメラの位置を基準とした巻ばね3の位置、姿勢をステレオ画像処理により演算する位置・姿勢演算機能S8と、演算された巻ばね3の位置、姿勢によりハンド1011の動作を制御する動作制御機能S10、S11とを備えた。
【0236】
したがって、ばら積みされた巻ばね3・・・の認識、位置、姿勢の演算による特定を正確に行わせることができ、ばら積みの巻ばね3・・・のピッキングの自動化に供することができる。
【0237】
対象物移動プログラムは、判別された端面のハイライトから最終的な端面のハイライトを決定する端面ハイライト検出機能S2L、S2R、S24を備え、対応検出処理機能S5は、端面のハイライトの画像間での対応を検出しS6、位置・姿勢演算機能S8は、検出により対応したグループ及び端面のハイライトにより巻ばね3を認識し各カメラ1005、1007の位置を基準とした巻ばね3の位置、姿勢をステレオ画像処理により演算する。
【0238】
したがって、端面ハイライトからも巻ばね3・・・の認識、位置、姿勢の演算による特定を行わせることができる。
【0239】
本発明実施例は、対象物移動プログラムを坦持したコンピュータ読み取り可能な記録媒体とした。
【0240】
したがって、巻ばね3・・・のピッキングの自動化等のために、対象物移動プログラムをコンピュータに読み取らせることができる。
【0241】
本発明の対象物移動方法は、ばら積みの巻ばね3を特定しハンド1011により把持して移動する対象物移動方法であって、ばら積みの巻ばね3・・・全体にLEDスポットライト7により照明光を当てた状態で2台のカメラにより撮像された各画像を二値化処理して各反射形状のハイライトを画像毎にそれぞれ抽出するハイライト抽出ステップS2L、S2R、S21、S22と、巻ばね3の形状に対応させるための特徴量を各ハイライトから抽出する特徴量抽出ステップS2L、S2R、S22と、特徴量によりハイライトを複数1組毎のグループとして画像毎に決定するグループ化ステップS2L、S2R、S23、S25と、グループの画像間での対応を検出する対応検出ステップS5と、検出により対応したグループで巻ばね3を認識し各カメラの位置を基準とした巻ばね3の位置、姿勢を決定する位置・姿勢決定ステップS8と、巻ばね3の位置、姿勢によりハンド1011の動作を行わせる動作ステップS10、S11とを備えた。
【0242】
したがって、上記同様に、巻ばね3・・・のピッキングの自動化に供することができる。
【0243】
対象物移動方法は、判別された端面のハイライトから最終的な端面のハイライトを決定する端面ハイライト検出ステップS2L、S2R、S24を備え、対応検出ステップS5は、端面のハイライトの画像間での対応を検出しS6、位置・姿勢決定ステップS8は、検出により対応したグループ及び端面のハイライトにより巻ばね3を認識し各カメラ1005、1007位置を基準とした巻ばね3の位置、姿勢を決定する。
【0244】
したがって、端面ハイライトからも巻ばね3・・・の認識、位置、姿勢の演算による特定を行わせることができる。
【0245】
[その他]
本発明は、対象物として巻ばねに限らず、その他、形状に空間部が存在して輪郭を分断された同一形状の対象物が不規則に集合した中で各対象物を認識する場合、例えば、巻ばねと同一形状であるがばね性を有しない対象物、矩形体、球体等で形状に空間部が存在して輪郭を分断された対象物の認識にも適用することができる。
【0246】
上記実施例では、仮グループ化してからグループ化したが、仮グループ化せずに特徴量としてハイライトの形状、ハイライトの直線的な並び、間隔、及び数により直接にグループ化することもできる。