(57)【要約】【課題】簡易にキャリブレーションを実現すること。【解決手段】対象物ＯＢＪと、対象物ＯＢＪが設置されるロボットと、対象物ＯＢＪ及びロボットの少なくとも一部を撮像するカメラとを含む現実装置１０の３次元情報を記憶する記憶部２１と、３次元情報に基づいて現実装置１０を仮想空間内に再現した仮想装置２３を生成し、現実装置１０の動作に仮想装置２３の動作を同期させ、仮想装置２３のカメラ２４で撮像される第１画像Ｐ１を生成し、現実装置１０で撮像された第２画像Ｐ２と、第２画像Ｐ２に対応する第１画像Ｐ１との差に基づいて仮想装置２３の制御パラメータＡ，Ｂを調整する演算部２２と、を有する、情報処理装置２０が提供される。【選択図】図１
2015024480.tif 000002
【特許請求の範囲】
【請求項１】
対象物と、前記対象物が設置されるロボットと、前記対象物及び前記ロボットの少なくとも一部を撮像するカメラとを含む現実装置の３次元情報を記憶する記憶部と、
前記３次元情報に基づいて前記現実装置を仮想空間内に再現した仮想装置を生成し、前記現実装置の動作に前記仮想装置の動作を同期させ、前記仮想装置のカメラで撮像される第１画像を生成し、前記現実装置で撮像された第２画像と、前記第２画像に対応する前記第１画像との差に基づいて前記仮想装置の制御パラメータを調整する演算部と、
を有する、情報処理装置。
【請求項２】
前記記憶部は、前記第１画像内の２次元座標と、前記２次元座標に対応する前記仮想空間内の３次元座標と、前記仮想装置の制御パラメータとの関係を示すモデル情報を記憶しており、
前記演算部は、複数の前記第１画像及び前記第２画像の組について、前記第１画像内で設定された第１特徴点の２次元座標と、前記第１特徴点に対応する前記仮想空間内の３次元座標と、前記第１特徴点に対応する前記第２画像内にある第２特徴点の２次元座標と、前記第１画像の撮像時における前記仮想装置の制御パラメータとを取得し、前記モデル情報に基づいて前記現実装置の制御パラメータと前記仮想装置の制御パラメータとの間の誤差を計算する
請求項１に記載の情報処理装置。
【請求項３】
前記演算部は、前記３次元情報を利用して前記対象物又は前記ロボットの角部を抽出し、抽出した前記角部に対応する前記第１画像内の２次元座標を前記第１特徴点の２次元座標に設定する
請求項２に記載の情報処理装置。
【請求項４】
前記第１特徴点の２次元座標は、１枚の前記第１画像について複数設定される
請求項２又は３に記載の情報処理装置。
【請求項５】
前記演算部は、前記誤差を計算する際に、前記第１特徴点の２次元座標のそれぞれについて計算結果への寄与度を計算し、設定した閾値よりも前記寄与度が小さい前記第１特徴点の情報を前記記憶部に記憶させ、後に前記誤差を計算する際には前記寄与度が小さい前記第１特徴点の２次元座標の利用を除外する
請求項４に記載の情報処理装置。
【請求項６】
対象物と、前記対象物が設置されるロボットと、前記対象物及び前記ロボットの少なくとも一部を撮像するカメラとを含む現実装置の３次元情報を記憶するメモリを有するコンピュータが、
前記３次元情報に基づいて前記現実装置を仮想空間内に再現した仮想装置を生成し、前記現実装置の動作に前記仮想装置の動作を同期させ、前記仮想装置のカメラで撮像される第１画像を生成し、前記現実装置で撮像された第２画像と、前記第２画像に対応する前記第１画像との差に基づいて前記仮想装置の制御パラメータを調整する
制御方法。
【請求項７】
対象物と、前記対象物が設置されるロボットと、前記対象物及び前記ロボットの少なくとも一部を撮像するカメラとを含む現実装置の３次元情報を記憶するメモリを有するコンピュータに、
前記３次元情報に基づいて前記現実装置を仮想空間内に再現した仮想装置を生成し、前記現実装置の動作に前記仮想装置の動作を同期させ、前記仮想装置のカメラで撮像される第１画像を生成し、前記現実装置で撮像された第２画像と、前記第２画像に対応する前記第１画像との差に基づいて前記仮想装置の制御パラメータを調整する処理を実行させる
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ものづくりの現場では、組み立て装置や検査装置などの様々な装置が使用される。こうした装置はワーク（対象物）の位置や姿勢を制御するロボットを有する。さらに、こうした装置には、オペレータがワークやロボットの位置や姿勢を確認したり、ワークの外観を視認したりすることができるように装置内にカメラが設置される。オペレータは、カメラで撮像した撮像画像を見ながらロボットなどを制御する操作を行う。また、カメラで撮像した撮像画像は、ロボットのキャリブレーションに利用されることもある。
【０００３】
例えば、カメラで撮像したワークの画像情報から、ワークの位置情報を計測する第１の方法が提案されている。第１の方法には、ワーク置場に載置されているワークの基準位置を示すマスタデータが利用される。このマスタデータはＣＡＤ（Computer Aided Design）情報を用いて得られるデータである。第１の方法に係る装置は、撮像画像から得られたワークの３次元特徴点位置と、マスタデータが示すワークの３次元特徴点位置とのずれ量を計算し、計算したずれ量を利用してロボットアームの軌道を補正する。
【０００４】
なお、ステレオカメラの撮像画像から抽出した特徴点に基づき、カメラ座標系とロボット座標系とを変換する剛体変換行列を計算する第２の方法が提案されている。第２の方法に係る装置は、最小二乗法を利用して、カメラ座標系における冶具座標系の原点座標を推定する。また、ロボットにマーカを固定し、３次元空間上に複数の基準点を設定し、ロボットを操作してマーカを各々の基準点に位置決めし、基準点とマーカをカメラ画像に投影した位置との差分を最小化するパラメータを計算する第３の方法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２４８２１４号公報
【特許文献２】特開２０１１−０１１３２１号公報
【特許文献３】特開２００６−１１０７０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、ワークやロボットなどが設置された現実装置を仮想空間内に再現した仮想装置を利用して、現実装置の制御や検査作業などを補助するシステムについて考える。
現実装置内に設置されたロボットの部品やワークは３次元ＣＡＤデータなどの３次元情報により記述できる。また、仮想装置内に設置されたロボットの部品やワークも３次元情報により記述できる。そのため、現実装置の３次元情報に基づいて仮想装置を同期制御することが可能である。
【０００７】
但し、設計誤差などにより現実装置と３次元情報とにずれが生じている場合、仮想装置を利用して検査や教示などを行うと作業結果にずれの影響が出る。そこで、本件発明者は、仮想装置のキャリブレーション方法について鋭意検討を行った。
【０００８】
１つの側面によれば、本発明の目的は、簡易にキャリブレーションを実現することが可能な情報処理装置、制御方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本開示の１つの側面によれば、対象物と、対象物が設置されるロボットと、対象物及びロボットの少なくとも一部を撮像するカメラとを含む現実装置の３次元情報を記憶する記憶部と、３次元情報に基づいて現実装置を仮想空間内に再現した仮想装置を生成し、現実装置の動作に仮想装置の動作を同期させ、仮想装置のカメラで撮像される第１画像を生成し、現実装置で撮像された第２画像と、第２画像に対応する第１画像との差に基づいて仮想装置の制御パラメータを調整する演算部と、を有する、情報処理装置が提供される。
【００１０】
本開示の他の１つの側面によれば、対象物と、対象物が設置されるロボットと、対象物及びロボットの少なくとも一部を撮像するカメラとを含む現実装置の３次元情報を記憶するメモリを有するコンピュータが、３次元情報に基づいて現実装置を仮想空間内に再現した仮想装置を生成し、現実装置の動作に仮想装置の動作を同期させ、仮想装置のカメラで撮像される第１画像を生成し、現実装置で撮像された第２画像と、第２画像に対応する第１画像との差に基づいて仮想装置の制御パラメータを調整する制御方法が提供される。
【００１１】
本開示の他の１つの側面によれば、対象物と、対象物が設置されるロボットと、対象物及びロボットの少なくとも一部を撮像するカメラとを含む現実装置の３次元情報を記憶するメモリを有するコンピュータに、３次元情報に基づいて現実装置を仮想空間内に再現した仮想装置を生成し、現実装置の動作に仮想装置の動作を同期させ、仮想装置のカメラで撮像される第１画像を生成し、現実装置で撮像された第２画像と、第２画像に対応する第１画像との差に基づいて仮想装置の制御パラメータを調整する処理を実行させるプログラムが提供される。
【発明の効果】
【００１２】
以上説明したように本発明によれば、簡易にキャリブレーションを実現することが可能になる。
【図面の簡単な説明】
【００１３】
【図１】第１実施形態に係るシステムの一例を示した図である。
【図２】第２実施形態に係るシステムの一例を示した図である。
【図３】第２実施形態に係る現実装置の一例を示した図である。
【図４】第２実施形態に係る現実装置の機構について説明するための図である。
【図５】第２実施形態に係る制御装置の機能を実現可能なハードウェアの一例を示した図である。
【図６】第２実施形態に係る制御装置が有する機能について説明するための図である。
【図７】第２実施形態に係る情報処理装置が有する機能について説明するための図である。
【図８】第２実施形態に係るシステムが行う動作の一例を示した図である。
【図９】第２実施形態に係る情報処理装置が実行する検査範囲の抽出処理について説明するための図である。
【図１０】第２実施形態に係る現実装置と仮想装置との間で生じる誤差の誤差要因について説明するための図である。
【図１１】第２実施形態に係る特徴点の指定方法及びキャリブレーションに利用されるパラメータの例について説明するための図である。
【図１２】第２実施形態に係る特徴点の自動抽出方法について説明するための図である。
【図１３】第２実施形態に係る情報処理装置が実行するキャリブレーション処理の流れを示したフロー図である。
【図１４】第２実施形態に係る情報処理装置が実行するキャリブレーション処理の中で実行されるパラメータ計算の処理フローを示したフロー図である。
【図１５】第２実施形態の一変形例に係る特徴点の指定方法及びキャリブレーションに利用されるパラメータの例について説明するための図である。
【図１６】第２実施形態の一変形例に係る情報処理装置が実行するキャリブレーション処理の中で実行されるパラメータ計算の処理フローを示したフロー図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照しながら、本発明の実施形態について説明する。なお、本明細書及び図面において実質的に同一の機能を有する要素については、同一の符号を付することにより重複説明を省略する場合がある。
【００１５】
＜１．第１実施形態＞
図１を参照しながら、第１実施形態について説明する。図１は、第１実施形態に係るシステムの一例を示した図である。
【００１６】
図１に示すように、第１実施形態に係るシステムは、現実装置１０、及び情報処理装置２０を含む。現実装置１０は、対象物ＯＢＪと、対象物ＯＢＪが設置されるロボットと、対象物ＯＢＪ及びロボットの少なくとも一部を撮像するカメラとを含む。
【００１７】
情報処理装置２０は、記憶部２１及び演算部２２を有する。
記憶部２１の機能は、ＲＡＭ（Random Access Memory）などの揮発性記憶装置、或いは、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置により実現される。
【００１８】
演算部２２の機能は、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサにより実現される。演算部２２の機能は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などのプロセッサ以外の電子回路を利用して実現することも可能である。
【００１９】
演算部２２は、例えば、記憶部２１又は他のメモリに記憶されたプログラムを実行する。
記憶部２１は、現実装置１０の３次元情報を記憶する。例えば、記憶部２１は、現実装置１０に含まれる対象物ＯＢＪやロボットの形状や位置などを示す３次元ＣＡＤデータを記憶する。つまり、現実装置１０の設計情報が記憶部２１に記憶されている。演算部２２は、記憶部２１が記憶している３次元情報に基づいて現実装置１０を仮想空間内に再現した仮想装置２３を生成する。
【００２０】
図１に示すように、仮想装置２３は、現実装置１０のカメラに対応するカメラ２４、及び現実装置１０のロボットに対応するロボット２５を含む。また、現実装置１０のロボットに対象物ＯＢＪが設置されている場合には、仮想装置２３のロボット２５にも対象物ＯＢＪが設置される。演算部２２は、現実装置１０の動作に仮想装置２３の動作を同期させる。つまり、演算部２２は、現実装置１０の状態が変更されると、変更後の現実装置１０の状態と同じ状態になるように仮想装置２３の状態を制御する。
【００２１】
例えば、現実装置１０においてカメラを制御する制御パラメータＢが変更された場合には、演算部２２によりカメラ２４の制御パラメータＢが同じ値に変更される。同様に、現実装置１０においてロボットを制御する制御パラメータＡが変更された場合には、演算部２２によりロボット２５の制御パラメータＡが同じ値に変更される。現実装置１０に含まれる他の機構を制御する制御パラメータが変更された場合も、その制御パラメータに対応する仮想装置２３の制御パラメータが演算部２２により変更される。
【００２２】
演算部２２は、仮想装置２３のカメラ２４で撮像される第１画像Ｐ１を生成する。仮想装置２３では現実装置１０の環境が再現されているため、シミュレーションによりカメラ２４で撮像される第１画像Ｐ１は、現実装置１０で撮像された第２画像Ｐ２と同じ画像となる。但し、現実装置１０を製造する段階で設置誤差や組み立て誤差などが生じると、設計情報である３次元情報に基づいて生成された仮想装置２３と現実装置１０との間でずれが生じる。この場合、現実装置１０で撮像された第２画像Ｐ２と、仮想装置２３で撮像された第１画像Ｐ１との間にもずれが生じる。
【００２３】
演算部２２は、現実装置１０で撮像された第２画像Ｐ２と、第２画像Ｐ２に対応する第１画像Ｐ１との差に基づいて仮想装置２３の制御パラメータＡ、Ｂ、…を調整する。第１画像Ｐ１上の１点を示す２次元座標（以下、２次元座標ｘｖ）は、３次元情報を利用することで、その点に対応する仮想空間内の３次元座標Ｑ、及び制御パラメータＡ、Ｂ、…から決まる。つまり、２次元座標ｘｖ、３次元座標Ｑ、制御パラメータＡ、Ｂ、…の関係を表現するモデルを構築することができる。現実装置１０についても同様である。
【００２４】
第１画像Ｐ１上で特徴点を決めると、特徴点の２次元座標ｘｖ、第１画像Ｐ１の生成時に設定されている仮想装置２３の制御パラメータＡ、Ｂ、…、及び、２次元座標ｘｖに対応する３次元座標Ｑが得られる。また、第１画像Ｐ１上の特徴点に対応する第２画像Ｐ２上の特徴点が決まると、特徴点の２次元座標（以下、２次元座標ｘｒ）が得られる。
【００２５】
演算部２２は、例えば、第１画像Ｐ１及び第２画像Ｐ２の組を複数用意し、特徴点について２次元座標ｘｖ、ｘｒ、３次元座標Ｑ、及び仮想装置２３の制御パラメータＡ、Ｂ、…を取得する。そして、演算部２２は、取得した情報及び上記のモデルを利用して現実装置１０の制御パラメータＡ、Ｂ、…と仮想装置２３の制御パラメータＡ、Ｂ、…との間の誤差ｄＡ、ｄＢ、…を推定する。例えば、演算部２２は、最小二乗法などを利用して制御パラメータの誤差ｄＡ、ｄＢ、…を計算する。計算結果を得た演算部２２は、計算した制御パラメータの誤差ｄＡ、ｄＢ、…を仮想装置２３の制御パラメータＡ、Ｂ、…に適用する。例えば、演算部２２は、仮想装置２３の制御パラメータをＡ＋ｄＡ、Ｂ＋ｄＢ、…とする。
【００２６】
上記の方法によれば、ステレオ画像などの３次元的な画像情報を利用せず、２次元画像だけを利用して容易に仮想装置２３の制御パラメータを調整することが可能になる。また、上記の方法によれば、現実装置１０側及び仮想装置２３側において通常の運用時に利用される撮像画像を利用してキャリブレーションが行える。そのため、追加設備を設けずに済み、キャリブレーション機能の追加によるコストの増加を抑制できる。
【００２７】
以上、第１実施形態について説明した。
＜２．第２実施形態＞
次に、第２実施形態について説明する。
【００２８】
［２−１．システム］
まず、図２を参照しながら、第２実施形態に係るシステムについて説明する。図２は、第２実施形態に係るシステムの一例を示した図である。
【００２９】
図２に示すように、第２実施形態に係るシステムは、現実装置１００、制御装置２００、情報処理装置３００、及び表示装置２５０、３５０を含む。
現実装置１００は、カメラ１０１、設置台１０２、照明１０３、及びロボット１０４を有する。なお、カメラ１０１、設置台１０２、照明１０３、及びロボット１０４の動作は、制御装置２００により制御される。
【００３０】
カメラ１０１は、ロボット１０４に設置されたワークＷＫを含む範囲を撮像する撮像デバイスである。カメラ１０１は、例えば、レンズなどの光学系、ＣＣＤ（Charge Coupled Device）やＣＭＯＳ（Complementary Metal-Oxide Semiconductor）などの撮像素子、及び、Ａ／Ｄ変換やデジタル信号処理などを実行する画像処理プロセッサなどを含む。
【００３１】
設置台１０２は、照明１０３やロボット１０４を固定する台である。照明１０３は、設置台１０２上に設置され、ロボット１０４に設置されたワークＷＫを含む領域を照明する光源である。ロボット１０４は、ワークＷＫを把持し、ワークＷＫの位置を移動させたり、ワークＷＫの姿勢を変えたりする機構である。
【００３２】
現実装置１００は、例えば、ワークＷＫ表面の状態検査などに利用される。この場合、現実装置１００は、メッシュパターンなどの照明パターンをワークＷＫの表面に映し込み、照明パターンが映り込んだワークＷＫを撮像する。このようにして撮像された撮像画像から、ワークＷＫに映り込んだ照明パターンの形状を分析することで、ワークＷＫの表面に付いたキズや凹みなどの欠陥を検出することができる。
【００３３】
ワークＷＫが立体的な形状である場合、ワークＷＫ表面の限られた範囲（検査視野）にしか照明パターンが映し込まれない場合がある。そのため、現実装置１００は、ロボット１０４を利用してワークＷＫの位置や姿勢を変化させながら、照明パターンが映り込んだワークＷＫをカメラ１０１により撮像する。
【００３４】
ワークＷＫの位置や姿勢を変化させながら撮像された複数の撮像画像を利用することで、ワークＷＫ表面の広い範囲について照明パターンの形状を分析することができる。なお、カメラ１０１の位置や姿勢を変化させてもよいが、第２実施形態においてはカメラ１０１を固定してワークＷＫの位置や姿勢を変化させる場合を例に説明を進める。
【００３５】
上記のように、現実装置１００を利用すれば、複数の検査視野から撮像したワークＷＫの撮像画像を得ることができる。なお、検査視野の決定はオペレータが行う。
ワークＷＫの位置や姿勢を変化させると変化前の検査視野がワークＷＫ表面のどの範囲であったかをオペレータが正確に認識することは難しい。そこで、第２実施形態に係るシステムは、検査視野をオペレータが容易に認識できるようにする仕組みを提供する。この仕組みを適用することで、ワークＷＫの一部範囲について検査漏れが生じてしまうことや、検査漏れを避けようとして検査視野の重複が過剰になり検査時間が増大してしまうことを抑制する効果が期待できる。
【００３６】
上記のような現実装置１００の動作は、制御装置２００により制御される。制御装置２００は、通信回線を介して情報処理装置３００に接続されている。例えば、制御装置２００は、ソケット通信を利用して現実装置１００の制御情報などを情報処理装置３００に送信する。
【００３７】
制御装置２００は、表示装置２５０に接続されている。表示装置２５０は、例えば、ＣＲＴ（Cathode Ray Tube）、ＬＣＤ（Liquid Crystal Display）、ＰＤＰ（Plasma Display Panel）、ＥＬＤ（Electro-Luminescence Display）などのディスプレイ装置である。制御装置２００は、カメラ１０１による撮像画像を表示装置２５０に表示させる。オペレータは、表示装置２５０の撮像画像を見ながら操作を行う。
【００３８】
情報処理装置３００は、現実装置１００の３次元ＣＡＤデータを保持し、３次元ＣＡＤデータを利用して現実装置１００を仮想空間内に再現した仮想装置を生成する。また、情報処理装置３００は、現実装置１００の制御情報などを受信し、受信した制御情報に基づいて仮想装置の動作をシミュレートする。
【００３９】
情報処理装置３００は、検査視野に対応するワークＷＫ表面の範囲を計算する。そして、情報処理装置３００は、計算した検査視野に対応するワークＷＫ表面の範囲（検査範囲）を示す情報を制御装置２００に送信する。
【００４０】
情報処理装置３００は、表示装置３５０に接続されている。表示装置３５０は、例えば、ＣＲＴ、ＬＣＤ、ＰＤＰ、ＥＬＤなどのディスプレイ装置である。情報処理装置３００は、仮想装置内で仮想的に撮像されたワークＷＫの撮像画像を表示装置３５０に表示させる。情報処理装置３００は、検査範囲を表示装置３５０に表示した撮像画像に重畳して表示させる。
【００４１】
また、情報処理装置３００は、検査視野に対応するワークＷＫの範囲を３次元ＣＡＤデータに変換して保持する。検査範囲の情報は、適宜、制御装置２００に送信され、表示装置２５０に表示された撮像画像に重畳して表示される。
【００４２】
以上、第２実施形態に係るシステムについて説明した。なお、照明パターンの映り込みを利用した検査方法を例に挙げて説明したが他の検査方法についても第２実施形態に係るシステムを適用可能である。以下では、第２実施形態に係るシステムに含まれる装置のハードウェア、機能、及び処理フローについて説明する。
【００４３】
［２−２．ハードウェア］
図３〜図５を参照しながら、第２実施形態に係るシステムに含まれる装置のハードウェアについて説明する。図３は、第２実施形態に係る現実装置の一例を示した図である。図４は、第２実施形態に係る現実装置の機構について説明するための図である。図５は、第２実施形態に係る制御装置の機能を実現可能なハードウェアの一例を示した図である。
【００４４】
（現実装置）
図３及び図４を参照しながら、現実装置１００のハードウェアについて説明する。
図３に示すように、現実装置１００は、カメラ１０１、設置台１０２、照明１０３、Ｘ機構１１１、Ｙ機構１１２、第１回転機構１１３、第２回転機構１１４、及び把持機構１１５を有する。Ｘ機構１１１、Ｙ機構１１２、第１回転機構１１３、第２回転機構１１４、及び把持機構１１５は、設置機構の一例である。
【００４５】
Ｘ機構１１１は設置台１０２上に設置される。Ｙ機構１１２はＸ機構１１１上に設置される。第１回転機構１１３はＹ機構１１２上に設置される。第２回転機構１１４は第１回転機構１１３上に設置される。第２回転機構１１４には把持機構１１５が設けられている。把持機構１１５にはワークＷＫが設置される。
【００４６】
図４に示すように、Ｘ機構１１１は、Ｘ方向に沿って矢印ａが示すように移動する機構である。Ｘ機構１１１の移動に伴い、Ｙ機構１１２、第１回転機構１１３、第２回転機構１１４、把持機構１１５、及びワークＷＫはＸ方向に移動する。Ｙ機構１１２は、Ｘ方向と直交するＹ方向に沿って矢印ｂが示すように移動する機構である。Ｙ機構１１２の移動に伴い、第１回転機構１１３、第２回転機構１１４、把持機構１１５、及びワークＷＫはＹ方向に移動する。
【００４７】
第１回転機構１１３は、Ｘ−Ｙ面内で矢印ｃが示すように回転する。第１回転機構１１３の回転に伴い、第２回転機構１１４、把持機構１１５、及びワークＷＫはＸ−Ｙ面内で回転する。第２回転機構１１４は、Ｚ方向からＸ−Ｙ面へ把持機構１１５を傾倒させる向きに回転する（矢印ｄが示すように回転する。）。第２回転機構１１４の回転に伴い、把持機構１１５及びワークＷＫはＺ方向からＸ−Ｙ面へ回転角度の分だけ傾倒する。
【００４８】
Ｘ機構１１１及びＹ機構１１２の動作によりワークＷＫの位置は移動する。また、第１回転機構１１３及び第２回転機構１１４の動作によりワークＷＫの姿勢は変化する。従って、Ｘ機構１１１、Ｙ機構１１２、第１回転機構１１３、及び第２回転機構１１４の動作を制御することで検査視野を自由に調整することができる。
【００４９】
（制御装置、情報処理装置）
次に、図５を参照しながら、制御装置２００のハードウェアについて説明する。
制御装置２００が有する機能は、例えば、図５に示す情報処理装置のハードウェア資源を用いて実現することが可能である。つまり、制御装置２００が有する機能は、コンピュータプログラムを用いて図５に示すハードウェアを制御することにより実現される。
【００５０】
図５に示すように、このハードウェアは、主に、ＣＰＵ９０２と、ＲＯＭ（Read Only Memory）９０４と、ＲＡＭ９０６と、ホストバス９０８と、ブリッジ９１０とを有する。さらに、このハードウェアは、外部バス９１２と、インターフェース９１４と、入力部９１６と、出力部９１８と、記憶部９２０と、ドライブ９２２と、接続ポート９２４と、通信部９２６とを有する。
【００５１】
ＣＰＵ９０２は、例えば、演算処理装置又は制御装置として機能し、ＲＯＭ９０４、ＲＡＭ９０６、記憶部９２０、又はリムーバブル記録媒体９２８に記録された各種プログラムに基づいて各構成要素の動作全般又はその一部を制御する。
【００５２】
ＲＯＭ９０４は、ＣＰＵ９０２に読み込まれるプログラムや演算に用いるデータなどを格納する記憶装置の一例である。ＲＡＭ９０６には、例えば、ＣＰＵ９０２に読み込まれるプログラムや、そのプログラムを実行する際に変化する各種パラメータなどが一時的又は永続的に格納される。
【００５３】
これらの要素は、例えば、高速なデータ伝送が可能なホストバス９０８を介して相互に接続される。一方、ホストバス９０８は、例えば、ブリッジ９１０を介して比較的データ伝送速度が低速な外部バス９１２に接続される。
【００５４】
また、入力部９１６としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、ボタン、スイッチ、レバーなどが用いられる。さらに、入力部９１６としては、赤外線やその他の電波を利用して制御信号を送信することが可能なリモートコントローラが用いられることもある。
【００５５】
出力部９１８は、例えば、ＣＲＴ、ＬＣＤ、ＰＤＰ、ＥＬＤなどのディスプレイ装置に画像信号を出力するビデオ出力デバイスである。また、出力部９１８として、スピーカやヘッドホンなどのオーディオ出力装置、又はプリンタなどが用いられることもある。つまり、出力部９１８は、視覚的又は聴覚的な情報を出力することが可能な装置である。
【００５６】
記憶部９２０は、各種のデータを格納するための装置である。記憶部９２０としては、例えば、ＨＤＤなどの磁気記憶デバイスが用いられる。また、記憶部９２０として、ＳＳＤ（Solid State Drive）やＲＡＭディスクなどの半導体記憶デバイス、光記憶デバイス、又は光磁気記憶デバイスなどが用いられてもよい。
【００５７】
ドライブ９２２は、着脱可能な記録媒体であるリムーバブル記録媒体９２８に記録された情報を読み出し、又はリムーバブル記録媒体９２８に情報を書き込む装置である。リムーバブル記録媒体９２８としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどが用いられる。
【００５８】
接続ポート９２４は、例えば、ＵＳＢ（Universal Serial Bus）ポート、ＩＥＥＥ１３９４ポート、ＳＣＳＩ（Small Computer System Interface）、ＲＳ−２３２Ｃポート、又は光オーディオ端子など、外部接続機器９３０を接続するためのポートである。外部接続機器９３０としては、例えば、プリンタなどが用いられる。
【００５９】
通信部９２６は、ネットワーク９３２に接続するための通信デバイスである。通信部９２６としては、例えば、有線又は無線ＬＡＮ（Local Area Network）用の通信回路、ＷＵＳＢ（Wireless USB）用の通信回路、光通信用の通信回路やルータ、ＡＤＳＬ（Asymmetric Digital Subscriber Line）用の通信回路やルータ、携帯電話ネットワーク用の通信回路などが用いられる。通信部９２６に接続されるネットワーク９３２は、有線又は無線により接続されたネットワークであり、例えば、インターネット、ＬＡＮ、放送網、衛星通信回線などを含む。
【００６０】
なお、後述する情報処理装置３００の機能は、制御装置２００と同様に図５に例示したハードウェアにより実現することができる。従って、情報処理装置３００のハードウェアについては詳細な説明を省略する。
【００６１】
［２−３．制御装置の機能］
次に、図６を参照しながら、制御装置２００の機能について説明する。図６は、第２実施形態に係る制御装置が有する機能について説明するための図である。
【００６２】
図６に示すように、制御装置２００は、情報管理部２０１、ロボット制御部２０２、画像取得部２０３、光量調整部２０４、記憶部２０５、作業処理部２０６、及び表示制御部２０７を有する。
【００６３】
なお、情報管理部２０１、ロボット制御部２０２、画像取得部２０３、光量調整部２０４、作業処理部２０６、及び表示制御部２０７の機能は、上述したＣＰＵ９０２などを用いて実現できる。また、記憶部２０５の機能は、上述したＲＡＭ９０６や記憶部９２０などを用いて実現できる。
【００６４】
情報管理部２０１は、オペレータが入力した情報を取得する。情報管理部２０１が取得した情報は、ロボット制御部２０２、光量調整部２０４、作業処理部２０６に入力される。ロボット制御部２０２は、情報管理部２０１から入力された情報に応じてロボット１０４を制御する。また、ロボット制御部２０２は、ロボット１０４の制御情報を情報管理部２０１に入力する。この制御情報には、ロボット１０４が有する機構の制御パラメータが含まれる。情報管理部２０１は、ロボット制御部２０２から入力された制御情報を情報処理装置３００に送信する。
【００６５】
なお、上記制御情報は記憶部２０５に格納される。
画像取得部２０３は、カメラ１０１が撮像した撮像画像を現実装置１００から受信する。画像取得部２０３が受信した撮像画像は、記憶部２０５に格納される。光量調整部２０４は、情報管理部２０１から入力された情報に応じて照明１０３の光量を制御する。また、光量調整部２０４は、照明１０３の制御情報を情報管理部２０１に入力する。この制御情報には、照明１０３に設定する光量レベルの値を示す制御パラメータが含まれる。情報管理部２０１は、光量調整部２０４から入力された制御情報を情報処理装置３００に送信する。
【００６６】
なお、上記制御情報は記憶部２０５に格納される。
また、情報管理部２０１は、情報処理装置３００が計算した検査視野に関する情報を受信する。情報管理部２０１が受信した検査視野に関する情報は、記憶部２０５に格納される。
【００６７】
光量調整部２０４は、検査視野に関する情報に基づいて検査範囲が検査に適当な光量で照明されるように照明１０３の光量レベルを調整する。光量調整部２０４により照明１０３の光量レベルが調整された後、作業処理部２０６は、検査などの作業に関する処理を実行する。例えば、作業処理部２０６は、ワークＷＫの検査範囲に映り込んだ照明パターンを分析する。
【００６８】
表示制御部２０７は、記憶部２０５に格納された撮像画像を表示装置２５０に表示させる。また、記憶部２０５に検査視野に関する情報が格納されている場合、表示制御部２０７は、表示装置２５０に表示された撮像画像に重畳して検査範囲を表示させる。例えば、表示制御部２０７は、過去に作業処理部２０６による作業が済んでいる検査範囲を撮像画像に重畳して表示させる。
【００６９】
以上、制御装置２００の機能について説明した。
［２−４．情報処理装置の機能］
次に、図７を参照しながら、情報処理装置３００の機能について説明する。図７は、第２実施形態に係る情報処理装置が有する機能について説明するための図である。
【００７０】
図７に示すように、情報処理装置３００は、画像取得部３０１、記憶部３０２、シミュレータ３０３、特徴点位置設定部３０５、３次元座標計算部３０６、差分計算部３０７、及びパラメータ計算部３０８を有する。
【００７１】
なお、画像取得部３０１、シミュレータ３０３、特徴点位置設定部３０５、３次元座標計算部３０６、差分計算部３０７、及びパラメータ計算部３０８の機能は、上述したＣＰＵ９０２などを用いて実現できる。記憶部３０２の機能は、上述したＲＡＭ９０６や記憶部９２０などを用いて実現できる。
【００７２】
画像取得部３０１は、制御装置２００を介して現実装置１００が撮像した撮像画像を取得する。画像取得部３０１が取得した撮像画像は、特徴点位置設定部３０５に入力される。記憶部３０２は、現実装置１００の３次元ＣＡＤデータを記憶する。シミュレータ３０３は、記憶部３０２が記憶している３次元ＣＡＤデータを利用して仮想空間内に現実装置１００を再現した仮想装置３０４を生成する。シミュレータ３０３は、制御装置２００から現実装置１００の制御情報を取得する。シミュレータ３０３は、制御装置２００から取得した制御情報に基づいて仮想装置３０４を制御する。
【００７３】
例えば、シミュレータ３０３は、制御装置２００から取得したロボット１０４の制御情報に基づいて仮想装置３０４のロボットを同期制御する。また、シミュレータ３０３は、制御装置２００から取得した照明１０３の制御情報に基づいて仮想装置３０４の照明光量を制御する。こうした仮想装置３０４の制御により、仮想装置３０４内に現実装置１００内の環境が再現される。
【００７４】
シミュレータ３０３は、仮想装置３０４を利用してシミュレーションを実行し、現実装置１００のカメラ１０１が撮像した撮像画像を生成する。例えば、シミュレータ３０３は、光学シミュレーションを実行してワークへの照明の映り込みを計算し、計算結果を反映した撮像画像（仮想装置３０４の撮像画像）を生成する。撮像画像の計算には、例えば、レイトレーシング法、ラジオシティ法、フォトンマッピング法、環境マッピング法などのレンダリング手法が用いられる。
【００７５】
シミュレータ３０３により生成された仮想装置３０４の撮像画像は、特徴点位置設定部３０５に入力される。また、撮像画像の計算時に用いた仮想装置３０４の制御パラメータＡ，Ｂ，Ｃは、３次元座標計算部３０６に入力される。なお、制御パラメータＡ，Ｂ，Ｃは、それぞれベクトル量であってもよい。
【００７６】
制御パラメータＡは、カメラの内部パラメータである。例えば、制御パラメータＡは、カメラの光軸方向やレンズパラメータなどである。
制御パラメータＢは、ロボットの内部パラメータである。例えば、制御パラメータＢは、ロボットの各機構に関する位置や姿勢を決めるパラメータなどである。
【００７７】
制御パラメータＣは、カメラとロボットとの間の相対関係を規定するパラメータである。例えば、制御パラメータＣは、ある絶対座標を基準としてカメラの位置や姿勢、及びロボットの位置や姿勢などである。ここでは簡単のために上記の制御パラメータを考慮するが、実施の態様に応じて適宜、制御パラメータの追加や省略が可能である。
【００７８】
特徴点位置設定部３０５は、現実装置１００の撮像画像上及び仮想装置３０４の撮像画像上で互いに対応する特徴点を設定する。例えば、特徴点位置設定部３０５は、オペレータが両撮像画像に対して指定した点を特徴点に設定する。
【００７９】
なお、特徴点位置設定部３０５は、両撮像画像にエッジ検出処理を施し、互いに対応するエッジ位置を特徴点に設定してもよい。例えば、画素値の１次微分から計算した勾配方向からエッジの局所的な方向を予測し、予測した方向の勾配が局所的に極大となる部分を探索する探索ベースの手法や、対象画像から計算した２次微分式を利用するゼロ交差法ベースの手法などが利用できる。
【００８０】
特徴点位置設定部３０５により設定された特徴点の情報は、３次元座標計算部３０６及び差分計算部３０７に入力される。３次元座標計算部３０６には、仮想装置３０４の撮像画像上で設定された特徴点の２次元座標ｘvが入力される。差分計算部３０７には、仮想装置３０４の撮像画像上で設定された特徴点の２次元座標ｘv、及び現実装置１００の撮像画像上で設定された特徴点の２次元座標ｘrが入力される。
【００８１】
３次元座標計算部３０６は、特徴点位置設定部３０５から入力された２次元座標ｘvに対応する仮想空間内の３次元座標Ｑを計算する。このとき、３次元座標計算部３０６は、シミュレータ３０３から入力された制御パラメータＡ，Ｂ，Ｃ、特徴点位置設定部３０５から入力された２次元座標ｘv、及び記憶部３０２が記憶している３次元ＣＡＤデータなどを利用する。
【００８２】
なお、ポリゴンモデルを用いて仮想装置３０４を表現し、ＯｐｅｎＧＬ（Open Graphics Library；登録商標）により描画している場合、gluUnProject()を利用すれば、２次元座標ｘvを容易に３次元座標Ｑへと変換することができる。もちろん、同様の別手法を適用することもできる。
【００８３】
上記のように、３次元座標Ｑは制御パラメータＢ，Ｃに依存する。そのため、以下の説明において３次元座標ＱをＱ（Ｂ，Ｃ）と表現する場合がある。制御パラメータＡ，Ｂ，Ｃ、及び３次元座標計算部３０６により計算された３次元座標Ｑはパラメータ計算部３０８に入力される。差分計算部３０７は、２つの２次元座標ｘv、ｘrの差分ｄｘ（ｄｘ＝ｘv−ｘr）を計算する。差分計算部３０７により計算された差分ｄｘは、パラメータ計算部３０８に入力される。
【００８４】
パラメータ計算部３０８は、３次元座標計算部３０６から入力された制御パラメータＡ，Ｂ，Ｃ、３次元座標Ｑ、及び差分計算部３０７から入力された差分ｄｘを利用して、制御パラメータの誤差ｄＡ、ｄＢ、ｄＣを推定する。
【００８５】
仮想装置３０４における２次元座標ｘvと、制御パラメータＡ，Ｂ，Ｃ及び３次元座標Ｑとの関係は、下記の式（１）に示したモデルｆで表現される。設計誤差などが存在しない理想的な状態であれば現実装置１００も同じモデルで表現される。下記の式（１）から、制御パラメータＡ，Ｂ，Ｃの微小変化ｄＡ、ｄＢ、ｄＣは、２次元座標の微小変化ｄｘにより下記の式（２）のように表現することができる。従って、２次元座標ｘv、ｘrの差分ｄｘを下記の式（２）に代入すれば、制御パラメータの誤差ｄＡ、ｄＢ、ｄＣに関する関係式が得られる。
【００８６】
【数１】
2015024480.tif 000003
【００８７】
【数２】
2015024480.tif 000004
【００８８】
パラメータ計算部３０８は、上記の式（２）に対し、制御パラメータＡ，Ｂ，Ｃ、３次元座標Ｑ、及び差分計算部３０７から入力された差分ｄｘを代入し、制御パラメータの誤差ｄＡ、ｄＢ、ｄＣに関する関係式を生成する。パラメータ計算部３０８は、複数の撮像画像について生成した制御パラメータの誤差ｄＡ、ｄＢ、ｄＣに関する関係式を利用し、最小二乗法を用いて制御パラメータの誤差ｄＡ、ｄＢ、ｄＣを推定する。
【００８９】
パラメータ計算部３０８により推定された制御パラメータの誤差ｄＡ、ｄＢ、ｄＣは記憶部３０２に格納される。シミュレータ３０３は、記憶部３０２に格納された制御パラメータの誤差ｄＡ、ｄＢ、ｄＣを用いて仮想装置３０４の制御パラメータＡ，Ｂ，Ｃを補正する。例えば、シミュレータ３０３は、現実装置１００から取得した制御パラメータＡ，Ｂ，Ｃに誤差ｄＡ，ｄＢ，ｄＣを適用した制御パラメータＡ＋ｄＡ，Ｂ＋ｄＢ，Ｃ＋ｄＣに基づいて仮想装置３０４を生成する。そして、制御パラメータＡ＋ｄＡ，Ｂ＋ｄＢ，Ｃ＋ｄＣに基づいて生成された仮想装置３０４におけるシミュレーション結果が現実装置１００側へとフィードバックされる。
【００９０】
以上、情報処理装置３００の機能について説明した。
［２−５．キャリブレーション方法の適用例について］
次に、第２実施形態に係るキャリブレーション方法の適用例について説明する。
【００９１】
（システムの基本動作）
まず、図８を参照しながら、第２実施形態に係るシステムの基本動作について説明する。図８は、第２実施形態に係るシステムが行う動作の一例を示した図である。
【００９２】
図８に示すように、第２実施形態に係るシステムでは、現実装置１００を仮想化した仮想装置３０４が生成され、仮想装置３０４が現実装置１００の動作に同期して制御される（Ｓ１）。
【００９３】
また、仮想装置３０４の環境下でシミュレーションが実行され、仮想装置３０４のカメラで撮像された撮像画像が取得される（Ｓ２）。
例えば、光学シミュレーションによりワーク上に映り込んだ照明の範囲が計算され、照明の範囲から検査条件を満たす範囲が検査範囲として抽出される（Ｓ３）。
【００９４】
抽出された検査範囲の情報が現実装置１００側へとフィードバックされ、現実装置１００における照明の光量レベルを最適化する制御や、検査範囲の教示に利用される（Ｓ４）。
【００９５】
（検査範囲の抽出方法）
ここで、図９を参照しながら、情報処理装置３００が実行する検査範囲の抽出処理について説明する。図９は、第２実施形態に係る情報処理装置が実行する検査範囲の抽出処理について説明するための図である。
【００９６】
上記の検査範囲は、ワークの形状やシミュレーション結果に基づいて抽出される。ワークの外観検査を行う場合、ワーク以外の範囲は検査対象外である。また、カメラの撮像面に対する角度が大きいワーク面は精度良く検査できない場合があるため、検査対象外に設定される。さらに、メッシュパターンなどの照明パターンをワーク表面に映り込ませて検査する手法を適用する場合、照明パターンが映り込む範囲が検査対象となる。
【００９７】
ワークが映っている範囲、及び撮像面に対する角度が大きいワーク面の範囲は、３次元ＣＡＤデータを利用すれば計算することができる。これらの範囲は、ワーク形状に基づく範囲として抽出される（Ｓ３１）。
【００９８】
一方、照明パターンが映り込む範囲は、光学シミュレーションの結果を利用し、ワーク表面の輝度が設定した輝度以上の範囲を抽出することで計算することができる。この範囲は、反射輝度に基づく範囲として抽出される（Ｓ３２）。
【００９９】
最終的な検査範囲は、ワーク形状に基づく範囲と反射輝度に基づく範囲との重複範囲を計算することにより抽出される（Ｓ３３）。
なお、検査範囲は撮像画像上の２次元範囲として抽出されるが、情報処理装置３００により２次元範囲の点を３次元ＣＡＤデータに基づいて３次元座標点に変換し、３次元ＣＡＤデータの形式で表現された部品データとして保存しておいてもよい。
【０１００】
（誤差要因について）
ここで、図１０を参照しながら、現実装置１００と仮想装置３０４との間で生じる誤差の誤差要因について説明する。図１０は、第２実施形態に係る現実装置と仮想装置との間で生じる誤差の誤差要因について説明するための図である。
【０１０１】
現実装置１００と仮想装置３０４（３次元ＣＡＤデータ）とのずれは、様々な要因により生じうる。例えば、カメラの光軸方向、レンズパラメータ、現実装置１００上に設定した絶対座標に対するカメラの位置や姿勢が何らかの理由で設計値からずれることが現実装置１００と仮想装置３０４との間の誤差を生み出す。
【０１０２】
また、ロボットの製作・組み立て時に生じる誤差、ロボットを駆動するモータの初期値ずれ、現実装置１００上に設定した絶対座標に対するロボットの位置や姿勢のずれも現実装置１００と仮想装置３０４との間の誤差を生み出す。その他にも、シミュレーション結果に影響を与える照明の位置ずれやワークの成型・設置誤差などが誤差要因となる。
【０１０３】
（キャリブレーション処理）
上記のような誤差を補正する処理がキャリブレーション処理である。ここで、図１１及び図１２を参照しながら、第２実施形態に係るキャリブレーション処理について説明する。図１１は、第２実施形態に係る特徴点の指定方法及びキャリブレーションに利用されるパラメータの例について説明するための図である。図１２は、第２実施形態に係る特徴点の自動抽出方法について説明するための図である。
【０１０４】
第２実施形態に係るキャリブレーション処理には、仮想装置３０４の撮像画像上で指定された第１特徴点と、現実装置１００の撮像画像上で指定された第２特徴点とが利用される。第１特徴点と第２特徴点とは互いに対応する部分に位置する。例えば、第１特徴点及び第２特徴点はワークの角部などに設定される。
【０１０５】
なお、第１特徴点及び第２特徴点の指定はオペレータが手動で行ってもよいし、図１２に示すように、撮像画像のエッジ検出などを利用して情報処理装置３００が自動で実行してもよい。
【０１０６】
図１１に示すように、第１特徴点が指定されると、第１特徴点の位置を示す撮像画像上の２次元座標ｘvが得られる。また、撮像画像を取得した際の仮想装置３０４における制御パラメータＡ，Ｂ，Ｃが得られる。図１１の例では、制御パラメータＡをカメラパラメータ、制御パラメータＢをロボットパラメータ、制御パラメータＣをカメラ・ロボット間の相対位置に関するパラメータと呼んでいる。
【０１０７】
さらに、３次元ＣＡＤデータ及び制御パラメータＡ，Ｂ，Ｃから２次元座標ｘvに対応する３次元座標Ｑが得られる。一方、第２特徴点が指定されると、第２特徴点の位置を示す撮像画像上の２次元座標ｘrが得られる。但し、現実装置１００の制御パラメータＡ，Ｂ，Ｃと、仮想装置３０４の制御パラメータＡ，Ｂ，Ｃとの間の誤差ｄＡ，ｄＢ，ｄＣは未知である。そこで、情報処理装置３００は、上記の式（１）で表現されるモデル（及び上記の式（２））を利用し、最小二乗法を利用して制御パラメータの誤差ｄＡ，ｄＢ，ｄＣを推定する。推定した制御パラメータの誤差ｄＡ，ｄＢ，ｄＣは、仮想装置３０４の制御パラメータに設定される。つまり、撮像画像の違いから、現実装置１００の制御パラメータを推定し、推定した制御パラメータを用いて仮想装置３０４の制御パラメータが調整される。
【０１０８】
上記のキャリブレーション処理では、システムの運用に利用する撮像画像を利用して制御パラメータの調整が実現されるため、キャリブレーション用設備の追加が生じない。また、撮像画像上の２次元的な情報を比較して誤差を検出しているため、ステレオ画像上の３次元的な情報を比較して誤差を検出するような方法に比べると処理負荷が低い。従って、第２実施形態に係るキャリブレーション処理を適用することで、簡易にキャリブレーションを実現することが可能になる。
【０１０９】
［２−６．キャリブレーション処理の流れ］
次に、図１３及び図１４を参照しながら、第２実施形態に係るキャリブレーション処理の流れについて説明する。図１３は、第２実施形態に係る情報処理装置が実行するキャリブレーション処理の流れを示したフロー図である。図１４は、第２実施形態に係る情報処理装置が実行するキャリブレーション処理の中で実行されるパラメータ計算の処理フローを示したフロー図である。
【０１１０】
（全体的な流れ：図１３）
まず、キャリブレーション処理の全体的な流れについて説明する。なお、ここで説明するキャリブレーション処理は、主に情報処理装置３００により実行される。
【０１１１】
（Ｓ１０１）情報処理装置３００は、制御装置２００を介して現実装置１００の状態を制御する。例えば、情報処理装置３００は、制御パラメータを変更するように制御装置２００に指示する。指示を受けた制御装置２００は、制御パラメータを変更して現実装置１００のロボット１０４やカメラ１０１を制御する。なお、キャリブレーション処理の際に制御装置２００が変更する制御パラメータの値は、設定した範囲でランダムに決定されてもよいし、予め設定したパターンに従って順次設定されてもよい。
【０１１２】
（Ｓ１０２）情報処理装置３００は、シミュレータ３０３の機能により、仮想装置３０４の状態を現実装置１００の状態に同期させる。例えば、シミュレータ３０３は、現実装置１００に送信された制御パラメータ又は現実装置１００から取得した制御パラメータに従って仮想装置３０４を制御する。なお、仮想装置３０４の同期制御に利用した制御パラメータは記憶部３０２に格納される。
【０１１３】
（Ｓ１０３）情報処理装置３００は、画像取得部３０１の機能により、制御装置２００を介して現実装置１００の撮像画像を取得する。なお、画像取得部３０１が取得した現実装置１００の撮像画像は特徴点位置設定部３０５に入力される。
【０１１４】
（Ｓ１０４）情報処理装置３００は、シミュレータ３０３の機能により、仮想装置３０４の撮像画像を取得する。例えば、シミュレータ３０３は、仮想装置３０４の環境下で光学シミュレーションを実行してワーク上に照明が映り込む範囲を計算し、照明の映り込みを反映した撮像画像を生成する。なお、仮想装置３０４の撮像画像は特徴点位置設定部３０５に入力される。また、シミュレータ３０３により利用された制御パラメータは３次元座標計算部３０６に入力される。
【０１１５】
（Ｓ１０５）情報処理装置３００は、設定した数の撮像画像を取得したか否かを判定する。つまり、情報処理装置３００は、現実装置１００の撮像画像及び仮想装置３０４の撮像画像の組数が設定した閾値を超えたか否かを判定する。なお、閾値は後述する最小二乗法による現実装置１００の制御パラメータを安定して推定可能な数に設定される。撮像画像の組数が閾値を超えた場合、処理はＳ１０６に進む。一方、撮像画像の組数が閾値を超えていない場合、処理はＳ１０１に戻る。
【０１１６】
（Ｓ１０６）情報処理装置３００は、特徴点位置設定部３０５の機能により、仮想装置３０４の撮像画像上で第１特徴点を設定する。例えば、特徴点位置設定部３０５は、オペレータが仮想装置３０４の撮像画像上で指定した点を第１特徴点に設定する。なお、特徴点位置設定部３０５は、仮想装置３０４の撮像画像に対してエッジ検出の処理を実行し、検出したエッジ位置を第１特徴点に設定してもよい。
【０１１７】
（Ｓ１０７）情報処理装置３００は、特徴点位置設定部３０５の機能により、現実装置１００の撮像画像上で第１特徴点に対応する第２特徴点を設定する。例えば、特徴点位置設定部３０５は、オペレータが現実装置１００の撮像画像上で指定した点を第２特徴点に設定する。なお、特徴点位置設定部３０５は、現実装置１００の撮像画像に対してエッジ検出の処理を実行し、検出したエッジ位置から第１特徴点に対応する点を検出して第２特徴点に設定してもよい。
【０１１８】
（Ｓ１０８）情報処理装置３００は、特徴点位置設定部３０５、３次元座標計算部３０６、差分計算部３０７、及びパラメータ計算部３０８の機能により、現実装置１００と仮想装置３０４との間における制御パラメータの誤差を計算する。なお、Ｓ１０８の処理については後段において詳述する。
【０１１９】
（Ｓ１０９）Ｓ１０８の処理で計算された制御パラメータの誤差は、シミュレータ３０３に入力される。シミュレータ３０３は、入力された制御パラメータの誤差を仮想装置３０４の制御パラメータに適用する。そして、シミュレータ３０３は、設定した制御パラメータに基づいて仮想装置３０４を運用する。
【０１２０】
例えば、シミュレータ３０３は、現実装置１００から取得した制御パラメータＡ，Ｂ，Ｃに誤差ｄＡ，ｄＢ，ｄＣを適用し、制御パラメータＡ＋ｄＡ，Ｂ＋ｄＢ，Ｃ＋ｄＣに基づいて仮想装置３０４を生成する。そして、シミュレータ３０３は、生成した仮想装置３０４の環境下でシミュレーションを実行し、シミュレーション結果を現実装置１００側へとフィードバックする。例えば、制御パラメータＡ＋ｄＡ，Ｂ＋ｄＢ，Ｃ＋ｄＣに基づく仮想装置３０４内での検査範囲を示す情報が制御装置２００に提供される。
【０１２１】
Ｓ１０９の処理が完了すると、図１３に示した一連の処理は終了する。
（パラメータ計算の流れ：図１４）
次に、Ｓ１０８の処理について、さらに説明する。ここで説明する処理は、主に特徴点位置設定部３０５、３次元座標計算部３０６、差分計算部３０７、及びパラメータ計算部３０８により実行される。
【０１２２】
（Ｓ１１１）特徴点位置設定部３０５は、設定した第１特徴点の２次元座標ｘvを取得する。特徴点位置設定部３０５により設定された第１特徴点の２次元座標ｘvは、３次元座標計算部３０６及び差分計算部３０７に入力される。３次元座標計算部３０６に入力された第１特徴点の２次元座標ｘvは仮想空間内の３次元座標Ｑに変換され、パラメータ計算部３０８に入力される。
【０１２３】
（Ｓ１１２、Ｓ１１３、Ｓ１１４）パラメータ計算部３０８は、仮想装置３０４の撮像画像が取得された際のカメラパラメータＡを取得する。また、パラメータ計算部３０８は、仮想装置３０４の撮像画像が取得された際のロボットパラメータＢを取得する。さらに、パラメータ計算部３０８は、仮想装置３０４の撮像画像が取得された際の仮想装置３０４におけるカメラ・ロボット間の相対位置に関するパラメータＣを取得する。
【０１２４】
（Ｓ１１５）特徴点位置設定部３０５は、設定した第２特徴点の２次元座標ｘrを取得する。特徴点位置設定部３０５により設定された第２特徴点の２次元座標ｘrは、差分計算部３０７に入力される。
【０１２５】
第１特徴点の２次元座標ｘv及び第２特徴点の２次元座標ｘrが入力された差分計算部３０７は、２次元座標ｘv、ｘrの差分ｄｘを計算する。差分計算部３０７により計算された差分ｄｘは、パラメータ計算部３０８に入力される。なお、第２特徴点の２次元座標ｘrを計算する処理は、Ｓ１１１〜Ｓ１１４の処理と順序を入れ替えることも可能である。
【０１２６】
（Ｓ１１６）パラメータ計算部３０８は、現実装置１００及び仮想装置３０４の状態を変更しながら撮像された複数の撮像画像の組について、制御パラメータＡ，Ｂ，Ｃ、３次元座標Ｑ、及び差分ｄｘを準備する。次いで、パラメータ計算部３０８は、上記の式（２）に制御パラメータＡ，Ｂ，Ｃ、３次元座標Ｑ、及び差分ｄｘを代入し、制御パラメータの誤差ｄＡ，ｄＢ，ｄＣに関する関係式を生成する。次いで、パラメータ計算部３０８は、複数の撮像画像の組について生成された複数の関係式を用いて最小二乗法により制御パラメータの誤差ｄＡ，ｄＢ，ｄＣを計算する。Ｓ１１６の処理が完了すると、図１４に示した一連の処理は終了する。
【０１２７】
以上、第２実施形態に係るキャリブレーション処理の流れについて説明した。
［２−７．変形例：撮像画像毎に複数の特徴点を指定する場合］
次に、図１５及び図１６を参照しながら、第２実施形態の一変形例について説明する。図１５は、第２実施形態の一変形例に係る特徴点の指定方法及びキャリブレーションに利用されるパラメータの例について説明するための図である。図１６は、第２実施形態の一変形例に係る情報処理装置が実行するキャリブレーション処理の中で実行されるパラメータ計算の処理フローを示したフロー図である。
【０１２８】
（特徴点の指定方法：図１５）
これまで、１枚の撮像画像について１つの特徴点を指定する場合を例に説明を進めてきた。しかし、１枚の撮像画像について複数の特徴点を指定することも可能である。例えば、図１５に示すように、仮想装置３０４の撮像画像から３つの第１特徴点ｐ11、ｐ12、ｐ13を指定することが可能である。この場合、現実装置１００の撮像画像から３つの第１特徴点ｐ11、ｐ12、ｐ13にそれぞれ対応する３つの第２特徴点ｐ21、ｐ22、ｐ23が指定される。
【０１２９】
図１５に示すように、第１特徴点が指定されると、第１特徴点の位置を示す撮像画像上の２次元座標ｘvが得られる。また、撮像画像を取得した際の仮想装置３０４における制御パラメータＡ，Ｂ，Ｃが得られる。制御パラメータＡがカメラパラメータ、制御パラメータＢがロボットパラメータ、制御パラメータＣがカメラ・ロボット間の相対位置に関するパラメータである。
【０１３０】
さらに、３次元ＣＡＤデータ及び制御パラメータＡ，Ｂ，Ｃから２次元座標ｘvに対応する３次元座標Ｑが得られる。一方、第２特徴点が指定されると、第２特徴点の位置を示す撮像画像上の２次元座標ｘrが得られる。
【０１３１】
但し、現実装置１００と仮想装置３０４との間における制御パラメータの誤差ｄＡ，ｄＢ，ｄＣは未知である。そのため、情報処理装置３００は、上記の式（１）で表現されるモデル（及び上記の式（２））を利用し、最小二乗法を利用して制御パラメータの誤差ｄＡ，ｄＢ，ｄＣを推定する。推定した制御パラメータの誤差ｄＡ，ｄＢ，ｄＣは、仮想装置３０４の制御パラメータＡ，Ｂ，Ｃに適用される。つまり、１枚の撮像画像について１つの特徴点を指定する場合と同様に、撮像画像の違いから制御パラメータの誤差ｄＡ，ｄＢ，ｄＣが推定され、推定された制御パラメータの誤差ｄＡ，ｄＢ，ｄＣを用いて仮想装置３０４の制御パラメータが調整される。
【０１３２】
上記のキャリブレーション処理では、システムの運用に利用する撮像画像を利用して制御パラメータの調整が実現されるため、キャリブレーション用設備の追加が生じない。また、撮像画像上の２次元的な情報を比較して誤差を検出しているため、ステレオ画像上の３次元的な情報を比較して誤差を検出するような方法に比べると処理負荷が低い。従って、簡易にキャリブレーションを実現することが可能になる。
【０１３３】
さらに、１枚の撮像画像上に複数の特徴点を指定しているため、少ない枚数の撮像画像で制御パラメータの誤差ｄＡ，ｄＢ，ｄＣを推定することができる。つまり、この変形例を適用することで、現実装置１００及び仮想装置３０４の制御や撮像などにかかる負荷と時間をより低減することが可能になる。
【０１３４】
（パラメータ計算の流れ：図１６）
この変形例に係るパラメータ計算の処理フローについて説明する。この処理は、上述したＳ１０８の処理に対応する。また、ここで説明する処理は、主に特徴点位置設定部３０５、３次元座標計算部３０６、差分計算部３０７、及びパラメータ計算部３０８により実行される。
【０１３５】
（Ｓ１２１）特徴点位置設定部３０５は、過去に実行した制御パラメータの誤差ｄＡ，ｄＢ，ｄＣの計算に対する寄与度が低かった第１特徴点の情報を記憶部３０２から読み出し、読み出した第１特徴点を今回実行する計算の対象から除外する。もちろん、特徴点位置設定部３０５は、除外した第１特徴点に対応する第２特徴点も計算対象から除外する。なお、寄与率の計算については後述する。
【０１３６】
（Ｓ１２２）特徴点位置設定部３０５は、設定した第１特徴点の２次元座標ｘvを取得する。特徴点位置設定部３０５により設定された第１特徴点の２次元座標ｘvは、３次元座標計算部３０６及び差分計算部３０７に入力される。３次元座標計算部３０６に入力された第１特徴点の２次元座標ｘvは仮想空間内の３次元座標Ｑに変換され、パラメータ計算部３０８に入力される。
【０１３７】
（Ｓ１２３、Ｓ１２４、Ｓ１２５）パラメータ計算部３０８は、仮想装置３０４の撮像画像が取得された際のカメラパラメータＡを取得する。また、パラメータ計算部３０８は、仮想装置３０４の撮像画像が取得された際のロボットパラメータＢを取得する。さらに、パラメータ計算部３０８は、仮想装置３０４の撮像画像が取得された際の仮想装置３０４におけるカメラ・ロボット間の相対位置に関するパラメータＣを取得する。
【０１３８】
（Ｓ１２６）特徴点位置設定部３０５は、設定した第２特徴点の２次元座標ｘrを取得する。特徴点位置設定部３０５により設定された第２特徴点の２次元座標ｘrは、差分計算部３０７に入力される。
【０１３９】
第１特徴点の２次元座標ｘv及び第２特徴点の２次元座標ｘrが入力された差分計算部３０７は、２次元座標ｘv、ｘrの差分ｄｘを計算する。差分計算部３０７により計算された差分ｄｘは、パラメータ計算部３０８に入力される。なお、第２特徴点の２次元座標ｘrを計算する処理は、Ｓ１２２〜Ｓ１２５の処理と順序を入れ替えることも可能である。
【０１４０】
（Ｓ１２７）パラメータ計算部３０８は、現実装置１００及び仮想装置３０４の状態を変更しながら撮像された複数の撮像画像の組について、制御パラメータＡ，Ｂ，Ｃ、３次元座標Ｑ、及び差分ｄｘを準備する。次いで、パラメータ計算部３０８は、上記の式（２）に制御パラメータＡ，Ｂ，Ｃ、３次元座標Ｑ、及び差分ｄｘを代入し、制御パラメータの誤差ｄＡ，ｄＢ，ｄＣに関する関係式を生成する。次いで、パラメータ計算部３０８は、複数の撮像画像の組について生成された複数の関係式を用いて最小二乗法により制御パラメータの誤差ｄＡ，ｄＢ，ｄＣを計算する。
【０１４１】
（Ｓ１２８）パラメータ計算部３０８は、最小二乗法による誤差ｄＡ，ｄＢ，ｄＣの計算時における安定性の影響を示す安定性指標を計算する。例えば、パラメータ計算部３０８は、最小二乗法による誤差ｄＡ，ｄＢ，ｄＣの計算時に用いた行列（上記関係式の係数行列に対応）を特異値分解し、最小特異値と最大特異値との比率を安定性指標とする。
【０１４２】
パラメータ計算部３０８は、計算した安定性指標をオペレータに通知する。例えば、パラメータ計算部３０８は、安定性指標を表示装置３５０に表示する。
（Ｓ１２９）パラメータ計算部３０８は、誤差ｄＡ，ｄＢ，ｄＣの計算に対する寄与率を特徴点毎に計算する。この寄与率は決定係数と呼ばれることもある。例えば、残差の平方和を偏差の全平方和で割った値を１から引いたものが寄与率と呼ばれる。パラメータ計算部３０８は、設定した閾値よりも寄与率が低い第１特徴点及び第２特徴点の組を抽出し、抽出した第１特徴点及び第２特徴点の情報を記憶部３０２に格納する。Ｓ１２９の処理が完了すると、図１６に示した一連の処理は終了する。
【０１４３】
以上、第２実施形態について説明した。
なお、上記説明において、検査に利用するソースの種類を光（照明）とし、光学シミュレーションを実行する場合を例に述べたが、検査に利用するソースの種類が変わっても第２実施形態に係る技術を同様に適用可能である。
【０１４４】
例えば、ソースを音にする場合、現実装置に音源及びマイクを設置し、音響シミュレーションを利用することで上述した技術を適用可能である。ソースを電磁場にする場合、現実装置に電磁場発生源及び電磁場センサを設置し、電磁場解析シミュレーションを利用することで上述した技術を適用可能である。
【０１４５】
以上、添付図面を参照しながら好適な実施形態について説明したが、本発明は係る例に限定されない。当業者であれば、特許請求の範囲に記載された範疇内において、様々な変形例や修正例に想到し得ることは明らかであり、こうした変形例や修正例についても当然に本発明の技術的範囲に属することは言うまでもない。
【０１４６】
＜３．付記＞
以上説明した実施形態に関し、さらに以下の付記を開示する。
（付記１）  対象物と、前記対象物が設置されるロボットと、前記対象物及び前記ロボットの少なくとも一部を撮像するカメラとを含む現実装置の３次元情報を記憶する記憶部と、
前記３次元情報に基づいて前記現実装置を仮想空間内に再現した仮想装置を生成し、前記現実装置の動作に前記仮想装置の動作を同期させ、前記仮想装置のカメラで撮像される第１画像を生成し、前記現実装置で撮像された第２画像と、前記第２画像に対応する前記第１画像との差に基づいて前記仮想装置の制御パラメータを調整する演算部と、
を有する、情報処理装置。
【０１４７】
（付記２）  前記記憶部は、前記第１画像内の２次元座標と、前記２次元座標に対応する前記仮想空間内の３次元座標と、前記仮想装置の制御パラメータとの関係を示すモデル情報を記憶しており、
前記演算部は、複数の前記第１画像及び前記第２画像の組について、前記第１画像内で設定された第１特徴点の２次元座標と、前記第１特徴点に対応する前記仮想空間内の３次元座標と、前記第１特徴点に対応する前記第２画像内にある第２特徴点の２次元座標と、前記第１画像の撮像時における前記仮想装置の制御パラメータとを取得し、前記モデル情報に基づいて前記現実装置の制御パラメータと前記仮想装置の制御パラメータとの間の誤差を計算する
付記１に記載の情報処理装置。
【０１４８】
（付記３）  前記演算部は、前記３次元情報を利用して前記対象物又は前記ロボットの角部を抽出し、抽出した前記角部に対応する前記第１画像内の２次元座標を前記第１特徴点の２次元座標に設定する
付記２に記載の情報処理装置。
【０１４９】
（付記４）  前記第１特徴点の２次元座標は、１枚の前記第１画像について複数設定される
付記２又は３に記載の情報処理装置。
【０１５０】
（付記５）  前記演算部は、前記誤差を計算する際に、前記第１特徴点の２次元座標のそれぞれについて計算結果への寄与度を計算し、設定した閾値よりも前記寄与度が小さい前記第１特徴点の情報を前記記憶部に記憶させ、後に前記誤差を計算する際には前記寄与度が小さい前記第１特徴点の２次元座標の利用を除外する
付記４に記載の情報処理装置。
【０１５１】
（付記６）  対象物と、前記対象物が設置されるロボットと、前記対象物及び前記ロボットの少なくとも一部を撮像するカメラとを含む現実装置の３次元情報を記憶するメモリを有するコンピュータが、
前記３次元情報に基づいて前記現実装置を仮想空間内に再現した仮想装置を生成し、前記現実装置の動作に前記仮想装置の動作を同期させ、前記仮想装置のカメラで撮像される第１画像を生成し、前記現実装置で撮像された第２画像と、前記第２画像に対応する前記第１画像との差に基づいて前記仮想装置の制御パラメータを調整する
制御方法。
【０１５２】
（付記７）  前記メモリは、前記第１画像内の２次元座標と、前記２次元座標に対応する前記仮想空間内の３次元座標と、前記仮想装置の制御パラメータとの関係を示すモデル情報を記憶しており、
前記コンピュータのプロセッサが、複数の前記第１画像及び前記第２画像の組について、前記第１画像内で設定された第１特徴点の２次元座標と、前記第１特徴点に対応する前記仮想空間内の３次元座標と、前記第１特徴点に対応する前記第２画像内にある第２特徴点の２次元座標と、前記第１画像の撮像時における前記仮想装置の制御パラメータとを取得し、前記モデル情報に基づいて前記現実装置の制御パラメータと前記仮想装置の制御パラメータとの間の誤差を計算する
付記６に記載の制御方法。
【０１５３】
（付記８）  前記プロセッサが、前記３次元情報を利用して前記対象物又は前記ロボットの角部を抽出し、抽出した前記角部に対応する前記第１画像内の２次元座標を前記第１特徴点の２次元座標に設定する
付記７に記載の制御方法。
【０１５４】
（付記９）  前記第１特徴点の２次元座標は、１枚の前記第１画像について複数設定される
付記７又は８に記載の制御方法。
【０１５５】
（付記１０）  前記プロセッサが、前記誤差を計算する際に、前記第１特徴点の２次元座標のそれぞれについて計算結果への寄与度を計算し、設定した閾値よりも前記寄与度が小さい前記第１特徴点の情報を前記メモリに記憶させ、後に前記誤差を計算する際には前記寄与度が小さい前記第１特徴点の２次元座標を利用しない
付記９に記載の制御方法。
【０１５６】
（付記１１）  対象物と、前記対象物が設置されるロボットと、前記対象物及び前記ロボットの少なくとも一部を撮像するカメラとを含む現実装置の３次元情報を記憶するメモリを有するコンピュータに、
前記３次元情報に基づいて前記現実装置を仮想空間内に再現した仮想装置を生成し、前記現実装置の動作に前記仮想装置の動作を同期させ、前記仮想装置のカメラで撮像される第１画像を生成し、前記現実装置で撮像された第２画像と、前記第２画像に対応する前記第１画像との差に基づいて前記仮想装置の制御パラメータを調整する処理を実行させる
プログラム。
【符号の説明】
【０１５７】
１０  現実装置
２０  情報処理装置
２１  記憶部
２２  演算部
２３  仮想装置
２４  カメラ
２５  ロボット
ＯＢＪ  対象物
Ａ、Ｂ  制御パラメータ
ｄＡ、ｄＢ  誤差
Ｐ１  第１画像
Ｐ２  第２画像
【図１】
2015024480.tif 000005
【図２】
2015024480.tif 000006
【図３】
2015024480.tif 000007
【図４】
2015024480.tif 000008
【図５】
2015024480.tif 000009
【図６】
2015024480.tif 000010
【図７】
2015024480.tif 000011
【図８】
2015024480.tif 000012
【図９】
2015024480.tif 000013
【図１０】
2015024480.tif 000014
【図１１】
2015024480.tif 000015
【図１２】
2015024480.tif 000016
【図１３】
2015024480.tif 000017
【図１４】
2015024480.tif 000018
【図１５】
2015024480.tif 000019
【図１６】
2015024480.tif 000020