(57)【特許請求の範囲】
【請求項１】
対象物を撮像して第１の対象物画像および第２の対象物画像をそれぞれ取得する第１のカメラおよび第２のカメラと、
前記第１のカメラおよび前記第２のカメラの位置姿勢に基づき、前記対象物と交差するような複数のエピポーラ面を生成するエピポーラ面生成部と、
前記複数のエピポーラ面を前記第１のカメラの撮像面および前記第２のカメラの撮像面に投影した複数のエピポーラ線を算出するエピポーラ線算出部と、
前記対象物の３次元の基準輪郭線を設定する基準輪郭線設定部と、
前記基準輪郭線を前記第１のカメラの撮像面および前記第２のカメラの撮像面に投影した第１の基準輪郭線像および第２の基準輪郭線像をそれぞれ算出する基準輪郭線像算出部と、
前記第１の基準輪郭線像の近傍に第１の画像処理領域を設定し、該第１の画像処理領域内の前記第１の対象物画像から前記対象物の輪郭線の画像である第１のエッジ線を抽出する一方、前記第２の基準輪郭線像の近傍に第２の画像処理領域を設定し、該第２の画像処理領域内の前記第２の対象物画像から前記対象物の輪郭線の画像である第２のエッジ線を抽出するエッジ線抽出部と、
前記第１のエッジ線と前記複数のエピポーラ線との交点である複数の第１のエッジ点および前記第２のエッジ線と前記複数のエピポーラ線との交点である複数の第２のエッジ点をそれぞれ生成するエッジ点生成部と、
前記複数の第１のエッジ点および前記複数の第２のエッジ点の中から、互いに同一の前記エピポーラ面を用いて生成された第１のエッジ点および第２のエッジ点であり、かつ、前記基準輪郭線の互いに同一部位に対応する第１のエッジ点と第２のエッジ点とからなる一対のエッジ点を選択する対応点選択部と、
前記一対のエッジ点を通る前記第１のカメラの視線と前記第２のカメラの視線とに基づき前記対象物の輪郭線上の３次元点を算出する３次元点算出部と、を備えることを特徴とする輪郭線計測装置。
【請求項２】
対象物を撮像して第１の対象物画像および第２の対象物画像をそれぞれ取得する第１のカメラおよび第２のカメラと、
前記対象物の３次元の基準輪郭線を設定する基準輪郭線設定部と、
前記基準輪郭線を前記第１のカメラの撮像面および前記第２のカメラの撮像面にそれぞれ投影した第１の基準輪郭線像および第２の基準輪郭線像をそれぞれ算出する基準輪郭線像算出部と、
前記第１の基準輪郭線像の近傍に第１の画像処理領域を設定し、該第１の画像処理領域内の前記第１の対象物画像から前記対象物の輪郭線の画像である第１のエッジ線を抽出する一方、前記第２の基準輪郭線像の近傍に第２の画像処理領域を設定し、該第２の画像処理領域内の前記第２の対象物画像から前記対象物の輪郭線の画像である第２のエッジ線を抽出するエッジ線抽出部と、
前記第１のエッジ線上に複数の第１のエッジ点を生成する第１のエッジ点生成部と、
前記第１のカメラおよび前記第２のカメラの位置姿勢に基づき、前記複数の第１のエッジ点をそれぞれ通る複数のエピポーラ面を生成するエピポーラ面生成部と、
前記複数のエピポーラ面を前記第２のカメラの撮像面に投影した複数のエピポーラ線を算出するエピポーラ線算出部と、
前記複数のエピポーラ線と前記第２のエッジ線との交点である複数の第２のエッジ点を生成する第２のエッジ点生成部と、
前記複数の第１のエッジ点と前記複数の第２のエッジ点の中から、第１のエッジ点と、該第１のエッジ点から求められた第２のエッジ点とからなる一対のエッジ点であって、前記基準輪郭線の互いに同一部位に対応する一対のエッジ点を選択する対応点選択部と、
前記一対のエッジ点を通る前記第１のカメラの視線および前記第２のカメラの視線に基づき前記対象物の輪郭線上の３次元点を算出する３次元点算出部と、を備えることを特徴とする輪郭線計測装置。
【請求項３】
請求項１または２に記載の輪郭線計測装置において、
前記対象物の位置姿勢を計測する位置姿勢計測部をさらに備え、
前記基準輪郭線設定部は、前記位置姿勢計測部により計測された前記対象物の位置姿勢に基づいて前記基準輪郭線の位置姿勢を変更することを特徴とする輪郭線計測装置。
【請求項４】
請求項１〜３のいずれか１項に記載の輪郭線計測装置において、
前記対応点選択部は、前記複数のエピポーラ面それぞれの前記基準輪郭線との交点を全て求め、１つのエピポーラ面に対し、該交点が複数存在する場合には、該エピポーラ面に対する該交点が１つになるように該エピポーラ面を分割し、該分割したエピポーラ面に対応するエッジ点から互いに同一部位に対応する一対のエッジ点を選択することを特徴とする輪郭線計測装置。
【請求項５】
請求項１〜４のいずれか１項に記載の輪郭線計測装置において、
前記対応点選択部は、前記複数の第１のエッジ点のそれぞれについて、該第１のエッジ点に対応する前記第１の基準輪郭線像上の最近傍点を算出するとともに、該最近傍点を通る前記第１のカメラからの視線と前記基準輪郭線との交点を第１の投影元点として算出する一方、前記複数の第２のエッジ点のそれぞれについて、該第２のエッジ点に対応する前記第２の基準輪郭線像上の最近傍点を算出するとともに、該最近傍点を通る前記第２のカメラからの視線と前記基準輪郭線との交点を第２の投影元点として算出し、さらに、前記第１の投影元点と前記第２の投影元点との位置関係に基づき、前記一対のエッジ点を選択することを特徴とする輪郭線計測装置。
【請求項６】
請求項５に記載の輪郭線計測装置において、
前記対応点選択部は、前記第１のエッジ線の傾きと該第１のエッジ線に対応する前記最近傍点における前記第１の基準輪郭線像の傾きとの差、および前記第２のエッジ線の傾きと該第２のエッジ線に対応する前記最近傍点における前記第２の基準輪郭線像の傾きとの差が所定角度より小さいことを条件として前記一対のエッジ点を選択することを特徴とする輪郭線計測装置。
【請求項７】
請求項１〜６のいずれか１項に記載の輪郭線計測装置において、
前記第１の基準輪郭線像および前記第２の基準輪郭線像は、それぞれ前記第１の基準輪郭線像の近傍および前記第２の基準輪郭線像の近傍における画像の明暗情報を含み、
前記エッジ線抽出部は、前記第１のエッジ線の近傍および前記第２のエッジ線の近傍における画像の明暗の方向が、前記明暗情報によって得られる前記第１の基準輪郭線像の近傍および前記第２の基準輪郭線像の近傍における明暗の方向と一致するような第１のエッジ線および第２のエッジ線を抽出することを特徴とする輪郭線計測装置。
【請求項８】
ロボットと、
該ロボットを制御するロボット制御部と、
請求項１〜７のいずれか１項に記載の輪郭線計測装置と、を備えるロボットシステムであって、
前記輪郭線計測装置を構成する第１のカメラおよび第２のカメラは前記ロボットのアーム先端部に取り付けられ、または前記第１のカメラおよび前記第２のカメラにより撮像される対象物は前記ロボットのアーム先端部で把持されることを特徴とするロボットシステム。
【請求項９】
請求項８に記載のロボットシステムにおいて、
前記ロボットのアーム先端部の目標位置を算出する撮像位置算出部をさらに備え、
前記ロボット制御部は、前記ロボットのアーム先端部を前記目標位置へ移動し、
前記第１のカメラおよび前記第２のカメラは、前記ロボットのアーム先端部が前記目標位置に移動した状態で、前記対象物を撮像することを特徴とするロボットシステム。
【請求項１０】
請求項９に記載のロボットシステムにおいて、
前記撮像位置算出部は、前記第１のカメラおよび前記第２のカメラにより前記対象物を複数回に分けて撮像するように複数の前記目標位置を算出し、
前記ロボット制御部は、前記ロボットのアーム先端部を前記複数の目標位置へ順次移動し、
前記第１のカメラおよび前記第２のカメラは、前記ロボットのアーム先端部が前記複数の目標位置に移動する度に、前記対象物を撮像することを特徴とするロボットシステム。
【請求項１１】
請求項９または１０に記載のロボットシステムにおいて、
前記ロボットのアーム先端部の目標位置の妥当性を評価する評価部をさらに備え、
前記評価部は、前記ロボットのアーム先端部が前記目標位置へ移動したと仮定して、該目標位置において前記対象物の基準輪郭線を前記第１のカメラの撮像面および前記第２のカメラの撮像面に投影した第１の基準輪郭線像および第２の基準輪郭線像をそれぞれ算出するとともに、前記第１の基準輪郭線像と前記エピポーラ線との交点における交差角度および前記第２の基準輪郭線像と前記エピポーラ線との交点における交差角度をそれぞれ算出し、全ての前記交点における前記交差角度が所定角度よりも大きければ、前記目標位置が妥当であると評価し、
前記ロボット制御部は、前記評価部により妥当であると評価された前記目標位置へ前記ロボットのアーム先端部を移動することを特徴とするロボットシステム。
【請求項１２】
請求項１１に記載のロボットシステムにおいて、
前記撮像位置算出部は、前記評価部により前記目標位置が妥当でないと評価されると、前記交差角度を大きくするような新たな目標位置を算出することを特徴とするロボットシステム。
【請求項１３】
請求項８〜１２のいずれか１項に記載のロボットシステムにおいて、
前記第１のカメラおよび前記第２のカメラは、単一のカメラにより構成され、
前記ロボット制御部は、前記単一のカメラと前記対象物の相対位置関係が異なる位置姿勢で前記第１の対象物画像および前記第２の対象物画像を取得するように、前記ロボットのアーム先端部を移動することを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ステレオカメラを用いて対象物の３次元輪郭線形状を計測する輪郭線計測装置およびロボットシステムに関する。
【背景技術】
【０００２】
産業用ロボットを用いてワークに対し各種作業を行うためには、ワークの３次元輪郭線形状を把握する必要がある。ワークに個体差がない場合には、設計データからワークの輪郭線形状の情報を得ることができる。しかしながら、例えばワークが鋳物である場合には、鋳型ごとにワークに個体差があるため、個々のワークの輪郭線形状を計測する必要がある。
【０００３】
この点に関し、従来、２台のカメラを用いたステレオ法により、ワークの正確な３次元輪郭線情報を得るようにした装置が知られている（例えば特許文献１，２参照）。上記特許文献１，２記載の装置では、２台のカメラでワークを異なる位置から撮像し、これによって得られた一対のカメラ画像からそれぞれエッジ線（輪郭線の像）を抽出する。そして、同一のエピポーラ面から得られたエピポーラ線と各カメラ画像上のエッジ線との交点を求め、各カメラ画像上の交点を互いに対応付け、これら対応点を用いてワークの輪郭線上の３次元点の位置を求める。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２０２７３２号公報
【特許文献２】特開２０１３−１３０５０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１，２記載の装置では、エピポーラ線と交わるエッジ線が複数存在する場合、各カメラ画像上の交点が１対１に対応せず、対応点を求めることが困難である。
【課題を解決するための手段】
【０００６】
本発明の一態様である輪郭線計測装置は、対象物を撮像して第１の対象物画像および第２の対象物画像をそれぞれ取得する第１のカメラおよび第２のカメラと、第１のカメラおよび第２のカメラの位置姿勢に基づき、対象物と交差するような複数のエピポーラ面を生成するエピポーラ面生成部と、複数のエピポーラ面を第１のカメラの撮像面および第２のカメラの撮像面に投影した複数のエピポーラ線を算出するエピポーラ線算出部と、対象物の３次元の基準輪郭線を設定する基準輪郭線設定部と、基準輪郭線を第１のカメラの撮像面および第２のカメラの撮像面にそれぞれ投影した第１の基準輪郭線像および第２の基準輪郭線像をそれぞれ算出する基準輪郭線像算出部と、第１の基準輪郭線像の近傍に第１の画像処理領域を設定し、第１の画像処理領域内の第１の対象物画像から対象物の輪郭線の画像である第１のエッジ線を抽出する一方、第２の基準輪郭線像の近傍に第２の画像処理領域を設定し、第２の画像処理領域内の第２の対象物画像から対象物の輪郭線の画像である第２のエッジ線を抽出するエッジ線抽出部と、第１のエッジ線と複数のエピポーラ線との交点である複数の第１のエッジ点および第２のエッジ線と複数のエピポーラ線との交点である複数の第２のエッジ点をそれぞれ生成するエッジ点生成部と、複数の第１のエッジ点および複数の第２のエッジ点の中から、互いに同一のエピポーラ面を用いて生成された第１のエッジ点および第２のエッジ点であり、かつ、基準輪郭線の互いに同一部位に対応する第１のエッジ点と第２のエッジ点とからなる一対のエッジ点を選択する対応点選択部と、一対のエッジ点を通る第１のカメラの視線と第２のカメラの視線とに基づき対象物の輪郭線上の３次元点を算出する３次元点算出部とを備える。
【０００７】
また、本発明の他の態様である輪郭線計測装置は、対象物を撮像して第１の対象物画像および第２の対象物画像をそれぞれ取得する第１のカメラおよび第２のカメラと、対象物の３次元の基準輪郭線を設定する基準輪郭線設定部と、基準輪郭線を第１のカメラの撮像面および第２のカメラの撮像面に投影した第１の基準輪郭線像および第２の基準輪郭線像をそれぞれ算出する基準輪郭線像算出部と、第１の基準輪郭線像の近傍に第１の画像処理領域を設定し、第１の画像処理領域内の第１の対象物画像から対象物の輪郭線の画像である第１のエッジ線を抽出する一方、第２の基準輪郭線像の近傍に第２の画像処理領域を設定し、第２の画像処理領域内の第２の対象物画像から対象物の輪郭線の画像である第２のエッジ線を抽出するエッジ線抽出部と、第１のエッジ線上に複数の第１のエッジ点を生成する第１のエッジ点生成部と、第１のカメラおよび第２のカメラの位置姿勢に基づき、複数の第１のエッジ点をそれぞれ通る複数のエピポーラ面を生成するエピポーラ面生成部と、複数のエピポーラ面を第２のカメラの撮像面に投影した複数のエピポーラ線を算出するエピポーラ線算出部と、複数のエピポーラ線と第２のエッジ線との交点である複数の第２のエッジ点を生成する第２のエッジ点生成部と、複数の第１のエッジ点と複数の第２のエッジ点の中から、第１のエッジ点と、この第１のエッジ点から求められた第２のエッジ点とからなる一対のエッジ点であって、基準輪郭線の互いに同一部位に対応する一対のエッジ点を選択する対応点選択部と、一対のエッジ点を通る第１のカメラの視線および第２のカメラの視線に基づき対象物の輪郭線上の３次元点を算出する３次元点算出部とを備える。
【０００８】
さらに本発明の別の態様は、ロボットと、ロボットを制御するロボット制御部と、上述の輪郭線計測装置とを備えるロボットシステムであって、輪郭線計測装置を構成する第１のカメラおよび第２のカメラはロボットのアーム先端部に取り付けられ、または第１のカメラおよび第２のカメラにより撮像される対象物はロボットのアーム先端部で把持される。
【発明の効果】
【０００９】
本発明によれば、対象物の基準輪郭線の互いに同一部位に対応する一対のエッジ点を選択するので、エピポーラ線と交わるエッジ線が複数存在する場合であっても、一対のエッジ点同士が良好に対応付けられ、対象物の３次元輪郭線形状を精度よく計測することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態に係る輪郭線計測装置の主要な構成を示す図。
【図２】図１の輪郭線制御装置の制御構成を示すブロック図。
【図３】図２の画像処理部の詳細な構成を示すブロック図。
【図４】図３の画像処理部で実行される処理の一例を示すフローチャート。
【図５】本発明の第１の実施形態に係る輪郭線計測装置による計測対象であるワークの平面図。
【図６】エピポーラ面の一例を示す図。
【図７】エピポーラ線の一例を示す図。
【図８】エッジ線の一例を示す図。
【図９】最近傍点の一例を示す図。
【図１０】図９の変形例を示す図。
【図１１】エピポーラ面を分割する方法を示す図。
【図１２】分割されたエピポーラ面を示す図。
【図１３】図４の変形例を示すフローチャート。
【図１４】本発明の第２の実施形態に係るロボットシステムの主要な構成を示す図。
【図１５】図１４の変形例を示す図。
【図１６】図１４または図１５の視覚センサ制御装置内における画像処理部の詳細な構成を示すブロック図。
【図１７】図１６の主に評価部における処理の一例を示すフローチャート。
【図１８】図１４、図１５の変形例を示す図。
【発明を実施するための形態】
【００１１】
−第１の実施形態−
以下、図１〜図１３を参照して本発明の第１の実施形態について説明する。図１は、本発明の第１の実施形態に係る輪郭線計測装置１００の主要な構成を示す図である。輪郭線計測装置１００は、作業台１に載置されたワーク２を撮像する一対のカメラ３（第１のカメラ３Ａおよび第２のカメラ３Ｂ）と、第１のカメラ３Ａおよび第２のカメラ３Ｂと通信してワーク２の輪郭線形状を算出する視覚センサ制御装置５とを備える。なお、ワーク２は輪郭線（図５の２ａ）によって形状が規定される。したがって、輪郭線形状を算出することでワーク形状を特定できる。
【００１２】
カメラ３は、例えばＣＣＤ等の撮像素子を有する電子カメラであり、撮像により２次元画像を撮像面（ＣＣＤアレイ面上）で検出する機能を持つ周知の受光デバイスである。なお、撮像面における２次元座標系を以下ではセンサ座標系と呼ぶ。第１のカメラ３Ａおよび第２のカメラ３Ｂはそれぞれ架台４により支持され、第１のカメラ３Ａとワーク２および第２のカメラ３Ｂとワーク２との距離が互いにほぼ等しくなるように、かつ、第１のカメラ３Ａと第２のカメラ３Ｂにより互いにほぼ同じ範囲を撮影可能となるように（図５参照）、３次元のワールド座標系における一対のカメラ３Ａ，３Ｂの位置および姿勢が決定されている。なお、３次元のワールド座標系を、以下ではロボット座標系と呼ぶ。
【００１３】
図２は、図１の輪郭線計測装置１００の制御構成を示すブロック図である。図２に示すように、輪郭線制御装置１００は、一対のカメラ３Ａ，３Ｂと視覚センサ制御装置５の他、視覚センサ操作盤６を備える。視覚センサ操作盤６は、視覚センサ制御装置５に対し各種指令を入力する。視覚センサ制御装置５は、ＣＰＵ，ＲＯＭ，ＲＡＭ，その他の周辺回路などを有する演算処理装置を含んで構成され、機能的構成として、輪郭線情報記憶部７、キャリブレーションデータ記憶部８と、画像処理部１０とを有する。
【００１４】
輪郭線情報記憶部７は、予め基準となるワーク２の輪郭線、すなわち基準輪郭線の３次元形状情報と位置情報とを記憶する。基準輪郭線は設計値によって与えられる。視覚センサ制御装置５は、基準輪郭線の３次元形状情報を例えば所定のファイル形式で外部から直接読み込むことができる。なお、視覚センサ制御装置５がワーク２の３次元ＣＡＤデータを外部から読み込み、視覚センサ操作盤６を介してワーク２の輪郭線の位置をユーザが指定して、３次元形状情報を与えるようにしてもよい。
【００１５】
基準輪郭線の３次元形状情報は、例えばワーク２上に１つの座標系（ワーク座標系）を定義し、基準輪郭線を構成する点や線などの位置を、ワーク座標系を基準とした座標データで表すことによって与えられる。この場合、ロボット座標系に対するワーク座標系の位置姿勢、すなわちロボット座標系におけるワーク座標系の原点の位置およびその位置におけるワーク座標系の姿勢が、基準輪郭線の位置情報に相当する。
【００１６】
キャリブレーションデータ記憶部８は、予め一対のカメラ３Ａ，３Ｂのキャリブレーションデータを記憶する。なお、キャリブレーションデータを求める方法やキャリブレーションデータの形式は周知であり、この点についての説明は省略する。キャリブレーションデータが求まると、ロボット座標系における３次元点（注視点と呼ぶ）のカメラ画像上での位置、すなわちセンサ座標系における２次元点を算出することができる。また、注視点の像がセンサ座標系の２次元点として与えられると、ロボット座標系における注視点とカメラ３の焦点を通る３次元直線である視線を算出することができる。
【００１７】
さらに一対のカメラ３Ａ，３Ｂのそれぞれについてキャリブレーションデータが求まると、注視点のロボット座標系における３次元位置が与えられたときに、この注視点と第１のカメラ３Ａの焦点と第２のカメラ３Ｂの焦点とを通る平面、すなわちエピポーラ面（図６参照）を算出することができる。また、注視点の像が第１のカメラ３Ａのセンサ座標系の２次元点および第２のカメラ３Ｂのセンサ座標系の２次元として与えられると、ロボット座標系における注視点の位置を特定でき、注視点の３次元位置座標を算出することができる。
【００１８】
画像処理部は、第１のカメラ３Ａと、第２のカメラ３Ｂと、輪郭線情報記憶部７と、キャリブレーションデータ記憶部８と、視覚センサ操作盤６とからの信号に基づき所定の処理（輪郭線計測処理）を実行する。これにより、ワーク２の輪郭線上の３次元点（計測点）に対応する第１のカメラ３Ａのセンサ座標系の２次元点、および同一の計測点に対応する第２のカメラ３Ａのセンサ座標系の２次元点、すなわち一対の対応点を求めるとともに、一対の対応点を用いてロボット座標系における計測点の位置を特定し、その３次元位置（３次元位置座標）を算出する。図３は、画像処理部１０の詳細な構成を示すブロック図であり、図４は、画像処理部１０で実行される処理の一例を示すフローチャートである。
【００１９】
図３に示すように、画像処理部１０は、エピポーラ面生成部１１と、エピポーラ線算出部１２と、カメラ制御部１３と、基準輪郭線像算出部１４と、エッジ線抽出部１５と、エッジ点生成部１６と、対応点選択部１７と、３次元点算出部１８とを有する。
【００２０】
図４に示す輪郭線計測処理は、例えば視覚センサ操作盤６を介してユーザがワーク２の輪郭線計測指令を入力すると開始される。なお、以下では、ワーク２が、輪郭線情報記憶部７に記憶された位置情報が示す位置の近傍に配置されているものとして図４の処理を説明する。図５は、ワーク２の平面図であり、輪郭線２ａの一例を示している。図５のワーク２の面は、カメラ３Ａ，３Ｂに対向しており、図５には、第１のカメラ３Ａによる撮像範囲ＡＲ１と第２のカメラ３Ｂによる撮像範囲ＡＲ２を投影して示している。これら撮像範囲ＡＲ１，ＡＲ２はほぼ等しく、撮像範囲ＡＲ１，ＡＲ２はワーク全体を含む。
【００２１】
ステップＳ１では、エピポーラ面生成部１１での処理により、第１のカメラ３Ａと第２のカメラ３Ｂの共通視野内に、ワーク２と交差するような複数のエピポーラ面ＥＳを生成する。図６は、エピポーラ面ＥＳの一例を示す図である。なお、図６には、カメラ３の撮像面３０（３０Ａ，３０Ｂ）を併せて示している。エピポーラ面ＥＳの個数は、ワーク２の輪郭線２ａ上の計測点の密度、および計測点の３次元位置の算出に要する計算時間等を考慮して決定する。エピポーラ面ＥＳを生成するためには、３次元空間に少なくともエピポーラ面ＥＳと同数の注視点Ｐを設定する必要がある。注視点Ｐは、例えば以下の手順で設定する。なお、以下では、説明を簡単にするために、第１のカメラ３Ａの光軸と第２のカメラ３Ｂの光軸とが、それぞれのカメラ３Ａ，３Ｂから適切な距離だけ離れた１点で交わるものとする。
【００２２】
まず、第１のカメラ３Ａの光軸の方向ベクトルと、第２のカメラ３Ｂの光軸の方向ベクトルの和（ベクトルＡ）を算出する。次に、第１のカメラ３Ａの光軸と第２のカメラ３Ｂの光軸の交点（交点Ａ）を算出する。次に、第１のカメラ３Ａの光軸と第２のカメラ３Ｂの光軸とによって作られる平面（平面Ａ）を算出する。次に、交点Ａを通り、かつ、ベクトルＡを法線とする平面（平面Ｂ）を算出する。次に、平面Ａと平面Ｂの交線（直線Ａ）を算出する。次に、平面Ｂ上にあり、かつ、交点Ａを通って直線Ａに直交する直線（直線Ｂ）を算出する。最後に、図５に示すように、直線Ｂ上に所定の間隔で注視点Ｐ（Ｐ１，Ｐ２，・・Ｐｎ）を生成する。これら各注視点Ｐについて、図６に示すように、第１のカメラ３Ａの焦点ＦＰ１と第２のカメラ３Ｂの焦点ＦＰ２を通るエピポーラ面ＥＳを生成する。
【００２３】
ステップＳ２では、エピポーラ線算出部１２での処理により、ステップＳ１で生成した複数のエピポーラ面ＥＳのそれぞれについてエピポーラ線ＥＬを算出する。すなわち、図６に示すように、エピポーラ面ＥＳを第１のカメラ３Ａの撮像面３０Ａおよび第２のカメラ３Ｂの撮像面３０Ｂにそれぞれ投影し、エピポーラ線ＥＬを算出する。これを複数のエピポーラ面ＥＳについて行い、複数のエピポーラ線ＥＬを取得する。図７は、一方のカメラ３の撮像面３０における複数のエピポーラ線ＥＬ（ＥＬ１，ＥＬ２，・・ＥＬｎ）の一例を示す図である。
【００２４】
なお、ステップＳ１で生成したエピポーラ面ＥＳとステップＳ２で算出したエピポーラ線ＥＬは、一対のカメラ３Ａ，３Ｂの位置関係や各カメラ３Ａ，３Ｂの焦点距離などの光学条件が変わらなければ改めて求める必要はない。したがって、一旦生成したエピポーラ面ＥＳおよび一旦算出したエピポーラ線ＥＬを、例えば視覚センサ制御装置５の内部または外部の記憶装置に記憶し、ワーク２の輪郭線計測を行う際にそれらを読み込むようにしてもよい。これにより、エピポーラ面ＥＳとエピポーラ線ＥＬを求める計算を省略することができ、輪郭線形状を高速に計測することができる。
【００２５】
ステップＳ３では、カメラ制御部１３での処理により、カメラ３Ａ，３Ｂに制御信号を出力し、第１のカメラ３Ａおよび第２のカメラ３Ｂにそれぞれワーク２を撮像させる。これにより各カメラ３Ａ，３Ｂの撮像面３０Ａ，３０Ｂにカメラ画像（ワーク画像）が得られる。
【００２６】
ステップＳ４では、基準輪郭線像算出部１４での処理により、輪郭線情報記憶部７に記憶されたワーク２の基準輪郭線を第１のカメラ３Ａのカメラ画像上および第２のカメラ３Ｂのカメラ画像上にそれぞれ投影し、基準輪郭線像４０（図８参照）を算出する。具体的には、まず、基準輪郭線上に所定の間隔で複数の３次元点を設定する。例えば、ワーク座標系で複数の３次元点を設定した後、その３次元点の座標をロボット座標系の座標に変換することで、複数の３次元点を設定する。次いで、複数の３次元点を各カメラ３Ａ，３Ｂのカメラ画像上にそれぞれ投影し、センサ座標系上の複数の２次元点を求める。このようにして得られた複数の２次元点を順次接続し、基準輪郭線像４０を取得する。
【００２７】
ステップＳ５では、エッジ線抽出部１５での処理により、各カメラ３Ａ，３Ｂのカメラ画像からエッジ線５０を抽出する。エッジ線５０とは、カメラ画像内の輝度値の変化量が大きい部分を接続した線分の集合である。エッジ線５０は、例えばＳｏｂｅｌフィルタやＣａｎｎｙエッジ検出器を用いて抽出することができる。図８は、撮像面３０におけるカメラ画像上のエッジ線５０の一例を示す図である。
【００２８】
エッジ線５０を抽出する際には、まず、図８に示すように基準輪郭線像４０の近傍、例えば基準輪郭線像４０から所定距離ΔＬ内にエッジ線検出領域４１を設定する。所定距離ΔＬは、予め視覚センサ制御装置５内のメモリに記憶しておくことも、視覚センサ操作盤６を介して設定することもできる。また、所定距離ΔＬは、基準輪郭線像４０の全体にわたって一定であっても、基準輪郭線像４０の場所に応じて変化させてもよい。
【００２９】
エッジ線抽出部１５は、エッジ線検出領域４１内のカメラ画像からエッジ線５０を探索し、抽出する。このようにエッジ線５０の探索領域を制限することで、検出対象となるワークの輪郭線以外のものがエッジ線５０として抽出されることを抑制する効果がある。また、エッジ線５０を高速に抽出することができるという効果もある。複数のエッジ線５０を接続したものは実際のワーク２の輪郭線の画像を表す。なお、基準輪郭線と実際のワーク２の輪郭線との間には、ワーク２の個体差や位置情報のずれ等に起因したずれがあるため、図８では、基準輪郭線像４０とエッジ線５０との間にずれが生じている。
【００３０】
ステップＳ６では、エッジ点生成部１６での処理により、ステップＳ５で抽出した各カメラ画像上のエッジ線５０とエピポーラ線ＥＬとの交点をエッジ点ＥＰとして算出する。各カメラ３Ａ，３Ｂのカメラ画像上には、それぞれ複数のエッジ点ＥＰが得られる。以下では、第１のカメラ３Ａのカメラ画像上の複数のエッジ点ＥＰを第１のエッジ点群と呼び、第２のカメラ３Ｂのカメラ画像上の複数のエッジ点ＥＰを第２のエッジ点群と呼ぶ。
【００３１】
なお、図６では、エピポーラ線ＥＬに複数のエッジ線５０が交差しており、同一のエピポーラ面ＥＳ上に複数のエッジ点ＥＰ（ＥＰ１とＥＰ２，ＥＰ３とＥＰ４）が生成されている。本実施形態では、エッジ線５０とエピポーラ線ＥＬとが平行に近い箇所においては、エッジ点ＥＰの誤差が大きくなるので、エッジ点生成部１６はこのような個所にエッジ点を生成しない。
【００３２】
ステップＳ７では、対応点選択部１７での処理により、ステップＳ６で取得した第１のエッジ点群と第２のエッジ点群の中から、互いに対応するエッジ点ＥＰをそれぞれ１つずつ選択する。以下では、選択された一対のエッジ点ＥＰ、すなわち第１のエッジ点群から選択したエッジ点ＥＰ（第１のエッジ点）と第２のエッジ点群から選択したエッジ点ＥＰ（第２のエッジ点）とをそれぞれ対応点と呼び、第１のエッジ点ＥＰと第２のエッジ点ＥＰの組み合わせをエッジ点ペアと呼ぶ。エッジ点ペアの選択は例えば以下のように行う。
【００３３】
まず、第１のエッジ点群および第２のエッジ点群の中から、互いに同一のエピポーラ面ＥＳ上に存在するエッジ点ＥＰをそれぞれ抽出する。抽出したエッジ点ＥＰはエッジ点ペアの候補となる。第１のエッジ点群から抽出した第１のエッジ点ＥＰと第２のエッジ点群から抽出した第２のエッジ点ＥＰとがそれぞれ１点である場合、同一のエピポーラ面ＥＳ上でエッジ点ＥＰ同士が１対１で対応するため、これらをエッジ点ペアとする。なお、第１のエッジ点群から抽出した第１のエッジ点ＥＰと第２のエッジ点群から抽出した第２のエッジ点ＥＰの少なくとも一方が存在しない場合、同一のエピポーラ面ＥＳ上でエッジ点ＥＰが対応しないため、エッジ点ペアを作ることはできない。
【００３４】
一方、第１のエッジ点群から抽出した第１のエッジ点ＥＰと第２のエッジ点群から抽出した第２のエッジ点ＥＰの少なくとも一方が複数である場合、各エッジ点ＥＰに対応する基準輪郭線像４０上の最近傍点ＮＰを求める。図９は、最近傍点ＮＰ（ＮＰ１，ＮＰ２）の一例を示す図である。最近傍点ＮＰとはエッジ点ＥＰからの距離が最少となる基準輪郭線像４０上の点であり、例えば図９に示すように、エッジ点ＥＰ１，ＥＰ２におけるエッジ線５０に対する垂線５１と、基準輪郭線像４０との交点が最近傍点ＮＰ１，ＮＰ２となる。この交点を起点としてエッジ点ＥＰからの距離が最小となる基準輪郭線像４０上の点を探索し、これを最近傍点ＮＰとしてもよい。図１０に示すように、エッジ線５０が基準輪郭線像４０と一致するようにエッジ線５０全体を平行移動および／または回転移動させた後、その移動後のエッジ線５０’上におけるエッジ点ＥＰ１’，ＥＰ２’からの距離が最少となるような点を求め、これを最近傍点ＮＰ１，ＮＰ２としてもよい。
【００３５】
次に、第１のカメラ３Ａのカメラ画像上の最近傍点ＮＰを通る第１のカメラ３Ａの視線とワーク２の基準輪郭線との交点である第１の投影元点を算出するとともに、第２のカメラ３Ｂのカメラ画像上の最近傍点ＮＰを通る第２のカメラ３Ｂの視線と基準輪郭線との交点である第２の投影元点を算出する。この場合、第１のエッジ点ＥＰと第２のエッジ点ＥＰの少なくとも一方は複数であるため、第１の投影元点と第２の投影元点の少なくとも一方も複数求められ、このうち第１の投影元点と第２の投影元点との間の距離（投影元点間距離）が所定値αより短いものをエッジ点ペアとして選択する。
【００３６】
なお、投影元点間距離は、第１の投影元点と第２の投影元点の直線距離であってもよいし、第１の投影元点と第２の投影元点の間の基準輪郭線の長さとしてもよい。所定値αは、各カメラ３Ａ，３Ｂのカメラ画像上の最近傍点ＮＰが基準輪郭線の互いに同一部位を表しているか否かを判定するための閾値である。投影元点間距離が所定値αより短いエッジ点ペアが複数存在する場合には、投影元点間距離が最少となるものをエッジ点ペアとして選択すればよい。投影元点間距離が近いものが複数存在する場合には、最近傍点ＮＰとエッジ点ＥＰの距離も考慮してエッジ点ペアを選択してもよい。
【００３７】
第１のエッジ点群から抽出した第１のエッジ点ＥＰと第２のエッジ点群から抽出した第２のエッジ点ＥＰとがそれぞれ１点である場合にも、上述したのと同様に投影元点間距離を算出し、投影元点間距離が所定値αより短いかいことを条件としてエッジ点ペアを選択してもよい。これにより第１のエッジ点ＥＰと第２のエッジ点ＥＰとが良好に対応しているか否か、すなわち有効なエッジ点ペアであるか否かを評価できる。
【００３８】
ステップＳ８では、３次元点算出部１８での処理により、ステップＳ７で求めたエッジ点ペアを構成する第１のエッジ点ＥＰと第１のカメラ３Ａの焦点とを結ぶ視線、および第２のエッジ点ＥＰと第２のカメラ３Ｂの焦点とを結ぶ視線をそれぞれ算出し、さらにこれら２本の視線の交点（計測点）を算出する。これによりワーク２の輪郭線上における計測点の３次元位置を求めることができる。
【００３９】
このように第１の実施形態では、カメラ画像上に最近傍点ＮＰを設定することで、第１のエッジ点群および第２のエッジ点群の中から、互いに同一のエピポーラ面ＥＳ上に存在し、かつ、基準輪郭線の互いに同一部位に対応する第１のエッジ点ＥＰと第２のエッジ点ＥＰのペアを選択し、このエッジ点ペアを用いてロボット座標系における計測点の位置を特定し、計測点の３次元位置を算出するようにした。これによりエピポーラ線ＥＬと交わるエッジ線５０が複数存在してエッジ点ペアの候補が複数存在する場合であっても、第１のエッジ点ＥＰと第２のエッジ点ＥＰとを良好に１対１に対応付けることができ、ワーク２の輪郭線上の３次元点の位置を精度よく算出することができる。
【００４０】
また、本実施形態では、カメラ２台という比較的簡易な構成で、ワーク２の３次元輪郭線形状を求めることができる。さらに、カメラ３Ａ，３Ｂによる撮像は、１回だけ行えばよいので、輪郭線形状の計測を高速に行うことができる。また、本実施形態によれば、特定の平面上にワーク２の３次元輪郭線ある場合だけでなく、３次元輪郭線が平面上にない場合であっても、輪郭線の位置を求めることができる。
【００４１】
対応点選択部１７における同一のエピポーラ面ＥＳ上の点ＥＰが可能な限り１対１で対応するように、エピポーラ面ＥＳを事前に分割しておくこともできる。図１１は、第１のカメラ３Ａと第２のカメラ３Ｂにそれぞれ対応する分割線ＤＡと分割線ＤＢとでエピポーラ面ＥＳを分割する方法を示す図である。まず、複数のエピポーラ面ＥＳそれぞれに対して、基準輪郭線との交点Ｐα、Ｐβを算出する。交点が１つだけ存在する、または、交点が存在しない場合には、そのまま次のステップに進む。交点が複数存在する場合には、そのエピポーラ面上の隣り合う交点Ｐα、Ｐβ間の中点Ｐγを全て求め、それぞれの中点Ｐγと第１のカメラ３Ａの焦点ＦＰ１または第２のカメラ３Ｂの焦点ＦＰ２を結んだ分割線ＤＡ、ＤＢでエピポーラ面ＥＳを分割する。
【００４２】
エピポーラ面ＥＳは第１のカメラ３Ａと第２のカメラ３Ｂそれぞれで異なる分割線ＤＡ，ＤＢで分割されるが、図１２に示すように同一の中点Ｐγ１、Ｐγ２、Ｐγ３で分割された第１のカメラ３Ａと第２のカメラ３Ｂのエピポーラ面には同じインデックスＡ１〜Ａ４、Ｂ１〜Ｂ４を割り当て、同一のものとして扱う。分割されたエピポーラ面はそれぞれ異なるエピポーラ面として扱い、第１のエッジ点群および第２のエッジ点群の中から、互いに同一の分割されたエピポーラ面ＥＳ上に存在するエッジ点ＥＰをそれぞれ抽出することで、対応点の候補の数を制限することができる。基準輪郭線の分割やエッジ線５０の抽出領域の分割でも、エピポーラ面ＥＳの分割と同様の効果が得られることは自明であるので、説明は省略する。
【００４３】
図１３は、図４の変形例を示すフローチャートである。ステップＳ１１では、図４のステップＳ３と同様、カメラ制御部１３での処理により第１のカメラおよび第２のカメラに撮像動作を行わせ、一対のカメラ画像を取得する。ステップＳ１２では、図４のステップＳ４と同様、基準輪郭線像算出部１４での処理により、一対のカメラ画像上にそれぞれ基準輪郭線を投影し、基準輪郭線像４０を算出する。ステップＳ１３では、図４のステップＳ５と同様、エッジ線抽出部１５での処理により、一対のカメラ画像からエッジ線５０を抽出する。
【００４４】
ステップＳ１４では、第１のカメラ３Ａのカメラ画像から抽出したエッジ線５０上に、所定間隔で複数のエッジ点ＥＰ（第１のエッジ点群）を生成する。第１のエッジ点ＥＰは、輪郭線上の３次元点を求めるための基準となる点であり、十分に密な３次元点が得られるように所定間隔が設定される。
【００４５】
ステップＳ１５では、エピポーラ面生成部１１での処理により、テップＳ１４で生成した第１のエッジ点ＥＰのそれぞれについて、各エッジ点ＥＰとカメラ３Ａ，３Ｂの焦点とを通る複数のエピポーラ面ＥＳを生成する。
【００４６】
ステップＳ１６では、エピポーラ線算出部１２での処理により、ステップＳ１５で生成した複数のエピポーラ面ＥＳを第２のカメラ３Ｂの撮像面３０Ｂにそれぞれ投影し、複数のエピポーラ線ＥＬを算出する。
【００４７】
ステップＳ１７では、エッジ点生成部１６での処理により、ステップＳ１６で算出した複数のエピポーラ線ＥＬとエッジ線５０との交点である複数の第２のエッジ点ＥＰ（第２のエッジ点群）を算出する。
【００４８】
ステップＳ１８では、対応点選択部１７での処理により、第１のエッジ点群と第２のエッジ点群の中から、第１のエッジ点ＥＰと、この第１のエッジ点ＥＰからエピポーラ面ＥＳおよびエピポーラ線ＥＬを生成することで求められた第２のエッジ点ＥＰとを選択し、これらをエッジ点ペアとする。
【００４９】
この場合、同一のエピポーラ面ＥＰ上に複数の第１のエッジ点ＥＰおよび／または複数の第２のエッジ点ＥＰが存在する場合には、上述したのと同様に、各エッジ点ＥＰに対応する最近傍点ＮＰおよび投影元点を順次求め、さらに投影元点間距離が所定値αより短い第１のエッジ点と第２のエッジ点を、エッジ点ペアとする。これにより、基準輪郭線の互いに同一部位に対応する第１のエッジ点ＥＰと第２のエッジ点ＥＰをエッジ点ペアとすることができる。
【００５０】
ステップＳ１９では、図４のステップＳ８と同様、３次元点算出部１８での処理により、ステップＳ１８で算出したエッジ点ペアを用いてワーク２の輪郭線上における計測点の３次元位置を求める。
【００５１】
−第２の実施形態−
図１４〜図１７を参照して本発明の第２の実施形態について説明する。なお、以下では図１〜図１０と同一の個所には同一の符号を付し、第１の実施形態との相違点を主に説明する。第２の実施形態は、輪郭線計測装置１００を有するロボットシステムであり、一対のカメラ３Ａ，３Ｂまたはワーク２の少なくとも一方を、ロボットを用いて移動可能に設ける。
【００５２】
図１４は、本発明の第２の実施形態に係るロボットシステム２００の主要な構成を示す図である。図１４に示すように、ロボットシステムは、一対のカメラ３Ａ，３Ｂと、一対のカメラ３Ａ，３Ｂと通信してワーク２の輪郭線形状を算出する視覚センサ制御装置５と、一対のカメラ３Ａ，３Ｂを支持するロボット６０と、ロボット６０を制御するロボット制御装置６５とを備える。なお、一対のカメラ３Ａ，３Ｂと視覚センサ制御装置５とは、輪郭線計測装置１００を構成する。図示は省略するが、視覚センサ制御装置５は、図２と同様、輪郭線情報記憶部７とキャリブレーションデータ記憶部８と、画像処理部１０とを有する。
【００５３】
ロボット６０は、回動可能な複数のアーム６１を連結してなる多関節ロボットであり、アーム先端部にハンド６２を有する。ロボット６０のアーム先端部にはブラケット６３が取り付けられ、ブラケット６３に一対のカメラ３Ａ，３Ｂが固定されている。これにより、アーム６１を駆動すると、第１のカメラ３Ａと第２のカメラ３Ｂは、その相対位置姿勢を一定に維持したまま３次元空間を移動することができ、ワーク２に対するカメラ３Ａ，３Ｂの相対位置姿勢を変更することができる。
【００５４】
視覚センサ制御装置５とロボット制御装置６５とは、ＲＳ２３２ＣやＬＡＮ等、周知の方法で接続されており、互いに通信可能である。これにより、視覚センサ制御装置５がロボット制御装置６５からロボット６０の現在位置情報を取得することができる。また、ロボット制御装置６５が視覚センサ制御装置５からワーク２の輪郭線形状の情報を取得することができる。
【００５５】
第２の実施形態は第１の実施形態と異なり、ロボット座標系でカメラ３Ａ，３Ｂが移動可能である。この点を考慮して、視覚センサ制御装置５内のキャリブレーションデータ記憶部８には、ロボット６０のアーム先端部に設定した座標系（メカニカルインターフェース座標系）を基準としたカメラ３Ａ，３Ｂのキャリブレーションデータ、すなわちメカニカルインターフェース座標系におけるキャリブレーションデータが記憶されている。一方、ロボット制御装置６５は、ロボット座標系におけるアーム先端部の位置を把握することができる。
【００５６】
したがって、キャリブレーションデータ記憶部８に記憶されたキャリブレーションデータにより、センサ座標系の２次元点とメカニカルインターフェース座標系の３次元点とを対応付け、さらにロボット制御装置６５によって把握されるアーム先端部の位置に応じて、メカニカルインターフェース座標系をロボット座標系に座標変換することで、センサ座標系の２次元点とロボット座標系の３次元点とを対応付けることができる。すなわち、ロボット座標系から見たセンサ座標系の位置姿勢を求めることができる。これにより第１の実施形態と同様、センサ座標系で表現された画像データを用いて、ワーク２の輪郭線の３次元点位置を計測することができる。
【００５７】
なお、キャリブレーションデータ記憶部８に、ロボット座標系におけるカメラ３Ａ，３Ｂのキャリブレーションデータとともに、キャリブレーション実行時のロボット６０の位置情報を記憶するようにしてもよい。この場合、ワーク撮像時のロボットの位置情報とキャリブレーション実行時のロボットの位置情報とを用いることで、ワーク撮像時のロボット座標系から見たセンサ座標系の位置姿勢を求めることができる。
【００５８】
ロボット６０を用いてカメラ３Ａ，３Ｂを移動可能に構成するのではなく、ワーク２を移動可能に構成することもできる。図１５は、その一例を示す図である。図１５では、一対のカメラ３Ａ，３Ｂが作業台４に固定され、ワーク２がロボット６０のアーム先端部のハンド６２に把持されている。したがって、ロボット６０を駆動するとワーク２が移動し、これによりカメラ３Ａ，３Ｂに対するワーク２の相対位置姿勢を変更することができる。
【００５９】
この場合、視覚センサ制御装置５内の輪郭線情報記憶部７には、ロボット座標系から見たワーク座標系の位置姿勢ではなく、メカニカルインターフェース座標系から見たワーク座標系の位置姿勢が記憶されている。このメカニカルインターフェース座標系から見たワーク座標系の位置姿勢を、ワーク撮像時のロボットの位置情報に基づき座標変換することで、メカニカルインターフェース座標系から見たワーク座標系の位置姿勢から、ロボット座標系から見たワーク座標系の位置姿勢を求めることができる。これにより、第１の実施形態と同様、センサ座標系で表現された画像データを用いて、ワーク２の輪郭線の３次元点位置を計測することができる。
【００６０】
第２の実施形態では、ロボット６０を用いてカメラ３Ａ，３Ｂまたはワーク２を移動することにより、ワーク２の輪郭線の異なる部位の３次元点を計測することができる。図１６は、第２の実施形態に係る画像処理部１０の構成を示す図である。画像処理部１０は、図３の構成に加え、撮像位置算出部２１と、評価部２２とをさらに備える。
【００６１】
撮像位置算出部２１は、アーム先端部の目標位置（位置姿勢）を算出し、ロボット制御装置６５は、アーム先端部をこの目標位置へ移動するようにロボット６０を制御する。カメラ制御部１３は、アーム先端部が目標位置に移動した状態で、カメラ３Ａ，３Ｂによりワーク２を撮像させる。
【００６２】
撮像位置算出部２１は、基準輪郭線を計測しやすいように基準輪郭線上の注視点における法線方向を考慮して、アーム先端部の目標位置を定める。例えば、基準輪郭線がワーク２の加工面の縁を表すとき、注視点における法線方向が加工面に対して垂直となるようにアーム先端部の目標位置を定める。
【００６３】
さらに、（１）第１のカメラ３Ａの光軸と第２のカメラ３Ｂの光軸の交点が注視点と同じ位置になること、（２）第１のカメラ３Ａの光軸の向きを表すベクトルと第２のカメラ３Ｂの光軸の向きを表すベクトルの和に対し、注視点における法線方向が平行になること、（３）第１のカメラ３Ａの光軸と第２のカメラ３Ｂの光軸とがなす平面と、注視点を通り、注視点における法線によって規定される平面との交線と、基準輪郭線の注視点における接線とが直角になること、の３つの条件を満足するように、目標位置を決定する。これにより、カメラ画像上のエピポーラ線ＥＬとエッジ線５０とが平行になりにくく、基準輪郭線を計測しやすくなる。
【００６４】
第２の実施形態において、カメラ３Ａ，３Ｂの撮像範囲ＡＲ１，ＡＲ２に対して輪郭線が大きい場合には、複数の目標位置を設定し、輪郭線の計測を複数回に分けて行うことが好ましい。この場合、ロボット制御装置６５がアーム先端部を複数の目標位置へ順次移動し、アーム先端部が複数の目標位置に移動する度に、第１のカメラ３Ａおよび第２のカメラ３Ｂがワーク２を撮像するように構成する。
【００６５】
複数の目標位置は、手動で設定することも、自動で設定することもできる。目標位置を自動で設定する場合、初めに基準輪郭線上に注視点を設定し、上述したようにしてアーム先端部の目標位置を定める。この目標位置に対応した第１のカメラ３Ａの撮像範囲ＡＲ１と第２のカメラ３Ｂの撮像範囲ＡＲ２の両方に含まれる基準輪郭線の部位を、仮想的な撮像済み部位としてメモリに記憶する。なお、撮像範囲ＡＲ１，ＡＲ２は、カメラ自体によって物理的に制限されるだけでなく、ソフトウェア的に処理領域を設定することでも制限される。
【００６６】
次に、仮想的な撮像済み部位の外側に新たに注視点を設定した上で、注視点を用いて上述した処理を繰り返し、仮想的な撮像済み部位をメモリに追加的に記憶する。新たな注視点の設定および仮想的な撮像済み部位のメモリへの記憶は、仮想的な撮像済み部位がワーク全体を含むようになるまで繰り返す。これにより、輪郭線全体の計測を行うことができる。この場合、互いに隣接する仮想的な撮像済み部位は、その間に未撮像の部位が存在しないように、一部重複することが好ましい。注視点は、仮想的な撮像済み部位の重複状態を評価しながら逐次的に求めてもよい。
【００６７】
目標位置の設定方法は上述したものに限らない。例えば、目標位置から次の目標位置までのアーム先端部の移動距離を考慮して目標位置を定めてもよい。目標位置の設定にあたっては、ロボットの可動範囲を考慮することが好ましい。
【００６８】
図１６に示す評価部２２は、アーム先端部の目標位置の妥当性を評価する。図１７は、主に評価部２２における処理の一例を示すフローチャートである。このフローチャートに示す処理は、例えば撮像位置算出部２１によりアーム先端部の目標位置が算出される度に開始される。
【００６９】
ステップＳ２１では、一対のカメラ３Ａ，３Ｂが取り付けられているロボット６０（図１４）またはワーク２を把持しているロボット６０（図１５）のアーム先端部を、目標位置に仮想的に移動させる。ステップＳ２２では、アーム先端部を目標位置に仮想的に移動した状態で、ワーク２の基準輪郭線を第１のカメラ３Ａの撮像面３０Ａと第２のカメラの撮像面に投影し、仮の基準輪郭線像を算出する。
【００７０】
ステップＳ２３では、第１のカメラ３Ａと第２のカメラ３Ｂの共通視野内に複数のエピポーラ面ＥＳを生成する。エピポーラ面ＥＳは、図４のステップＳ１と同様に所定間隔で生成してもよいし、図１３のステップＳ１５と同様に仮の基準輪郭線像上に所定間隔で複数の点を生成し、これらの点を通るようにエピポーラ面ＥＳを生成してもよい。ステップＳ２４では、複数のエピポーラ面ＥＳとカメラ３０Ａ，３０Ｂの撮像面３０Ａ，３０Ｂとが交差する複数のエピポーラ線ＥＬを算出する。
【００７１】
ステップＳ２５では、仮の基準輪郭線像と複数のエピポーラ線ＥＬとが交差する複数の交点を算出する。ステップＳ２６では、各交点における、仮の基準輪郭線像とエピポーラ線ＥＬとの交差角度を算出する。例えば、仮の基準輪郭線像の角度からエピポーラ線ＥＬの角度を減算したものを交差角度とし、交差角度が９０°より大きい場合は１８０°を減算して、交差角度の範囲が、−９０°以上９０°以下の範囲になるようにする。
【００７２】
ステップＳ２７では、ステップＳ２６で算出した交差角度に基づき目標位置が妥当か否かを判定する。例えば、全ての交点における交差角度の絶対値が所定角度よりも大きければ、エピポーラ線ＥＬと基準輪郭線像とが平行または平行に近い場合が除外されるため、目標位置が妥当であると判定する。交差角度の絶対値が所定角度以下である交点の個数、あるいは交差角度の絶対値が所定角度以下である交点の個数の交点全体に対する割合に基づき、目標位置の妥当性を評価することもできる。予め輪郭線を計測したい部位を指定し、その部位における交点の交差角度の絶対値が所定角度よりも大きいときに、目標位置が妥当である判定してもよい。
【００７３】
ステップＳ２７が肯定されると、処理を終了する。その後、ロボット制御装置６５は、評価部２２により妥当であると評価された目標位置へロボット６０のアーム先端部を移動する。一方、ステップＳ２７が否定されるとステップＳ２８に進む。
【００７４】
ステップＳ２８では、撮像位置算出部２１が、交差角度の絶対値を大きくするような新たな目標位置を算出し、ステップＳ２１に戻る。新たな目標位置は例えば、以下のように算出することができる。まず、第１のカメラの光軸の向きを表すベクトルと第２のカメラの光軸の向きを表すベクトルの和を算出する。次に、このベクトルの和を回転軸として、回転軸を中心にしてアーム先端部を回転させる。この場合の回転角度は、例えば予め設定したステップ角度、あるいは０〜９０°の範囲を複数回に分割できるステップ角度とすればよい。回転角度を−９０°〜９０°の範囲でステップ角度づつ増加または減少させることで、評価部２２で妥当であると評価される目標位置を探索する。もしくは、−９０°または９０°に交差角度の平均値または中央値または最頻値を加算した値を、回転角度としてもよい。アーム先端部の回転方向はいずれの方向であってもよく、ロボット６０の位置姿勢や、移動等を考慮して回転方向を決定すればよい。どちらにも回転可能な場合は、回転角度の絶対値が小さい方向を選択すればよい。
【００７５】
アーム先端部を回転しても全ての交点の交差角を一度で十分に大きくできない場合、目標位置を複数設定し、各目標位置において輪郭線上の３次元点の計測を行うようにしてもよい。例えば、交差角度が−９０〜９０°の範囲に均等に分布している場合には、交点の交差角を一度で十分に大きくできないため、この方法が有効である。
【００７６】
以上では、ロボット制御装置６５と視覚センサ制御装置５とを別々に設けたが（図１４、図１５）、視覚センサ制御装置５をロボット制御装置６５内に設けることもできる。図１８は、その一例を示す図である。図１８に示すように、ロボット制御装置６５内には、ロボット制御部６５１と、視覚センサ制御装置５とが設けられている。ロボット制御部６１には、ロボット６０の動作に関する各種指令を入力するロボット操作盤６５２と、ロボット６０とが接続されている。
【００７７】
−変形例−
上記第１の実施形態および第２の実施形態は、さらに以下のような変形が可能である。ワークの位置姿勢を計測する位置姿勢計測部（例えば３次元計測センサ）を追加的に設け、位置計測部で計測されたワーク２の位置姿勢を輪郭線情報記憶部７に記憶するようにしてもよい。この場合、例えば基準輪郭線像算出部１４が、計測されたワーク２の位置姿勢に基づいて、輪郭線情報記憶部７に記憶されたワークの位置情報を変更し、変更後のワーク位置情報による基準輪郭線をカメラ画像上に投影すればよい。これにより、輪郭線情報記憶部７に記憶されたワーク位置とは異なる位置にワーク２が配置されていたとしても、ワーク２の輪郭線を適切に検出することができる。
【００７８】
３次元計測センサは、架台などに固定して設置してもよく、ロボット６０のアーム先端部に装着してもよい。一対のカメラ３Ａ，３Ｂの少なくとも一方が３次元計測センサの機能を有するようにしてもよい。３次元計測センサとしては、レーザスキャンセンサやステレオカメラを用いることができる。力センサによる３点タッチアップ方式を利用して、あるいは２次元カメラにより、ワーク２の位置姿勢を計測することもできる。ワーク２の位置姿勢は、６軸方向（直交３軸方向および回転３軸方向）の成分（６つの成分）によって定まるが、３次元計測センサにより一部の成分だけを計測してもよい。なお、３次元計測センサでワーク２の位置姿勢を計測しても、ワーク２には固定差があるため、ワーク２の３次元輪郭線形状を正確に求めることはできない。
【００７９】
上記実施形態（図１４、図１５）では、ロボットシステムが一対のカメラ３Ａ，３Ｂにより一対のカメラ画像を得るようにしたが、単一のカメラ３（例えば第１のカメラ３Ａ）で一対のカメラ画像を得ることもでき、これによりコストを低減できる。この場合、単一のカメラ３が取り付けられているロボット（図１４）のアーム先端部を、ワーク２に対する一対のカメラ３Ａ，３Ｂの相対位置姿勢に対応する第１の位置及び第２の位置に順次移動するか、ワーク２を把持しているロボット（図１６）のアーム先端部を、一対のカメラ３Ａ，３Ｂに対するワーク２の相対位置姿勢に対応する第１の位置及び第２の位置に順次移動して、第１の位置および第２の位置でそれぞれワーク２を撮像することで、一対のカメラ３Ａ，３Ｂのカメラ画像に相当するカメラ画像を取得すればよい。
【００８０】
単一のカメラ３Ａを用いる場合、一対のカメラ３Ａ，３Ｂの相対位置が一定であるとして第１の位置および第２の位置を決定してもよく、相対位置がワーク２の撮像部位に応じて変更されるように第１の位置および第２の位置を決定してもよい。単一のカメラ３Ａを用いてワーク２の輪郭線を複数回に分けて撮像する場合には、複数の第１の位置および複数の第２の位置でそれぞれワークを撮像する。この場合、第１の位置と第２の位置での撮像を繰り返し交互に行うのではなく、複数の第１の位置で撮像した後、複数の第２の位置で撮像してもよい。これによりロボット６０の移動量を低減することができ、輪郭線の計測を効率よく行うことができる。
【００８１】
上記実施形態では、対応点選択部１７での処理により、エッジ点ペアの候補である第１のエッジ点群および第２のエッジ点群の中から、互いに対応する第１のエッジ点ＥＰおよび第２のエッジ点ＥＰを選択した。このとき、エッジ点ＥＰを通るエッジ線５０の傾きと、エッジ点ＥＰに対応する最近傍点ＮＰにおける基準輪郭線像４０の傾きとの差を演算し、この差が所定角度以上となるエッジ点ＥＰをエッジ点ペアの候補から除外してもよい。すなわち、対応点選択部１７は、傾きの差が所定角度より小さいことを条件として一対のエッジ点を選択するようにしてもよい。これによりエッジ点ＥＰと最近傍点ＮＰとが良好に対応し、最近傍点ＮＰを介して正確な一対のエッジ点ペアを選択することができる。
【００８２】
また、上記実施形態では、エッジ線抽出部１５が、カメラ画像上のエッジ線５０から、第１のエッジ点群および第２のエッジ点群を求めるためのエッジ線５０を抽出するようにしたが、エッジ点ＥＰにおけるエッジ線５０の明暗の向きと、最近傍点ＮＰにおける基準輪郭線像４０の明暗の向きとが一致するようなエッジ線５０を抽出するようにしてもよい。ここで、明暗の向きとは、基準輪郭線像４０およびエッジ線５０を境界とする２つの領域でどちらが明るいかを示すものである。例えば、エッジ線５０の傾きを２次元ベクトルａで表すと、ａと−ａは、エッジ線５０の傾きは等しいが明暗の向きは異なることを意味する。
【００８３】
明暗の向きは、基準輪郭線像４０の近傍の明暗情報およびエッジ線５０の近傍の明暗情報により特定できる。基準輪郭線像４０の近傍の明暗情報は、基準輪郭線の情報として予め輪郭線情報記憶部７に記憶されている。一方、エッジ線５０の明暗情報は、カメラ画像により取得できる。このようにエッジ線５０と基準輪郭線像４０との明暗の向きを考慮してエッジ線５０を抽出することで、基準輪郭線像４０を介してエッジ点ペアを選択する際に、正しいエッジ点ペアを選択することができる。
【００８４】
上記実施形態では、一対のカメラ画像上の基準輪郭線像４０（第１の基準輪郭線像、第２の基準輪郭線像）の近傍にエッジ線検出領域４１（第１の画像処理領域、第２の画像処理領域）を設定し、このエッジ線検出領域内でエッジ線５０（第１のエッジ線、第２のエッジ線）を抽出するようにしたが、画像処理領域を設定せずにエッジ線５０を抽出してもよく、エッジ線抽出部１５の構成は上述したものに限らない。画像処理部１０における一部の処理（例えば目標位置の設定や評価）は、オフラインシミュレーション装置を用いて行うことができる。
【００８５】
上記実施形態では、輪郭線計測装置によりワーク２の輪郭線を計測するようにしたが、他の対象物の輪郭線も同様に計測することができる。上記実施形態では、一対のカメラ画像上の互いに対応する一対のエッジ点を求める際に、予め基準線情報記憶部７に記憶された３次元の基準輪郭線を設定するようにしたが、基準輪郭線設定部の構成はこれに限らない。ワーク２に対するカメラ３Ａ，３Ｂの相対位置姿勢を変更可能とするのであれば、ロボットシステムを構成するロボット６０の構成はいかなるものでもよい。
【００８６】
上記実施形態では、一対のカメラ画像上のエッジ点ＥＰ（第１のエッジ点、第２のエッジ点）に対応する最近傍点ＮＰをそれぞれ、さらに各々の最近傍点ＮＰに対応する基準輪郭線像（第１の基準輪郭線像、第２の基準輪郭線像）上の投影元点（第１の投影元点、第２の投影元点）をそれぞれ求め、第１の投影元点と第２の投影元点との位置関係に基づき一対のエッジ点を選択するようにしたが、対応点選択部１７の構成はこれに限らない。すなわち、一対のカメラ画像上のエッジ線５０（第１のエッジ線、第２のエッジ線）と複数のエピポーラ線ＥＬとの交点である複数の第１のエッジ点ＥＰおよび複数の第２のエッジ点ＥＰの中から、互いに同一のエピポーラ面ＥＳを用いて生成され、かつ、基準輪郭線の互いに同一部位に対応する第１のエッジ点ＥＰと第２のエッジ点ＥＰとからなる一対のエッジ点を選択するのであれば、対応点選択部１７による処理は、図４のステップＳ７の処理に限定されない。また、複数の第１のエッジ点ＥＰと複数の第２のエッジ点ＥＰの中から、第１のエッジ点ＥＰとこの第１のエッジ点ＥＰから求められた第２のエッジ点ＥＰとからなり、基準輪郭線の互いに同一部位に対応する一対のエッジ点ＥＰを選択するのであれば、対応点選択部１７による処理は、図１３のステップＳ１７の処理に限定されない。
【００８７】
以上の説明はあくまで一例であり、本発明の特徴を損なわない限り、上述した実施形態および変形例により本発明が限定されるものではない。上記実施形態および変形例の構成要素には、発明の同一性を維持しつつ置換可能かつ置換自明なものが含まれる。すなわち、本発明の技術的思想の範囲内で考えられる他の形態についても、本発明の範囲内に含まれる。また、上記実施形態と変形例の１つまたは複数を任意に組み合わせることも可能である。
【符号の説明】
【００８８】
３，３Ａ，３Ｂ    カメラ
１１    エピポーラ面生成部
１２    エピポーラ線算出部
１３    カメラ制御部
１４    基準輪郭線像算出部
１５    エッジ線抽出部
１６    エッジ点生成部
１７    対応点選択部
１８    ３次元点算出部
２１    撮像位置算出部
２２    評価部
４０    基準輪郭線像
４１    エッジ線検出領域
５０    エッジ線
６０    ロボット
６５    ロボット制御装置
１００    輪郭線計測装置
ＥＳ    エピポーラ面
ＥＬ    エピポーラ線
ＥＰ    エッジ点
【図１】
0005911934.tif 000002
【図２】
0005911934.tif 000003
【図３】
0005911934.tif 000004
【図４】
0005911934.tif 000005
【図５】
0005911934.tif 000006
【図６】
0005911934.tif 000007
【図７】
0005911934.tif 000008
【図８】
0005911934.tif 000009
【図９】
0005911934.tif 000010
【図１０】
0005911934.tif 000011
【図１１】
0005911934.tif 000012
【図１２】
0005911934.tif 000013
【図１３】
0005911934.tif 000014
【図１４】
0005911934.tif 000015
【図１５】
0005911934.tif 000016
【図１６】
0005911934.tif 000017
【図１７】
0005911934.tif 000018
【図１８】
0005911934.tif 000019