(57)【要約】 【課題】ワークの把持状態を補正するための計測画像を撮像した瞬間のロボットアームの位置姿勢を正確に取得できるようにする。【解決手段】撮像素子（２０１）によりロボットアーム１０１で把持されたワーク１０４を撮像して得た計測画像に基づき、ワーク１０４の把持姿勢を制御する。アームの移動中、その位置姿勢は時刻と関連付けて記録される。撮像処理では、位置姿勢を取得するよりも短い間隔で、複数回、撮像し、撮像した複数の画像のうち１つを計測画像とする。撮像した複数の画像から、マーク（認識対象部位：２１０）の重心（特徴量）を取得する。記録されているアームの位置姿勢（Ｒ１２）に、マーク（２１０）の重心（特徴量）の変化（Ｍａ）を作用させて、計測画像を撮像した時刻におけるアームの位置姿勢（Ｒ１１）を取得する。【選択図】図１
2019119027.tif 000002
【特許請求の範囲】
【請求項１】
撮像装置によりロボットアームを撮像して得た計測画像に基づき、前記ロボットアーム位置姿勢を制御するロボットシステムの制御方法において、
前記ロボットアームが移動する間、前記ロボットアームの位置姿勢を逐次、取得し、時刻と関連付けて記録する位置姿勢取得工程と、
前記ロボットアームが前記撮像装置の撮像画角を移動する間に、前記位置姿勢取得工程が前記位置姿勢を取得するよりも短い間隔で、前記撮像装置により、複数回の撮像を行い、撮像した複数の画像のうちの１つを前記計測画像とする撮像工程と、
前記撮像工程で撮像した複数の画像から、撮像されている認識対象部位の特徴量を取得する認識工程と、
前記位置姿勢取得工程により記録されている前記ロボットアームの位置姿勢と、前記認識工程で取得した前記認識対象部位の特徴量とに基づき、前記撮像工程において前記計測画像を撮像した時刻における前記ロボットアームの位置姿勢を算出する位置姿勢算出工程と、を制御装置によって実行するロボットシステムの制御方法。
【請求項２】
請求項１に記載のロボットシステムの制御方法において、前記位置姿勢算出工程において、前記計測画像を撮像した時刻よりも後に前記位置姿勢取得工程により記録された前記ロボットアームの位置姿勢を用いて、前記撮像工程において前記計測画像を撮像した時刻における前記ロボットアームの位置姿勢を算出するロボットシステムの制御方法。
【請求項３】
請求項１または２に記載のロボットシステムの制御方法において、前記撮像工程において、前記撮像装置は、撮像画角内に設定された第１のトリガエリアに前記認識対象部位が進入した時に１回目の撮像を行うロボットシステムの制御方法。
【請求項４】
請求項３に記載のロボットシステムの制御方法において、前記制御装置は、前記ロボットアームの速度、前記位置姿勢取得工程の位置姿勢の取得周期、前記撮像装置の画素分解能に基づき、前記認識対象部位の進入に基づき２回目ないしそれ以降の撮像を行うための第２のトリガエリアを生成するロボットシステムの制御方法。
【請求項５】
請求項４に記載のロボットシステムの制御方法において、前記第２のトリガエリアは、位置姿勢取得工程が次の前記ロボットアームの位置姿勢を取得する時刻に相当する前記撮像装置の撮像画角内の位置に生成されるロボットシステムの制御方法。
【請求項６】
請求項１から５のいずれか１項に記載のロボットシステムの制御方法において、前記位置姿勢算出工程において、前記位置姿勢取得工程により記録されている前記ロボットアームの位置姿勢に基づき、前記認識工程で取得した複数の前記認識対象部位の特徴量から得られる位置情報の差分を順次作用させ、前記撮像工程において前記計測画像を撮像した時刻における前記ロボットアームの位置姿勢を算出するロボットシステムの制御方法。
【請求項７】
請求項１から６のいずれか１項に記載のロボットシステムの制御方法において、前記認識対象部位が、前記ロボットアームもしくは前記ロボットアームの装着部品に装着されたマークであるロボットシステムの制御方法。
【請求項８】
請求項７に記載のロボットシステムの制御方法において、前記マークが再帰反射マークであるロボットシステムの制御方法。
【請求項９】
請求項１から８のいずれか１項に記載のロボットシステムの制御方法において、前記特徴量が、撮像された前記認識対象部位の重心であるロボットシステムの制御方法。
【請求項１０】
請求項１から９のいずれか１項に記載のロボットシステムの制御方法の各工程を前記制御装置に実行させるロボットシステムの制御プログラム。
【請求項１１】
請求項１０に記載のロボットシステムの制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項１２】
撮像装置によりロボットアームを撮像して得た計測画像に基づき、前記ロボットアームの位置姿勢を制御する制御装置を備えたロボットシステムにおいて、
前記制御装置は、
前記ロボットアームが移動する間、前記ロボットアームの位置姿勢を逐次、取得し、時刻と関連付けて記録し、
前記ロボットアームが前記撮像装置の撮像画角を移動する間に、前記位置姿勢が取得されるよりも短い間隔で前記撮像装置により、複数回の撮像を行い、撮像した複数の画像のうちの１つを前記計測画像とし、
撮像した複数の画像から、撮像されている認識対象部位の特徴量を取得し、
記録されている前記ロボットアームの位置姿勢と、取得した前記認識対象部位の特徴量とに基づき、前記計測画像を撮像した時刻における前記ロボットアームの位置姿勢を算出するロボットシステム。
【請求項１３】
ロボットシステムのロボットアームにより把持されたワークに対する組立処理を行い、物品を製造する物品の製造方法であって、前記ロボットシステムが請求項１２のロボットシステムである物品を製造する製造方法。
【請求項１４】
ロボットシステムのロボットアームにより把持されたワークに対する組み立て処理を行う生産装置が配置された生産システムであって、前記ロボットシステムが請求項１２のロボットシステムである生産システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像装置によりロボットアームにより把持されたワークを撮像して得た計測画像に基づき、前記ロボットアームを動作させて前記ワークの位置姿勢を制御するロボットシステムの制御方法、およびロボットシステムに関する。
【背景技術】
【０００２】
種々の物品、工業製品の生産システムにおいて、ロボットシステムが利用されている。この種のロボットシステムでは、ロボットアームとそのロボットコントローラ（ロボット制御装置）から成るロボット装置が用いられる。生産システム（生産ライン）に、上記のロボット装置、あるいはさらに他の加工装置、搬送装置などが配置される場合には、システムには統合的な制御を行う生産装置コントローラ（ＰＬＣ）が配置される場合がある。
【０００３】
種々の物品、工業製品の製造工程において、例えば、ロボットアームがハンドによってワークをトレイから把持して取り出し、さらに組み付ける、といった作業を行わせるには、把持しているワークの把持ずれを正確に認識することが必要になる。このような製造工程では、トレイはワークを置きやすいようにある程度スペースに余裕を持たせているので、その分、ワークの位置姿勢がばらついたり、また、ロボットアームが把持した際に滑りが発生し、ワークが位置ずれを生じたりすることがある。ロボットアームのハンドに対するワークの相対的な位置姿勢が所期の位置姿勢と異なっている状態で、他のワークへの組み付けを行う時、作業を失敗したり、組み付け精度が低下したりする。そこで、近年では、ビジョン（視覚系：具体的にはデジタルカメラのような撮像装置）と、その制御装置、例えばビジョンコントローラ（撮像制御装置）を用いる。その場合、ワークの把持ずれを撮像した視覚的な情報を介して認識し、正しい把持位置に補正する手法が用いられる。
【０００４】
ワークの把持ずれの認識は、ロボットアームが把持しているワークを撮像装置で計測撮像し、撮像した計測画像中のワークの位置計測をする場合に実施される。図１３（ａ）はロボットアーム１０１のハンド１０２で正しい把持によるワーク１０４の位置を示しており、この図１３（ａ）の状態を基準画像として、撮像装置により予め事前撮像しておく。図１３（ｂ）は量産時に計測されたワークの位置を示しており、同図の状態は、図１３（ａ）の状態と比較して明らかなように把持ずれを生じている。量産時には、この状態が撮像装置により計測画像として撮像する。そして、例えば、撮像制御装置によって、予め撮像した基準画像と、計測画像とを比較する画像処理を行い、ワークの把持ずれの大きさ、すなわち把持ずれ量を計算する。この把持ずれ量に基づき、ロボットコントローラは、図１３（ｃ）に示すように、ロボットアームの位置姿勢を変更して、ワーク１０４が正しい把持状態となるよう補正する。
【０００５】
この補正は、把持されたワーク１０４の位置姿勢が例えば作業空間のグローバル座標系に対して所期の把持状態となるよう、ロボットアーム１０１の位置姿勢を破線の状態から実線の状態に補正するものである。即ち、ワークの把持し直しなどを行なわず、ワークを把持したまま、ロボットアーム１０１の位置姿勢を変化させることで、ワークの姿勢を基準画像と同じにする制御である。
【０００６】
図１３（ｃ）の所期の把持位置への補正には、同図の破線の位置姿勢計測画像（図１３（ｂ））を撮像した瞬間のロボットアームの位置姿勢の情報が必要となる。これは、把持ずれ量に基づいて、ロボットアームの位置姿勢を変更するには、変更する前のロボットアームの位置姿勢の情報がなければ、ロボットコントローラがどれだけの量、位置姿勢を変更してよいか計算できないためである。
【０００７】
そのため、旧来のシステムでは、計測画像を撮像した瞬間のロボットアームの位置姿勢を取得するため、撮像時にロボットアームを一時停止させ、その時の位置姿勢を記録するものがあった。ところが、このようにワークの撮像時にロボットアームを一時停止する場合には、ロボットアームの減速時間、撮像とロボットアーム位置取得のための静止時間、再加速時間などを必要とし、タクトタイムが増加するという問題点があった。そこで、ロボットを静止させることなしにワークの画像を撮像し、正しい把持位置に補正できるロボットシステムが望まれている。このような撮像を行うロボットシステムでは、ロボットを静止させず、ロボットアームが移動中においてワークを撮像した瞬間のロボットアームの位置姿勢を取得できなければならない。
【０００８】
一般的に、ロボットコントローラは、一定周期で、例えばエンコーダの制御周期で、ロボットアームの複数関節の位置（関節角度）情報などを読み取ることにより、ロボットアームの位置姿勢を取得している。一方、撮像装置による撮像は、撮像制御装置が制御する。これら２つのコントローラの同期制御はそれほど容易ではなく、ロボットアームの位置情報取得時刻と計測画像の撮像時刻を同期させることができない。
【０００９】
このような問題に鑑み、撮像した時刻の前後の時刻で得たロボットアームの位置情報を利用して、撮像した時刻でのロボットアームの位置情報を推定する構成が提案されている（特許文献１）。この特許文献１の構成では、時刻と関連付けて記録されているロボットアームの位置情報と、撮像時刻を用いた補間によって、撮像時の位置姿勢を推定する。また、ロボットアームの位置情報を更新しているサーボモータの制御系を用いて、ロボットアームの位置情報を取得した瞬間にロボットコントローラから撮像制御装置にトリガ信号を送り撮像を行わせる構成が提案されている（特許文献２）。これにより、ロボットアームの位置情報取得時刻と計測画像の撮像時刻を同期させている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第４８３７１１６号公報
【特許文献２】特開２００８−１８３６９０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１の構成では、撮像した時刻のロボットアームの位置情報の推定精度が位置姿勢の取得周期に依存している問題がある。一般に、ロボットアームでは、位置姿勢の取得周期は、上記の１〜数ｍｓｅｃ、多くは２〜４ｍｓｅｃの場合が多い。また、近年のロボットアームは、１０００ｍｍ／ｓｅｃ程度の高速度でアーム先端のハンドを移動できるものがある。この１０００ｍｍ／ｓｅｃのアーム速度において、位置姿勢の取得周期を２ｍｓとすると、位置情報は、アーム先端のハンドが約２ｍｍ移動するごとに読み込まれる。
【００１２】
もし、アーム先端が直線軌道で動作している場合には、２ｍｍごとの比較的大きな間隔で位置姿勢を取得していても特許文献１のような直線補間でも比較的正確に撮像時の位置姿勢を推定できる可能性がある。しかし、実際の装置では、タクト向上のためアーム先端を円弧軌道で動作させる場合も多い。そして、直線軌道と円弧軌道では数百μｍの位置誤差が生じる場合があり、そのため、特許文献１の直線補完による手法で円弧軌道で操作するアームの位置姿勢を取得しようとすると精度劣化が生じる問題がある。
【００１３】
また、特許文献２の構成では、撮像のトリガ信号をロボットコントローラから送信している。このような構成では、コントローラ内で撮像するタイミングに数百ｍｓｅｃのトリガディレイが発生し、これにより、特許文献２の方法でも位置情報の精度劣化が生じる問題がある。
【００１４】
本発明の課題は、上記のような事情に鑑み、ロボットアームの移動中に、ワークの把持状態を補正するための計測画像を撮像した時点のロボットアームの位置姿勢を正確に取得できるようにすることにある。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明においては、撮像装置によりロボットアームを撮像して得た計測画像に基づき、前記ロボットアーム位置姿勢を制御するロボットシステムの制御方法において、前記ロボットアームが移動する間、前記ロボットアームの位置姿勢を逐次、取得し、時刻と関連付けて記録する位置姿勢取得工程と、前記ロボットアームが前記撮像装置の撮像画角を移動する間に、前記位置姿勢取得工程が前記位置姿勢を取得するよりも短い間隔で、前記撮像装置により、複数回の撮像を行い、撮像した複数の画像のうちの１つを前記計測画像とする撮像工程と、前記撮像工程で撮像した複数の画像から、撮像されている認識対象部位の特徴量を取得する認識工程と、前記位置姿勢取得工程により記録されている前記ロボットアームの位置姿勢と、前記認識工程で取得した前記認識対象部位の特徴量とに基づき、前記撮像工程において前記計測画像を撮像した時刻における前記ロボットアームの位置姿勢を算出する位置姿勢算出工程と、を制御装置によって実行する構成を採用した。
【発明の効果】
【００１６】
上記構成によれば、ロボットアームが移動している間に、位置姿勢取得工程で位置姿勢を取得するよりも短い間隔で、撮像装置により、複数回の撮像を行う。そして、撮像されているロボットアームの特定部位の位置に相当する認識対象部位の特徴量の変化を記録されている位置姿勢に作用させて、計測画像を撮像した時刻におけるアームの位置姿勢を取得する。そのため、ワークの把持状態を補正するための計測画像を撮像した時点のロボットアームの位置姿勢を正確に取得することができる。そのため、計測画像に基づき、精度よく、ワークの把持状態を補正することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明を採用したロボットシステムの構成を示した説明図である。
【図２】（ａ）は図１の撮像装置の機能的な構成を示した説明図、（ｂ）は撮像装置の撮像画角内に配置されたトリガエリアの機能を示した説明図である。
【図３】図１のロボットコントローラの機能的な構成を示した説明図である。
【図４】（ａ）は図１の撮像制御装置の機能的な構成を示した説明図、（ｂ）および（ｃ）は把持ずれ量の算出の様子を示した説明図である。
【図５】実施形態１のロボットアームの制御手順を示したフローチャート図である。
【図６】実施形態１のトリガエリアを新たに作成させる様子を示した説明図である。
【図７】実施形態１の計測画像の撮像時のロボットアーム位置の算出を示した説明図である。
【図８】実施形態１のロボットアームの位置補正の手法を示した説明図である。
【図９】実施形態２のロボットアームの制御手順を示したフローチャート図である。
【図１０】実施形態２の計測画像の撮像時のロボットアーム位置の算出を示した説明図である。
【図１１】実施形態３のロボットアームの制御手順を示したフローチャート図である。
【図１２】実施形態３の計測画像の撮像時のロボットアーム位置の算出を示した説明図である。
【図１３】（ａ）〜（ｃ）は、一般的なワークの位置姿勢の補正の概略を模式的に示した説明図である。
【図１４】ロボットコントローラ、撮像制御装置などに適用可能な制御系の構成を示したブロック図である。
【発明を実施するための形態】
【００１８】
以下、添付図面を参照して本発明を実施するための形態につき説明する。なお、以下に示す構成はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【００１９】
＜実施形態１＞
図１は、本発明を実施可能なロボットシステム１の構成を示している。図１において、ロボットシステム１は、その先端にエンドエフェクタとしてハンド１０２を搭載したロボットアーム１０１を備えている。
【００２０】
図１のハンド１０２は、ワーク１０４を把持した状態で示されている。当然ながら、このハンド１０２はワーク１０４を把持できるよう先端ツールの開き幅が設計されたものである。このワーク１０４の把持状態を取得するため、本実施形態のロボットシステム１では、ワーク１０４と、ワーク１０４を把持しているハンド１０２を撮像する撮像装置１０３が配置されている。
【００２１】
撮像装置１０３は、例えば、ワーク１０４の他の部材（不図示）への組み付け位置に向かうロボットアーム１０１の移動経路の途中、例えば作業工程と次の工程との間の位置などに配置される。図１では、撮像装置１０３は床面などに設置された状態で図示されているが、壁付けや、天井付けなど、その設置態様は限定されない。
【００２２】
本実施形態では、撮像装置１０３は、ロボットアーム１０１を停止させることなく、ロボットアーム１０１の移動中にワーク１０４およびワーク１０４を把持しているハンド１０２の計測画像を撮像する。この計測画像に対する画像処理、例えば計測画像と予め撮像しておいた基準画像と比較の比較処理、などによって、ワーク１０４の把持状態を取得することができる。そして計測画像に対する画像処理の結果に基づき、ワーク１０４の把持状態、例えば作業空間の座標系におけるワーク１０４の位置姿勢が補正される。
【００２３】
本実施形態のロボットシステムの制御装置は、ロボットの駆動指令を生成するロボットコントローラ１０５と、撮像装置１０３（ビジョン）が撮像した画像を処理する撮像制御装置１０６（ビジョンコントローラ）と、生産装置コントローラとしてのＰＬＣ１０７と、から成る。ＰＬＣ１０７は、ロボットアーム１０１と、ロボットアーム１０１とともに生産システム（生産ライン）に配置された他の生産装置とのＩＯ信号を司り、生産システム（生産ライン）の動作を統合的に制御する。
【００２４】
ロボットアーム１０１は、例えば垂直多関節型のロボットアームであり、その各関節軸にはモータ、減速機、およびエンコーダ（不図示）を搭載している。このエンコーダは、例えばロータリーエンコーダであり、各関節軸を駆動する減速機の入力軸や出力軸に装着されている。各関節軸の位置（関節角度）を実測する場合には、より正確にロボットアームの位置姿勢を取得できるよう、例えば減速機の出力軸に装着された出力軸エンコーダが用いられる。
【００２５】
撮像装置１０３は、例えば図示のような床面配置であり、架台等に固定されているものとする。撮像装置１０３の詳細については後述するが、撮像装置１０３はシャッタ速度が数十μｍｓｅｃの高速度撮影が可能な撮像装置である。また、撮像装置１０３は、撮像するターゲットやマークの特徴を撮像素子で検出すると、自動的に撮像トリガを発生して撮像を行う機能を有するものとする。
【００２６】
ロボットコントローラ１０５はロボットアーム１０１への駆動指令を生成し、フィードバック制御による各関節軸の位置制御を行う。また、エンコーダから取得した各関節軸の位置からロボットアーム１０１の位置姿勢を算出し、その位置姿勢の情報と、その取得時刻をテーブル化して記憶装置（例えば後述のＲＡＭ１６０３）に記録する。また、ロボットコントローラ１０５は、撮像制御装置１０６から受信したワークの把持ずれ量から、ワークを正しい位置にするロボットアームの位置姿勢を算出する機能を有する。
【００２７】
撮像制御装置１０６は撮像装置１０３が撮像した画像を取得する。また、撮像制御装置１０６は、該画像を二値化処理し予め用意したモデルとのモデルマッチング処理を行うことで、撮像されたターゲットの特徴点の座標を算出するなどの画像処理を行う。さらに、撮像制御装置１０６は、事前に撮像された基準画像の情報を格納し、把持ずれ量を算出する処理を行う。
【００２８】
ＰＬＣ１０７は生産システム（ライン）に配置されたロボットアーム１０１を含む生産装置へのＩＯ信号を統合的に制御し、各装置を動作させ、物品、あるいはその部品の生産を行わせる。ＰＬＣ１０７の制御タイミングはラダーソフトなどを用いて設計されており、ロボットコントローラ１０５や撮像制御装置１０６と信号を送受信する。
【００２９】
撮像制御装置１０６とロボットコントローラ１０５とＰＬＣ１０７は、ＩＥＥＥ  ８０２ｘネットワークやＣＣＬｉｎｋなどの通信手段（図１４のネットワークＮＷ）で接続されており、種々の情報をやりとりすることができる。例えば、ロボットコントローラ１０５は、撮像制御装置１０６へアーム位置情報と取得時刻を送信することができる。また、撮像制御装置１０６は、ロボットコントローラ１０５へ、予め撮像した基準画像と計測画像の比較処理などによって得たワーク１０４の把持ずれ量やターゲット（後述のマーク２１０のような認識対象部位）の特徴量を送信することができる。なお、認識対象部位としてのターゲット（例えば後述のマーク２１０）の特徴量としては、本実施形態ではマーク２１０のその重心（の撮像した画像中での位置）を用いる。
【００３０】
なお、本実施形態では、処理時間などの諸条件を考慮し、ロボットシステムの制御装置を構成するロボットコントローラ１０５と撮像制御装置１０６とＰＬＣ１０７を別体とした構成を示している。しかしながら、よりスペックの高いハードウェアを利用できる場合には、制御装置を構成するこれら３つのコントローラの任意の２つあるいは３つの機能を一体化した総合コントローラを用いても構わない。また、本実施形態では、撮像装置１０３と撮像制御装置１０６も別体構成として示している。しかしながら、これら撮像装置１０３と撮像制御装置１０６が一体化された構成を用いてもよい。例えば、撮像装置１０３に高性能ＣＰＵや大容量メモリを導入して、一体型のスマートビジョン（スマートカメラ）とし、撮像装置１０３で本実施形態で撮像制御装置１０６として示す機能を実行させるようにしてもよい。以下では、ロボットコントローラ１０５と撮像制御装置１０６とＰＬＣ１０７が別体、また、撮像装置１０３と撮像制御装置１０６が別体である構成を前提として説明する。
【００３１】
ここで、図１４に撮像制御装置１０６、ロボットコントローラ１０５、生産装置コントローラ（ＰＬＣ）などの制御系Ａとして利用可能なハードウェア構成を示しておく。図示のように、この制御系はＣＰＵ１６０１廻りに配置された各ブロックから成る構成である。なお、図１４の制御系Ａは、例えば、撮像制御装置１０６（図４）、ロボットコントローラ１０５（図３）、生産装置コントローラ（ＰＬＣ）、あるいは撮像装置１０３（図２（ａ））などの制御系として適用できる。図１４では、これらの制御装置に特有な部位、特にインターフェース１６０６、インターフェース１６０７に接続される周辺装置については図示を省略してある。図１４のＣＰＵ１６０１廻りの構成を、上記の各制御装置に適用する場合の特有の構成については、以下で適宜、必要に応じて説明する。
【００３２】
図１４の制御系Ａのハードウェアは、例えば、ＣＰＵ１６０１、ＲＯＭ１６０２、ＲＡＭ１６０３などを主たる制御手段（制御装置）として用いた構成である。図１４の制御系Ａは、主制御手段としてのＣＰＵ１６０１、記憶装置としてのＲＯＭ１６０２、およびＲＡＭ１６０３を備える。ＲＯＭ１６０２には、本実施形態の制御手順を実現するためのＣＰＵ１６０１の制御プログラムや定数情報などを格納しておくことができる。また、ＲＡＭ１６０３は、本実施形態の制御手順を実行する時にＣＰＵ１６０１のワークエリアなどとして使用される。
【００３３】
また、図１４の制御系Ａは、周辺装置に対して制御信号ないし制御データを入出力するためのインターフェース１６０６、１６０７を備える。インターフェース１６０６が入力系のインターフェースとすれば、例えば撮像装置１０３の場合には、撮像素子２０１（２０１ａ）からの画像データの入力がインターフェース１６０６によって行われる。例えば、ロボットコントローラ１０５では、関節角度の入力はインターフェース１６０６によって、また、アームに対する関節角度指令の出力はインターフェース１６０７によって行われる。なお、周辺機器インターフェースには、規格、プロトコルなどに応じて同じインターフェースハードウェアを介して入力、出力の双方向の通信を行うものが存在する。従って、厳密にはインターフェース１６０６、１６０７は、入力のみ、あるいは出力のみを行うものに限定されるものではなく、接続される機器によっては、入力、出力の双方向の通信を行うインターフェースとして構成されてよい。
【００３４】
撮像制御装置１０６やロボットコントローラ１０５にユーザインターフェース装置を配置する場合には、例えばディスプレイおよび操作部などがインターフェース１６０７に接続される。この操作部は、例えばフルキーボードおよびポインティングデバイスなどから構成することができ、ＬＣＤなどから成るディスプレイとともに、例えばトリガエリアの設定などを行う作業者のためのユーザインターフェースを構成する。なお、ロボットコントローラ１０５の場合、ディスプレイおよび操作部から成るユーザインターフェースは、ティーチングペンダントのような操作端末で構成される場合もある。
【００３５】
図１４の制御系Ａには、ネットワークＮＷを介して通信する通信手段としてネットワークインターフェース１６０５が接続されている。制御系Ａが、ロボットコントローラ１０５であれば、例えば、生産装置コントローラ（ＰＬＣ）との制御信号の送受信をネットワークインターフェース１６０５〜ネットワークＮＷを介して行うことができる。ネットワークインターフェース１６０５は、例えばＩＥＥＥ  ８０２．３のような有線通信、ＩＥＥＥ  ８０２．１１、８０２．１５のような無線通信による通信規格で構成することができる。しかしながら、ネットワークＮＷには、ＣＣＬｉｎｋなど、他の任意の通信規格が採用されていてよい。
【００３６】
なお、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、ＨＤＤやＳＳＤなどから成る外部記憶装置１６０４や、ＲＯＭ１６０２（の例えばＥＥＰＲＯＭ領域）のような記憶部に格納しておくこともできる。その場合、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、ネットワークインターフェース１６０５を介して、上記の各記憶部に供給し、また新しい（別の）プログラムに更新することができる。あるいは、後述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムは、各種の磁気ディスクや光ディスク、フラッシュメモリなどの記憶手段と、そのためのドライブ装置を経由して、上記の各記憶部に供給し、またその内容を更新することができる。上述の制御手順を実現するためのＣＰＵ１６０１の制御プログラムを格納した状態における各種の記憶手段や記憶部は、本発明の制御手順を格納したコンピュータ読み取り可能な記録媒体を構成することになる。
【００３７】
次に、図２、図３、図４を参照して、撮像装置１０３、ロボットコントローラ１０５、撮像制御装置１０６の機能的な構成、特徴について、説明する。なお、図２、図３、図４は、これらのコントローラの機能ブロックを示したものであり、各機能ブロックのうち例えば演算処理に係る機能ブロックについては図１４に示した制御系Ａの演算ハードウェアおよび制御プログラムによって実現することができる。あるいは、演算処理に係る機能ブロックであっても、高速化などを目的として、ハードウェア的な専用回路で実装される実装形態をとっても構わない。
【００３８】
図２（ａ）は、撮像装置１０３の機能ブロック構成を、また、図２（ｂ）は撮像装置の撮像画角内に配置されたトリガエリアの機能を示している。図２（ａ）において、撮像装置１０３は撮像素子２０１、レンズ２０２、演算部２０３で構成される。演算部２０３はさらに、演算制御部２０４、画像入力インターフェース２０５、画像特徴量計算部２０６、メモリ２０７、画像出力インターフェース２０８を備えている。
【００３９】
以下では、まず、撮像装置１０３で撮像するときの流れを簡単に説明し、その後、各部の信号、動作を詳細に説明する。
【００４０】
図２（ａ）の撮像装置１０３は、図２（ｂ）に示すように、動体撮像の前に実施しておく初期設定などにおいて、撮像素子２０１の画角内に撮像タイミングを決定するトリガエリア２１１を配置することができる。撮像装置１０３は、認識対象部位、例えば下記のマーク２１０（の画像）がこのトリガエリア２１１に進入したことを検出でき、そのタイミングで撮像素子２０１の画角全体の画像（あるいはトリガエリア２１１内のみの部分画像）を撮像する。基準画像と比較するための計測画像もこのトリガエリア２１１を用いて決定した撮像タイミングで撮像する。
【００４１】
本実施形態では、ターゲット（認識対象部位）として、ハンド１０２の特定部位に、マーク２１０を接着やネジ止めなど任意の手法で装着する。マーク２１０は、ターゲット（認識対象部位）として画像中で容易に位置や輪郭、重心などの特徴点（量）を測定できるものであれば何でも構わない。本実施形態では、このマーク２１０に適した素材として再帰反射材から成る再帰反射マークを用いている。
【００４２】
再帰反射マークは、照明光の方向に高輝度かつ高コントラストな反射光（像）を返すため、低負荷の画像認識処理でも、その画像中の位置や輪郭、重心などを容易に検出することができ、この種の用途に適している。なお、本実施形態では、撮像のための照明系については詳細に図示していない。しかしながら、再帰反射マークからの反射光を効率よく撮像できるよう、撮像照明系の光軸は、例えば撮像装置１０３の撮影光学系の光軸のごく近傍に、同光学系とほぼ平行な方向に配置するのが望ましい。
【００４３】
本実施形態では、マーク２１０は、トリガエリア２１１を用いて予め用意した基準画像と比較する計測画像の撮像タイミングを決定する。また、本実施形態では、撮像装置１０３の撮像素子２０１の撮像画角内に複数のトリガエリアを配置して、少なくともマーク２１０が含まれたトリガエリア内の画像（あるいは全画角の画像）を取得する。このマーク２１０は、ターゲット（認識対象部位）として用いられる。後述するように、複数のトリガエリアで、計測画像の他に少なくとも、この認識対象部位の画像を撮像する。
【００４４】
即ち、本実施形態では、撮像装置１０３の撮像画角内に、トリガエリア２１１を複数、例えば周期的に配置し（図６参照）、ワーク１０４を把持したロボットアーム１０１が同画角を移動する間に、複数回、撮像する。そのための複数のトリガエリア２１１は、ロボットコントローラ１０５でロボットアームの位置姿勢が取得され、時刻とともに記録（ログ）される間隔よりも短い間隔で複数回の撮像を行えるよう配置する。
【００４５】
そして、その複数回の撮像で得た複数の画像のうちの１つを計測画像とする。また、撮像した複数の画像のうち、少なくとも他の１つ（あるいはそれ以上の複数）の画像は、認識対象部位（マーク２１０）の特徴量を取得するために用いられる。この認識対象部位（マーク２１０）の特徴量は、後述するように、計測画像を撮像した時刻における前記ロボットアームの位置姿勢を取得するために用いられる（位置姿勢取得工程）。
【００４６】
なお、図２（ｂ）において、認識対象部位としてのマークには、ハンド１０２に装着された状態でも、あるいは撮像素子２０１の画角中においても「２１０」の符号を用いている（後述の各図でも同様）。撮像素子２０１の画角中ではマーク２１０は丸印により図示されているが、必ずしもこの形状は、撮像されたマーク２１０の形状と考える必要はない。例えば後述の画像制御では、この画角中のマーク２１０を示す丸印はマーク２１０の特徴量として認識されたマーク２１０の重心位置として取り扱うことがある。
【００４７】
本実施形態では、１回目の撮像を行うトリガエリア２１１は、例えばシステムの事前設定におけるユーザ設定により配置するが、２回目（以降）の１ないしそれ以上の数のトリガエリアは自動的に生成する。図２（ｂ）において、ワーク１０４を把持したロボットアーム１０１のハンド１０２が撮像装置１０３の撮像素子２０１の画角（撮像範囲）を通過する移動方向が図の左右方向であるとする。その場合、好ましくは、トリガエリア２１１は、ハンド１０２が移動する方向とする交差するようなストライプ（細い帯）状の形状とする。
【００４８】
生産システムの量産モードにおける撮像では、ある１つのトリガエリア２１１をマーク２１０が通過した時点で撮像装置１０３のシャッタが切られ、計測画像が撮像される。トリガエリアをオン（検出有効）状態にさせるには、外部信号を撮像装置１０３の演算制御部２０４に送信してオンにしてもよいし、演算制御部２０４に内蔵されるタイマーに従ってオンにしてもよい。例えば、ロボットアーム１０１が撮像装置１０３の上空を通過する前に、ＰＬＣ１０７の機能を用いてラダーソフトからシーケンサを通じてオンにすることができる。このような制御によって、撮像装置１０３を常に撮影レディ（可能）状態にしておかなくても、必要なタイミングにおいてのみ、撮像を行うことができる。
【００４９】
次に、図２（ａ）の撮像装置１０３の各部の構成、入出力される信号や動作について、説明する。撮像装置１０３の演算制御部２０４は、ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）等の通信により、レンズ２０２を介し、撮像素子２０１に取り込まれた光像を撮像させる。
【００５０】
ここでいう画像は２種類あって、一つはトリガエリア２１１で撮影されたマーク２１０（あるいはマーク２１０を含む、例えばトリガエリア２１１）の画像、もう一つは撮像素子２０１の画角全体の画像である。これらの撮像素子２０１が撮像した画像は、例えばＬＶＤＳ信号として、順次、画像入力インターフェース２０５へ出力される。画像入力インターフェース２０５は、ＬＶＤＳ信号として連続的に入力された画像データを、順次、パラレル信号の画像データに変換する。そして画像データを画像特徴量計算部２０６へ出力する。
【００５１】
画像特徴量計算部２０６は、入力した画像データに対して画像特徴量を計算する。画像特徴量計算部２０６の画像特徴量の計算能力はマシンスペックによるが、撮像装置１０３を低コスト化するため、画像特徴量計算部２０６では大規模、ないし高負荷な画像処理は行わないものとする。
【００５２】
ここでは画素数が少なく、処理の軽いトリガエリア２１１で撮影されたマーク２１０（認識対象部位）の画像処理について説明する。マーク２１０の画像から検出できる画像特徴量は、例えばトリガエリア２１１内のマーク２１０による輝度変化と、マーク２１０の重心である。撮像トリガ信号をかけるためには、マーク２１０による輝度変化を用いることができる。すなわち、トリガエリア２１１をマーク２１０が通過する時に、マーク２１０が外乱光もしくは撮像用の照明を反射することで輝度値がトリガエリア２１１内で上昇する。特にマーク２１０に再帰反射マークを用いた場合は、高輝度な反射光像が撮像される。従って、例えば輝度値が閾値を超えた時点で、演算制御部２０４に撮像トリガ信号を送信し、撮像素子２０１全体の撮像を行うことができる。なお、本実施形態では、後述するようにトリガエリア２１１は、画角内に複数、生成、配置される。以下では、その各トリガエリアを識別するために「トリガエリア（１）、（２）…」のような序数表記や、「トリガエリアＴＡ１、ＴＡ２…」のような参照符号による表記を用いることがある。
【００５３】
また、画像特徴量計算部２０６は、撮像されたマーク２１０の画像の特徴量として、マーク２１０の画像の重心も算出する。これは計測画像を撮影したタイミング（計測画像撮像時刻）におけるロボットアーム位置（あるいは位置姿勢）を特定するために使用される。マーク２１０の画像の特徴量を用いてロボットアーム位置を決定する手法の細部については、図７で後述する。
【００５４】
撮像された画像は一旦、メモリ２０７に格納される。メモリ２０７内にログ（記録）された画像は、システム解析などの目的で画像出力インターフェース２０８に出力することができる。出力された映像信号は、外部のフレームグラバボードなどで受信し、システム解析などの目的で使用することができる。ただし、本実施形態では、例えばメモリ２０７に格納された、例えば計測画像の画像データそのものをロボットコントローラ１０５（やＰＬＣ１０７）に送信することなく、後述の制御手順が行われる。
【００５５】
本実施形態では、撮像装置１０３は少なくとも単眼、即ち撮像素子２０１が１つのみあればよいが、撮像装置１０３はステレオカメラとして構成してもよい。その場合には、撮像素子２０１に加えて撮像素子２０１ａ、レンズ２０２ａを配置する。このようなステレオカメラ構成では、奥行き（Ｚ軸）方向の位置情報を取得することができる。このようなステレオカメラ構成を利用する利点としては、奥行き情報を取得することで、ワークが奥行き方向に傾いた場合でも補正出来ることである。ただし、単眼カメラでもステレオカメラでも、以降に説明する実施形態に変更はない。例えば座標演算を行なう計算式では、Ｚ（軸方向例えば距離）の項に、単眼カメラであれば予め設計された設計値が入り、ステレオカメラであればカメラでの計測値が入る。本実施形態では、理解を容易にするため、単眼カメラで説明するものとする。
【００５６】
なお、本実施形態では、マーク２１０をロボットアーム１０１の装着部品であるハンド１０２に装着しているが、撮像装置１０３で撮影できる部位であれば、ワーク１０４でもロボットアーム１０１に装着しても構わない。また、マーク２１０はロボットアームの特定部位（の移動）をその特徴量の変化を介して検出するためのものであり、（把持し直しや衝撃などによりワーク位置ずれが起きない場合には）ワーク１０４にマーク２１０が装着されていてもよい。また、ロボットアーム１０１や、ハンド１０２、ワーク１０４などに低負荷で認識が容易な特徴量（特徴部位）があれば、それを認識対象部位（ターゲット）としてのマーク２１０に代用しても構わない。
【００５７】
次に、図３にロボットコントローラ１０５の機能構成を示す。ロボットアーム位置算出部３０１は、ロボットアーム１０１の各関節のエンコーダから取得した各関節軸の位置（関節角度）から、ロボットアーム１０１の位置姿勢を算出する。ロボットアーム１０１の位置姿勢は、例えば手先（ハンド１０２）の基準部位（ＴＣＰや、例えばマーク２１０の装着位置など）の３次元座標によって表現される。
【００５８】
テーブル保管部３０２は、ロボットアーム位置算出部３０１が算出したロボットアーム１０１の位置と、この位置を取得したときの時刻とを関連付けしたテーブルデータ（データベースレコード）を生成し、位置の取得周期で順次記憶する。一般に、このようなロボットアーム位置取得周期は数ｍｓｅｃオーダで、ロボットアーム動作中は一定周期で取得する。ロボットコントローラ１０５は本テーブルデータを参照し、任意の時刻のロボットアーム位置を取得し、また、ロボットアームが任意の位置姿勢における時刻を取得できる。
【００５９】
ロボットアーム位置補正部３０３は、撮像制御装置１０６の把持ずれ算出部４０３（図４により後述する）が算出したワークの把持ずれ量と撮影時間を受信し、把持ずれを修正するようロボットアーム位置を変更する補正量を算出する。補正量の算出方法については後述の図８で説明する。
【００６０】
ロボットアーム動作教示点テーブル保管部３０４は、組付け動作などロボットアーム１０１が動作するための教示点がテーブル化されて保管されている。ロボットアーム１０１は、このテーブルに従ってロボットアーム動作指示部３０５が発生した指令値（例えば関節角度指令値）に基づき動作する。
【００６１】
また、ロボットアーム動作教示点テーブル保管部３０４は、ロボットアーム位置補正部３０３から新たな教示点座標の更新信号が来た場合、テーブルを更新する。よってロボットアーム１０１は把持ずれを修正して動作をすることができる。
【００６２】
ロボットアーム−撮像装置校正パラメータ保管部３０６は、ロボット座標系と撮像装置座標系との座標合わせをするパラメータを保管する。校正は事前にユーザで行われる。校正例としては、ロボットアーム１０１に点マーカー群が埋め込まれた校正プレートを把持させ、撮像装置１０３で撮像し、撮像装置座標系のマーカーの重心位置とロボット座標系のロボットアーム位置から校正値を求める。本パラメータをロボットアーム位置補正部３０３に送信し、補正値計算に利用する。
【００６３】
撮像時ロボットアーム位置算出部３０７は、把持したワークの計測画像を撮像した時点でのロボットアームの位置姿勢を算出する。撮像時ロボットアーム位置算出部３０７の算出手法については後述する図７で説明する。
【００６４】
次に、図４（ａ）、（ｂ）を参照して、撮像制御装置１０６の機能と演算処理につき説明する。図４（ａ）は、撮像制御装置１０６の内部構成図である。計測画像データ算出部４０１は撮像装置１０３が撮像した計測画像を受信する。そして該計測画像に撮像されたワーク１０４の特徴量を算出する。
【００６５】
図４（ｂ）は、撮像制御装置１０６が例えばハンド１０２で把持されたワーク１０４の画像から算出する特徴量を模式的に示している。ここでの説明ではマーク２１０（図２（ｂ））は不要のため、図示省略している。
【００６６】
ユーザは、ワーク１０４の画像モデルをあらかじめ撮像制御装置１０６に格納しておくことができる。また、図４（ｂ）のように、ワーク１０４の画像モデルにおいて特徴点としてＰ４とＰ５を設定することができる。その場合、計測画像のワーク１０４に対して二値化処理をかけ、背景差分処理を行うことでワーク１０４のみを画像から抽出する。そしてそのワーク１０４に対して、モデルマッチングを行い、Ｐ４とＰ５の座標を探索する。そうすることでＰ４とＰ５の位置座標を求める。そしてＰ４→Ｐ５について直角になるようＰ６の位置座標を求める。以上、３点を特徴量として算出する。Ｐ４、Ｐ５、Ｐ６はあくまで特徴量であり、例えばマークを貼る必要はない。
【００６７】
図４（ａ）に戻り、基準画像データ保管部４０２には予め撮像された正しい把持によるワークの基準画像から算出された特徴量Ｐ１、Ｐ２、Ｐ３が保管されているものとする。一方、把持ずれ算出部４０３は、基準画像の特徴量Ｐ１、Ｐ２、Ｐ３と、計測画像の特徴量Ｐ４、Ｐ５、Ｐ６から並進方向のずれΔｘｙと回転方向のずれΔＲｚを取得する。
【００６８】
図４（ｃ）は、本実施形態において、計測画像（特徴量Ｐ４、Ｐ５、Ｐ６）と基準画像（特徴量Ｐ１、Ｐ２、Ｐ３）を用いてワーク把持ずれ量（Δｘｙ、ΔＲｚ）を取得する手法を模式的に示している。同図では、基準画像（特徴量Ｐ１、Ｐ２、Ｐ３）は破線で示され、計測画像（特徴量Ｐ４、Ｐ５、Ｐ６）が直線で示されている。基準画像のＰ１と計測画像のＰ４の差分が並進方向のずれであり、画像座標系に則り並進のずれΔｘｙを取得できる。また基準画像の特徴量Ｐ１、Ｐ２、Ｐ３でできる傾きと計測画像の特徴量Ｐ４、Ｐ５、Ｐ６でできる傾きの差分を回転方向のずれΔＲｚとして取得できる。把持ずれ算出部４０３は、上記の把持ずれ量を算出すると、その把持ずれ量をロボットコントローラ１０５に送信する。
【００６９】
また、図４（ａ）において、特徴量保管部４０４は、撮像装置１０３が各トリガエリアで算出したマーク２１０の重心位置を受信し、また、ロボットコントローラ１０５に対してそのマーク２１０の重心とその撮影時刻を送信することができる。
【００７０】
設定パラメータ部４０６は、例えばユーザが設定操作で入力した次のようなパラメータを格納する。例えば、このパラメータには、画素分解能Ｘ[ｍｍ／１ｐｉｘ]が含まれる。この画素分解能Ｘ[ｍｍ／１ｐｉｘ]は、撮像画面上の１ピクセルが、実空間のロボット座標系において占める対応する長さに相当する（撮影倍率に依存する）。さらに、設定されるここでパラメータには、ロボットアームの速度Ｖ[ｍｍ／ｓｅｃ]、ロボットアーム位置取得周期Ｕ[ｍｓｅｃ]、トリガエリアの幅Ｋ[ｐｉｘ]、トリガエリアの間隔Ｈ[ｐｉｘ]、などが含まれる。
【００７１】
トリガエリア作成部４０５は、設定パラメータ部４０６からパラメータを取得し、自動的にトリガエリアを作成する。どのような原理、あるいはルールに基づきトリガエリアを作成するかについては、図６により後述する。
【００７２】
次に、図５を参照して、本実施形態におけるロボット制御につき説明する。図示の手順は、撮像装置１０３、撮像制御装置１０６、ロボットコントローラ１０５などから成る制御系（図１４のＡ）によって実行される。図示の手順は、各コントローラのＣＰＵ１６０１（図１４）制御プログラムとして、ＲＯＭ１６０２（同）や外部記憶装置１６０４（同）などに格納される（後述の他のフローチャートに示す制御手順についても同様）。図５の制御手順により、ロボットアーム１０１を一時停止することなくロボットアーム１０１が移動中に撮像した計測画像の撮像タイミングにおけるロボットアーム位置（ないし位置姿勢）を取得する。
【００７３】
ステップＳ５０１、Ｓ５０２は、生産ライン（システム）を量産モード（Ｓ５０３、Ｓ５０５〜）で動作させるのに先立って、ユーザ（管理者など）が事前に行う作業である。ここでは、まず、ステップＳ５０１でワークの把持ずれ補正に用いる計測画像を撮像するため第１のトリガエリア（１）を設定する。なお、（図中では括弧書きを用いないが）本実施形態中ではトリガエリアを識別する序数を用いる場合は、参照符号との混同を避けるため、括弧書きの形式を用いる。ステップＳ５０１では、ユーザは、ロボットアーム１０１が撮像装置１０３の撮像素子２０１を横切る向きに対し垂直方向にトリガエリア（１）を作成する。この作業は、撮像制御装置１０６にディスプレイを接続しておき、例えば、撮像素子２０１の出力する画像を確認しながら、所望の画角内の位置にマウスなどを用いてトリガエリア（１）を設定する、といったＧＵＩなどによって行う。これにより、ロボットアーム１０１がどのような軌道で撮像装置１０３前を通過しても、認識対象部位（マーク２１０）が撮像視野（画角）内のトリガエリアに進入した時、撮像装置１０３が撮像を行う。
【００７４】
ステップＳ５０２では、撮像制御装置１０６の設定パラメータ部４０６に格納するパラメータが設定される。ここで設定するパラメータについては上記の通り、画素分解能Ｘ[ｍｍ／１ｐｉｘ]、ロボットアームの速度Ｖ[ｍｍ／ｓｅｃ]、ロボットアーム位置取得周期Ｕ[ｍｓｅｃ]、トリガエリアの幅Ｋ[ｐｉｘ]、トリガエリアの間隔Ｈ[ｐｉｘ]、などである。
【００７５】
図５のステップＳ５０３、Ｓ５０５以降は、生産ラインが、量産モードで稼働する時の制御手順に相当する。
【００７６】
まず、ステップＳ５０３で、ロボットアームが動作を始めると、ロボットアーム１０１は、各関節軸のエンコーダから出力された各関節軸の位置（関節角）をロボットコントローラ１０５に送信する。ロボットアーム位置算出部３０１でロボットアーム１０１の位置（および姿勢）を算出し、例えば取得時刻と合わせてテーブル化して、テーブル保管部３０２（図３）に格納する。
【００７７】
ステップＳ５０４では、ロボットアーム１０１がワーク１０４を把持する。把持後、ロボットアーム１０１はロボットコントローラ１０５の教示点テーブル保管部３０４に格納されている教示点データに基づき、指定された教示点へ移動を開始する。この時のロボットアーム１０１の動作、例えば教示点間の軌道などについては、ロボットアーム動作指示部３０５によって制御される。
【００７８】
図５のステップＳ５０５〜Ｓ５１１は、撮像制御装置１０６の制御に相当する。ステップＳ５０５でステップＳ５０４の後のロボットアーム１０１の動作として、ロボットアーム１０１がワーク１０４を把持したまま撮像装置１０３の撮像視野範囲（撮像素子２０１の画角）を通過する。この時、ハンド１０２に装着されたマーク２１０がトリガエリア（１）を通過する。再帰反射マークなどから成るマーク２１０（認識対象部位）が照明光を反射してトリガエリア（１）内の輝度値が変化し、例えば、この輝度変化に応じて撮像トリガが切られる。このトリガエリア（１）内のマーク２１０（認識対象部位）通過で撮像されるのは、少なくとも、マーク２１０が含まれた範囲の画像である。トリガエリア（１）をマーク２１０が通過した時のマーク２１０が含まれた範囲の画像データは、例えば後述の特徴量（重心）を取得できるよう、ＲＡＭ１６０３（図１４）に一時的に格納しておく。このマーク２１０が含まれた範囲の画像データは、以下、マーク画像と呼ぶことがある。
【００７９】
トリガエリア（１）での認識〜撮像の所要時間は、近年のデジタルカメラハードウェアによると、数μｍｓｅｃで行うことができる。本実施形態では、ステップＳ５０５でのマーク２１０のトリガエリア（１）への進入（およびマーク画像の撮像）に応じて、ステップＳ５０６で計測画像を撮像する。この計測画像がワークの把持ずれ量の測定に使用される。なお、把持ずれ量の測定に用いられる基準画像も、予め同じトリガエリア（１）による撮像トリガで撮像されるのと同じ位置で撮影されているものとする。計測画像は数十μｓｅｃのシャッタスピードで撮像される。例えば、ロボットアーム１０１が１０００ｍｍ／ｓｅｃで移動するワーク１０４を１０μｓｅｃで撮像すると、撮像中のワークの移動量は１０μｍである。このような高速撮影によれば、ロボットアーム１０１が移動中でもほぼぶれのない静止画として撮像することができる。
【００８０】
基準画像と計測画像とを用いてワークの把持ずれ量の測定を行い、そして２枚の画像の特徴量の差分からワークがロボット座標系中で所定の位置姿勢を取るよう、ロボットアーム１０１の位置姿勢を補正する。このロボットアーム１０１の位置姿勢の補正の出発点である位置（姿勢）は、トリガエリア（１）によって計測画像が撮像されたロボットアーム１０１の位置（姿勢）である。この計測画像が撮像されたロボットアーム１０１の位置（および姿勢）は、必ずしもロボットコントローラ１０５で取得されているとは限らない。また、前述のように、ロボットコントローラ１０５と撮像制御装置１０６を精度よく同期することはそれ程、容易ではない。特許文献１などでは、テーブル保管部３０２に数ｍｓｅｃ間隔で保管されている２つのロボットアーム１０１の位置姿勢の間の計測画像の位置姿勢を撮像系の時計を用いて（例えば直線）補完によって求めている。このような従来技術では、上述のようにアームの軌道や速度によっては、位置姿勢を正確に特定することは困難である。
【００８１】
そこで、本実施形態では、以下に示すような手法で、トリガエリア（１）で計測画像を撮像したタイミングにおけるロボットアーム位置（ないし姿勢）を取得（推定）する。
【００８２】
ステップＳ５０７では、第１のトリガエリア（１）に続き、第２のトリガエリア（２〜Ｎ）を複数個発生させる。この第２のトリガエリア（２〜Ｎ）は、トリガエリア（１）に続いて、ロボットアーム１０１、具体的にはそれに装着されたマーク２１０が通過する撮像素子２０１の画角中の範囲に自動生成する。
【００８３】
ここで、図６により、トリガエリア（２〜Ｎ）を新たに生成する手法を説明する。図６は、撮像素子２０１に設定されたトリガエリア（１〜Ｎ）をそれぞれＴＡ１〜ＴＡ４の参照符号により示している。トリガエリアＴＡ１が、事前の初期設定によって設定された上記の１番目のトリガエリア（１）である。また、トリガエリアＴＡ２〜ＴＡ４（２〜Ｎ）が、例えばトリガエリアＴＡ１によるトリガによって計測画像が撮影された後、新たに生成されるトリガエリアである。
【００８４】
図６では、撮像素子２０１の画角の上には、ロボットアーム位置（ないし姿勢）が時刻とともにテーブル保管部３０２（図３）に格納されるタイミング（Ｒ１、Ｒ２）の周期を示すために直線の軸を示してある。この軸の単位は、ロボット座標系（実空間）における距離（ｍｍ）である。当然ながら、Ｒ１〜Ｒ２の時間的な周期は、ロボットコントローラ１０５のクロックなどに依存し、一方、撮像素子２０１の画角中の一点鎖線で示したＲ１〜Ｒ２のタイミングに相当する空間的な位置は、ロボットの移動速度に依存する。
【００８５】
図６の例では、ロボットコントローラ１０５はまずＲ１に相当する撮像素子２０１の画角内の位置で、次にＲ２の位置で、ロボットアーム１０１の位置（ないし姿勢）を各関節軸のエンコーダから取得し、テーブル保管部３０２（図３）に格納している。
【００８６】
例えば、ロボットアーム１０１が１０００ｍｍ／ｓｅｃで移動し、テーブル保管部３０２（図３）へ位置（ないし姿勢）が取得される取得周期が２ｍｓｅｃとすると、Ｒ１−Ｒ２間の距離Ｍは２ｍｍに相当する。その場合、ステップＳ５０２で予め入力されている画素分解能Ｘｍｍ／１ｐｉｘを用いてＲ１−Ｒ２間の距離Ｍが撮像素子２０１の画角中の何画素分に対応するかが計算できる。分かりやすく画素分解能Ｘ＝０．０５ｍｍ／１ｐｉｘとすると、Ｒ１−Ｒ２間Ｍは４０画素となる。なお、実際に用いられる撮像素子２０１の縦横の画素数は１０００〜２０００画素のオーダであって、そのスケールにおいては図６の表示はその一部の画角範囲を示したもの、と考えることができる。
【００８７】
ここで、上記の画素分解能とロボット速度、位置姿勢の取得周期（Ｒ１−Ｒ２）の関係において、撮像素子２０１のセンサ面でＲ１−Ｒ２間Ｍが４０画素分の距離に相当するものとする。その場合には、トリガエリアＴＡ１の後に最小の１画素ごとにトリガエリアを配列するなら、４０以上作成すれば、必ず位置姿勢の取得タイミングであるＲ２に相当する位置を超えることになる。
【００８８】
本実施形態では、トリガエリアＴＡ１（１）に続いて、トリガエリアＴＡ２〜ＴＡＮ（２〜Ｎ）を作成する場合、必ず新たに作成する最後のトリガエリア（Ｎ）は計測画像を撮像した前の位置取得（Ｒ１）の次の位置取得（Ｒ２）を超えるよう作成する。上記のようにステップＳ５０２で設定済みのパラメータを用いて、トリガエリアＴＡ２〜ＴＡＮ（２〜Ｎ）をいくつ作成するかを決定することができる。ここで、以下に、新たなトリガエリアＴＡ２〜ＴＡＮ（２〜Ｎ）を作成するための計算式を示す。
【００８９】
ここで、ステップＳ５０２で設定されるパラメータは、
・画素分解能 Ｘ[ｍｍ／１ｐｉｘ] 
・ロボットアームの速度 Ｖ[ｍｍ／ｓｅｃ] 
・ロボットアーム位置取得周期 Ｕ[ｍｓｅｃ]
・トリガエリアの幅 Ｋ[ｐｉｘ]
・トリガエリアの間隔 Ｈ[ｐｉｘ]
とする。その場合、撮像されたロボット移動空間におけるロボットアーム位置取得間隔（Ｒ１−Ｒ２）は以下のように示される。
Ｖ*Ｕ／１０００  [ｍｍ]  ・・（１）
【００９０】
そして、上式（１）のロボットアーム位置取得間隔（Ｒ１−Ｒ２）が対応する画素数は、
Ｖ*Ｕ／（Ｘ*１０００）  [ｐｉｘ]  ・・（２）
となり、新たに生成すべきトリガエリア（２〜Ｎ）の個数と位置は下式（３）のように定めることができる。
Ｖ*Ｕ／（Ｘ*１０００）／（Ｋ＋Ｈ）  ・・（３）
【００９１】
ここで、上式（３）の商＋１が、新たに生成すべきトリガエリア（２〜Ｎ）の個数となり、トリガエリア（１）にＨを足した画素位置がトリガエリア（２）の画角中の位置になる。以後のエリア（３）以降については、順々にＨを加算することにより位置を特定できる。
【００９２】
図６では、模式的に、トリガエリアＴＡ１に続いて３つのトリガエリアＴＡ２〜ＴＡ４が生成され、配置された例を示している。
【００９３】
先の特許文献１の構成では、位置取得周期のＲ１−Ｒ２の間、Ｍ（位置取得周期は上記のＵ）の間隔で計測画像の撮像時のロボットアーム位置を推定している。これに対して、本実施形態では、Ｍ（位置取得周期は上記のＵ）の間隔より短いトリガエリア間の間隔Ｈに相当する撮像周期で認識対象部位（マーク２１０）の画像を撮像する。そして、認識対象部位（マーク２１０）の特徴量の変化を、起点としてのＲ２でロボットコントローラ１０５が実際に取得している位置姿勢に作用させて、計測画像が撮像されたトリガエリアＴＡ１における位置姿勢を取得（推定）する。特許文献１では、撮像時刻のログを用いるなどして単に直線補完によってＲ１、Ｒ２の間の撮像時刻におけるロボットの位置姿勢を取得する。これに対して、本実施形態では、上記のように短い間隔で、複数のトリガエリアを配置し、実際に撮影を行って得た認識対象部位（マーク２１０）の特徴量の変化を利用する。これにより、極めて精度よく計測画像撮像時のロボットアーム１０１の位置（および姿勢）を算出することができる。
【００９４】
本実施形態においては、ロボットコントローラ１０５と撮像制御装置１０６は、高精度に同期する必要はないが、両者の用いるシステムクロック（例えばＲＴＣ：不図示）は、ある程度時刻を合わせておく必要がある。なぜなら、新たに作成するトリガエリアは計測画像の撮像に続いて位置取得が起きる次の位置（Ｒ２）を超えるように配置し、その近傍で撮像したマーク画像を位置推定計算に使用するためである。ロボットコントローラ１０５と撮像制御装置１０６をどの程度の精度で時刻合わせをするかはＲ１−Ｒ２間の間隔（Ｍ）による。本実施形態では、２ｍｓｅｃおきのロボット位置を利用する必然性はないが、以下では、理解を容易にするため、２ｍｓｅｃおきに取得されているロボット位置を利用する前提で説明する。
【００９５】
図５に戻り、ステップＳ５０８で新たに作成された２番目以降のトリガエリアによってマーク２１０の進入が検出され、これをトリガとしてマーク画像が撮像される。計測画像は、トリガエリアＴＡ１において撮像済みであり、後続の撮像では撮像素子２０１の画角全体の画像は不要である。例えば、マーク画像については、トリガエリアＴＡ２以降では、その付近の部分画像のみを撮像素子２０１から読み出して撮像制御装置１０６のＲＡＭ１６０３（図１４）などに一時記憶させておけばよい。
【００９６】
ステップＳ５０９は、作成した全てのトリガエリア（２〜Ｎ）でマーク画像の撮像が行われたかを確認し、全てのトリガエリア（２〜Ｎ）でマーク画像の撮像が行われた場合に、ステップＳ５１０に移行する。
【００９７】
ステップＳ５１０では、全てのマーク画像（図６の場合、トリガエリアＴＡ１〜ＴＡ４のマーク画像）からマーク２１０の特徴量、例えばマーク２１０の重心を求めた結果を撮像装置１０３から取得する。このマーク２１０の特徴量、例えば重心の位置情報（例えばセンサ面における画素座標値）はロボットコントローラ１０５に送信される。
【００９８】
そして、ステップＳ５１１では、撮像制御装置１０６が、例えば図４に示した手法によって、把持ずれ算出部４０３によりワーク（１０４）の把持ずれ量を算出し、ロボットコントローラ１０５に送信する。
【００９９】
図５のステップＳ５１２〜Ｓ５１５はロボットコントローラ１０５側の制御に相当する。まず、ステップＳ５１２において、ロボットコントローラ１０５は、撮像制御装置１０６から送信（Ｓ５１０）されたマーク２１０の重心を使い、計測画像撮像時のロボットアーム１０１の位置（および姿勢）を算出する。この時、ロボットコントローラ１０５は、テーブル保管部３０２（図３）に格納されているロボットアーム位置取得時刻からロボットアーム位置Ｒ２の時刻を抽出し、その近傍のマーク画像を選定して計算に利用する。
【０１００】
ここで、図７に、マークの重心を用いて、計測画像撮像時のロボットアーム１０１の位置（および姿勢）を算出する本実施形態の手法を示す。図７では、図６で示した各トリガエリアで撮像している状態を表す。撮像はトリガエリアＴＡ１からトリガエリアＴＡ４まで４回撮像される。そのうちの１つ、例えばトリガエリアＴＡ１を用いて撮像された画像が計測画像とされる。
【０１０１】
図７の例では、撮像素子２０１の画角内に設定されたトリガエリアＴＡ１〜ＴＡ４で撮像が行われた時のロボットアーム１０１、ハンド１０２、ワーク１０４の位置を模式的に示している。この例では撮像が起きる位置は、図示のようにＲ１１、Ｒ１２、Ｒ１３、Ｒ１４である。また、図７では、実際にロボットコントローラ１０５が位置姿勢を取得しているＲ２は、Ｒ１３、Ｒ１４の間にあるが、Ｒ１は、図７ではより左方に相当し、図示が省略されている。この撮像が起きた位置に相当するＲ１１、Ｒ１２、Ｒ１３、Ｒ１４は、ロボットコントローラ１０５が位置姿勢を取得しているＲ１（図７では不図示）とＲ２の間にある。そして、撮像が起きた位置であるＲ１１、Ｒ１２、Ｒ１３、Ｒ１４に相当するロボットアーム１０１の位置姿勢は、ロボットコントローラ１０５は取得していない。図７において、エンコーダ値からロボットアーム１０１の位置姿勢が取得されているのはＲ２の位置のみである。
【０１０２】
本実施形態では、図７のような複数画像の撮影において、位置補正をするために、計測画像を撮像したトリガエリアＴＡ１におけるロボットアーム位置Ｒ１１を取得（推定）する必要がある。
【０１０３】
ここで、マーク画像からマーク２１０の重心位置（図中の丸印）は、マーク座標Ｍａ１、Ｍａ２、Ｍａ３、Ｍａ４と求めることができる。Ｍａは撮像装置座標〜ロボット座標の座標変換を行えば、ロボット座標系における座標（Ｘｖ、Ｙｖ、Ｚｖ）と表現される。
【０１０４】
また、テーブル保管部３０２（図３）に記録があるＲ２の位置に相当する位置をマーク２１０が通過した時のマーク座標Ｍａ′を考えると、これは実際には撮影されないが、仮想的にあるものとして定義することができる。このマーク座標Ｍａ′は、次のようにして計算できる。例えば、マーク座標Ｍａ３の撮像時刻、マーク座標Ｍａ４の撮像時刻、そしてロボットアーム位置Ｒ２の取得時刻はロボットコントローラ１０５で記録している。そのため、これらの時刻を使ってＭａ３とＭａ′、Ｍａ４とＭａ′との空間距離の比率ａ：ｂを決定できる。
【０１０５】
これらの情報を使って、Ｒ１１の計測画像の撮像が行われたタイミング（画像中の位置）におけるロボットアーム１０１の位置を算出する。この演算に用いるパラメータは次のようなものである。
【０１０６】
・ロボットアーム位置 Ｒ２⇒（Ｘｒ２、Ｙｒ２、Ｚｒ２）
・マーク座標 Ｍａ１１⇒（Ｘｖ１１、Ｙｖ１１、Ｚｖ１１）、Ｍａ１２、Ｍａ１３、Ｍａ１４
・撮像時刻とロボットアーム位置取得時刻との比率⇒  ａ：ｂ
【０１０７】
まず、次式（４）のように、ロボットアームがＲ２の位置にある時のマーク座標であるＭａ′を推定する。
【０１０８】
Ｍａ４−Ｍａ′：Ｍａ′−Ｍａ３＝ｂ：ａ
Ｍａ′＝（ａ*Ｍａ４＋ｂ*Ｍａ３）／（ａ＋ｂ）  ・・（４）
【０１０９】
また、Ｍａ′の座標は、ロボット座標系のＸＹＺ座標では、次式（４’）のように計算できる。
【０１１０】
Ｘｖａ´  ＝（ａ*Ｘｖ１４＋ｂ*Ｘｖ１３）／（ａ＋ｂ）
Ｙｖａ´  ＝（ａ*Ｙｖ１４＋ｂ*Ｙｖ１３）／（ａ＋ｂ）
Ｚｖａ´  ＝（ａ*Ｚｖ１４＋ｂ*Ｚｖ１３）／（ａ＋ｂ）  ・・（４’）
【０１１１】
次に、Ｒ１３、Ｒ１２、Ｒ１１と、撮像したマーク画像の特徴量（重心）の変化を辿り、対応するロボットアーム１０１の位置を取得（推定）する。本実施形態では、前のマーク画像（あるいは計測画像）の撮像位置におけるアームの位置を取得（推定）する場合、撮像したマーク画像の特徴量（重心）に基づきロボットアームの位置を修正する方法を利用する。図８に、本実施形態において、撮像したマーク画像の特徴量に基づき、次のマーク画像（あるいは計測画像）の撮像位置を取得する手法を示す。
【０１１２】
図８において、取得すべきロボットアーム１０１の位置（ないし姿勢）は、計測画像の撮像をトリガしたトリガエリアＴＡ１における位置（ないし姿勢）である。
【０１１３】
ここで、位置Ｒ２がロボットコントローラ１０５が取得時刻と関連付けの上、ロボットアーム１０１の各関節軸のエンコーダ値（位置姿勢情報）をテーブル保管部３０２（図３）に記録している位置情報である。また、ロボットコントローラ１０５は、その時点におけるハンド１０２のツール座標からワークの位置Ｔを計算できるものとする（あるいはテーブル保管部３０２（図３）に併せてこのワークの位置Ｔが補完されていてもよい）。
【０１１４】
また、図８において、Ｖｄｉｆｆが、撮像制御装置１０６で算出される把持ずれ量に相当するマーク画像に撮像されたマーク位置の撮像位置間における差分（変化）である。このＶｄｉｆｆは、Ｍａ３とＭａ′の２つのマーク位置（マーク２１０の重心：特徴量）から求めることができる。なお、この時点では、前述のロボットアーム−撮像装置校正パラメータ保管部３０６にロボット座標系〜撮像装置座標系の間の校正パラメータが補完され、２つの座標系のキャリブレーションは済んでいるものとする。
【０１１５】
そして、上記のＶｄｉｆｆを用いると、下式（５）のようにワーク位置であるＴの位置関係性を保持したまま、変化を辿り、Ｒ２からＲ１３へと位置情報を修正することができる。
【０１１６】
（パラメータ）
・ロボットアーム位置   Ｒ２
・ワークの位置        Ｔ
・把持ずれ量          Ｖｄｉｆｆ
Ｒ１３＝Ｒ２*Ｔ*Ｖｄｉｆｆ*Ｔ−１  ・・（５）    
【０１１７】
以下、同じ式（５）の演算を繰り返し、Ｒ１３からＲ１２、さらにＲ１２からＲ１１と、撮像位置を変化（差分）を辿り、計算していく。これにより、計測画像を撮像したＲ１１におけるロボットアーム１０１の位置（あるいはさらに姿勢）を算出することができる（位置姿勢取得工程：Ｓ５１２）。
【０１１８】
以上のようにして、ロボットコントローラ１０５が記録したアームの位置を起点とし、マーク画像の重心の変化を作用させて繰り返し式（５）の計算を行い、計測画像を撮像した時点（Ｒ１１）におけるロボットアーム１０１の位置を取得（推定）できる。
【０１１９】
再び、図５のステップＳ５１３において、ステップＳ５１４では、ワークの把持ずれ量を補正するよう、ロボットアーム１０１の位置（あるいはさらに姿勢）の補正を行う。その際、撮像制御装置１０６は、下式（６）のようにして、ワークを所定の把持状態にするための補正後の新しいロボットアーム１０１の位置（あるいはさらに姿勢）Ｒ１１′を計算する。下式（６）では、基準画像と計測画像の把持ずれ量Ｖｄｉｆｆｂａｓｅ、および計測画像の撮像時点の位置姿勢（Ｒ１１）を用いて、ワークを所期の把持状態にするための補正後のロボットアーム１０１の位置（あるいはさらに姿勢）Ｒ１１′を計算している。
【０１２０】
Ｒ１１′＝Ｒ１１ * Ｔ * Ｖｄｉｆｆｂａｓｅ * Ｔ − １  ・・（６）
【０１２１】
ステップＳ５１４で、ロボットコントローラ１０５は、位置補正したロボットアーム１０１が補正後の位置（あるいはさらに姿勢）Ｒ１１′を取るよう、教示点テーブル保管部３０４の教示点情報を更新する。そして、ロボットコントローラ１０５は、ステップＳ５１５で、更新された教示点情報に基づき、関節角度の指令値などを生成し、ロボットアーム１０１を動作させ、ワーク１０４の把持ずれを補正する動作を行わせる。
【０１２２】
以上のように、本実施形態によればエンコーダ値が記録される位置情報（Ｒ１、Ｒ２…）の取得間隔よりも短い周期で撮像装置１０３の前方を通過するアーム（１０１）を複数回、撮像し、撮像した画像の１つをワークの把持姿勢を補正するための計測画像とする。そして、複数回、撮像した認識対象部位としてのマークの画像の特徴点の変化を、エンコーダ値が記録されている位置情報（Ｒ２）に作用させ、計測画像の撮像時のロボットアーム位置情報を取得する。即ち、本実施形態では、計測画像の撮像時の位置情報を取得するのに、従来技術（例えば特許文献１）よりもさらに短い周期で取得（実測）した認識対象部位としてのマークの画像の特徴点の変化を用いる。
【０１２３】
従って、本実施形態によれば、極めて精度よく、計測画像の撮像時のロボットアーム１０１の位置情報を取得することができる。そして、計測画像と基準画像から計算されるワークの把持ずれ量を解消するよう、計測画像撮像時のアームの位置（あるいはさらに姿勢）を起点として、新しい補正後のロボットアーム１０１の位置（あるいはさらに姿勢）を求めることができる。そのため、組み付けなどに向かう高速移動中のロボットアーム１０１を停止させることなく、移動中に撮影でき、精度よくワークの把持姿勢を修正できるため、高精度な物品の製造を行うことができる。
【０１２４】
また、計測画像の撮像時の位置情報を取得するために用いる画像は、少なくとも認識対象部位（マーク２１０）を含む部分画像であればよく、撮像装置１０３の撮像素子２０１から高速に転送させることができる。また、認識対象部位（マーク２１０）に係る処理は小さな部分画像に対して行えばよく、低負荷で容易な画像処理によって、高速にその位置を認識することできる。さらに、認識対象部位（マーク２１０）に再帰反射マークを用いることにより、認識対象部位（マーク２１０）に係る処理はより低負荷で、高速に実行できる可能性がある。
【０１２５】
＜実施形態２＞
実施形態１では、計測画像を撮像してから、Ｒ２の位置情報がロボットコントローラ１０５で記録されている付近まで、等間隔でトリガエリアを自動生成する例を説明した。本実施形態２では、トリガエリアの作成を次のロボットアーム位置Ｒ２の近傍の２個所のみに制御する手法を示す。システムのハードウェアおよびソフトウェアから成る機能的な構成は、前述の実施形態１と同様であり、ここでは重複した説明は省略するものとする。
【０１２６】
図９は、図５と同様の形式で、本実施形態２におけるロボットシステムの制御手順を示したフローチャートである。図９では、図５と同一ないし相当するステップには同じステップ番号を用いており、それらのステップについては以下では重複した説明は省略するものとし、実施形態１の処理との相違点のみを説明する。
【０１２７】
図９において、図５との相違は、主にステップＳ９０１のトリガエリア（２）、（３）の２つの生成にある。このステップＳ９０１では、ロボットコントローラ１０５から逐次、ロボット位置取得時刻を受信する。一般に、ロボットコントローラ１０５のロボット位置取得の周期は上述のように１〜数ｍｓｅｃのオーダである。従って、撮像制御装置１０６では、あるロボットアーム位置（Ｒ１）がロボットコントローラ１０５から通知されると、それに基づき、後続のロボットアーム位置（Ｒ２）の取得時刻を推定できる。
【０１２８】
従って、撮像制御装置１０６では、ステップＳ５０２で設定されたパラメータを用いて、後続のロボットアーム位置（Ｒ２）が撮像素子２０１の画面のどの位置がロボットアーム位置Ｒ２の通過位置であるか大凡、推定できる。画像上のどの位置がロボットアーム位置Ｒ２の通過位置を推定し、その近傍の前後２か所の画素範囲にトリガエリア（２）、（３）を自動作成する。その後の計測画像の撮像時のロボットアーム位置の算出方法、およびロボットアームの位置補正方法は実施形態１と同様である。なお、ステップＳ５０９でトリガエリア（２）、（３）の撮像終了を判定するための回数は、本実施形態２では「２回」になっている。
【０１２９】
図１０は、本実施形態２において、計測画像の撮像に用いたトリガエリアＴＡ１と、上記のように２番目、３番目のトリガエリア（２）、（３）として自動作成したＴＡ３、ＴＡ４を模式的に示している。図１０において、ロボットアーム位置（Ｒ２）は、ロボットコントローラ１０５がロボットアーム位置（Ｒ１）に続いてエンコーダ値からアーム（１０１）の位置（あるいはさらに姿勢）を取得する撮像素子２０１の画角内の位置である。
【０１３０】
本実施形態では、図８のように、トリガエリアＴＡ１によってトリガされる計測画像の撮像（Ｒ１１）に続き、トリガエリアＴＡ３とＴＡ４を作成する。その場合、ステップＳ９０１で説明したように、撮像制御装置１０６は、ロボットアーム位置Ｒ２の位置が画像上のどこに現れるかを推定できるため、その前後にトリガエリアＴＡ３とＴＡ４を作成する。こうして計測画像の撮像の他、トリガエリアＴＡ３とＴＡ４を用いて、撮像装置１０３は認識対象部位としてマーク２１０が含まれた２枚の画像を自動撮影する。
【０１３１】
その後、実施形態１の図７、図８で説明したのと同じ処理により、ロボットアームがＲ２の位置にある時のマーク座標Ｍａ′を取得する。そして、さらにマーク座標Ｍａ′と、実画像を取得しているマーク座標Ｍａ３とを用いて、Ｖｄｉｆｆを計算し、ロボットアーム位置Ｒ１３を求めることができる。そして、さらに実施形態１と同様の演算を行うことによって、トリガエリアＴＡ１によって撮像された計測画像の取得時にロボットアーム１０１が占めていた位置（Ｒ１１）を取得（推定）することができる。
【０１３２】
本実施形態２による制御手順によれば、実施形態１に比べ少ない、高々２個のトリガエリア（ＴＡ３、ＴＡ４）を作成するだけで、計測画像の取得時のロボットアームの位置情報（Ｒ１１）を取得でき、それに基づきロボットアーム１０１の補正が可能である。即ち、本実施形態２によれば、マーク重心を求める計算コストやトリガエリアを作成する処理コストが少なくて済み、撮像制御装置１０６がより低スペックであっても、実施形態１と同等の制御を実現することができる。
【０１３３】
＜実施形態３＞
実施形態３では、計測画像の取得後に自動生成するトリガエリアの数を最小限に、例えば計測画像の他に１つに限定する例を示す。
【０１３４】
図１１は、図９と同等の形式によって、本実施形態３のロボット制御を示したフローチャートである。本実施形態３においても、前述の実施形態１、２と相違する部分のみを説明する。本実施形態３の相異点は、ステップＳ５０７（実施形態１の図５）ないしステップＳ９０１（実施形態２の図９）の位置にあるトリガエリア（２）を発生するステップＳ１１０１である。
【０１３５】
このステップＳ１１０１では、ステップＳ９０１（図９）の場合と同様に、ロボットコントローラ１０５から随時ロボット位置取得時刻を受信している。そして、ステップＳ９０１について述べたのと同じ理由で、Ｒ１のタイミングからロボットアーム位置（Ｒ２）の撮像素子２０１の画角内の位置を推定することができる。そこで、本実施形態３では、撮像素子２０１の撮像画面内のどの位置がロボットアーム位置（Ｒ２）に相当するかを推定し、その近傍１か所の画素範囲に２番目のトリガエリア（２）を自動作成する。本実施形態３では、計測画像の撮像の他にトリガエリア（２）の撮像（Ｓ５０８）は１回のみであるため、図５、図９にあったステップＳ５０９は省略されている。
【０１３６】
図１２は、本実施形態３において、計測画像の撮像に用いたトリガエリアＴＡ１と、以上のようにして新たなトリガエリア（２）として１つだけ、例えば推定したロボットアーム位置（Ｒ２）の位置に生成されたトリガエリアＴＡ２を示している。図１２において、ロボットアーム位置（Ｒ２）は、ロボットコントローラ１０５がロボットアーム位置（Ｒ１）に続いてエンコーダ値からアーム（１０１）の位置（あるいはさらに姿勢）を取得する撮像素子２０１の画角内の位置である。
【０１３７】
ステップＳ１１０１に関して説明したように、ロボットアーム位置Ｒ２の位置が画像上のどこに現れるかを推定できるため、その推定した位置（Ｒ２）にトリガエリアＴＡ２を作成している。そして、このトリガエリアＴＡ２へのマーク２１０の進入によってトリガされる撮像で取得した画像から、ロボットアーム位置（Ｒ２）と、その位置で撮像されたマーク位置Ｍａ２が既知となる。その後は、マーク位置Ｍａ２に実施形態１と同様の演算によって、計測画像撮像時（Ｒ１１）時のマーク位置Ｍａ１との差分（Ｖｄｉｆｆ）を作用させることで、計測画像撮像時（Ｒ１１）時のアームの位置姿勢（Ｒ１１）を求めることができる。
【０１３８】
なお、図１２はＲ２の時の撮影位置が正確に決まっているかのように図示されているが、あくまでもロボットコントローラ１０５の位置取得時（Ｒ２）にマーク２１０はこの位置を通ると推定してトリガエリアＴＡ２が生成されているだけである。そのため、実際には、ロボットコントローラ１０５におけるＲ２の位置取得時刻と、トリガエリアＴＡ２によりトリガされる撮影の時刻は若干ずれている可能性がある。従って、そのような理由で実施形態３は、実施形態１や２に比べ、計測画像撮像時（Ｒ１１）時のアームの位置姿勢（Ｒ１１）の取得精度が若干、劣化する可能性がある。しかしながら、本実施形態３によれば、最小限の撮影回数でロボットアームの位置補正方法が可能になり、より計算コストや処理コストに寄与できる。また、設定も簡単であるため、ユーザの求める精度がそれほど高くなければ、本実施形態３のような構成であっても、大いに利用効果はあると考えられる。
【符号の説明】
【０１３９】
１…ロボットシステム、１０１…ロボットアーム、１０２…ハンド、１０３…撮像装置、１０４…ワーク、１０５…ロボットコントローラ、１０６…撮像制御装置、２０１…撮像素子、２０２…レンズ、２０３…演算部、２０４…演算制御部、２０５…画像入力インターフェース、２０６…画像特徴量計算部、２０７…メモリ、２０８…画像出力インターフェース、３０１…ロボットアーム位置算出部、３０２…テーブル保管部、３０３…ロボットアーム位置補正部、３０４…教示点テーブル保管部、３０５…ロボットアーム動作指示部、３０６…ロボットアーム−撮像装置校正パラメータ保管部、３０７…撮像時ロボットアーム位置算出部、４０１…計測画像データ算出部、４０２…基準画像データ保管部、４０３…把持ずれ算出部、４０４…特徴量保管部、４０５…トリガエリア作成部、４０６…設定パラメータ部。
【図１】
2019119027.tif 000003
【図２】
2019119027.tif 000004
【図３】
2019119027.tif 000005
【図４】
2019119027.tif 000006
【図５】
2019119027.tif 000007
【図６】
2019119027.tif 000008
【図７】
2019119027.tif 000009
【図８】
2019119027.tif 000010
【図９】
2019119027.tif 000011
【図１０】
2019119027.tif 000012
【図１１】
2019119027.tif 000013
【図１２】
2019119027.tif 000014
【図１３】
2019119027.tif 000015
【図１４】
2019119027.tif 000016