(57)【要約】【課題】検出精度を低下させることなく、カメラの視界が通い箱に遮蔽されず、またカメラが通い箱に干渉せずにビンピッキングを行うことができるロボットシステムを提供する。【解決手段】  画像処理装置９０６は、ワークの２次元モデル１０９と、２次元ワーク位置検出部１０８と、通い箱を複数のエリアに分割し、各エリアについてエリア別視線を定義したエリアモデル１０６と、ピッキング対象ワークが属しているエリアに定義されたエリア別視線を出力するエリア判定部１０３と、ワークの３次元モデル１０５と、ピッキング対象ワークを撮像した画像から、３次元位置姿勢を検出する３次元ワーク位置検出部１０２と、ワークに対して複数の方向からのカメラの視線方向を定義した視線モデル１０７と、ピッキング対象ワークへアプローチする際のカメラの視線を演算する視線演算部１０４を備える。【選択図】図３
2011083882.tif 000002
【特許請求の範囲】
【請求項１】
先端部に取り付けられたハンドにより通い箱内に積まれたワークをピッキングするロボットと、
前記ロボットに搭載され、前記ワークを撮像するカメラと、
前記カメラによって撮像された前記ワークの画像を入力し、前記ワークの位置姿勢を演算して出力する画像処理装置と、
前記画像処理装置の出力に基づいて前記ロボットを前記ワークの位置に移動させ前記ハンドによって前記ワークをピッキングさせるロボットコントローラと、
を備えたロボットシステムにおいて、
前記画像処理装置は、
前記ワークの２次元モデルと、
前記２次元モデルを用い、複数の前記ワークを撮像した画像からピッキング対象ワークの２次元位置姿勢を検出する２次元ワーク位置検出部と、
前記通い箱を複数のエリアに分割し、各エリアについてエリア別視線を定義したエリアモデルと、
前記２次元ワーク位置検出部で検出した前記ピッキング対象ワークの位置が、前記エリアモデルのいずれのエリアに属しているかを判定し、前記ピッキング対象ワークが属しているエリアに定義された前記エリア別視線を出力するエリア判定部と、
前記ワークの３次元モデルと、
前記３次元モデルを用い、前記ピッキング対象ワークを撮像した画像から、前記ピッキング対象ワークの３次元位置姿勢を検出する３次元ワーク位置検出部と、
前記ワークに対して複数の方向からの前記カメラの視線方向を定義した視線モデルと、
前記視線モデルと、前記３次元ワーク位置検出部で検出した前記ピッキング対象ワークの姿勢と、前記エリア判定部で求めたエリア別視線とから前記ピッキング対象ワークへアプローチする際の前記カメラの視線を演算する視線演算部と、
を備え、
前記２次元ワーク位置検出部は、検出した前記ピッキング対象ワークの２次元位置姿勢を前記ロボットコントローラに出力し、
前記視線演算部は、演算した前記ピッキング対象ワークへアプローチする際の前記カメラの視線を前記ロボットコントローラに出力することを特徴とするロボットシステム。
【請求項２】
前記ロボットコントローラは、前記２次元ワーク位置検出部によって検出された前記ピッキングするワークの２次元位置姿勢に基づいて前記ロボットを動作させ、前記カメラを前記ピッキングするワークに接近させ、前記視線演算部によって演算された前記カメラの視線に基づいて前記ロボットを動作させ、前記カメラを前記ピッキングするワークにアプローチさせることを特徴とする請求項１に記載のロボットシステム。
【請求項３】
前記３次元モデルは、前記ワークに設けられた４つ以上の特徴部の位置を記憶したものであって、前記３次元ワーク位置検出部は前記ワークを撮像した画像から前記特徴部を抽出することによって前記ワークの３次元位置姿勢を検出することを特徴とする請求項１に記載のロボットシステム。
【請求項４】
前記エリア別視線は、そのエリアに存在するワークに対して前記ロボットがピッキングを行う際に、前記カメラの視野が前記通い箱に遮蔽されず、かつ前記カメラが前記通い箱に干渉しないように前記カメラを配置した際の前記カメラの視線方向を表すことを特徴とする請求項１に記載のロボットシステム。
【請求項５】
前記エリア別視線は、ロボット座標系に基づくベクトルとして定義されることを特徴とする請求項１に記載のロボットシステム。
【請求項６】
前記視線演算部は、前記視線モデルにて定義されたカメラの視線方向と前記エリアに設定されたエリア別視線との内積を演算することによって、前記ピッキング対象ワークのピッキングに適した前記カメラの視線を決定することを特徴とする請求項１に記載のロボットシステム。
【請求項７】
前記２次元ワーク位置検出部は、前記カメラによって撮像された画像と前記２次元モデルとのテンプレートマッチングによって前記ワークの２次元位置姿勢を検出することを特徴とする請求項１に記載のロボットシステム。
【請求項８】
前記２次元ワーク位置検出部は、テンプレートマッチングによって前記カメラによって撮像された画像から前記ワークが複数個検出された場合は、前記２次元モデルとの一致度が最も高いものを選定することを特徴とする請求項７に記載のロボットシステム。
【請求項９】
前記ロボットは垂直多関節ロボットであることを特徴とする請求項１に記載のロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通い箱内などにバラ積みされたワークをカメラ等の視覚センサで検出し、検出したワークを取り出すロボットシステムに関する。
【背景技術】
【０００２】
通い箱等の中に複数のワークがバラ積みされた状態からカメラ等の視覚センサでワークの位置を検出し、検出されたワークをロボットで取り上げる作業は、ビンピッキングとして知られている。視覚センサをロボットの手先に搭載してビンピッキングを行う場合、視覚センサが通い箱に干渉しないよう配置することや、視覚センサの視野が通い箱によって遮蔽されないよう配置することが課題となる。
視覚センサの配置に関する技術として、特許文献１が開示されている。図８に特許文献１におけるピッキング装置の概略構成例を示す。図８では、３つの異なる位置に固定されたテレビカメラ１１ａ〜１１ｃにより対象物体１４を撮像する。得られた画像は３次元計測手段１２により処理され、把持物体決定手段１３により把持物体の位置・姿勢が求められる。その結果に基づき、把持手段１６を移動手段１５により移動して対象物体１４をピックアップする。ここで、３次元計測手段１２及び把持物体決定手段１３は、マイクロコンピュータにて構成される。また、把持手段１６はロボットハンド、移動手段１５は６軸多関節ロボットで構成される。
【０００３】
次に、計測精度の向上を目的としたテレビカメラ１１ａ〜１１ｃの配置方法を説明する。計測に適した画像とは、図９に示した物体モデルとして登録した面４１を正面から撮像した画像であるので、そのような画像が得られる位置にテレビカメラ１１ａ〜１１ｃを配置することが望ましい。一方、図１０に示すように、対象物体１４が重なると、物体モデルとして登録した面４１が矢印に示すように色々な方向を向く。が、例えば対象物体１４のように厚みが小さい物体であれば、その向き得る範囲は予測することができる。
そこで従来の技術においては、面４１の向き得る方向が、図１１に示すように頂角２θの円錐状である場合、テレビカメラ１１ａ〜１１ｃを図１１に示す６１ａ〜６１ｃの位置に配置する。各位置６１ａ〜６１ｃは円錐の頂点を中心として１２０度毎にθ／２の傾きで配置されている。これにより、面４１をできるだけ計測に適した画像として撮像することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−９４３７４号公報（第４、６頁、図１、図４−６）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、特許文献１に記載されている技術をビンピッキングに適用した場合を考える。
図１は、ビンピッキングシステムの構成を表す図で、図１（ａ）は上面図、図１（ｂ）は側面図である。カメラ９０２とハンド９０３は、多関節ロボット９０１の手先に搭載され、ロボット９０１の可動範囲内で移動させることができる。カメラ９０２は、通い箱９０４内にランダムに投入されたワーク９０５の画像を取得して画像処理装置９０６に出力する。画像処理装置９０６は、ワーク９０５の位置を演算し、その位置をロボットコントローラ９０７に出力する。ロボットコントローラ９０７は、演算された位置にハンド９０３を移動し、ハンド９０３は、ワーク９０５を把持または吸着して通い箱から取り出す。
ビンピッキングを行う際には、カメラ９０２が通い箱９０４内のワーク９０５の画像を取得し、画像処理装置９０６によって取得した画像からピッキングするワーク（対象ワーク）の位置を演算し、ロボット９０１によってハンド９０３を演算した対象ワークの位置に移動し、ワークを取り上げる。
【０００６】
しかしながら図１のようなビンピッキングシステムに特許文献１に記載されている技術を適用すると次のような問題があった。
図１２は、通い箱９０４の中のある対象ワークＡを検出する様子を表す説明図である。図１２では、通い箱内のワークのうち、ロボットの手前に位置する対象ワークＡ９０８をカメラ９０２で検出しようとしている。従来の技術によれば、「物体モデルとして登録した面を正面から撮像した画像であるので、そのような画像が得られる位置にカメラ９０２を配置することが望ましい」ということになるが、図１２のような場合はそのような位置にカメラ９０２を配置すると、カメラ９０２の視界が通い箱９０４の壁に遮蔽されてしまい対象ワークＡ９０８の画像を取得できないという問題が発生する。
こうした問題に対して、従来の技術においては、図１１に示したように、カメラ９０２の配置を１２０度毎でθ／２の傾きを許容するようになっているが、通い箱９０４による遮蔽を回避するために、θを大きくとってしまうと、検出精度が著しく低下したり、通い箱９０４の壁にカメラが干渉したりする問題が発生する。
【０００７】
また図１３は、通い箱９０４の中のある対象ワークＢを検出する様子を表す説明図である。図１３では、通い箱の底部でなおかつロボットの手前に位置する対象ワークＢ９０９をカメラ９０２で検出しようとしている。従来技術によれば、「物体モデルとして登録した面を正面から撮像した画像であるので、そのような画像が得られる位置にカメラ９０２を配置することが望ましい」が、そのような位置にカメラを配置しようとすると、カメラ９０２が通い箱９０４の壁に干渉するという問題が発生する。
以上説明したように、従来技術では、ワーク９０５に対してモデルを登録した際と同様の場所にカメラ９０２を配置させようとするため、カメラ９０２の視界が通い箱９０４の壁に遮蔽され、対象ワークＡ９０８の画像が取得できないという問題や、カメラ９０２が通い箱９０４の壁に干渉するという問題があった。一方、カメラ９０２の配置の許容度を大きくとってしまうと、検出精度が著しく低下するという問題があった。
本発明はこのような問題点に鑑みてなされたものであり、検出精度を低下させることなく、カメラの視界が通い箱に遮蔽されず、またカメラが通い箱に干渉せずにビンピッキングを行うことができるロボットシステムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記問題を解決するため、本発明は、次のように構成したのである。
請求項１に記載の発明は、先端部に取り付けられたハンドにより通い箱内に積まれたワークをピッキングするロボットと、前記ロボットに搭載され、前記ワークを撮像するカメラと、前記カメラによって撮像された前記ワークの画像を入力し、前記ワークの位置姿勢を演算して出力する画像処理装置と、前記画像処理装置の出力に基づいて前記ロボットを前記ワークの位置に移動させ前記ハンドによって前記ワークをピッキングさせるロボットコントローラと、を備えたロボットシステムにおいて、前記画像処理装置は、前記ワークの２次元モデルと、前記２次元モデルを用い、複数の前記ワークを撮像した画像からピッキング対象ワークの２次元位置姿勢を検出する２次元ワーク位置検出部と、前記通い箱を複数のエリアに分割し、各エリアについてエリア別視線を定義したエリアモデルと、前記２次元ワーク位置検出部で検出した前記ピッキング対象ワークの位置が、前記エリアモデルのいずれのエリアに属しているかを判定し、前記ピッキング対象ワークが属しているエリアに定義された前記エリア別視線を出力するエリア判定部と、前記ワークの３次元モデルと、前記３次元モデルを用い、前記ピッキング対象ワークを撮像した画像から、前記ピッキング対象ワークの３次元位置姿勢を検出する３次元ワーク位置検出部と、前記ワークに対して複数の方向からの前記カメラの視線方向を定義した視線モデルと、前記視線モデルと、前記３次元ワーク位置検出部で検出した前記ピッキング対象ワークの姿勢と、前記エリア判定部で求めたエリア別視線とから前記ピッキング対象ワークへアプローチする際の前記カメラの視線を演算する視線演算部と、を備え、前記２次元ワーク位置検出部は、検出した前記ピッキング対象ワークの２次元位置姿勢を前記ロボットコントローラに出力し、  前記視線演算部は、演算した前記ピッキング対象ワークへアプローチする際の前記カメラの視線を前記ロボットコントローラに出力することを特徴とするものである。
【０００９】
請求項２に記載の発明は、前記ロボットコントローラは、前記２次元ワーク位置検出部によって検出された前記ピッキングするワークの２次元位置姿勢に基づいて前記ロボットを動作させ、前記カメラを前記ピッキングするワークに接近させ、前記視線演算部によって演算された前記カメラの視線に基づいて前記ロボットを動作させ、前記カメラを前記ピッキングするワークにアプローチさせることを特徴とするものである。
【００１０】
請求項３に記載の発明は、前記３次元モデルは、前記ワークに設けられた４つ以上の特徴部の位置を記憶したものであって、前記３次元ワーク位置検出部は前記ワークを撮像した画像から前記特徴部を抽出することによって前記ワークの３次元位置姿勢を検出することを特徴とするものである。
【００１１】
請求項４に記載の発明は、前記エリア別視線は、そのエリアに存在するワークに対して前記ロボットがピッキングを行う際に、前記カメラの視野が前記通い箱に遮蔽されず、かつ前記カメラが前記通い箱に干渉しないように前記カメラを配置した際の前記カメラの視線方向を表すことを特徴とするものである。
【００１２】
請求項５に記載の発明は、前記エリア別視線は、ロボット座標系に基づくベクトルとして定義されることを特徴とするものである。
【００１３】
請求項６に記載の発明は、前記視線演算部は、前記視線モデルにて定義されたカメラの視線方向と前記エリアに設定されたエリア別視線との内積を演算することによって、前記ピッキング対象ワークのピッキングに適した前記カメラの視線を決定することを特徴とするものである。
【００１４】
請求項７に記載の発明は、前記２次元ワーク位置検出部は、前記カメラによって撮像された画像と前記２次元モデルとのテンプレートマッチングによって前記ワークの２次元位置姿勢を検出することを特徴とするものである。
【００１５】
請求項８に記載の発明は、前記２次元ワーク位置検出部は、テンプレートマッチングによって前記カメラによって撮像された画像から前記ワークが複数個検出された場合は、前記２次元モデルとの一致度が最も高いものを選定することを特徴とするものである。
【００１６】
請求項９に記載の発明は、前記ロボットは垂直多関節ロボットであることを特徴とするものである。
【発明の効果】
【００１７】
本発明によれば、エリア判定部において、ワークがどのエリアに属しているかを判定し、その判定結果と各エリアについて定義したカメラの視線方向を出力し、視線演算部において、ワークに対して視線方向を定義した視線モデルと、エリア判定部で求めたカメラの視線方向とから、エリア判定部で求めたカメラの視線方向に最も近い視線方向を視線モデルから選ぶようにしたので、カメラの視界が通い箱に遮蔽されず、カメラが通い箱に干渉する恐れがないという効果がある。
また、視線演算部で演算し出力された視線方向のそれぞれに対して３次元モデルが存在するので、３次元モデルを登録した時のワークに対するカメラ配置と近い位置にカメラを配置することができるようになり、検出精度が低下しないという効果がある。
請求項３に記載の発明によれば、１台のカメラによって取得した画像のみからワークの３次元位置姿勢を演算することができるので、ロボットの先端部に複数のカメラやレーザ光源などを設ける必要がなくなり、ロボット先端部をコンパクトにすることができ、カメラが通い箱に干渉する恐れがないという効果がある。
請求項４乃至６に記載の発明によれば、視線モデルのうち、ワークが存在するエリアに定義されたエリア別視線と最も向きの近い視線モデルを求めることにより、カメラの視界が通い箱に遮蔽されず、カメラが通い箱に干渉する恐れがないカメラの視線方向を求めることができる。
請求項７、８に記載の発明によれば、通い箱内に積まれた複数のワークからピッキングしやすいものを選定することができる。
請求項９に記載の発明によれば、カメラの姿勢を自在に変更できるため、視線演算部で求めたカメラの視線に合わせて実際のカメラの姿勢を変更することができ、カメラの視界が通い箱に遮蔽されず、カメラが通い箱に干渉する恐れがないカメラの配置を実現することができる。
【図面の簡単な説明】
【００１８】
【図１】ビンピッキングを行うロボットシステムの構成を示す図である。
【図２】ロボットシステムによりビンピッキングの流れを示す図である。
【図３】本発明のロボットシステムの画像処理装置のブロック図である。
【図４】本発明のエリアモデルの概念図である。
【図５】本発明の視線モデルの概念図である。
【図６】本発明の視線演算部の動作説明図である。
【図７】ワークとカメラとの配置を表す説明図である。
【図８】従来技術におけるピッキング装置の概略構成図である。
【図９】従来技術における物体モデルを示す説明図である。
【図１０】従来技術における計測対象物体の姿勢を示す説明図である。
【図１１】従来技術における複数の視点の位置を示す説明図である。
【図１２】対象ワークＡを検出する様子を示す説明図である。
【図１３】対象ワークＢを検出する様子を示す説明図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について図を参照して説明する。
【００２０】
まず、背景技術でも述べた、ワークに対する適切なカメラ配置の必要性について詳しく説明する。カメラで撮像した画像から作業対象となるワークの３次元位置姿勢を得るには、複数のカメラを用いたステレオ視や、レーザなどの光をワークに照射してその様子をカメラで撮像する三角測量を行う手法が従来から用いられているが、近年、複数のカメラやレーザなどを用いることなく、１台のカメラによって取得した１つの画像のみからワークの３次元位置姿勢を演算する手法が知られてきている（例えば技報  安川電機  第７１巻  第３号  通巻  第２７６号（２００７年）Ｐ１４４〜１４８）。
この手法を用いることによりロボットの先端部に複数のカメラやレーザ光源などを設ける必要がなくなり、ロボット先端部をコンパクトにすることができる。ロボットの先端部をコンパクトにすることは、ビンピッキングなどの用途では特に有用である。
１台のカメラによって取得した画像のみからワークの３次元位置姿勢を演算する具体的な方法は本発明の本質ではないため詳細な説明は割愛するが、この手法を用いるためには、対象となるワークに４つ以上の特徴点を設定する必要があり、さらにこれらの特徴点は、カメラで撮像した際に同一直線上に存在しないという条件を満たす必要がある。
【００２１】
例えば、図７に示したようなワーク５０１に対して、カメラ９０２で画像を取得する場合を考える。図７の場合、ワーク５０１には４つの穴５０２が存在する。ワーク５０１の上方に配置したカメラ９０２でワーク５０１の画像を取得し、画像処理装置９０６で４つの穴を検出し、この４つの穴を特徴点としてその位置関係を求める。ビンピッキングを行うのに先立ち、これら４つの穴の位置を物体モデルとして登録しておく。この物体モデルは後述する３次元モデルとして画像処理装置内に保存される。
図１に示したビンピッキングを行う場合は、物体モデルを登録する場合と同様にワーク９０５の画像をカメラ９０２で取得し、画像処理装置９０６で４つの穴を検出する。ここで検出した４つの穴の位置と、物体モデルの４つの穴の位置を比較することにより、１台のカメラ９０２から取得した画像からワーク９０５の３次元位置姿勢を演算することができる。
ビンピッキングを行う場合にワーク９０５を検出する際のカメラ９０２の配置は、物体モデルを登録した時の配置と同様にした方が、検出精度が高くなる。
物体モデルを登録した時とビンピッキングを行う時とでカメラに対するワークの配置が異なると、カメラ９０２から見た穴５０２の形状が変化するため、穴５０２の検出精度が低下し、その結果４つの穴の位置関係から求めるワークの３次元位置姿勢の精度が低下してしまうからである。
【実施例１】
【００２２】
本実施例では、図１に示したビンピッキングを行うロボットシステムに基づいて説明する。図１において、ロボット９０１は、通い箱９０４内のワーク９０５の姿勢に応じてカメラ９０２およびハンド９０３の位置姿勢を自在に変更できるよう、垂直多関節型のロボットを用いている。またカメラ９０２は、その視線がハンド９０３の長軸方向と一致するようハンド９０３と平行にロボット先端部に取り付けられている。
【００２３】
まず図２に従ってビンピッキングの大まかな手順を説明する。図２は本発明のロボットシステムによるビンピッキング作業（１回分）の流れを示す図である。
まず通い箱９０４全体をカメラ９０２の視野に捉えることができるよう、ロボットを動作させてカメラ９０２を通い箱９０４からある程度離れた適当な位置に配置する。この位置は予め教示を行いロボットコントローラ９０７に記憶させておくことで再現性を確保することができる（ステップ１）。またこの時のカメラの姿勢は図１のように鉛直方向としておく。
カメラの移動が完了したら、続いてカメラ９０２によって通い箱９０４内の画像を取得し、その画像を画像処理装置９０６に出力する（ステップ２）。
画像処理装置９０６では２次元の検出処理を行ってピッキングしようとするワーク（対象ワーク）の通い箱内でのおおよその位置を検出し、ロボットコントローラに出力する（ステップ３）。ロボットコントローラはカメラの姿勢を図１の状態に保ちつつ、検出されたワークの位置に基づきロボットを水平方向に動作させてカメラ９０２を対象ワークに近付け、ワークの詳細な画像が得られるようにする（ステップ４）。
そしてカメラ９０２により再度対象ワークの画像を取得し、その画像を画像処理装置９０６に出力する（ステップ５）。
画像処理装置９０６では、今度は３次元の検出処理を行って、対象ワークの詳細な３次元位置姿勢を検出し、物体モデルを登録した時のカメラ位置をロボットコントローラに出力する（ステップ６）。ロボットコントローラは再度ロボットを動作させてカメラを適切な位置に配置し（ステップ７）、ハンド９０３をアプローチ方向から対象ワークへと接近させ、ハンド９０３によりワークを把持して通い箱から取り出す（ステップ８）。
前述のようにハンド９０３は、ワーク９０５を把持したり吸着したりすることによって通い箱から取り出す。把持する場合には、ハンドとして開閉機構を備えたグリッパなどがロボット先端に設けられる。また吸着する場合には、ハンドとして吸着カップなどが設けられる。
【００２４】
図３は、本発明のロボットシステムを構成する画像処理装置９０６の主要要素を表す図である。以下では、図３に示した画像処理装置９０６の各要素について説明しながら、図２で説明した手順をより詳細に説明する。
図３において画像入力部１０１はカメラ９０２で取得した画像を入力とし、その画像を適宜２次元ワーク位置検出部１０８や３次元ワーク位置検出部１０２に出力する。
まず図２のステップ２で複数のワークが写った通い箱９０４内の画像を取得した際には、その画像を２次元ワーク位置検出部１０８に出力する。
２次元ワーク位置検出部１０８は、予め登録されたワーク５０１に関する２次元モデル１０９を使い、入力された通い箱９０４内の画像から、カメラ撮像面におけるワーク９０５の２次元位置姿勢（２次元位置と回転角度）を検出し、エリア判定部１０３とロボットコントローラ９０７へ出力する。２次元ワーク位置検出部１０８からピッキングしようとするワーク９０５の２次元位置姿勢をロボットコントローラ９０７へ出力する処理が図２のステップ３に相当する。
【００２５】
ここでの検出は例えば、通い箱内の画像の一部と、予め登録したモデル画像(テンプレート画像)との一致度を計算することでワークがどこに存在するかを見つけるテンプレートマッチングを利用する。この場合、２次元モデル１０９はワーク５０１に関するテンプレート画像となり、２次元ワーク位置検出部１０８では、入力された通い箱９０４内の画像（シーン画像）から、ワーク９０５の位置姿勢を検出する。通い箱９０４内に複数のワーク９０５が積まれている場合には、検出されるワークも複数になるが、テンプレートマッチングおいて、検出された各ワークについて２次元モデルとのマッチング程度（一致度）を表すスコアが算出されているため、最もスコアの高い１つを検出結果として抽出しピッキングしようとするワーク（対象ワーク）とすれば良い。スコアの高いワークは、カメラ９０２に対する傾きが２次元モデル登録時のそれと近いものとなる。
一般に２次元モデルは平面上に置かれたワークを真上から見た状態で登録されるため、カメラの視線に対して正対した状態に近いワークが、スコアの高いワークとなる。
実際には複数のワークが検出された場合は、２次元モデルとのマッチング程度（一致度）が高いものを上位から例えば１０個選んでその位置を記憶しておき、最もマッチングのスコアが高いものから順にピッキングすることで、次にピッキングすべきワークを決定する際に、図２のステップ１、２の繰り返しを回避することができる。
【００２６】
また、ビンピッキング作業を繰り返し、通い箱内のワーク９０５の数が少なくなると、最上面に位置するワークの、通い箱底面からの高さも低くなる。図２のステップ３でテンプレートマッチングを行う際にはカメラ９０２と最上面ワークとの距離が一定であることが望ましい。
そこで、ロボット先端のカメラ近傍に距離センサ（図示せず）を設け、ステップ１を実行する度に距離センサで通い箱内のワークまでの距離を計測し、予め定めた値になるようカメラの高さを調整するようにしたり、テンプレートマッチングを行う際にカメラ撮像面におけるワークの大きさを画像処理装置内のメモリ（図示せず）に記憶して、ステップ１を実行する度にカメラで通い箱内のワークを撮像し、記憶しておいたワークの大きさと同等になるようカメラの高さを調整するようにしたりすることによって、通い箱内のワークとカメラとの距離を適切に保つようにしてもよい。
またカメラの高さを調整せずにテンプレートマッチングの際にテンプレート画像の大きさを変化させるスケール変化対応のマッチング処理を行うようにしてもよい。
【００２７】
エリア判定部１０３は、上方から見た通い箱９０４を複数のエリアに分割したエリアモデル１０６を使い、２次元ワーク位置検出部１０８で検出された対象ワークの位置が、どこのエリアに属しているかを判定し、そのエリアについて定義されたカメラ９０２の視線（エリア別視線）の方向を出力する。
図４に、エリアモデルの概念図を示す。図４は、通い箱９０４を上方から見た状態であり、通い箱９０４の内部を複数のエリア２０１に分割している。点線によって分割されているのがエリアである。図４ではエリア１からエリア８までの８つのエリアに分割しているがこれは一例に過ぎず、エリアの数や分割の仕方は図４のような形に限定されるものではない。
また、エリアモデル１０６では、各エリア２０１について、カメラ９０２の視線方向（エリア別視線２０２）も定義する。これら視線方向は、そのエリアに存在するワークに対してロボットがピッキングを行う際に、カメラ９０２の視野が通い箱９０４に遮蔽されず、かつカメラ９０２が通い箱９０４に干渉しないようにカメラ９０２を配置した際の、カメラ９０２の視線方向を表すものである。
具体的なエリア別視線の表現方法として、例えば図４のようにロボット座標系に基づくベクトルを用いることができる。例えばエリア１に定義されたエリア別視線は（１、−１）、エリア２に定義されたエリア別視線は（０、−１）のように表現できる。
【００２８】
一方、２次元ワーク位置検出部１０８から出力された、カメラ撮像面における対象ワークの２次元位置を受けとったロボットコントローラ９０７は、その位置をロボットの座標系位置に変換する。そして変換されたロボット座標系に基づく位置へ向けてロボットを移動させ、カメラ９０２を対象ワークに接近させる（図２のステップ４に相当）。
カメラ撮像面の座標系とロボット座標系との位置関係については予めキャリブレーションが完了しているものとする。また、カメラの姿勢は通い箱９０４内の画像を取得した際の姿勢を維持したまま移動させる。
ロボットの移動によりカメラ９０２は対象ワークのほぼ真上に位置することになる。
【００２９】
ロボットの移動が完了すると、ロボットコントローラ９０７は画像処理装置９０６に通知する。
この通知を受けて画像入力部１０１は再度カメラ９０２で取得した画像を入力し、その画像を３次元ワーク位置検出部１０２に出力する（図２のステップ５に相当）。
３次元ワーク位置検出部１０２は、予め登録されたワーク５０１に関する３次元モデル１０５を使い、対象ワークを含む通い箱９０４内の画像から対象ワークの３次元位置姿勢を検出し、視線演算部１０４へ出力する。
ここでの検出は、既に説明したように、１台のカメラの画像から４つの特徴点（ワーク５０１の場合は４つの穴）を検出し、それらの位置からワークの３次元位置姿勢を演算する手法を用いる。この場合３次元モデル１０５は４つの特徴点の位置関係であって、３次元ワーク位置検出部１０２では、対象ワークの画像から４つの特徴点（４つの穴）を検出し、３次元モデル１０５と比較することで、対象ワークの３次元位置姿勢を検出する。
【００３０】
視線演算部１０４は、ワーク５０１に対して視線方向を定義した視線モデル１０７を使い、３次元ワーク位置検出部１０２で検出されたワーク９０５の姿勢と、エリア判定部１０３で求めたエリア別視線２０２の情報から、ピッキングしようとするワークに対するカメラの適切な視線を演算し出力する。
図５に、視線モデルの概念図を示す。図５（ａ）がワーク５０１を真上から見た図（上面図）、図５（ｂ）がワーク５０１を斜めから見た図（斜視図）である。視線モデル１０７は、図５（ａ）の場合、ワーク５０１に対して８つの視線方向（視線方向１〜８）を定義している。
視線方向はカメラ９０２の視線に相当し、立体的に見れば図５（ｂ）のようになる。尚、図５（ｂ）では図を見やすくするため、視線方向１、５、７のみ表示している。視線演算部１０４は、この視線モデル１０７を、３次元ワーク位置検出部１０２で検出した対象ワークの姿勢に合わせて回転させ、エリア判定部１０３で求めたエリア別視線２０２と比較する。
尚、図５では、予め定義した視線方向の数を８つとしたが、視線方向の数はこれに限定されることなく、ワークの形状に応じて任意に設定することができる。
【００３１】
図６に、視線演算部の動作説明図を示す。図６は、図４における通い箱の右上部にあたるエリア３を拡大表示したものである。今、エリア判定部１０３において、ピッキングしようとするワーク（対象ワーク）がエリア３に属していると判定され、エリア３のエリア別視線２０２が図６のように得られたとする。また３次元ワーク位置検出部１０２によって検出されたワーク９０５の３次元位置姿勢を用いて視線モデル１０７を回転させた結果、図６に示すようになったとする。
ここで視線方向１〜８の内、エリア３に設定されたエリア別視線２０２と最も向きが近い視線方向を特定する。
視線モデルに設定された８つの視線方向のうち、エリア別視線２０２と最も向きが近いものは、例えば、図６に示すようにＸＹ平面に投影された８つの視線方向と、エリア別視線２０２との間で内積演算を行うことで求めることができる。
２つのベクトルの向きが近いとその内積は大きくなる。図６の８つの視線方向の各々についてエリア別視線２０２との間で内積を求め、その結果が最も大きいものがエリア別視線と向きが近い視線方向となる。図６の場合、視線方向３が該当することが分かる。
そして視線演算部１０４は、エリア別視線と最も向きの近い視線方向の番号と、図６の直交座標系に基づく視線方向３のベクトルを出力視線４０１としてロボットコントローラ９０７へ出力する。こうした過程が図２のステップ６に相当する。
【００３２】
こうして選ばれた出力視線は、図６の８つの視線方向のうち、カメラ９０２の視野が通い箱９０４に遮蔽されず、またカメラ９０２が通い箱９０４に干渉しない視線方向と、向きが最も近いものとなっている。
【００３３】
ロボットコントローラ９０７では、図５に示した視線モデルの各視線（視線方向１〜８）に対応したカメラ９０２の姿勢や配置が予め教示されている。
この教示データを図６の出力視線に合わせて調整することで、図６のように配置されたワークに対し、カメラ９０２の視野が通い箱９０４に遮蔽されず、またカメラ９０２が通い箱９０４に干渉しない視線方向を得ることができる。
ロボットコントローラ９０７では、視線演算部１０４から出力された視線方向の番号から対応するカメラ９０２の教示データを求め、その教示データを出力視線４０１のベクトルを用いて座標変換し、図６の状態に応じたカメラの姿勢、配置を求める。その後実際にロボットを動作させてカメラを適切な位置、姿勢に配置する。この動作が図２のステップ７に相当する。
この動作により、それまで図１のように鉛直方向を保っていたカメラの姿勢が、物体モデルを登録した時のカメラの位置・姿勢に変化する。
【００３４】
以上の一連の処理によってカメラが適切に配置された後は、従来の技術と同様にカメラで対象ワークを撮像し、画像処理装置９０６での処理結果に基づきハンドを移動させて対象ワークを把持または吸着して通い箱から取り出す（図２のステップ８）。
【００３５】
以上説明したように、本発明によれば、エリア判定部１０３において、ピッキングしようとするワークが通い箱のどのエリアに属しているかを判定し、その判定結果と、ワークが属しているエリアについて定義したカメラの視線方向（エリア別視線）を出力し、視線演算部１０４において、ワークに対して視線方向を定義した視線モデル１０７と、エリア判定部１０３で求めたカメラの視線方向（エリア別視線）とから、エリア判定部１０３で求めたエリア別視線に最も近い視線方向を視線モデル１０７から選び、カメラの向きをその視線方向に合わせるようにしたので、カメラ９０２の視野が通い箱９０４に遮蔽されず、また、カメラ９０２が通い箱９０４に干渉しないようにカメラ９０２が配置されるようになる。
【符号の説明】
【００３６】
１０１    画像入力部
１０２    ３次元ワーク位置検出部
１０３    エリア判定部
１０４    視線演算部
１０５    ３次元モデル
１０６    エリアモデル
１０７    視線モデル
１０８    ２次元ワーク位置検出部
１０９    ２次元モデル
２０１    エリア
２０２    エリア別視線
３０１    視線方向
４０１    出力視線
５０１    ワーク
５０２    穴
９０１    ロボット
９０２    カメラ
９０３    ハンド
９０４    通い箱
９０５    ワーク
９０６    画像処理装置
９０７    ロボットコントローラ
９０８    対象ワークＡ
９０９    対象ワークＢ
１１ａ、１１ｂ、１１ｃ  テレビカメラ
１２      ３次元計測手段
１３      把持物体決定手段
１４      物体
１５      移動手段
１６      把持手段
【図１】
2011083882.tif 000003
【図２】
2011083882.tif 000004
【図３】
2011083882.tif 000005
【図４】
2011083882.tif 000006
【図５】
2011083882.tif 000007
【図６】
2011083882.tif 000008
【図７】
2011083882.tif 000009
【図８】
2011083882.tif 000010
【図９】
2011083882.tif 000011
【図１０】
2011083882.tif 000012
【図１１】
2011083882.tif 000013
【図１２】
2011083882.tif 000014
【図１３】
2011083882.tif 000015