(57)【要約】【課題】検出対象となる物体を撮像する撮像部に対する、その物体の相対的な位置関係が変化する場合でも、その物体を検出することが可能な物体検出装置を提供する。【解決手段】物体検出装置は、対象物体１０が表された画像を生成する撮像部４と対象物体１０とが所定の位置関係を満たさない場合に、識別器に画像を入力することで画像上での対象物体１０の位置を検出するロバスト検出部４１と、撮像部４と対象物体１０とが所定の位置関係を満たす場合に、対象物体１０を所定の方向から見たときの対象物体１０の外観の特徴を表すテンプレートと画像とを照合することで画像上での対象物体１０の位置を検出する精密検出部４２とを有する。【選択図】図３
2020135623.tif 000002
【特許請求の範囲】
【請求項１】
対象物体を所定の方向から見たときの前記対象物体の外観の特徴を表すテンプレートを記憶する記憶部と、
前記対象物体を撮影して前記対象物体が表された画像を生成する撮像部と前記対象物体とが所定の位置関係を満たさない場合に、前記画像から前記対象物体を検出するように予め学習された識別器に前記画像を入力することで、前記画像上での前記対象物体の位置を検出するロバスト検出部と、
前記撮像部と前記対象物体とが前記所定の位置関係を満たす場合に、前記画像と前記テンプレートとを照合することで、前記画像上での前記対象物体の位置を検出する精密検出部と、
を有する物体検出装置。
【請求項２】
前記ロバスト検出部は、検出された前記画像上での前記対象物体の位置に基づいて実空間での前記対象物体の位置を検出し、
前記精密検出部は、検出された前記画像上での前記対象物体の位置に基づいて実空間での前記対象物体の位置を検出する、請求項１に記載の物体検出装置。
【請求項３】
前記精密検出部は、前記画像と前記テンプレートとが最も一致するときの前記画像に対する前記テンプレートの相対的な位置関係に応じて前記画像上での前記対象物体の位置及び姿勢を検出し、前記画像上での前記対象物体の位置及び姿勢に基づいて実空間での前記対象物体の位置及び姿勢を検出する、請求項２に記載の物体検出装置。
【請求項４】
前記識別器は、前記画像に表された前記対象物体の姿勢を検出するようにさらに学習され、前記ロバスト検出部は、前記識別器に前記画像を入力することで前記画像上での前記対象物体の位置及び姿勢を検出し、前記画像上での前記対象物体の位置及び姿勢に基づいて実空間での前記対象物体の位置及び姿勢を検出する、請求項２または３に記載の物体検出装置。
【請求項５】
前記対象物体の前記実空間での位置と前記撮像部との位置に応じて、前記撮像部と前記対象物体とが前記所定の位置関係を満たすか否か判定し、前記撮像部と前記対象物体とが前記所定の位置関係を満たさない場合に、前記ロバスト検出部に前記画像上での前記対象物体の位置を検出させ、一方、前記撮像部と前記対象物体とが前記所定の位置関係を満たす場合に、前記精密検出部に前記画像上での前記対象物体の位置を検出させる判定部をさらに有する、請求項２〜４の何れか一項に記載の物体検出装置。
【請求項６】
少なくとも一つの可動部を有する自動機械の制御装置であって、
前記自動機械の作業対象となる対象物体を所定の方向から見たときの前記対象物体の外観の特徴を表すテンプレートを記憶する記憶部と、
前記可動部に取り付けられ、前記対象物体を撮影して前記対象物体が表された画像を生成する撮像部と前記対象物体とが所定の位置関係を満たさない場合に、前記画像から前記対象物体を検出するように予め学習された識別器に前記画像を入力することで、前記画像上での前記対象物体の位置を検出し、前記画像上での前記対象物体の位置に基づいて実空間での前記対象物体の位置を検出するロバスト検出部と、
前記撮像部と前記対象物体とが前記所定の位置関係を満たす場合に、前記画像と前記テンプレートとを照合することで、前記画像上での前記対象物体の位置を検出し、前記画像上での前記対象物体の位置に基づいて実空間での前記対象物体の位置を検出し、あるいは、前記対象物体に対する相対的な位置を表す位置情報を取得する位置情報取得部により得られた前記位置情報に基づいて実空間での前記対象物体の位置を検出する精密検出部と、
前記撮像部と前記対象物体とが前記所定の位置関係を満たさない場合に、前記ロバスト検出部により検出された実空間での前記対象物体の位置に基づいて、前記撮像部と前記対象物体とが前記所定の位置関係を満たすように前記可動部を制御するアプローチ制御部と、
前記撮像部と前記対象物体とが前記所定の位置関係を満たす場合に、前記精密検出部により検出された実空間での前記対象物体の位置に基づいて、前記対象物体に対して前記自動機械が所定の作業を実施可能な位置へ前記可動部を移動させるよう、前記可動部を制御する作業制御部と、
を有する制御装置。
【請求項７】
前記所定の位置関係は、前記撮像部と前記対象物体間の距離が所定距離以下となることである、請求項６に記載の制御装置。
【請求項８】
前記所定の位置関係は、前記撮像部と前記対象物体間の距離が所定距離以下であり、かつ、前記撮像部に対して前記対象物体が所定の姿勢となっていることであり、
前記識別器は、前記画像に表された前記対象物体の姿勢を検出するようにさらに学習され、前記ロバスト検出部は、前記識別器に前記画像を入力することで前記画像上での前記対象物体の位置及び姿勢を検出し、前記画像上での前記対象物体の位置及び姿勢に基づいて実空間での前記対象物体の位置及び姿勢を検出し、
前記アプローチ制御部は、前記ロバスト検出部により検出された実空間での前記対象物体の位置及び姿勢に基づいて、前記撮像部と前記対象物体間の距離が前記所定距離以下であり、かつ、前記撮像部に対して前記対象物体が前記所定の姿勢となるように前記可動部を制御する、請求項６に記載の制御装置。
【請求項９】
前記対象物体を撮影して前記対象物体が表された画像を生成する撮像部と前記対象物体とが所定の位置関係を満たさない場合に、前記画像から前記対象物体を検出するように予め学習された識別器に前記画像を入力することで、前記画像上での前記対象物体の位置を検出し、
前記撮像部と前記対象物体とが前記所定の位置関係を満たす場合に、前記対象物体を所定の方向から見たときの前記対象物体の外観の特徴を表すテンプレートと前記画像とを照合することで、前記画像上での前記対象物体の位置を検出する、
ことをコンピュータに実行させるための物体検出用コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、画像に表された物体を検出する物体検出装置及び物体検出用コンピュータプログラム、及び、画像に表された物体の検出結果を利用して可動部を有する自動機械を制御する制御装置に関する。
【背景技術】
【０００２】
アームなどの可動部を有し、その可動部がサーボモータを用いて駆動されるロボットまたは工作機械といった自動機械において、可動部と、自動機械の作業対象となる物体との相対的な位置関係に応じて自動機械を制御するために、カメラにより得られた、作業対象となる物体が表された画像を利用する技術が提案されている。そのような技術の一つとして、パターンマッチングを利用して画像から物体を検出する技術が提案されている（例えば、特許文献１を参照）。また、そのような技術の他の一つとして、ニューラルネットワークなどの機械学習手法により実現される識別器に、作業対象となる物体が表された画像を入力することで、自動機械に所定の動作をさせるための制御情報を得る技術が提案されている（例えば、特許文献２〜５を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−１５８４３９号公報
【特許文献２】特許第６３７６２９６号公報
【特許文献３】特開２００９−８３０９５号公報
【特許文献４】特開２０１８−１２６７９９号公報
【特許文献５】特開２０１８−２０５９２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
作業対象となる物体がベルトコンベヤーなどで搬送されている場合のように、その物体が移動していることがある。このような場合、カメラとその物体との位置関係の変化に伴って、画像上に表されるその物体の位置、姿勢及びサイズが変化する。そのため、パターンマッチングに用いられる物体の特徴、例えば、特定の方向から見たときの物体の面または輪郭の一部が隠れてしまい、パターンマッチングでは、物体の位置及び姿勢を正確に検出することが困難になることがある。その結果として、自動機械の制御装置が、時系列に得られる一連の画像からの物体の検出結果に基づいてその物体を追跡している間に、その物体を追跡できなくなり、可動部をその物体に対する作業を実施可能な位置へ移動させることができなくなることがある。さらに、画像上に表される作業対象となる物体の位置、姿勢及びサイズが変化するために、画像上での物体が位置する領域が未知であると、物体を検出するために、画像全体に対してパターンマッチングを行うことが必要となり、物体の検出までに要する時間が掛かり過ぎてしまうことがある。このような場合、可動部を物体の位置変化に追従させることが困難となる。
【０００５】
一方、機械学習手法による識別器を用いて、画像上に表された作業対象となる物体の位置及び姿勢を検出する場合、自動機械の制御装置は、カメラに対するその物体の位置及び姿勢によらず、画像からその物体を検出することができる。しかし、この場合には、物体の位置及び姿勢の検出精度が必ずしも十分でなく、制御装置は、識別器により検出された物体の位置に基づいて、可動部がその物体に対する作業を実施可能な位置へ可動部を正確に移動させることができないことがある。
【０００６】
一つの側面では、検出対象となる物体を撮像する撮像部に対する、その物体の相対的な位置関係が変化する場合でも、その物体を検出することが可能な物体検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの実施形態によれば、物体検出装置が提供される。この物体検出装置は、対象物体を所定の方向から見たときの対象物体の外観の特徴を表すテンプレートを記憶する記憶部と、対象物体を撮影して対象物体が表された画像を生成する撮像部と対象物体とが所定の位置関係を満たさない場合に、画像から対象物体を検出するように予め学習された識別器に画像を入力することで、画像上での対象物体の位置を検出するロバスト検出部と、撮像部と対象物体とが所定の位置関係を満たす場合に、画像とテンプレートとを照合することで、画像上での対象物体の位置を検出する精密検出部とを有する。
【０００８】
他の実施形態によれば、少なくとも一つの可動部を有する自動機械の制御装置が提供される。この制御装置は、自動機械の作業対象となる対象物体を所定の方向から見たときの対象物体の外観の特徴を表すテンプレートを記憶する記憶部と、可動部に取り付けられ、対象物体を撮影して対象物体が表された画像を生成する撮像部と対象物体とが所定の位置関係を満たさない場合に、画像から対象物体を検出するように予め学習された識別器に画像を入力することで、画像上での対象物体の位置を検出し、画像上での対象物体の位置に基づいて実空間での対象物体の位置を検出するロバスト検出部と、撮像部と対象物体とが所定の位置関係を満たす場合に、画像とテンプレートとを照合することで、画像上での対象物体の位置を検出し、画像上での対象物体の位置に基づいて実空間での対象物体の位置を検出し、あるいは、対象物体との相対的な位置を表す位置情報を取得する位置情報取得部により得られた位置情報に基づいて実空間での対象物体の位置を検出する精密検出部と、撮像部と対象物体とが所定の位置関係を満たさない場合に、ロバスト検出部により検出された実空間での対象物体の位置に基づいて、撮像部と対象物体とが所定の位置関係を満たすように可動部を制御するアプローチ制御部と、撮像部と対象物体とが所定の位置関係を満たす場合に、精密検出部により検出された実空間での対象物体の位置に基づいて、対象物体に対して自動機械が所定の作業を実施可能な位置へ可動部を移動させるよう、可動部を制御する作業制御部とを有する。
【０００９】
また他の実施形態によれば、物体検出用コンピュータプログラムが提供される。この物体検出用コンピュータプログラムは、対象物体を撮影して対象物体が表された画像を生成する撮像部と対象物体とが所定の位置関係を満たさない場合に、画像から対象物体を検出するように予め学習された識別器に画像を入力することで、画像上での対象物体の位置を検出し、撮像部と対象物体とが所定の位置関係を満たす場合に、対象物体を所定の方向から見たときの対象物体の外観の特徴を表すテンプレートと画像とを照合することで、画像上での対象物体の位置を検出する、ことをコンピュータに実行させるための命令を含む。
【発明の効果】
【００１０】
一つの側面によれば、検出対象となる物体を撮像する撮像部に対する、その物体の相対的な位置関係が変化する場合でも、その物体を検出することができる。
【図面の簡単な説明】
【００１１】
【図１】一つの実施形態によるロボットシステムの概略構成図である。
【図２】制御装置の概略構成図である。
【図３】物体検出処理を含む可動部制御処理に関する、制御装置が有するプロセッサの機能ブロック図である。
【図４】物体検出処理を含む、可動部制御処理の概要を説明する図である。
【図５】物体検出処理を含む可動部制御処理の動作フローチャートである。
【図６】変形例による、ロボットシステムの概略構成図である。
【図７】物体検出装置の概略構成図である。
【発明を実施するための形態】
【００１２】
以下、図を参照しつつ、本発明の実施形態による物体検出装置について説明する。この物体検出装置は、例えば、アームといった可動部を有する自動機械の可動部に取り付けられた撮像部により得られた一連の画像から、自動機械の作業対象となる物体（以下、単に対象物体と呼ぶ）を検出して、実空間での対象物体の位置を検出する。その際、この物体検出装置は、撮像部と対象物体とが、所定の位置関係を満たすまでは、画像から対象物体を検出するように予め学習された識別器に画像を入力することで、画像上での対象物体の位置をロバストに検出し、その検出結果に基づいて、実空間での対象物体の位置を検出する。一方、この物体検出装置は、撮像部と対象物体とが所定の位置関係を満たす場合、事前に得られた、対象物体を所定の方向から見たときの対象物体の外観の特徴を表すテンプレートと画像とを照合することで、画像上での対象物体の位置及び姿勢を高精度で検出し、その検出結果に基づいて、実空間での対象物体の位置及び姿勢を検出する。さらに、この物体検出装置は、自動機械の制御装置に組み込まれ、検出された対象物体の位置、または、検出された対象物体の位置及び姿勢に基づいて、自動機械が対象物体に対する作業を行えるように、自動機械の可動部を制御する。
【００１３】
図１は、一つの実施形態による、物体検出装置が実装されたロボットシステム１の概略構成図である。ロボットシステム１は、ロボット２と、ロボット２を制御する制御装置３と、ロボット２の可動部に取り付けられ、対象物体の一例であるワーク１０を撮影するためのカメラ４とを有する。ロボットシステム１は、自動機械の一例である。
【００１４】
ロボット２は、台座１１と、回転ステージ１２と、第１のアーム１３と、第２のアーム１４と、リスト１５と、ツール１６とを有する。回転ステージ１２、第１のアーム１３、第２のアーム１４、リスト１５及びツール１６は、それぞれ、可動部の一例である。回転ステージ１２、第１のアーム１３、第２のアーム１４及びリスト１５のそれぞれは、それらが取り付けられる関節に設けられる軸により支持され、サーボモータがその軸を駆動することで動作する。また、ワーク１０は、例えば、ベルトコンベヤーにより搬送され、ワーク１０が所定の範囲内に位置している間に、ロボット２は、ワーク１０に対する所定の作業を実施する。
【００１５】
台座１１は、ロボット２が床置き設置される場合に台となる部材である。回転ステージ１２は、台座１１の天面に、関節２１にて、台座１１のその一方の面と直交するように設けられる軸（図示せず）を回転中心として回動可能に取り付けられる。
【００１６】
第１のアーム１３は、その一端側にて、回転ステージ１２に設けられる関節２２において回転ステージ１２に取り付けられる。本実施形態では、図１に示されるように、第１のアーム１３は、関節２２にて、台座１１の回転ステージ１２が取り付けられる面と平行に設けられる軸（図示せず）を中心として回動可能となっている。
【００１７】
第２のアーム１４は、その一端側にて、関節２２とは反対側の第１のアーム１３の他端側に設けられる関節２３にて第１のアーム１３に取り付けられる。本実施形態では、図１に示されるように、第２のアーム１４は、関節２３にて、台座１１の回転ステージ１２が取り付けられる面と平行に設けられる軸（図示せず）を中心として回動可能となっている。
【００１８】
リスト１５は、関節２３とは反対側の第２のアーム１４の先端にて、関節２４を介して取り付けられる。リスト１５は、関節２５を有し、関節２５にて関節２２の軸及び関節２３の軸と平行に設けられる軸（図示せず）を回転中心として屈曲可能となっている。さらに、リスト１５は、第２のアーム１４の長手方向と平行な軸（図示せず）を回転中心として、第２のアーム１４の長手方向と直交する面において回動可能であってもよい。
【００１９】
ツール１６は、関節２４とは反対側のリスト１５の先端に取り付けられる。ツール１６は、ワーク１０に対する作業を行うための機構または装置を有する。例えば、ツール１６は、ワーク１０を加工するためのレーザを有してもよく、ワーク１０を溶接するためのサーボガンを有していてもよい。あるいは、ツール１６は、ワーク１０またはワーク１０に組み付けられる部品を把持するためのハンド機構を有していてもよい。
【００２０】
カメラ４は、撮像部の一例であり、例えば、ツール１６に取り付けられる。なお、カメラ４は、リスト１５または第２のアーム１４といった他の可動部に取り付けられてもよい。カメラ４は、ロボット２がワーク１０に対する作業を実施する際、あるいは、ツール１６をワーク１０へアプローチさせる際にカメラ４の撮影範囲にワーク１０が含まれるように向けられる。そしてカメラ４は、所定の撮影周期ごとに、ワーク１０を含む撮影範囲を撮影することでワーク１０が表された画像を生成する。カメラ４は、画像を生成する度に、生成した画像を、通信回線５を介して制御装置３へ出力する。
【００２１】
なお、制御装置３の制御対象となる自動機械は、図１に示されるロボット２に限られず、可動部を少なくとも一つ有するものであればよい。
【００２２】
制御装置３は、通信回線５を介してロボット２と接続され、ロボット２のそれぞれの関節に設けられる軸を駆動するサーボモータの動作状況を表す情報、カメラ４からの画像などを、ロボット２から通信回線５を介して受信する。そして制御装置３は、受信した情報、画像、及び、上位制御装置（図示せず）から受信した、あるいは、予め設定されたロボット２の動作に基づいて、サーボモータを制御することで、ロボット２の各可動部の位置及び姿勢を制御する。
【００２３】
図２は、制御装置３の概略構成図である。制御装置３は、通信インターフェース３１と、駆動回路３２と、メモリ３３と、プロセッサ３４とを有する。さらに、制御装置３は、タッチパネルといったユーザインターフェース（図示せず）を有していてもよい。
【００２４】
通信インターフェース３１は、例えば、制御装置３を通信回線５と接続するための通信インターフェース及び通信回線５を介した信号の送受信に関する処理を実行するための回路などを含む。そして通信インターフェース３１は、例えば、ロボット２から、通信回線５を介して、駆動部の一例であるサーボモータ３５の回転量を検出するためのエンコーダからの回転量の測定値など、サーボモータ３５の動作状況を表す情報を受信して、その情報をプロセッサ３４へわたす。なお、図２では、代表的に一つのサーボモータ３５が図示されているが、ロボット２は、関節ごとに、その関節の軸を駆動するサーボモータを有してもよい。さらに、通信インターフェース３１は、カメラ４から画像を受信してプロセッサ３４へわたす。
【００２５】
駆動回路３２は、電流供給用のケーブルを介してサーボモータ３５と接続され、プロセッサ３４による制御に従って、サーボモータ３５に生じさせるトルク、回転方向あるいは回転速度に応じた電力をサーボモータ３５へ供給する。
【００２６】
メモリ３３は、記憶部の一例であり、例えば、読み書き可能な半導体メモリと読み出し専用の半導体メモリとを有する。さらに、メモリ３３は、半導体メモリカード、ハードディスク、あるいは光記憶媒体といった記憶媒体及びその記憶媒体にアクセスする装置を有していてもよい。
【００２７】
メモリ３３は、制御装置３のプロセッサ３４で実行される、ロボット２の制御用の各種コンピュータプログラムなどを記憶する。また、メモリ３３は、ロボット２を動作させる際のロボット２の動作を制御するための情報を記憶する。さらに、メモリ３３は、ロボット２の動作中においてロボット２から得られるサーボモータ３５の動作状況を表す情報を記憶する。さらにまた、メモリ３３は、物体検出処理で利用される各種のデータを記憶する。そのようなデータには、例えば、識別器を規定するためのパラメータ群、ワーク１０の検出に用いられる、ワーク１０を所定の方向（例えば、鉛直上方）から見たときのワーク１０の外観の特徴を表すテンプレート、カメラ４の焦点距離、取り付け位置及び向きといったカメラ４に関する情報を表すカメラパラメータ、及び、カメラ４から得られた画像が含まれる。
【００２８】
プロセッサ３４は、制御部の一例であり、例えば、Central Processing Unit(CPU)及びその周辺回路を有する。さらにプロセッサ３４は、数値演算用のプロセッサを有していてもよい。そしてプロセッサ３４は、ロボットシステム１全体を制御する。またプロセッサ３４は、物体検出処理を含む、可動部制御処理を実行する。
【００２９】
図３は、物体検出処理を含む、可動部制御処理に関する、プロセッサ３４の機能ブロック図である。プロセッサ３４は、ロバスト検出部４１と、精密検出部４２と、判定部４３と、アプローチ制御部４４と、作業制御部４５とを有する。プロセッサ３４が有するこれらの各部は、例えば、プロセッサ３４上で実行されるコンピュータプログラムにより実現される機能モジュールである。あるいは、これらの各部は、プロセッサ３４の一部に実装される専用の演算回路として実装されてもよい。また、プロセッサ３４が有するこれらの各部のうち、ロバスト検出部４１、精密検出部４２及び判定部４３による処理が、物体検出処理に含まれる。
【００３０】
ロバスト検出部４１は、カメラ４とワーク１０とが所定の位置関係を満たさない場合において、カメラ４により得られた時系列の一連の画像のそれぞれについて、その画像を、識別器に入力することで、その画像上でのワーク１０の位置、すなわち、対象物体の位置を検出する。そしてロバスト検出部４１は、検出された画像上でのワーク１０の位置に基づいて、実空間でのワーク１０の位置を検出する。ロバスト検出部４１は、識別器を利用して、ワーク１０の位置を検出するので、精密検出部４２よりもロバストにワーク１０の位置を検出することができる。ロバスト検出部４１は、各画像に対して同じ処理を実行すればよいので、以下では、一つの画像に対する処理について説明する。また、所定の位置関係については、判定部４３に関して詳述する。
【００３１】
識別器は、画像に表されたワーク１０を検出するように予め学習される。例えば、ロバスト検出部４１は、識別器として、VGGあるいはSingle Shot Multibox Detector(SSD)といった、画像に表された物体を検出して、検出した物体が表された領域を示すように予め学習されたコンボリューショナルニューラルネットワーク(CNN)を用いることができる。この場合、ロバスト検出部４１は、着目する画像を識別器に入力することで、画像上に表されたワーク１０の外接矩形を求めることができる。
【００３２】
あるいは、ロバスト検出部４１は、識別器として、サポートベクトルマシンあるいはAdaBoostといった他の機械学習手法に従って予め学習された識別器を利用してもよい。この場合には、ロバスト検出部４１は、着目する画像に互いに異なる複数のウィンドウを設定し、ウィンドウごとに、Histograms of Oriented Gradients(HOG)あるいはHaar-Like特徴といった特徴量を抽出する。なお、ロバスト検出部４１は、過去に得られた画像においてワーク１０の位置が検出されている場合、その検出位置の近傍に限定して複数のウィンドウを設定してもよい。そしてロバスト検出部４１は、ウィンドウごとに、そのウィンドウから抽出された特徴量を識別器に入力する。特徴量が入力されると、識別器は、そのウィンドウにワーク１０が表されているか否かの判定結果を出力する。したがって、ロバスト検出部４１は、識別器が、ワーク１０が表されているとの判定結果を出力したウィンドウに、ワーク１０が表されていると判定できる。
上記のように、画像上でワーク１０が表された領域が検出されると、ロバスト検出部４１は、その領域内の所定の位置、例えば、その領域の重心を、画像上でのワーク１０の位置とする。
【００３３】
画像上でのワーク１０の位置が求められると、ロバスト検出部４１は、その位置に基づいて、実空間でのワーク１０の位置を検出する。
ここで、画像上の各画素の位置は、カメラ４から見た方位と１対１に対応する。そこで、ロバスト検出部４１は、例えば、画像上でワーク１０が表された領域の重心に相当する方位を、カメラ４からワーク１０へ向かう方位とすることができる。さらに、ロバスト検出部４１は、画像上でワーク１０が表された領域の面積に対する、カメラ４からワーク１０までの距離が所定の基準距離である場合における、画像上のワーク１０の面積の比を、基準距離に乗じることで、カメラ４からワーク１０までの推定距離を算出できる。したがって、ロバスト検出部４１は、カメラ４からワーク１０へ向かう方位と推定距離とに基づいて、カメラ４の位置を基準とするカメラ座標系でのワーク１０の位置を検出できる。そしてロバスト検出部４１は、検出したワーク１０の位置を判定部４３及びアプローチ制御部４４へ出力する。
【００３４】
変形例によれば、ロバスト検出部４１は、ワーク１０の位置だけでなく、ワーク１０の姿勢を検出してもよい。この場合には、ロバスト検出部４１は、識別器として、画像上の物体が表された領域及びその物体の姿勢を検出するように予め学習されたCNN（例えば、B. Tekin他、「Real-Time Seamless Single Shot 6D Object Pose Prediction」、CVPR2018を参照）を用いることができる。ロバスト検出部４１は、このような識別器に画像を入力することで、画像上でのワーク１０の位置だけでなく、カメラ４から見た、すなわち、カメラ座標系で表されるワーク１０の姿勢を検出できる。検出されたワーク１０の姿勢は、例えば、roll角、picth角、yaw角の組み合わせで表される。
この場合、ロバスト検出部４１は、検出したワーク１０の位置及び姿勢を判定部４３及びアプローチ制御部４４へ出力すればよい。
【００３５】
精密検出部４２は、カメラ４とワーク１０とが所定の位置関係を満たす場合において、カメラ４により得られた時系列の一連の画像のそれぞれについて、その画像とテンプレートとを照合することで、画像上でのワーク１０の位置及び姿勢を、ロバスト検出部４１よりも高い精度で検出する。そして精密検出部４２は、画像上でのワーク１０の位置及び姿勢に基づいて、実空間でのワーク１０の位置及び姿勢を検出する。精密検出部４２は、各画像に対して同じ処理を実行すればよいので、以下では、一つの画像に対する処理について説明する。例えば、精密検出部４２は、メモリ３３から、テンプレートを読み込み、そのテンプレートと着目する画像とを照合することで、画像上でワーク１０が表された領域を検出する。例えば、テンプレートは、所定の方向から見たときのワーク１０の像を表すものとすることができる。この場合、精密検出部４２は、画像に対するテンプレートの相対的な位置及び向きを、画像上の照合範囲内で変えながら、テンプレートと画像間の相互相関値といった、テンプレートと画像間の類似度を表す値を算出し、その類似度が所定の閾値以上となったときのテンプレートの位置と対応する領域に、ワーク１０が表されていると判定する。また、精密検出部４２は、類似度が所定の閾値以上となったときのテンプレートの向きに応じて、所定の方向から見たときの、テンプレートに表されたワーク１０の向きに対する、ワーク１０の実際の回転量を求めることができるので、その回転量に応じてワーク１０の姿勢を求めることができる。なお、精密検出部４２は、例えば、照合範囲を、着目する画像以前に得られた一連の画像のそれぞれにおいて求められたワーク１０の位置、例えば、ワーク１０が表された領域の重心に対してカルマンフィルタといった予測フィルタを適用することで得られる、着目する画像上でのワーク１０の予測位置を中心とする所定範囲として設定すればよい。
【００３６】
また、テンプレートには、所定の方向から見たときのワーク１０の複数の特徴点、例えば、ワーク１０の輪郭上の複数の点が表されていてもよい。この場合には、精密検出部４２は、画像上の照合範囲に対して、Sobelフィルタといったエッジ検出フィルタまたはHarrisフィルタといったコーナー検出フィルタ、あるいはSIFTといった他の特徴点検出用のフィルタを適用して、複数の特徴点を検出してもよい。そして精密検出部４２は、照合範囲内で画像に対するテンプレートの相対的な位置及び向きを変更しながら、テンプレートの位置ごとに、テンプレート上の特徴点の数に対する、テンプレート上の特徴点と画像上の特徴点とが一致する個数の比を類似度として算出してもよい。この場合も、精密検出部４２は、類似度が所定の閾値以上となったときのテンプレートの位置と対応する領域に、ワーク１０が表されていると判定すればよい。
【００３７】
あるいは、ワーク１０の明るさとワーク１０の周囲の背景の明るさとの差が大きい場合には、精密検出部４２は、画像の各画素を、その画素の輝度値に応じて２値化することで、ワーク１０が表された領域を検出できる。例えば、ワーク１０が周囲よりも明るい場合、精密検出部４２は、所定の輝度閾値よりも高い輝度値を持つ画素を検出し、検出した画素の集合となる領域を、ワーク１０が表された領域とすることができる。この場合、精密検出部４２は、例えば、ワーク１０の姿勢ごとに用意されたテンプレートと、ワーク１０が表された領域とを照合し、ワーク１０が表された領域に最も近い形状を持つテンプレートに対応する姿勢を、ワーク１０の実際の姿勢とすればよい。なお、この場合、テンプレートも、ワークが表された領域とその他の領域とが異なる値を持つ２値画像とすることができる。
【００３８】
画像上でワーク１０が表された領域の位置が分かると、ロバスト検出部４１と同様に、精密検出部４２は、カメラ座標系で表されるワーク１０の位置を求めることができる。さらに、精密検出部４２は、テンプレートについて規定された所定の方向と、ワーク１０が表された領域の重心に対応する、カメラ４からの方位との差の分だけ、画像上でのワーク１０の姿勢を回転させることで、カメラ座標系で表されたワーク１０の姿勢を求めることができる。
【００３９】
なお、テンプレートは、予め複数用意されてもよい。この場合、テンプレートごとに、ワーク１０を見る方向、及び、テンプレート上でのワーク１０の大きさの組み合わせが異なっていてもよい。この場合、精密検出部４２は、複数のテンプレートのそれぞれについて、上記と同様に、照合範囲内で画像に対するテンプレートの相対的な位置及び向きを変えながら、テンプレートの位置ごとに類似度を算出する。そして精密検出部４２は、類似度が最大となるテンプレートの位置と対応する領域に、そのテンプレートに表された方向から見たワーク１０が表れていると判定すればよい。さらに、テンプレートに表されたワーク１０の大きさは、カメラ４からワーク１０までの距離に対応するので、精密検出部４２は、類似度が最大となるテンプレートに表されたワーク１０の大きさに対応する距離を、カメラ４からワーク１０までの距離とすることができる。
【００４０】
精密検出部４２は、他の手法により、実空間でのワーク１０の位置を検出してもよい。例えば、精密検出部４２は、ロボット２が基準となる姿勢となるときの位置からのサーボモータ３５の回転量に基づいて、ロボット２の各可動部の絶対位置（すなわち、世界座標系で表される位置）を検出でき、検出された絶対位置と、カメラ４の取り付け位置及びカメラ４の向きとの関係に基づいて、世界座標系でのカメラ４の位置及び向きを検出できる。そして精密検出部４２は、画像上でワーク１０が表された領域の重心に基づいて、世界座標系でのカメラ４からワーク１０へ向かう方位を求めることができる。さらに、世界座標系でのワーク１０が搬送されるベルトコンベヤーの位置及びワーク１０の厚さが既知であれば（これらの値は、例えば、メモリ３３に予め記憶される）、精密検出部４２は、世界座標系でのカメラ４の位置が分かるので、カメラ４からワーク１０へ向かう方位における、カメラ４からワーク１０が搬送されるベルトコンベヤーまでの距離を算出できる。そして精密検出部４２は、算出した距離からワーク１０の厚さを減じた値を、カメラ４からワーク１０までの距離として求めることができる。このようにして求められた、カメラ４からワーク１０へ向かう方位及びワーク１０までの距離により、精密検出部４２は、実空間でのワーク１０の位置を検出できる。
精密検出部４２は、検出したワーク１０の位置及び姿勢を判定部４３及び作業制御部４５へ出力する。
【００４１】
判定部４３は、カメラ４から画像が得られる度に、カメラ４とワーク１０とが所定の位置関係を満たしているか否か判定する。所定の位置関係は、例えば、カメラ４とワーク１０との距離が所定距離以下となることとすることができる。所定距離は、例えば、精密検出部４２が利用するテンプレートに表されるワーク１０の大きさに対応する、カメラ４とワーク１０間の距離とすることができる。例えば、最新の画像について、ロバスト検出部４１がワーク１０の位置を検出している場合、判定部４３は、ロバスト検出部４１により求められたカメラ４からワーク１０までの推定距離を所定距離と比較する。そして判定部４３は、その推定距離が所定距離以下であれば、カメラ４とワーク１０とが所定の位置関係を満たしていると判定する。そして判定部４３は、次に得られる画像について、精密検出部４２に対して、ワーク１０の位置及び姿勢を検出するよう指示する。一方、その推定距離が所定距離よりも大きければ、カメラ４とワーク１０とが所定の位置関係を満たしていないと判定する。そして判定部４３は、次に得られる画像について、ロバスト検出部４１に対して、ワーク１０の位置を検出するよう指示する。
なお、ワーク１０の移動量をもとにロボット２の座標系が動かされ、その座標系上でロボット２の動作プログラムが組まれている場合は、判定部４３は、その座標系上でロボット２が所定の位置に到達した場合にロバスト検出部４１から精密検出部４２に切り替えるということをしてもよい。
【００４２】
同様に、最新の画像について、精密検出部４２がワーク１０の位置を検出している場合、判定部４３は、精密検出部４２により求められたカメラ４からワーク１０までの距離を所定距離と比較する。そして判定部４３は、その距離が所定距離以下であれば、カメラ４とワーク１０とが所定の位置関係を満たしていると判定する。そして判定部４３は、次に得られる画像について、精密検出部４２に対して、ワーク１０の位置及び姿勢を検出するよう指示する。一方、その距離が所定距離よりも大きければ、カメラ４とワーク１０とが所定の位置関係を満たしていないと判定する。そして判定部４３は、次に得られる画像について、ロバスト検出部４１に対して、ワーク１０の位置を検出するよう指示する。
【００４３】
また、所定の位置関係は、カメラ４とワーク１０との距離が所定距離以下であり、かつ、カメラ４に対してワーク１０が所定の姿勢となっていることであってもよい。所定の姿勢は、例えば、ワーク１０の所定の面についての法線から所定の角度範囲内にカメラ４が位置する姿勢とすることができる。所定の面は、例えば、精密検出部４２が利用するテンプレートで表されるワーク１０の面とすることができる。この場合には、最新の画像について、ロバスト検出部４１がワーク１０の位置及び姿勢を検出していると、判定部４３は、その検出された姿勢が所定の姿勢となっているか否かを判定すればよい。そして判定部４３は、ロバスト検出部４１により求められたカメラ４からワーク１０までの推定距離が所定距離以下であり、かつ、ワーク１０の姿勢が所定の姿勢であれば、カメラ４とワーク１０とが所定の位置関係を満たしていると判定する。そして判定部４３は、次に得られる画像について、精密検出部４２に対して、ワーク１０の位置及び姿勢を検出するよう指示する。一方、その推定距離が所定距離よりも大きいか、あるいは、ワーク１０の姿勢が所定の姿勢でなければ、カメラ４とワーク１０とが所定の位置関係を満たしていないと判定する。そして判定部４３は、次に得られる画像について、ロバスト検出部４１に対して、ワーク１０の位置を検出するよう指示する。
【００４４】
同様に、最新の画像について、精密検出部４２がワーク１０の位置及び姿勢を検出している場合、判定部４３は、精密検出部４２により求められたカメラ４からワーク１０までの距離が所定距離以下であり、かつ、ワーク１０の姿勢が所定の姿勢であれば、カメラ４とワーク１０とが所定の位置関係を満たしていると判定する。そして判定部４３は、次に得られる画像について、精密検出部４２に対して、ワーク１０の位置及び姿勢を検出するよう指示する。一方、その距離が所定距離よりも大きいか、あるいは、ワーク１０の姿勢が所定の姿勢でなければ、カメラ４とワーク１０とが所定の位置関係を満たしていないと判定する。そして判定部４３は、次に得られる画像について、ロバスト検出部４１に対して、ワーク１０の位置を検出するよう指示する。
【００４５】
アプローチ制御部４４は、カメラ４とワーク１０とが所定の位置関係を満たさない場合において、ロバスト検出部４１により検出されたワーク１０の位置に基づいて、カメラ４とワーク１０とが所定の位置関係を満たすようにロボット２の可動部を制御する。例えば、アプローチ制御部４４は、例えば、直近の一連の画像のそれぞれにおいて求められた実空間でのワーク１０の検出位置に対してカルマンフィルタといった予測フィルタを適用することで、次の画像生成時における、世界座標系でのワーク１０の位置を予測する。そしてアプローチ制御部４４は、カメラ４がワーク１０の予測位置から所定の位置関係を満たす目標位置を設定する。アプローチ制御部４４は、カメラ４を目標位置へ移動させるべく、カメラ４が取り付けられるロボット２の可動部を動作させるよう、サーボモータ３５の回転量及び回転方向を設定すればよい。
【００４６】
その際、アプローチ制御部４４は、例えば、直近の一連の画像のそれぞれの生成時における、カメラ座標系から世界座標系への変換式を、世界座標系でのカメラ４の位置及び向きから算出する。例えば、アプローチ制御部４４は、各画像生成時における、ロボット２が基準となる姿勢となるときの各可動部の位置からのサーボモータ３５の回転量に基づいて、ロボット２の各可動部の絶対位置を検出できる。さらに、アプローチ制御部４４は、検出された絶対位置と、カメラ４の取り付け位置及びカメラ４の向きとの関係に基づいて、世界座標系でのカメラ４の位置及び向きを検出し、その検出結果に基づいて、カメラ座標系から世界座標系への変換式を算出すればよい。そしてアプローチ制御部４４は、各画像生成時における、カメラ座標系で表されたワーク１０の位置にその変換式を適用することで、世界座標系で表されたワーク１０の位置を検出する。そして上記のように、アプローチ制御部４４は、各画像生成時における、世界座標系でのワーク１０の検出位置に対して予測フィルタを適用することで、次の画像生成時における、世界座標系でのワーク１０の予測位置を求めることができる。
【００４７】
世界座標系でのワーク１０の予測位置が求められると、所定の位置関係が、カメラ４とワーク１０との距離が所定距離以下である場合、アプローチ制御部４４は、その予測位置から所定距離となる位置を目標位置として特定することができる。そしてアプローチ制御部４４は、カメラ４を目標位置へ移動させるよう、サーボモータ３５の目標回転量及び目標回転方向を決定すればよい。
【００４８】
また、所定の位置関係が、カメラ４とワーク１０との距離が所定距離以下であり、かつ、カメラ４に対してワーク１０が所定の姿勢となっていることであり、ロバスト検出部４１により、実空間でのワーク１０の位置及び姿勢が検出されているとする。この場合、アプローチ制御部４４は、直近の一連の画像生成時における、ワーク１０の姿勢に基づいて、次の画像生成時における、ワーク１０の姿勢を予測してもよい。この場合も、アプローチ制御部４４は、上記と同様に、直近の一連の画像生成時における、カメラ座標系で表されたワーク１０の姿勢にカメラ座標系から世界座標系への変換式を適用して得られる世界座標系でのワーク１０の姿勢に予測フィルタを適用することで、次の画像生成時における、世界座標系でのワーク１０の姿勢を予測すればよい。そしてアプローチ制御部４４は、予測されたワーク１０の位置及び姿勢に基づいて、カメラ４とワーク１０との距離が所定距離以下となり、かつ、カメラ４に対してワーク１０が所定の姿勢となる、カメラ４の目標位置及び目標姿勢を求めることができる。アプローチ制御部４４は、カメラ４をその目標位置へ移動させ、かつ、カメラ４が目標姿勢となるよう、サーボモータ３５の目標回転量及び目標回転方向を決定すればよい。
【００４９】
なお、ワーク１０が静止している場合には、アプローチ制御部４４は、最新の画像生成時における、ワーク１０の検出された位置及び姿勢を、上記の予測位置及び予測された姿勢として目標位置及び目標姿勢を決定して、サーボモータ３５の目標回転量及び目標回転方向を決定すればよい。
【００５０】
アプローチ制御部４４は、サーボモータ３５の目標回転量及び目標回転方向を決定すると、例えば、特開２００６−１７２１４９号公報に記載されているようにサーボモータ３５を制御すればよい。すなわちアプローチ制御部４４は、ロボット２の動作を制御する際に、目標回転量及び目標回転方向と、サーボモータ３５の実際の回転量などに基づいてサーボモータ３５の回転速度を指定する速度指令を算出する。アプローチ制御部４４は、その速度指令と、サーボモータ３５の実際の回転量を微分することで算出される速度フィードバックとに基づいて速度ループ制御を行ってサーボモータ３５に供給する電流量を表すトルク指令を算出する。そしてアプローチ制御部４４は、トルク指令と駆動回路３２に設けられた電流検出器（図示せず）からフィードバックされる電流フィードバックに基づいて、サーボモータ３５に供給される電流についてループ制御を行って、サーボモータ３５を駆動する。
【００５１】
作業制御部４５は、カメラ４とワーク１０とが所定の位置関係を満たす場合において、精密検出部４２により検出されたワーク１０の位置及び姿勢に基づいて、ロボット２のツール１６がワーク１０に対する作業を実施できる位置へ移動するように、ロボット２の各可動部を制御する。その際、作業制御部４５は、アプローチ制御部４４と同様に、直近の一連の画像のそれぞれにおいて求められたワーク１０の世界座標系での位置及び姿勢に対してカルマンフィルタといった予測フィルタを適用して、次の画像生成時におけるワーク１０の予測位置及び予測姿勢を求めてもよい。そして作業制御部４５は、その予測位置及び予測姿勢に基づいてツール１６の目標位置及び目標となる向きを設定することで、サーボモータ３５の回転量及び回転方向を決定してもよい。
【００５２】
あるいは、作業制御部４５は、カメラ４により生成される画像において、ツール１６がワーク１０に対する作業を行う位置に対応する、所定の位置及び所定の大きさでワーク１０が表されるように、ロボット２の各可動部を制御してもよい。この場合には、作業制御部４５は、例えば、位置ベース法あるいは特徴ベース法といった、カメラにより得られる対象物体の画像に基づいてロボットを制御する手法（例えば、橋本、「視覚と制御」、計測自動制御学会制御部門大会ウォークショップ、 京都、 pp. 37-68、 2001年を参照されたい）に従ってロボット２の各可動部を制御すればよい。
このように、作業制御部４５は、高精度で検出された、カメラ４に対するワーク１０の相対的な位置及び姿勢に基づいて、ロボット２の可動部を制御するので、ワーク１０に対する作業を適切に行えるようにロボット２を制御できる。
【００５３】
図４は、物体検出処理を含む、可動部制御処理の概要を説明する図である。この例では、所定の位置関係は、カメラ４とワーク１０間の距離が所定距離Lth以下となることであるとする。図４に示されるように、カメラ４が位置P1に存在する場合、カメラ４とワーク１０間の距離d1は所定距離Lthよりも大きいので、ロバスト検出部４１により、識別器を用いて、ワーク１０の位置（あるいは、位置及び姿勢）が検出される。そしてその検出結果に基づいて、アプローチ制御部４４がロボット２の可動部を制御して、カメラ４をワーク１０へ近づける。一方、カメラ４が位置P2に存在する場合、カメラ４とワーク１０間の距離d2は所定距離Lthよりも小さいので、精密検出部４２により、テンプレートを用いて、ワーク１０の位置及び姿勢が検出される。そしてその検出結果に基づいて、作業制御部４５がロボット２の可動部を制御して、ワーク１０に対する作業を実施できる位置へカメラ４が取り付けられたツール１６を移動させる。
【００５４】
図５は、物体検出処理を含む、可動部制御処理の動作フローチャートである。プロセッサ３４は、下記の動作フローチャートに従って、カメラ４から画像を取得する度に、可動部制御処理を実行する。なお、以下の動作フローチャートのうち、ステップＳ１０１〜Ｓ１０２及びＳ１０４の処理が、物体検出処理に含まれる。
【００５５】
判定部４３は、前回の画像生成時における、ワーク１０の位置及び姿勢の検出結果に基づいて、カメラ４とワーク１０とが所定の位置関係を満たすか否か判定する（ステップＳ１０１）。カメラ４とワーク１０とが所定の位置関係を満たさない場合（ステップＳ１０１−Ｎｏ）、判定部４３は、ロバスト検出部４１に、ワーク１０の位置を検出するよう指示する。そしてロバスト検出部４１は、最新の画像を識別器に入力することで、画像上でのワーク１０の位置を検出し、その検出結果に基づいて、実空間でのワーク１０の位置を検出する（ステップＳ１０２）。さらに、アプローチ制御部４４は、検出されたワーク１０の位置に基づいて、カメラ４とワーク１０とが所定の位置関係を満たすようにロボット２の可動部を制御する（ステップＳ１０３）。
【００５６】
一方、カメラ４とワーク１０とが所定の位置関係を満たす場合（ステップＳ１０１−Ｙｅｓ）、判定部４３は、精密検出部４２に、ワーク１０の位置及び姿勢を検出するよう指示する。そして精密検出部４２は、最新の画像とテンプレートとを照合することで、画像上でのワーク１０の位置及び姿勢を検出し、その検出結果に基づいて、実空間でのワーク１０の位置及び姿勢を検出する（ステップＳ１０４）。さらに、作業制御部４５は、検出されたワーク１０の位置及び姿勢に基づいて、ツール１６がワーク１０に対する作業を実施できる位置へ移動するようにロボット２の可動部を制御する（ステップＳ１０５）。
【００５７】
ステップＳ１０３またはＳ１０５の後、プロセッサ３４は、可動部制御処理を終了する。
【００５８】
以上に説明してきたように、この物体検出装置は、撮像部と対象物体とが所定の位置関係を満たさないときには、機械学習手法に従って学習された識別器を用いて対象物体の位置をロバストに検出する。一方、撮像部と対象物体とが所定の位置関係を満たすときには、この物体検出装置は、事前に得られた、所定の方向から見たときの対象物体の外観の特徴を表すテンプレートと画像とを照合することで、画像上での対象物体の位置及び姿勢を高精度で検出する。そのため、この物体検出装置は、撮像部に対する、対象物体の相対的な位置関係が変化する場合でも、対象物体を検出することができる。さらに、この物体検出装置は、複数のカメラを用いて対象物体の実空間の位置を求めるステレオ法を利用しなくても、１台の撮像部だけを用いて、実空間での対象物体の位置を求めることができる。さらにまた、この物体検出装置が組み込まれたロボットの制御装置は、撮像部と対象物体とが所定の位置関係を満たさないときには、識別器を用いて検出された対象物体の位置に基づいて、撮像部と対象物体とが所定の位置関係を満たすようにロボットの可動部を制御する。一方、撮像部と対象物体とが所定の位置関係を満たすときには、制御装置は、照合の結果として検出された対象物体の位置及び姿勢に基づいて、対象物体に対する作業を実施できるようにロボットの可動部を制御する。そのため、この制御装置は、撮像部と対象物体の相対的な位置関係が変化する場合でも、対象物体の追跡を継続できるとともに、その位置関係に応じてロボットの可動部を適切に制御できる。
【００５９】
なお、ワーク１０が円筒形状である場合のように、中心軸周りに回転しても形状が変化しない場合、あるいは、ワーク１０が特定の姿勢となるように配置されている場合などでは、精密検出部４２は、画像上及び実空間でのワーク１０の姿勢を検出しなくてもよい。
【００６０】
変形例によれば、精密検出部４２がワーク１０の位置及び姿勢を検出するために利用する、ワーク１０に対する相対的な位置を表す位置情報を取得する位置情報取得部がカメラ４と別個に設けられてもよい。例えば、ツール１６の先端に、１以上の圧力センサが設けられてもよい。圧力センサは、位置情報取得部の一例である。この場合、精密検出部４２は、圧力センサにより検知される圧力と、ツール１６の所定の部位とワーク１０間の距離との関係を表す参照テーブルを参照して、その検知された圧力に対応する、ツール１６の所定の部位とワーク１０間の距離を検出してもよい。なお、そのような参照テーブルは、例えば、メモリ３３に予め記憶される。作業制御部４５は、上記の実施形態のように、カメラ４により得られた画像に基づいてロボット２の可動部を制御して、圧力センサがワーク１０と接触可能である位置までツール１６を移動させる。その後、作業制御部４５は、圧力センサにより検知される圧力が所定の値となるように、ロボット２の可動部を制御すればよい。この場合、圧力センサにより検知される圧力は、位置情報の一例である。
あるいは、ロボット２の可動部に、カメラ４とは別個のカメラが取り付けられ、精密検出部４２は、その別個のカメラにより生成された画像に対して上記の実施形態と同様の処理を実行することで、ワーク１０の位置及び姿勢を検出してもよい。あるいはまた、ロボット２の可動部に、デプスカメラといった距離センサが取り付けられてもよい。そして精密検出部４２は、距離センサにより検知される、ワーク１０の各部までの距離の測定値に基づいて、距離センサを基準とする、ワーク１０の位置及び姿勢を検出すればよい。なお、その別個のカメラ及び距離センサは、位置情報取得部の他の一例であり、その別個のカメラにより生成される画像及び距離センサによる距離の測定値は、位置情報の他の一例である。
【００６１】
他の実施形態によれば、カメラ４は、ロボット２の可動部とは別個に固定的に取り付けられてもよい。例えば、カメラ４は、ロボット２が設置される室内の天井に、下方を向けて取り付けられてもよい。この場合、カメラ４により得られた画像の各画素について、カメラ４から見て、その画素に対応する方位にワーク１０が位置するときのカメラ４とワーク１０間の距離を表す距離テーブルがメモリ３３に予め記憶されていればよい。ロバスト検出部４１及び精密検出部４２は、画像上でワーク１０が表された領域を検出すると、距離テーブルを参照して、その領域の重心が位置する画素に対応する距離を、カメラ４からワーク１０までの距離として推定することで、実空間でのワーク１０の位置を検出すればよい。またこの場合には、カメラ４の位置は変化しないので、ロバスト検出部４１及び精密検出部４２は、カメラ４の位置を基準とするカメラ座標系から世界座標系への変換式を、カメラ座標系で表されたワーク１０の位置及び姿勢に適用することで、世界座標系におけるワーク１０の位置及び姿勢を容易に求めることができる。そしてアプローチ制御部４４及び作業制御部４５は、世界座標系で表されるワーク１０の位置及び姿勢に基づいて、上記の実施形態と同様に、ロボット２の可動部を制御すればよい。
【００６２】
また他の実施形態によれば、物体検出装置と、ロボット２の制御装置とは別個に設けられてもよい。
【００６３】
図６は、この変形例による、ロボットシステム１００の概略構成図である。ロボットシステム１００は、ロボット２と、ロボット２を制御する制御装置３と、ロボット２の可動部に取り付けられ、対象物体の一例であるワーク１０を撮影するためのカメラ４と、物体検出装置６とを有する。ロボット２と制御装置３とは、通信回線５を介して通信可能に接続される。さらに、カメラ４と物体検出装置６とは、通信回線７を介して通信可能に接続され、制御装置３と物体検出装置６とは、通信回線８を介して通信可能に接続される。なお、カメラ４、制御装置３及び物体検出装置６は、所定の通信規格に準拠した通信ネットワークを介して相互に通信可能に接続されてもよい。
【００６４】
ロボットシステム１００は、図１に示されるロボットシステム１と比較して、制御装置３と別個に物体検出装置６が設けられた点で相違する。そこで以下では、物体検出装置６及びその関連部分について説明する。
【００６５】
図７は、物体検出装置６の概略構成図である。物体検出装置６は、通信インターフェース６１と、メモリ６２と、プロセッサ６３とを有する。さらに、物体検出装置６は、タッチパネルといったユーザインターフェース（図示せず）を有していてもよい。
【００６６】
通信インターフェース６１は、例えば、物体検出装置６を通信回線７及び通信回線８と接続するための通信インターフェース及び通信回線７及び通信回線８を介した信号の送受信に関する処理を実行するための回路などを含む。そして通信インターフェース６１は、例えば、カメラ４から、通信回線７を介して画像を受信してプロセッサ６３へわたす。また通信インターフェース６１は、制御装置３から、各画像生成時における、各可動部の絶対位置に基づいて決定されるカメラ４の位置及び向きを表す情報を受信して、プロセッサ６３へわたす。さらに、通信インターフェース６１は、ワーク１０の検出された位置及び姿勢を表す情報をプロセッサ６３から受け取って、通信回線８を介して制御装置３へ出力する。
【００６７】
メモリ６２は、記憶部の他の一例であり、例えば、読み書き可能な半導体メモリと読み出し専用の半導体メモリとを有する。さらに、メモリ６２は、半導体メモリカード、ハードディスク、あるいは光記憶媒体といった記憶媒体及びその記憶媒体にアクセスする装置を有していてもよい。
【００６８】
メモリ６２は、物体検出装置６のプロセッサ６３で実行される、物体検出処理で利用される各種の情報、例えば、識別器を規定するパラメータ群、ワーク１０の検出に用いられるテンプレート、カメラパラメータ、及び、カメラ４から受け取った画像を記憶する。さらに、メモリ６２は、物体検出処理の結果として検出されたワーク１０の位置及び姿勢を表す情報を記憶する。
【００６９】
プロセッサ６３は、制御部の一例であり、例えば、Central Processing Unit(CPU)及びその周辺回路を有する。さらにプロセッサ６３は、数値演算用のプロセッサを有していてもよい。そしてプロセッサ６３は、物体検出処理を実行する。すなわち、プロセッサ６３は、カメラ４から画像を受信する度に、図３に示された、制御装置３のプロセッサ３４の各部のうち、ロバスト検出部４１、精密検出部４２及び判定部４３の処理を実行すればよい。そしてプロセッサ６３は、検出されたワーク１０の位置及び姿勢を表す情報を、通信インターフェース６１及び通信回線８を介して制御装置３へ出力する。なお、プロセッサ６３は、検出されたワーク１０の位置及び姿勢を表す情報に、カメラ４とワーク１０とが所定の位置関係を満たすか否かの判定結果を表す情報を含めてもよい。制御装置３のプロセッサ３４は、受信した、ワーク１０の位置及び姿勢に基づいて、アプローチ制御部４４及び作業制御部４５の処理を実行すればよい。
【００７０】
この変形例によれば、物体検出処理と、ロボットの制御とが、別個の装置により実行されるので、ロボットの制御装置のプロセッサの演算負荷が軽減される。
【００７１】
プロセッサ６３のロバスト検出部４１は、カメラ４から受信した各画像について、その画像上でのワーク１０の位置、またはワーク１０の位置と姿勢を検出するだけで、実空間でのワーク１０の位置及び姿勢を検出しなくてもよい。同様に、プロセッサ６３の精密検出部４２は、カメラ４から受信した各画像について、その画像上でのワーク１０の位置、またはワーク１０の位置と姿勢を検出するだけで、実空間でのワーク１０の位置及び姿勢を検出しなくてもよい。この場合には、プロセッサ６３は、画像上でのワーク１０の位置及び姿勢を、通信インターフェース６１及び通信回線８を介して制御装置３へ出力すればよい。そして制御装置３のプロセッサ３４は、ロバスト検出部４１及び精密検出部４２における、画像上でのワーク１０の位置及び姿勢に基づいて、実空間でのワーク１０の位置及び姿勢を検出する処理を実行すればよい。
【００７２】
さらに他の変形例によれば、カメラ４及び制御装置３と通信可能に接続される複数のサーバが、物体検出処理を実行してもよい。この場合には、例えば、複数のサーバの何れか一つがロバスト検出部４１の処理を実行し、複数のサーバの他の一つが精密検出部４２の処理を実行し、複数のサーバのさらに他の一つが判定部４３の処理を実行してもよい。
【００７３】
また、制御装置３のプロセッサ３４が有する各部の処理を実行するためのコンピュータプログラムは、半導体メモリ、磁気記録媒体または光記録媒体といった、コンピュータ読取可能な可搬性の記録媒体に記録された形で提供されてもよい。
【００７４】
ここに挙げられた全ての例及び特定の用語は、読者が、本発明及び当該技術の促進に対する本発明者により寄与された概念を理解することを助ける、教示的な目的において意図されたものであり、本発明の優位性及び劣等性を示すことに関する、本明細書の如何なる例の構成、そのような特定の挙げられた例及び条件に限定しないように解釈されるべきものである。本発明の実施形態は詳細に説明されているが、本発明の精神及び範囲から外れることなく、様々な変更、置換及び修正をこれに加えることが可能であることを理解されたい。
【符号の説明】
【００７５】
１、１００    ロボットシステム
２    ロボット
３    制御装置
４    カメラ
５、７、８    通信回線
６    物体検出装置
１１    台座
１２    回転ステージ
１３    第１のアーム
１４    第２のアーム
１５    リスト
１６    ツール
２１〜２５    関節
３１    通信インターフェース
３２    駆動回路
３３    メモリ
３４    プロセッサ
３５    サーボモータ
４１    ロバスト検出部
４２    精密検出部
４３    判定部
４４    アプローチ制御部
４５    作業制御部
【図１】
2020135623.tif 000003
【図２】
2020135623.tif 000004
【図３】
2020135623.tif 000005
【図４】
2020135623.tif 000006
【図５】
2020135623.tif 000007
【図６】
2020135623.tif 000008
【図７】
2020135623.tif 000009