(57)【要約】【課題】ロボットに把持され、搬送される対象物の位相を、画像計測する際に、ロボット動作と撮像タイミングの厳密な同期を必要とせず、安定した位相計測を行えるようにする。【解決手段】ロボットアーム２によりハンド２１で把持した部品を搬送しつつ、カメラ４で連続的に撮像した部品７の画像に対する画像処理を介して位相計測を行い、ロボットアーム２の動作によって生じる位相変動に相当する補正量を算出しておく。カメラ４で部品７を撮像する際、ロボットアーム２によりハンド２１で把持した部品７を搬送し、前記補正量に基づきロボットアーム２の動作によって生じる位相変動を打ち消すようハンド２１を旋回駆動させる。撮像した部品７の画像に対する画像処理を介して位相計測を行う。【選択図】図１
2015217489.tif 000002
【特許請求の範囲】
【請求項１】
対象物を把持するハンドと、前記ハンドを旋回駆動可能に支持し前記ハンドが把持した前記対象物を搬送するロボットアームと、前記ロボットアームに把持された前記対象物を撮像する撮像装置と、前記撮像装置が撮像した前記対象物の画像に対する画像処理を介して前記対象物の位相計測を行う制御装置と、を備えたロボットシステムの制御方法において、
前記制御装置が、前記ロボットアームの動作によって生じる前記対象物の位相変動に相当する補正量を算出する補正量算出工程と、
前記制御装置が、前記ロボットアームにより前記ハンドで把持した前記対象物を搬送させ、予め前記補正量算出工程で算出した前記補正量に基づき前記ロボットアームの動作によって生じる前記対象物の位相変動を打ち消すよう、前記ハンドを旋回駆動させた状態で前記撮像装置で前記対象物を撮像し、撮像した前記対象物の画像に対する画像処理を介して位相計測を行う位相計測工程と、
を備えたことを特徴とするロボットシステムの制御方法。
【請求項２】
請求項１に記載のロボットシステムの制御方法において、前記補正量算出工程では、前記制御装置が、前記ハンドを旋回駆動することなく前記ロボットアームにより前記ハンドで把持した前記対象物を搬送させ、前記撮像装置で撮像した前記対象物の画像に対する画像処理を介して前記ロボットアームの動作によって生じる前記対象物の位相変動に相当する補正量を算出することを特徴とするロボットシステムの制御方法。
【請求項３】
請求項１または２に記載のロボットシステムの制御方法において、前記制御装置が、目標位置で目標位相を取るよう前記ハンドに前記対象物を把持させ、その状態より、前記ハンドを旋回駆動することなく前記位相計測工程とは逆軌道で搬送させ、その逆軌道の搬送中、または逆軌道の搬送後の順軌道の搬送中、予め前記補正量算出工程で算出した前記補正量に基づき前記ロボットアームの動作によって生じる前記対象物の位相変動を打ち消すよう前記ハンドを旋回駆動させた状態で前記撮像装置で前記対象物を撮像し、撮像した前記対象物の画像に対する画像処理を介して前記目標位相に対応する基準位相を計測する基準位相計測工程と、前記制御装置が、予め前記基準位相計測工程で計測した基準位相と前記位相計測工程で計測された前記対象物の位相の差分に相当する量だけ前記ハンドを旋回駆動させる位相補正工程を備え、前記対象物が目標位置に搬送された時に前記対象物が目標位相を取るよう制御することを特徴とするロボットシステムの制御方法。
【請求項４】
請求項１から３のいずれか１項に記載のロボットシステムの制御方法において、前記補正量算出工程では、前記制御装置が、前記ロボットアームの動作によって生じる前記対象物の位相変動を一意に線形近似可能な補正量を前記ロボットアームが前記対象物を搬送する１または複数の区間においてそれぞれ算出することを特徴とするロボットシステムの制御方法。
【請求項５】
請求項４に記載のロボットシステムの制御方法において、前記位相計測工程において、前記制御装置が、予め前記補正量算出工程でそれぞれ算出した補正量に基づき、前記の１または複数の区間において前記ロボットアームの動作によって生じる前記対象物の位相変動を打ち消すよう、前記ハンドを旋回駆動させた状態で前記撮像装置で前記対象物を撮像し、撮像した前記対象物の画像に対する画像処理を介して位相計測を行うことを特徴とするロボットシステムの制御方法。
【請求項６】
請求項１から５のいずれか１項に記載の各工程を前記制御装置に実行させるためのロボットシステムの制御プログラム。
【請求項７】
請求項６に記載のロボットシステムの制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項８】
対象物を把持するハンドと、前記ハンドを旋回駆動可能に支持し前記ハンドが把持した前記対象物を搬送するロボットアームと、前記ロボットアームに把持された前記対象物を撮像する撮像装置と、前記撮像装置が撮像した前記対象物の画像に対する画像処理を介して前記対象物の位相計測を行う制御装置と、を備えたロボットシステムにおいて、
前記制御装置は、
前記ロボットアームにより前記ハンドで把持した前記対象物を搬送し、予め算出した前記ロボットアームの動作によって生じる前記対象物の位相変動に相当する補正量に基づき前記ロボットアームの動作によって生じる前記対象物の位相変動を打ち消すよう、前記ハンドを旋回駆動させた状態で前記撮像装置で前記対象物を撮像し、撮像した前記対象物の画像に対する画像処理を介して位相計測を行うことを特徴とするロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットハンドで把持した部品の位相計測を行うロボットシステムの制御方法、およびロボットシステムに関するものである。
【背景技術】
【０００２】
近年、電気機器などの工業製品等の生産現場において、生産性の向上、省人化による低コスト化に加え、作業均一化による品質向上を目的とし、ロボットを用いた生産の自動化が望まれている。さらに、近年では、多品種少量生産に対応すべく、多能工化が可能である多関節シリアルリンクロボットを用いた生産の自動化が注目を浴びている。
【０００３】
このようなロボット装置では、ロボットハンド（以下ハンドという）により、例えば組み立てや加工の対象物である部品（ワーク）を取り扱う。そして、このようなロボット装置では、ハンドによって把持した部品を所定の位置・姿勢に移動させる動作が求められる。しかしながら、例えば円柱形状の部品を把持する場合には、部品を把持するハンドによる把持状態が把持する毎にバラついてしまうという問題がある。この把持状態のバラつきは、供給される部品のバラつきや把持ズレなどに起因する。従って、ロボット装置により、ある工程から次工程の所望の位置に所望の姿勢（位相）で部品を移動させるために、例えばこの把持状態のバラつきを補正する必要がある。
【０００４】
そこで、従来より、ハンドに把持された例えば円柱状のワークを撮像し、ワーク表面の位相特徴部を画像処理によって検出し、検出された位相特徴部が所定の向きになるように、ロボットの動作を補正する手法が提案されている（下記の特許文献１）。このような補正を行うにはハンドの把持状態を知る必要があり、この把持状態を計測することを位相計測と呼ぶ。位相計測とは、例えば円柱状の部品の場合、部品の位相特徴部と円柱状の部品の中心軸とを結ぶ線が撮像画像のｘ軸またはｙ軸とのなす角（以下、位相という）を求める計測である。このような位相計測によって、部品の把持状態を知ることができる。
【０００５】
このような位相計測を行う際には、ロボットを停止させた状態で部品の撮像を行うので撮像の度にロボットを停止させる必要があり、生産工程のタクトタイムが増加するという問題があった。そこで、近年では、ロボットを停止させずに計測を行うストップレス計測が注目されている。ストップレス計測では、連続的に移動している対象物を一定時間毎に撮像した画像データの中から画像解析に適した画像を選択する（例えば下記の特許文献２）。一般に、撮像系（視覚系）を用いたロボットシステムは、例えば下記の特許文献３に記載されるように、ロボットを制御するロボット制御装置と、カメラの制御や画像処理を行う画像処理装置と、それらを制御するコントローラ部とから構成される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−２５４５１０号公報
【特許文献２】特開平９−２８８０６０号公報
【特許文献３】特開２０１１−２７４５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ここで、部品を移動させるロボットを停止させずに安定した部品の位相計測を行う手法につき考察する。位相計測とは、例えば部品を把持するロボットのハンドに対する部品の位相を計測することである。例えばここで、移動中のロボットが正確にプログラムされた軌跡で部品を搬送し、かつ部品を把持するハンドに対する部品の位相も一定であるとする。この場合は、移動区間中に部品を撮像して得た画像に対する画像処理に基づく位相計測値は、例え撮像タイミングが変動したとしても、常に一定値が計測される。
【０００８】
一方、上記の特許文献２の構成では、例えばロボット動作と撮像タイミングの同期が考慮されておらず、このため、撮像時のロボットの位置姿勢は撮像毎に異なってしまう。このような構成では、ロボットの位置姿勢に伴ってカメラに対する部品の位相も変化してしまうため、撮像毎に計測される位相が異なるということになり、安定した計測はできない。
【０００９】
一般に、多関節シリアルリンクロボットでは、カメラに対する部品の位相が変化しないようにロボットを直線的に動作させるのはそれほど容易ではない。この種のロボットでは、各関節の累積誤差が先端部の誤差となることや、たわみの発生などの理由により、絶対位置決め精度がそれほど高くなく、ロボットに直線軌道を教示した場合でも、実際の動作では直線軌道とはならない。よって、特許文献２に記載の従来例を応用するだけでは、ロボットを停止させずに安定した位相計測を行うことは困難であった。
【００１０】
ここで、上記の特許文献２の問題に鑑み、ロボット動作と撮像タイミングの同期を取ることで安定した位相計測を実現することも考えられる。しかしながら、例えば、特許文献３に示すように、ロボットと、撮像系、画像処理系から成るロボットシステムにおいては、コントローラとロボット制御装置間やコントローラと画像処理装置間で通信ジッタが発生する。例えば、コントローラがロボット制御装置に動作指令を発してから実際にロボット動作が開始するまでの時間や、コントローラが画像処理装置に撮像指令を発信してから実際に撮像が行われるまでの時間には遅延があり、さらにその遅延は一定ではない。そのため、ロボット制御装置と画像処理装置を制御するコントローラがロボット動作と撮像タイミングを厳密に同期させることは非常に困難である。
【００１１】
本発明の課題は、以上の問題を解決し、ロボットに把持され、搬送される対象物の位相を、画像計測する際に、ロボット動作と撮像タイミングの厳密な同期を必要とせず、安定した位相計測を行えるようにすることにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、本発明においては対象物を把持するハンドと、前記ハンドを旋回駆動可能に支持し前記ハンドが把持した前記対象物を搬送するロボットアームと、前記ロボットアームに把持された前記対象物を撮像する撮像装置と、前記撮像装置が撮像した前記対象物の画像に対する画像処理を介して前記対象物の位相計測を行う制御装置と、を備えたロボットシステムの制御方法において、前記制御装置が、前記ロボットアームの動作によって生じる前記対象物の位相変動に相当する補正量を算出する補正量算出工程と、前記制御装置が、前記ロボットアームにより前記ハンドで把持した前記対象物を搬送させ、予め前記補正量算出工程で算出した前記補正量に基づき前記ロボットアームの動作によって生じる前記対象物の位相変動を打ち消すよう、前記ハンドを旋回駆動させた状態で前記撮像装置で前記対象物を撮像し、撮像した前記対象物の画像に対する画像処理を介して位相計測を行う位相計測工程と、を備えたことを特徴とする。
【００１３】
あるいは、対象物を把持するハンドと、前記ハンドを旋回駆動可能に支持し前記ハンドが把持した前記対象物を搬送するロボットアームと、前記ロボットアームに把持された前記対象物を撮像する撮像装置と、前記撮像装置が撮像した前記対象物の画像に対する画像処理を介して前記対象物の位相計測を行う制御装置と、を備えたロボットシステムにおいて、前記制御装置は、前記ロボットアームにより前記ハンドで把持した前記対象物を搬送し、予め算出した前記ロボットアームの動作によって生じる前記対象物の位相変動に相当する補正量に基づき前記ロボットアームの動作によって生じる前記対象物の位相変動を打ち消すよう、前記ハンドを旋回駆動させた状態で前記撮像装置で前記対象物を撮像し、撮像した前記対象物の画像に対する画像処理を介して位相計測を行う構成を特徴とする。
【発明の効果】
【００１４】
本発明によれば、ロボットアームによる搬送を停止させることなく、ハンドで把持した部品の位相を計測する際、ロボットアームの動作によって生じる前記対象物の位相変動を打ち消すよう、前記ハンドを旋回駆動させるようにしている。このため、位相計測のための撮像タイミングとロボット動作を精密に同期させる必要がなく、高速なロボット動作と、安定した位相計測を両立できる、という優れた効果がある。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１に係るロボットシステムの概略構成を示した説明図である。
【図２】本発明の実施例１に係る部品の撮像結果を示した説明図である。
【図３】本発明の実施例１に係るロボットの直線動作に伴う部品位相の変化を示した説明図である。
【図４】本発明の実施例１に係るロボットの非直線動作に伴う部品位相の変化を示した説明図である。
【図５】本発明の実施例１に係るハンド旋回駆動補正を加えた場合のロボットの非直線動作に伴う部品位相の変化を示した説明図である。
【図６】本発明の実施例１に係る制御手順を示すもので、（ａ）は補正量算出工程、（ｂ）は基準位相取得工程を示したフローチャート図である。
【図７】本発明の実施例１に係るロボットシステムのオンライン動作の概略を示した説明図である。
【図８】本発明の実施例１に係る撮像とロボット動作の関係を時間軸上に示した説明図である。
【図９】本発明の実施例１に係るロボット動作時間とカメラに対する部品位相θＣの変化を示した線図である。
【図１０】本発明の実施例１に係る位相計測工程の制御手順を示したフローチャート図である。
【図１１】本発明の実施例１に係る補正動作を加えた場合のロボット動作時間とカメラに対する部品位相θＣの変化を示した線図である。
【図１２】本発明の実施例２に係るロボット動作時間とカメラに対する部品位相θＣの変化を示した線図である。
【図１３】本発明の実施例２に係る補正動作を加えた場合のロボット動作時間とカメラに対する部品位相θＣの変化の変化を示した線図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照して、本発明を実施するための好適な形態として、ロボットハンドで把持した部品の位相を計測し、またその位相を補正するロボットシステムに関する実施例を示す。
【実施例１】
【００１７】
（ロボットシステムの構成）
図１は、本発明の一実施例に係るロボットシステムの概略を示している。ロボットシステム１は、ロボットアーム２と、ロボット制御装置３と、カメラ４と、画像処理装置５とコントローラ６を備えて構成される。
【００１８】
このうち、コントローラ６は、後述のロボット制御装置３と画像処理装置５を制御し、ロボットシステム全体を制御する。コントローラ６は、汎用マイクロプロセッサなどから成るＣＰＵ６１、およびＲＯＭ６２、ＲＡＭ６３などから成る制御手段として含む。ＲＯＭ６２は、後述の補正量算出工程や位相計測工程を実現する制御手順をＣＰＵ６１の制御プログラムとして格納するプログラムメモリである。ＲＡＭ６３は、ＣＰＵ６１が上記各工程を実行する場合にワークエリアとして用いられる。なお、図１では、コントローラ６の他に、別の機能ブロックとしてロボット制御装置３と画像処理装置５を図示している。しかしながら、コントローラ６、ロボット制御装置３、および画像処理装置５が連携することにより、全体として図示したロボットシステムを制御する制御装置を構成する、と考えてもよい。また、コントローラ６が、ロボット制御装置３ないし画像処理装置５の任意の制御機能を兼ねるよう構成されていてもよい。
【００１９】
図１において、ロボットアーム２は、例えば多関節シリアルリンクのロボットアームとして構成される。ロボットアーム２の各関節は不図示のモータによって駆動され、アーム先端部２０の位置および姿勢を制御することができる。
【００２０】
アーム先端部２０には、ハンド２１が支持されている。ハンド２１は、組み立てや加工の対象物として部品７を把持し、その状態でロボットアーム２の各関節を駆動することにより、例えば工程から工程へと部品７を搬送（移動）することができる。
【００２１】
ハンド２１はハンドベース部２１０とハンド先端部２１１から成る。このうちハンド先端部２１１は、ハンド２１の主要機能、対象物の把持およびその位相制御の機能を実現する。ハンド先端部２１１には、３つのフィンガー２１１０、２１１１、および２１１２が設けられており、フィンガー２１１０〜２１１２を開閉することで、部品７を把持または把持開放することができる。
【００２２】
ハンド先端部２１１は、ハンドベース部２１０に対して関節２１２を介して旋回駆動可能に支持されている。関節２１２は、ロボット制御装置３ないしコントローラ６の制御に基づき、不図示のモータや空気圧や油圧を利用した任意のアクチュエータによって駆動され、所望の旋回角度に制御することができる。関節２１２の旋回軸（関節中心）は、ハンド先端部２１１の中心を通るよう配置される。通常、フィンガー２１１０〜２１１２の中心も上記旋回軸に一致するよう配置される。図１の図示においては、関節２１２の旋回軸は例えば関節２１２の中心（およびハンド２１の中心）を通り、図中垂直方向に沿った状態である。部品７を把持した状態で、ハンド先端部２１１を関節２１２を介して旋回駆動することにより、部品７の位相（把持位相）を制御することができる。
【００２３】
なお、上記のようなハンドベース部２１０、フィンガー２１１０〜２１１２を有するハンド先端部２１１、関節２１２などから成るハンド２１の構成はあくまでも一例である。ハンド２１の構成は、上記のような対象物の把持とその位相制御機能を実現できるものであれば、当業者において任意に設計変更が可能である。そこで、以下では、特に必要がなければハンド先端部２１１とハンド２１を厳密には区別せず記述する。例えば、厳密にはハンド先端部２１１の旋回駆動やそれにより実現される対象物の位相制御のことを、「ハンド２１の旋回駆動」や、「ハンド２１による位相制御」のように記述することがある。
【００２４】
図１に示した部品７は円柱形状であり、その上面に中心軸回りの回転角度を示す位相特徴部（図中の黒丸で図示）を少なくとも１つ以上有する。この位相特徴部は、例えばボスやスタッド、その他の凹凸構造、塗装などにより形成された着色部など、画像処理によって識別可能な部位である。なお、本実施例において、部品７の形状を円柱形状としているのは説明を容易にするためであって、部品７は、例えば画像処理によって認識可能な何らかの位相特徴部を有していればよい。
【００２５】
カメラ４は、ＣＣＤセンサやＣＭＯＳセンサなどの撮像素子を用いて撮像を行う撮像装置であり、ハンド２１に把持された部品７を撮像可能な位置に不図示のカメラマウントなどを介して固定される。カメラ４の光学系（不図示）の撮像倍率や撮影距離は、ロボットアーム２により搬送されて移動中の部品７を撮像素子の画角内に捉えることができるよう設定される。
【００２６】
ロボット制御装置３は、コントローラ６からの指令に基づいてロボットアーム２およびハンド２１の制御を行う。
【００２７】
ロボットアーム２の制御は、例えばコントローラ６がロボット制御装置３に対して、アーム先端部２０の目標位置姿勢を直交座標系で指定することで実現される。以下、この目標位置姿勢のことを教示点という。コントローラ６からある教示点を指定されると、ロボット制御装置３は、ロボットアーム２の基準部位、例えばアーム先端部２０が教示点と重なるように、現在の位置姿勢から教示点への軌道を生成する。軌道の生成方法としては、直線補完法やスプライン補完法、円弧補完法など、公知の任意の生成方法を用いても構わない。
【００２８】
ロボット制御装置３は、上記のようにして軌道を算出し、さらに逆運動学に基づき、例えばアーム先端部２０にその軌道上を移動させるのに必要な各関節の角度を計算し、各関節が算出した角度となるように、一定の時間間隔で各モータに動作信号を出力する。
【００２９】
続いて、ハンド２１の制御について説明する。本実施例では、ハンドベース部２１０に対するハンド先端部２１１の旋回角度をθＨ、旋回速度はωＨ＝ｄθＨ／ｄｔ（角速度：位相θＨの時間微分）のように表現する。ハンド２１の制御は、例えば目標旋回速度ωＨｔ、旋回開始時刻ｔｓ、旋回終了時刻ｔｅを指定することで実現できる。例えば、ロボット制御装置３は、指定された時刻ｔｓにおいて、指定した旋回速度ωＨｔとなるように関節２１２に設けられたモータに動作信号を出力する。ただし、時刻ｔｓに信号出力が開始されるため、実際にハンド２１が目標旋回速度となるのは時刻ｔｓ＋Δｔｓである。ここでΔｔｓは目標旋回速度までの加速に要する時間である。さらに、指定された終了時刻ｔｅに旋回速度が０となるように関節２１２に設けられたモータに動作信号を出力する。実際に旋回速度が０となるのは、減速に要する時間Δｔｅ後のｔｅ＋Δｔｅとなる。
【００３０】
画像処理装置５は、コントローラ６からの指令に基づいて画像データを取得する画像取得部５０と、画像処理により部品の中心軸（ハンド２１の旋回軸）回りの回転角度に相当する位相を計測する位相計測部５１から成る。画像取得部５０は、コントローラ６からの撮像指令を受信すると、カメラ４に対し、撮像信号を出力する。カメラ４は、画像取得部５０から撮像信号を受信すると、ハンド２１に把持された部品７を撮像し、撮像結果の画像データを画像取得部５０に対して送信する。位相計測部５１は、画像取得部５０が取得した画像データに基づき位相計測を行う。
【００３１】
以下、位相計測方法について説明する。図２は、カメラ４により撮像した部品７の画像の一例を示している。図示のように、画像中には、フィンガー２１１０〜２１１２で把持された部品７が撮像されている。画像処理装置５の位相計測部５１は、図２のように撮像された画像データから部品７の２つの位相特徴部Ｍ０、Ｍ１の座標値として、Ｍ０＝（ｘ０，ｙ０）、Ｍ１＝（ｘ１，ｙ１）を求める。位相計測部５１が位相特徴部Ｍ０、Ｍ１を求めるための画像処理には、例えば公知の画像認識処理を利用することができる。次に、位相計測部５１は位相特徴部Ｍ０、Ｍ１の座標値（ｘ０，ｙ０）、（ｘ１，ｙ１）を用いて、カメラ４の撮像した画像中における部品７の位相θＣを次の式（１）により算出する。
【００３２】
【数１】
2015217489.tif 000003
上記式（１）のような演算により、撮影された画像のｘ軸（またはｙ軸）に対する角度として部品７の位相θＣを求めることができる。なお、位相計測の手法は上記に限らず任意の手法を用いて構わない。例えば、位相計測に用いる特徴部については、部品の中心軸と、１つの位相特徴部から求めてもよいし、３つ以上の特徴部から位相を求めることもできる。
【００３３】
ここで、図７を参照して、ロボットシステムのオンライン動作全体の様子を説明しておく。オンライン動作時には、ロボットアーム２は、まず、教示点Ｐ０でハンド２１により部品７を把持する。その後、ロボットアーム２は教示点Ｐ０から移動を開始し、教示点Ｐ１、Ｐ２を通り、組み付け位置等の目標位置である教示点Ｐ３まで部品７を搬送する。
【００３４】
本実施例では、上記の教示点Ｐ０からＰ３までの移動中、ロボットアーム２による部品７の搬送を停止させないストップレス制御を行う。目標位置の教示点Ｐ３において部品７の位相を所望の位相に制御するためにカメラ４によって撮像を行い、位相計測を実施するが、この位相計測も部品７の搬送を停止しないで行う。位相計測を行なうのは、教示点Ｐ１、Ｐ２の間の区間Ｄ１で、この区間Ｄ１において、部品７を停止させることなくカメラ４により撮像を行い、位相計測を実施する。従って、教示点Ｐ１とＰ２は、教示点Ｐ１からＰ２への軌道上で、カメラ４が部品７を撮像できるように設定する。カメラ４で撮像を行う範囲（後述の範囲Ｄ）については、後でより詳細に説明する。
【００３５】
また、教示点Ｐ１からＰ２への動作中、部品７が、常に位相特徴部が存在する面をカメラ４に向けた状態となるように教示点Ｐ１とＰ２を設定する（図７では簡略化のため部品７の位相特徴部は黒丸ひとつで示している）。区間Ｄ１における位相計測の後、教示点Ｐ２通過後に、位相計測結果を用いてロボットアーム２を制御し、ハンド２１、従って部品７が所望の位相となるようにハンド２１を旋回させて位相補正（姿勢変更）を行う。なお、この位相補正を行う区間Ｄ２は、図７では教示点Ｐ２とＰ３の間に示してある。この区間Ｄ２の位相補正も部品７の搬送を停止させずに行う。以上のような制御よりオンライン動作に要するタクトタイムを短縮する効果を期待できる。なお、位相補正を行うタイミングは図７に示した区間Ｄ２以外であってもよい。位相補正は、例えば目標位置である教示点Ｐ３に到達した後、ロボットアーム２を停止した状態でハンド２１だけを旋回駆動させて行ってもよい。
【００３６】
上記の位相補正（図７では区間Ｄ２）は、区間Ｄ１において実施した位相計測の結果から判明している撮影時の部品７の実位相θＣと、後述の基準位相取得工程で得た基準位相θＩとの差分Δθ分だけハンド２１を旋回駆動させる。本実施例においては、教示点Ｐ０でハンド２１により部品７を把持する際、部品７の位相は保証されている必要はなく、上記区間Ｄ１で実測した部品７の実位相に基づき、基準位相への位相補正を行うことができる。
【００３７】
（ロボットシステムの制御方法）
以下、本実施例のロボットシステムの動作につき説明する。実際に部品の組み付けや検査等を行うロボットシステムのオンライン時においては、本実施例の制御方法は、位相計測工程と、その位相計測結果に基づき部品の位相（姿勢）を位相補正（姿勢変更）する工程を含む。また、本実施例の制御方法は、ロボットシステムのオンライン時より前に実行する事前準備として補正量算出工程と、基準位相取得工程を含む。この補正量算出工程では、上記の位相計測工程においてハンド２１の旋回補正を行うための補正量を取得する。この補正量算出工程で取得した補正量は、オンライン時の位相計測工程に用いられる他、補正量算出工程に引き続き、オンライン前に基準位相取得工程で利用される。
【００３８】
まず、ロボット動作の補正原理について簡単に説明した後、上記各工程について、詳細に説明する。
【００３９】
図３〜図５は、ロボットアーム２で部品７を搬送中、カメラ４で撮像された部品７の位相の変化を連続的に示したものである。各図中の矢印は、部品７の２つの位相特徴部Ｍ０、Ｍ１により計測される部品７の位相を判り易くするため図示したものである。
【００４０】
図３は、ハンド２１を一切、旋回駆動することなくロボットアーム２を理想的な直線軌道で動作させた時のカメラ４に対する部品７の位相の変化を連続的に示している。この場合、カメラ４に対する部品７の位相は一定となる。しかしながら、図３のように部品７の軌道が直線となるのは理想的な場合であり、実際にはロボットアーム２の各部の絶対位置決め精度の問題で、軌道は必ずしもこのような直線にはならない。
【００４１】
図４は、ロボットアーム２の各部の絶対位置決め精度の影響などによって、部品７を搬送するロボットアーム２、従って部品７の軌道が直線ではない場合の位相の変化を連続的に示している。実際のロボット装置では、ハンド２１を旋回駆動しない場合でも図４のようにロボットアーム２の各部の絶対位置決め精度の影響を受けるため、ハンド２１で搬送される部品７の位相θＣは一定ではなく、ロボット動作に伴い刻々と変化する。図９は、図４と同様に実際のロボット装置で生じうる部品７の位相θＣの変化の一例を示している。図９では、時刻ｔ０で、部品７をハンド２１によって把持し、その後、ロボットアーム２のアームを駆動して時刻ｔ０時刻ｔ１、ｔ２…と特定の軌道で搬送し、時刻ｔ３に目標位置に到達させている。
【００４２】
図４あるいは図９のような位相変化で移動する部品７をカメラ４で撮像する場合、撮像タイミングが異なると、ハンド２１および把持された７の位相θＣの値も異なったものとなる。しかも、カメラ４で撮像された部品７の位相と、目標位置における目標位相の位相差を計算できても、その位相差に例えばロボットアーム２のアームで生じている位相差と、ハンド２１の把持位置の誤差で位相差がどれだけの配分で含まれているかは特定できない。また、目標位置の手前の搬送中にカメラ４で部品７を撮像して位相計測を行っても、その先の目標位置までにどのような位相変動が生じるかは、全搬送経路に渡って位相計測を行なわない限り特定できない。
【００４３】
以上のような理由で、図４（図９）のような搬送状態において、異なる撮像タイミングで撮像した画像から位相計測を行っても、その位相計測結果は、後にハンド２１の旋回量補正による部品７の位相補正（制御）に安定して用いることはできない。
【００４４】
ここで、前述のように、例えばロボット動作と撮像タイミングを厳密に同期させ、ハンド２１が特定の位相状態を取るタイミングで撮像を行えれば、位相計測およびそれに基づく位相補正（位相制御）の再現性、安定性を向上できると考えられる。しかしながら、通信ジッタ等の理由により、そのような厳密な同期の実現は困難である。
【００４５】
ここで、図８にオンライン時のロボット動作とカメラ４による撮像の時間関係を示している。ロボットシステムのオンライン時に、コントローラ６からロボット制御装置３に動作開始指令が出力され（時刻ｔ０）、その指令を受けてロボット制御装置３がロボットアーム２に動作信号を発信し、ロボットアーム２は、教示点Ｐ１からＰ２への動作を開始する。さらに、一定時間ｔａ後にコントローラ６は画像処理装置５に撮像指令を出力し（時刻ｔｐ１）、指令を受けた画像処理装置５はカメラ４に撮像信号を発信し（時刻ｔｐ２）、カメラ４が撮像を行う（時刻ｔｐ３）。
【００４６】
図８において、コントローラ６がロボット制御装置３に動作指令を出力（時刻ｔ０）してから、実際にロボットアーム２が動作を開始するまでの時間ｔｒ１にはバラツキがあり、一定の値とはならない。これは、コントローラ６とロボット制御装置３の間の通信ジッタ等によるものである。同様の理由で、コントローラ６が画像処理装置５に撮像指令を出力してから、実際に撮像が行われるまでの時間ｔｃについても一定の値とはならない。よって、ロボットが動作を開始してから撮像が行われるまでの時間ｔｒ２は、ｔｒ１とｔｃの影響から、一定値にはならない（撮像タイミングに揺らぎがある）。そこで、本実施例では、時間ｔｒ２の変動し得る範囲をＭＩＮ（ｔｒ２）〜ＭＡＸ（ｔｒ２）とし、この範囲内にカメラ４を介して位相計測し得る範囲（後述の範囲Ｄ）を設定する。
【００４７】
さらに、本実施例では、この位相計測し得る範囲Ｄは、特定の教示点を設定しての部品７の搬送において、カメラ４に対する部品７の位相θＣの単位時間当たりの変動量（ｄθＣ／ｄｔ＝ωＣ）が一定であると仮定できる区間とする。この条件を満たす範囲Ｄを求めるには、例えば特定の教示点を設定しての部品７の搬送におけるロボットアーム２の設計上の定数や各関節の駆動条件などから求める手法が考えられる。また、予め特定の教示点を設定して実際に部品７を搬送し、連続的に部品７をカメラ４で撮像して得た画像から位相θＣを計測し、単位時間当たりの変動量がほぼ一定である区間を実測してもよい。その場合、カメラ４を介して部品７の位相を計測する期間は、例えば上記の時間ｔｒ２の変動し得る範囲であるＭＩＮ（ｔｒ２）〜ＭＡＸ（ｔｒ２）の間に取る。
【００４８】
図９は、上記のようにして位相計測し得る範囲Ｄを単位時間当たりの変動量ｄθＣ／ｄｔ＝ωＣａがほぼ一定である区間に取り、カメラ４で撮像した画像から計測される部品７の位相θＣの変化の様子を示している。図９中の横軸は時間ｔ（ロボット動作時間）に取ってある。図９において、ロボットアーム２が動作を開始する時刻はｔ０、動作を終了する時刻はｔ３、位相計測し得る範囲Ｄは時刻ｔ１〜ｔ２である。図９のロボットアーム２の搬送動作では、ハンド２１の旋回駆動は一切行っていないが、上記のロボットアーム２の各部の絶対位置決め精度の影響などによって位相θＣは図示のような位相変化を示す。
【００４９】
上記のように、位相計測のためにカメラ４により部品７を撮像するタイミングを正確にロボットアーム２の動作と同期させるのは非常に困難である。このため、本実施例ではカメラ４により部品７を撮像する範囲において後述のようにハンド２１を積極的に旋回駆動し、ロボットアーム２の動作により生じる位相変化を打ち消すような補正を行なう。この補正は、図９のように単位時間当たりの変動量ｄθＣ／ｄｔ＝ωＣａ（位相θＣの時間微分、ないし角速度）がほぼ一定になっている範囲Ｄ（ｔ１〜ｔ２）を利用する。本実施例の補正量算出工程は、この区間の変動量ｄθＣ／ｄｔ＝ωＣａを測定し、後の位相計測の際、ハンド２１旋回駆動に作用させるための補正量を求めるものである。
【００５０】
本実施例の補正量算出工程では、ある教示点への移動を指定して、ロボットアーム２で部品７を特定の軌道で搬送し、上記の範囲Ｄで連続的に位相計測を行う。すなわち、例えばカメラ４で部品７の静止画を複数枚撮影するか、あるいは動画撮影により複数フレームの部品７の画像を撮影し、それぞれの画像について位相特徴部を検出する画像処理を行うことにより位相計測を行う。この位相計測は、下記の例では上述同様の部品７を用いて行うが、実際にはロボットアーム２の移動によって生じるハンド２１の位相を計測しているのと等価である。
【００５１】
そして、この位相計測の結果から、オンライン時の位相計測工程で部品７の位相計測を行う範囲においてハンド２１の位相が一定となるようハンド２１を旋回駆動補正するための補正量を算出する。なお、本実施例では、特定の教示点を設定しての部品７の搬送において、カメラ４に対する部品７の位相θＣの単位時間当たりの変動量ｄθＣ／ｄｔ＝ωＣが一定であると仮定できる区間を位相計測し得る範囲Ｄとして設定する。本実施例の補正量算出工程は、この範囲Ｄを対象として行う。
【００５２】
本実施例の補正量算出工程は、ハンド２１を旋回させずにロボットアームで部品７を搬送し、上記の位相計測し得る範囲Ｄにおいてカメラ４に対する部品７の位相の変動量ωＣａを算出する。この時の位相変化は、ハンド２１を旋回駆動しないため、ロボットアーム２の搬送によって生じる位相変化のみを反映している。そこで、図９の位相の変動量ωＣａを取得しておき、ロボットシステムのオンライン時の位相計測工程において、上記の範囲Ｄにおいて、ハンド２１をωＨ＝−ωＣａの角速度で（マイナス符号は逆回転を示す）旋回駆動させる。これにより、その区間において、ロボットアーム２各部の誤差によって生じる位相の変化を打ち消すようにハンドを旋回駆動することができる。
【００５３】
図５は、上記の補正量算出工程で求めた補正量を用いてハンド２１の旋回駆動補正を行った場合の部品７の位相の変化を示している。一般に、ロボットアーム２の動作には再現性があるため、上記のような補正動作を行うことで、図５に示すように位相計測し得る範囲Ｄにおいて部品７の位相が（従ってハンド２１の位相も）一定となる。これにより、範囲Ｄ内であれば、カメラ４の撮像タイミングが何時であっても、撮像した部品７の位相は同じ値になる。このような制御により、位相計測のためのカメラ４の撮像タイミングを精密に同期させる必要がなくなる。
【００５４】
また、図１１の波形１１１は、位相計測工程において、上記のハンド２１の旋回駆動補正を行った場合の部品７の位相の変化を示している。図１１では、図９の位相変化を打ち消すよう、ハンド２１をωＨ＝−ωＣａの角速度で旋回駆動しているため、範囲Ｄでは結果として位相θＣは一定になっている。従って、範囲Ｄ内であれば、カメラ４による撮像タイミングをロボット動作と精密に同期させなくても、カメラ４の撮像を介して計測される部品７の位相θＣは常に一定となる。
【００５５】
本実施例では、ロボットシステムのオンライン時の位相計測工程において、上記のようにして位相計測した部品７の位相θＣを、例えば目標位置で部品７が所期の位相（後述の位相θＤ）を取るように補正する際に用いる基準位相は、次のようにして取得する。この基準位相取得工程は、上記の補正量算出工程の後、位相計測工程を含むロボットシステムのオンライン動作の開始前に実行する。
【００５６】
図１１の波形１１２と１１３は、時刻ｔ３から、オンライン時の位相計測工程とは逆の軌道で目標位置からロボットアーム２を動作させた時の部品７の位相θＣの変化を示している。ここでは、時刻ｔ３からの逆軌道の動作に先立ち、目標位置である教示点Ｐ３（図７）にロボットアーム２を移動し、この目標位置で部品７に取らせたい最終の目標位相θＤでハンド２１に部品７を把持させる。この目標位相θＤでの把持は、例えば作業者が目視確認しながらティーチングペンダントなどを用いてロボットアーム２を制御することにより行う。そして、時刻ｔ３から、位相計測工程とは逆軌道で目標位置からロボットアーム２を動作させる。この逆軌道の動作は、位相計測工程を含むオンライン動作で用いる教示点（後述のＰ１、Ｐ２…）を逆の順序で指定することによって行う。この逆軌道の動作においてハンド２１の旋回駆動を一切行わない場合、部品７の位相θＣは図中右から左へと波形１１３のような変化を示す。
【００５７】
ここで、位相計測工程を含むオンライン動作で、波形１１１のような位相変化となるよう部品７がハンド２１に把持されていたとし、時刻ｔ３で部品７の位相が最終の目標位相θＤとなるよう補正することを考える。この場合、波形１１１のような位相変化を、上記の目標位相θＤを起点とする逆軌道の波形１１３を図１１の左から右へと辿るような位相変化に補正できれば、部品７の位相を最終の目標位相θＤに制御できる。例えば、特に時刻ｔ２において、波形１１１のような位相変化を波形１１３上の位相（下記の基準位相θＩ）に補正できれば、それ以降の波形変化を波形１１３を左から右に辿るよう補正できる。このためには、補正量として図１１中の位相の差分Δθを求める必要がある。
【００５８】
一方、目標位相θＤを起点とする逆軌道の波形１１３においても、カメラ４で撮影を行える範囲は上記の範囲Ｄである。特に本実施例では、位相計測工程において、位相計測のためカメラ４で撮像を行うタイミングを上記の範囲Ｄ（ｔ１〜ｔ２）内で精密に制御しない。また、目標位相θＤを起点とする逆軌道の搬送を行う基準位相取得工程においても、基準位相計測のためカメラ４で撮像を行うタイミングを上記の範囲Ｄ（ｔ２〜ｔ１）内で精密に制御しない。従って、目標位相θＤを起点とする逆軌道の搬送において、波形１１３のままでは範囲Ｄ（ｔ２〜ｔ１）内でどのような位相がカメラ４を介して計測されるかが不明であり、一意の差分Δθを求めることができない。
【００５９】
そこで、本実施例では、位相計測工程を含むオンライン動作において、上記のハンド２１を旋回駆動補正して行う波形１１１のような位相制御を前提とし、基準位相取得工程でも、補正量算出工程で求めた補正量を用いてハンド２１の旋回駆動補正を行う。
【００６０】
すなわち、基準位相取得工程においては、まず、目標位置（後述のＰ３）にロボットアーム２を移動し、ハンド２１に所期の目標位相θＤ（図１１）で部品を把持させる。そして、位相計測工程とは逆の軌道でロボットアーム２を動作させ、位相計測し得る範囲Ｄに入ったら、予め補正量算出工程で求めた補正量を用いてハンド２１に対して位相計測工程の場合とは逆方向の旋回補正を行う。すなわち、基準位相取得工程の逆軌道の搬送では、位相計測し得る範囲Ｄにおいて、ハンド２１をωＨ＝ωＣａの角速度で旋回駆動する。
【００６１】
これにより、基準位相取得工程の逆軌道の搬送においても、図１１の波形１１２に示すように、上記の範囲Ｄにおいて部品７の位相は一定値（θＩ）を取ることになる。これにより、基準位相取得工程においても、精密な撮像タイミングの同期が必要なくなる。そして、範囲Ｄにおいて波形１１２の位相をカメラ４を介して計測しておけば、この位相値を基準位相θＩとして用いることができる。
【００６２】
すなわち、オンライン動作に先立ち基準位相取得工程で基準位相θＩを取得しておき、オンライン動作中の位相計測工程で範囲Ｄにおいて（図１１の波形１１１上から）計測した部品７の位相θＣと基準位相θＩとの差分Δθだけハンド２１を旋回駆動させる。以上のようにして、目標位置において部品７を目標位相θＤに制御することができる。
【００６３】
なお、基準位相取得工程で基準位相θＩを取得するためのカメラ４による撮像は、上記のようにロボットアーム２による逆軌道の搬送中、範囲Ｄに入った後、図１１の波形１１２のようにハンド２１をωＨ＝ωＣａの角速度で旋回駆動しつつ行う。あるいは、基準位相取得工程で基準位相θＩを取得するためのカメラ４による撮像は、逆軌道の搬送後、範囲Ｄを超えた時点でロボットアーム２を反転させ、その順軌道の搬送中に行ってもよい。すなわち、逆軌道の搬送で範囲Ｄを通過した後、順方向へロボットアーム２を動作させ、範囲Ｄに入った後に今度は（位相計測工程と同様に）ハンド２１をωＨ＝−ωＣａの角速度で旋回駆動しつつカメラ４を介して基準位相を計測する。このように、基準位相取得工程は逆軌道の搬送後の順軌道の搬送中に行ってもよい。
【００６４】
かくして、ロボットアーム２にオンライン時と同じ教示点を逆の順序で辿らせる逆軌道の動作を利用して、本実施例の位相計測工程で計測した位相を補正するための基準位相θＩを取得することができる。一般に、ロボットシステムでは、オンライン時と同じ教示点を用いた順方向（正方向）と逆方向（逆軌道）の動作には可逆的な再現性があるため、上記のような手法によって、ほぼ実用的な基準位相θＩを取得することができる。本実施例では、以上のようにして、カメラ４の撮像タイミングを保証する必要なく位相計測を行い、計測した位相値と、予め取得した基準位相を用いて目標位置において部品が目標位相を取るよう位相（姿勢）制御を行うことができる。特に、位相計測工程および基準位相取得工程では、補正量算出工程で取得した補正量を用いて、ハンド２１を除くロボットアーム２各部の誤差などに起因する位相誤差をキャンセルするようハンド２１を旋回駆動する。従って、ロボットアーム２各部の誤差などに起因する位相誤差にかかわらずロボットアーム２による部品７の搬送を停止させることなく、搬送中に位相計測を行い、それに基づき最終の目標位置において部品７を所期の位相（姿勢）に制御できる。
【００６５】
以下、上記の補正原理を用いた補正量算出工程（図６（ａ））、基準位相取得工程（図６（ｂ））、および位相計測工程（図１０）につき、さらに詳細に説明する。
【００６６】
図６（ａ）は補正量算出工程を実現する制御手順を示している。図６（ａ）の補正量算出工程、および図６（ｂ）の基準位相取得工程は、この順で、ロボットシステムのオンライン動作に先立って実行される。補正量算出工程（図６（ａ））で算出された補正量は、基準位相取得工程（図６（ｂ））、および後述の位相計測工程（図１０）で用いられる。後述の位相計測工程（図１０）は、ロボットシステムのオンライン動作中に実行されるもので、部品７をロボットアーム２により目標位置まで搬送する間に実行される。位相計測工程（図１０）は、例えば目標位置において部品７が目標の位相となるよう姿勢（位相）制御するために実行される。
【００６７】
図６（ａ）、（ｂ）ないし図１０の制御手順は、コントローラ６のＣＰＵ６１が実行する制御プログラムとして、例えば上記のＲＯＭ６２（あるいは他のコンピュータ読み取り可能な記録媒体）に格納しておく。
【００６８】
図６（ａ）の補正量算出処理において、ステップＳ１１において、ＣＰＵ６１はロボット制御装置３に対して教示点Ｐ１とＰ２の設定を行う。この教示点Ｐ１〜Ｐ２の空間は、ロボットシステムをオンライン動作させて行う位相計測区間を含む。
【００６９】
続いてステップＳ１２において、ＣＰＵ６１は図５に示した位相計測し得る範囲Ｄを設定する。この範囲Ｄは、図７のオンライン動作の図においてはカメラ４が位相計測を行える区間Ｄ１中に設定される。
【００７０】
次に、ステップＳ１３において、ＣＰＵ６１はハンド２１の目標旋回速度ωＨｔを設定する。この補正量算出処理では、ハンド２１の旋回駆動は行わず、目標旋回速度ωＨｔはωＨｔ＝０と設定する。
【００７１】
その後、ステップＳ１４において、ＣＰＵ６１はロボット制御装置３に制御信号を送信し、ハンド２１により部品７を把持させる。なお、本実施例における補正量算出工程の目的は、ハンド２１を旋回駆動させず、ロボットアームの動作に起因するハンド２１（あるいはハンド先端部２１１など）のカメラ４に対する位相変化を計測することにある。従って、この時、把持させる対象物は位相特徴部を有し、画像処理で位相計測が行えるものならば部品７でなくてもよい。あるいは、ハンド２１（あるいはハンド先端部２１１など）の特定部位を位相計測部５１が認識可能な位相特徴部として利用できるのであれば、部品７などを用いずに直接その特定部位を用いてステップＳ１５以降の処理を行ってもよい。
【００７２】
続いて、ステップＳ１５においてＣＰＵ６１はロボット制御装置３に制御信号を送信し、ロボットアーム２を教示点Ｐ１に移動させ、さらにステップＳ１６において教示点Ｐ１から教示点Ｐ２に向かって動作開始させる。この時、動作軌道と速度はオンライン時と同じとなるよう制御する。
【００７３】
ロボットアーム２が動作を開始したら、ステップＳ１７において、ＣＰＵ６１は画像処理装置５を制御して画像処理装置５から撮像信号をカメラ４に対して連続的に送信させ、連続撮像を行わせる。連続撮像した画像の中から上記の位相計測し得る範囲Ｄに有る画像データ（図９ではｔ１〜ｔ２に撮像された画像データ）を位相計測部５１に送信させ、全画像について位相計測部５１により部品７の位相計測を行う。このときの位相計測の手法は、図２および上記の式（１）で示した通りである。以上のようにして、カメラ４に対する部品位相θＣの変動量（例えば図９の位相時間微分ｄθＣ／ｄｔ＝ωｃａ：角速度）を取得することができる。
【００７４】
続いて、ステップＳ１８において、ＣＰＵ６１は取得した部品位相θＣの変動量をｔ１〜ｔ２の区間で線形近似し、単位時間あたりの変動量ωＣａを算出する。この線形近似には最小二乗法など公知の手法を用いることができる。部品位相θＣの単位時間あたりの変動量ωＣａは、後述の基準位相取得工程、およびロボットシステムをオンライン動作させて行う位相計測工程において用いられる。
【００７５】
図６（ｂ）は、本実施例の基準位相取得工程の制御手順を示している。図６（ｂ）の基準位相取得工程は、図６（ａ）の補正量算出工程の後に実行する。図示の制御手順は、コントローラ６のＣＰＵ６１によって実行される制御プログラムとして、例えば上記のＲＯＭ６２（あるいは他のコンピュータ読み取り可能な記録媒体）に格納しておく。
【００７６】
図６（ｂ）のステップＳ３１では、作業者がティーチングペンダントなどを用いてロボットアーム２を制御し、目標位置である教示点Ｐ３（図７）にロボットアーム２を移動し、ハンド２１に部品７を把持させる。そして、ステップＳ３２では、ティーチングペンダントなどを用いて、部品７の位相が所期の（最終の）目標位相θＤ（図１１）となるよう、ハンド２１の旋回量を制御する。
【００７７】
ステップＳ３３では、範囲Ｄにおいてハンド２１を旋回駆動する際の目標旋回速度ωＨｔを決定する。ここでは、図６（ａ）のステップＳ１８で求めた部品７の位相の単位時間あたりの変動量ωＣａを用いて、目標旋回速度ωＨｔはωＨｔ＝ωＣａとする。この目標旋回速度ωＨｔ＝ωＣａは後述の位相計測工程における目標旋回速度ωＨｔ＝−ωＣａと絶対値は同じであるが、方向が回転方向は逆である。これは、基準位相取得工程では、ロボットアーム２を上記の通り逆軌道で動作させるためである。
【００７８】
ステップＳ３４では、目標位置である教示点Ｐ３（図７）からロボットアーム２を上記の逆軌道で移動開始させ、ステップＳ３５では、教示点Ｐ２（図７）に移動させる。この動作により生じる部品７の位相変化は、図１１の波形１１２において、時刻ｔ３から時刻ｔ２の位相変化に相当する。
【００７９】
そして、ロボットアーム２が教示点Ｐ２（図７）に移動したら、ステップＳ３６において、基準位相θＩを取得する制御を行う。ここでは、ロボットアーム２が位相計測し得る範囲Ｄに入ったら、予め補正量算出工程で求めた補正量を用いてハンド２１に対して位相計測工程の場合とは逆方向の旋回補正を行う。すなわち、ここでは、位相計測し得る範囲Ｄにおいて、ハンド２１をステップＳ３３で設定したωＨ＝ωＣａの角速度で旋回駆動する。これにより、図１１の波形１１２に示すように、上記の範囲Ｄにおいて部品７の位相は一定値（θＩ）を取るようになる。この部品７の位相を範囲Ｄにおいてカメラ４を介して計測し、位相値を基準位相θＩとして取得し、例えば図１のＲＡＭ６３に記憶させる。本実施例では、上記のようなハンド２１の旋回駆動を行うため、基準位相取得工程においても、基準位相計測のためのカメラ４による撮像タイミングも精密に同期する必要がない。
【００８０】
なお、範囲Ｄにおいてハンド２１をωＨ＝ωＣａの角速度で旋回開始させるタイミングは、後述の位相計測工程におけるのと同様、コントローラ６との通信を介さずロボット制御装置３によって決定させるものとする。
【００８１】
次に、位相計測工程について説明する。図１０は、ロボットシステムをオンライン動作させて行う位相計測工程の制御手順を示している。この位相計測工程は、図７のオンライン動作の図においては区間Ｄ１において、ロボットアーム２により搬送中の部品７をカメラ４により撮像して行う。図示の制御手順は、コントローラ６のＣＰＵ６１によって実行される制御プログラムとして、例えば上記のＲＯＭ６２（あるいは他のコンピュータ読み取り可能な記録媒体）に格納しておく。
【００８２】
図１０のステップＳ２１において、ハンド２１の目標旋回速度ωＨｔを設定する。このハンド２１の目標旋回速度ωＨｔは、図９の補正量算出工程においてステップＳ１８で求めたωｃａ（＝ｄθＣ／ｄｔ）を用いてωＨｔ＝−ωＣａと設定する。これにより、図６（ａ）の補正量算出工程で算出した部品位相の変動量ωＣａと逆方向の角速度で旋回させるようハンド２１が設定される。これにより、カメラ４に対する部品７の位相は、図５に示したように位相計測し得る範囲Ｄで一定となるよう制御されることになる。
【００８３】
ただし、旋回を開始するタイミングがずれると、その分だけ計測される位相がずれてしまうため、旋回開始のタイミングは、常にロボット動作と同期させる必要がある。しかしながらこれは、ロボットアーム２とハンド２１の制御を、コントローラ６との通信を介さずロボット制御装置３内で行うことで実現できる。コントローラ６との通信を介さなければ、通信ジッタの影響がないため、ハンド２１旋回開始のタイミングとロボット動作との同期が可能となる。ハンド２１旋回開始時刻ｔｓは、ロボットアーム２の動作開始時刻ｔ０（もしくはｔ１、ｔ２、ｔ３）からの相対時刻で指定すればよい。本実施例では、ハンド２１の目標旋回速度になるまでの加速に要する時間Δｔｓを考慮し、ｔｓ＝ｔ１−Δｔｓ、ｔｅ＝ｔ２とする。この時のロボット動作時間とカメラ４に対する部品位相θＣの関係は、図１１のように位相計測し得る範囲ＤにおいてθＣ＝一定となる。
【００８４】
次に、ステップＳ２２においてＣＰＵ６１はロボット制御装置３に制御信号を送信し、部品７を把持させる。続いてステップＳ２３において、ＣＰＵ６１はロボット制御装置３に制御信号を送信してロボットアーム２を教示点Ｐ１、Ｐ２、Ｐ３…へ移動するよう指令する。そして、ステップＳ２４において教示点Ｐ２に向かってロボットアーム２が移動開始した後、例えば図８の時刻ｔｐ１において画像処理装置５に撮像を指令する制御信号を送信する。これに応じて、画像処理装置５はカメラ４に撮像を指令（図８の時刻ｔｐ２）し、カメラ４が部品７の画像を撮像する（図８の時刻ｔｐ３）。
【００８５】
カメラ４が撮像した画像データは位相計測部５１に送られ、図２および式（１）で説明した手法により位相θＣが計測される。上記の位相計測し得る範囲Ｄにおいては、どのタイミングで撮像を行っても上記のハンド２１は補正旋回速度（−ωＣａ）で旋回制御されている。従って、カメラ４に対する位相θＣは、図１１に示すようにハンド２１の旋回による補正により一定の値となっており、常に安定した部品位相θＣを計測することが可能である。
【００８６】
その後、図７に関連して説明したように、上記の位相計測工程で取得した位相θＣ（図１１の範囲Ｄにおける波形１１１の高さ）と、予め上記の基準位相取得工程において取得した基準位相θＩの差分Δθだけハンド２１を旋回駆動し、部品７の位相を補正する。この位相補正（姿勢制御）は、図７では教示点Ｐ２〜Ｐ３の間の搬送中の区間Ｄ２として示しているが、例えばこの区間でロボットアーム２による部品７の搬送を止めることなく、上記の差分Δθだけハンド２１を旋回駆動することによって実現できる。なお、部品７の位相補正（姿勢制御）のための上記の差分Δθを用いたハンド２１の旋回駆動は、上記のようにロボットアーム２による部品７の搬送中に行う他、ロボットアーム２が目標位置（Ｐ３）に到達し、停止した後に行うようにしてもよい。
【００８７】
以上のように、本実施例によれば、補正量算出工程（図６（ａ））では、部品７の位相変化が単位時間当たり一定であると仮定できる範囲Ｄにおいて、連続的にカメラ４を介して部品７の位相を計測し、部品７の位相変化を線形近似した補正量を取得する。そして、ロボットシステムのオンライン動作においては、位相計測工程において、この範囲Ｄにおいて上記の補正量を用いてハンド２１を旋回駆動する（図１０）。これにより、ロボットアーム２の移動に起因する位相変化分を打ち消し、位相計測しうる範囲Ｄにおいて、カメラ４に対する部品の位相θＣを一定に保ち、この状態でカメラ４を介して位相θＣを計測することができる。このような制御により、本実施例によれば、位相計測のための撮像タイミングと、ロボット動作の精密な同期が必要なくなる。
【００８８】
また、部品７の位相補正を行うための基準位相を取得する基準位相取得工程（図６（ｂ））では、目標位置、目標位相で部品７を把持した状態から、オンライン動作とは逆軌道でロボットアーム２を移動させる。そして、範囲Ｄにおいて、カメラ４による撮像を介して基準位相θＩを取得する。この場合も、補正量算出工程で取得した補正量を用いてハンド２１を旋回駆動する。ただし、この場合は、逆軌道の搬送を行っているため、ハンド２１の旋回駆動方向は位相計測工程とは逆方向に取る。また、オンライン動作とは逆軌道の搬送の後、順軌道で再度搬送して範囲Ｄにおいてカメラ４による撮像を介して基準位相θＩを取得することもできる（この場合はハンド２１の旋回駆動方向は位相計測工程とは同じ方向に取る）。このような制御により、本実施例によれば、基準位相計測においても、撮像タイミングと、ロボット動作の精密な同期が必要なくなる。
【００８９】
位相計測工程で計測した部品位相θＣと、基準位相計測工程で計測した基準位相θＩの差分Δθは相対的な位相値である。従って、部品７の位相補正（姿勢制御）においては、ロボットアーム２が目標位置（Ｐ３）に到達するまでの間に、あるいは目標位置（Ｐ３）に到達してから、差分Δθだけハンド２１を旋回補正する。これにより目標位置（Ｐ３）において、部品７が目標位相θＤを取るよう位相補正（姿勢制御）することができる。
【００９０】
以上のようにして、本実施例によれば、ロボット動作と撮像タイミングが厳密に同期されていなくても、安定した位相計測が可能となる。そして計測した位相と基準位相との差分が無くなるように姿勢変更動作を行うことで、最終的に目標位置に所望の位相で部品７を移動することができる。
【実施例２】
【００９１】
実施例１では、図１１の波形１１１（あるいは波形１１２）のように、位相計測しうる範囲Ｄにおいて、ロボットアーム２の動作に起因する位相変動を打ち消し、カメラ４に対して部品７が一定の位相を取るようにハンド２１を旋回駆動している。実施例１では、ロボットアーム２の移動に起因する位相の時間変動が図９のように範囲Ｄ全体で一定の漸減態様を取る例を示したが、これは説明を容易にするためのものに過ぎない。ロボットアーム２の移動に起因する位相変動がより複雑な場合でも、以下に示すように例えば区分線形近似（ないし区分線形補完）によって、ロボットアーム２の移動に起因する位相変動を打ち消すような補正量を求めることができる。
【００９２】
本実施例は、計測し得る範囲Ｄにおいて、カメラ４に対する部品の位相θＣの単位時間当たりの変動量が一定でない場合のものである。本実施例でも、ロボットシステムのハードウェア構成は図１に示したものと同様である。また、補正量算出工程（図６（ａ））、基準位相計測工程（図６（ｂ））、位相計測工程（図１０）の各制御手順全体の流れも実施例１と同様である。異なるのは、補正量算出工程（図６（ａ））の例えばステップＳ１８における補正量の取得態様である。
【００９３】
図１２は、本実施例におけるロボット動作時間とカメラ４に対する部品位相θＣの関係を示している。この位相変化は、時刻ｔ０における部品７の把持状態から、ハンド２１を一切旋回駆動せずにロボットアーム２を移動させた場合のものである。図１２の例では、時刻ｔ１〜ｔ２の区間を実施例１における位相計測しうる範囲Ｄに対応させる。図１２の計測し得る範囲（ｔ１〜ｔ２）においては、部品位相θＣの単位時間当たりの変動量ｄθＣ／ｄｔは一定ではない。
【００９４】
しかしながら、このように部品位相θＣの単位時間当たりの変動量ｄθＣ／ｄｔが一定でない場合でも、例えば区分線形補完（ないし区分線形近似）によって、ロボットアーム２の移動に起因する位相変動を打ち消すような補正量を求めることができる。例えば、図１２の範囲（ｔ１〜ｔ２）は、ｔ１〜ｔ１ａの区間をｄθＣ／ｄｔ＝ωＣａ１、ｔ１ａ〜ｔ１ｂの区間をｄθＣ／ｄｔ＝ωＣａ２、ｔ１ｂ〜ｔ２の区間をｄθＣ／ｄｔ＝ωＣａ３（各々一定）、で区分線形補完が可能である。また、図１２よりも複雑な位相変動波形についても、例えば部品位相θＣの変動量ｄθＣ／ｄｔの解析を繰り返し、多数の区間を設定して区分線形補完を行う手法によりロボットアーム２の移動に起因する位相変動を打ち消すような補正量を求めることができる。
【００９５】
すなわち、より一般化して言えば、補正量算出工程において、ロボットアーム２の移動に起因する位相変動に対して、例えば区分線形補完（ないし区分線形近似）のような波形解析を行い、その位相変動を打ち消すような補正量（群）を取得することができる。
【００９６】
さて、ここで図６（ａ）のステップＳ１７の連続位相計測において、部品７が図１２のような位相変動を示しているものとする。本実施例では、ステップＳ１８の線形補完では、例えばカメラ４で撮像した各画像から取得した部品７の位相θＣの変化を解析することにより、計測し得る範囲（ｔ１〜ｔ２）を複数の区間に分割する。この区間分割では、例えば、計測した部品位相θＣの変動量ｄθＣ／ｄｔがそれぞれほぼ一定と判定できるような複数の区間への分割を行い、それぞれの区分で線形近似を行う。このような区間分割は、計測した部品位相θＣの変動量ｄθＣ／ｄｔが例えば一定の角速度範囲内にそれぞれ収まるように計測区間（ｔ１〜ｔ２）を分割する演算によって実現できる。そして、分割した複数の区間において、部品位相θＣの変動量ｄθＣ／ｄｔについて、それぞれ線形近似（線形補完）を行うことにより、その区間の補正量を算出することができる。
【００９７】
なお、上記実施例１の線形近似（線形補完）は、本実施例の制御により計測した部品位相θＣの変動量ｄθＣ／ｄｔが例えば一定の角速度範囲内にそれぞれ収まるように区間分割を行なった結果、１区間分の補正量が得られた特別な場合、と見ることもできる。
【００９８】
図１２の例では、位相計測し得る範囲（ｔ１〜ｔ２）はｔ１〜ｔ１ａ、ｔ１ａ〜ｔ１ｂ、ｔ１ｂ〜ｔ２の３つの区間に分割されている。そして、部品位相θＣの変動量ｄθＣ／ｄｔはそれぞれの区間において、ｔ１〜ｔ１ａの区間をｄθＣ／ｄｔ＝ωＣａ１、ｔ１ａ〜ｔ１ｂの区間をｄθＣ／ｄｔ＝ωＣａ２、ｔ１ｂ〜ｔ２の区間をｄθＣ／ｄｔ＝ωＣａ３（各々一定）と取得できる。
【００９９】
位相計測工程（図１０）では、各区間において、これらの部品位相θＣの変動量ｄθＣ／ｄｔをそれぞれ打ち消すように同じ絶対値で逆回転（マイナス方向）の角速度−ωＣａ１、−ωＣａ２、−ωＣａ３でハンド２１を旋回駆動する。すなわち、図１０のステップＳ２１のハンド旋回速度ωＨｔの設定では、ｔ１〜ｔ１ａの区間でωＨｔ＝−ωＣａ１、ｔ１ａ〜ｔ１ｂの区間でωＨｔ＝−ωＣａ２、ｔ１ｂ〜ｔ２の区間でωＨｔ＝−ωＣａ３と設定する。なお、ωＨｔ＝−ωＣａ１の旋回開始時刻ｔｓ１は、例えばハンド２１の目標旋回速度になるまでの加速に要する時間Δｔｓを考慮し、ｔｓ１＝ｔ１−Δｔｓと設定するとよい。また、ωＨｔ＝−ωＣａ２の旋回開始時刻ｔｓ２はｔｓ２＝ｔ１ａ、ωＨｔ＝−ωＣａ３の旋回開始時刻ｔｓ３はｔｓ３＝ｔ１ｂとする。この時、ハンド２１の旋回速度を−ωＣａ１から−ωＣａ２にするまで、および−ωＣａ２から−ωＣａ３にするまでの加速もしくは減速に要する時間は無視できるものとする。旋回終了時刻ｔｅは、ｔｅ＝ｔ２とする。以上のようにして、位相計測工程（図１０）ロボットアーム２の移動に起因して図１２のような位相変動が生じている場合でも、計測し得る範囲においてカメラ４に対する部品７の位相θＣを図１３の波形１３１のように一定となるよう制御できる。
【０１００】
なお、図６（ｂ）の基準位相計測工程において、ステップＳ３３でハンド旋回速度ωＨｔを設定する際、逆軌道の部品搬送により基準位相計測を計測する場合は、上記の区間で角速度ωＣａ３、ωＣａ２、ωＣａ１の順でハンド２１の旋回駆動量を設定する。すなわち、図１２、図１３でいえば、ｔ２〜ｔ１ｂの区間でωＨｔ＝ωＣａ３、ｔ１ｂ〜ｔ１ａの区間でωＨｔ＝ωＣａ２、ｔ１ａ〜ｔ１の区間でωＨｔ＝ωＣａ１と設定する。また、基準位相計測工程（図６（ｂ））において、順軌道の部品搬送で基準位相計測を計測する場合は、ハンド２１の旋回駆動量として位相計測工程と同様、角速度−ωＣａ３、−ωＣａ２、−ωＣａ１を作用させればよい。このようにして、基準位相計測工程においても、位相計測し得る範囲（ｔ２〜ｔ１またはｔ１〜ｔ２）において、図１３の波形１３２のようにカメラ４に対する部品７の位相θＣが一定となるよう制御できる。そして、本実施例においても、位相計測工程および基準位相計測工程でカメラ４による撮像タイミングを精密に同期させる必要がない。そして、位相計測し得る範囲（ｔ１〜ｔ２）における波形１３１および波形１３２の差分Δθ（図１３）を用いて、上述同様に目標位置において部品７の位相が目標位相θＤとなるよう姿勢制御することができる。
【０１０１】
以上に示したように、ロボットアーム２の移動に起因する位相変動が複雑な場合でも、ロボットアーム２の動作によって生じる部品７の位相変動を一意に線形近似可能な補正量を部品７が搬送される１または複数の区間においてそれぞれ算出することができる。このような区分線形近似（ないし区分線形補完）によって、ロボットアーム２の動作に起因する位相変動を打ち消し、カメラ４による撮像および画像処理を介した位相計測を行うことができる。本実施例によれば、ロボットアーム２の動作に起因する部品７の位相変化が時折、また複雑に変化するような場合でも、位相計測工程ないし基準位相計測工程においてロボットアーム２の動作に起因する位相変化を打ち消すための補正量を算出できる。
【０１０２】
以上に示した２つの実施例において、補正量算出工程では、実際にロボットアーム２にオンライン時と同じ搬送動作を行わせてカメラ４を介して位相計測を行い、ロボットアーム２の動作に起因する部品７の位相変動に相当する補正量を算出している。しかしながら、ロボットアーム２各部ないし全体の動作をシミュレートするような仮想演算モデルを用い、ロボットアーム２の動作に起因する部品７の位相変動に相当する補正量を演算処理のみによって算出するようにしてもよい。このような仮想演算モデルを用意できる場合は、撮像および位相計測演算を行うことなく、数値演算のみによってロボットアーム２の動作に起因する部品７の位相変動に相当する補正量を算出しても構わない。
【０１０３】
以上、２つの実施例を示したが、本発明の撮像制御は、対象物（部品）をロボットアームで移動させながら撮像した画像に対する画像処理に基づき位相計測、および対象物の位相補正（姿勢制御）を行うロボットシステムにおいて好適に実施することができる。
【０１０４】
なお、上記各実施例の制御は、システム全体を制御するコントローラ６のＣＰＵ６１により実行するものとして、また本発明の各制御機能を実現するソフトウェアのプログラムは例えば上述の通りＲＯＭ６２に予め格納しておくものとして説明した。また、ロボットシステム全体の制御系は、図１に示したように主にコントローラ６、画像処理装置５、ロボット制御装置３の各制御ブロックから成るものとして例示した。しかしながら、このような構成はあくまでも一例に過ぎない。例えば、図１にコントローラ６、画像処理装置５、ロボット制御装置３として示した各制御ブロックの特定機能が図示したものと異なる制御ブロックによって実現されるよう構成されていても本発明は実施可能である。例えば、画像処理装置５の位相計測部５１の画像処理機能が主たる制御装置を構成するコントローラ６により実現されていてもよい。あるいはさらに、画像処理装置５やロボット制御装置３の機能が全て主たる制御装置を構成するコントローラ６によって実現されるよう構成されたシステムにおいても、本発明は実施することが可能である。
【０１０５】
また、本発明を実施するための撮像制御プログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。本発明を構成するプログラムは、予めＲＯＭ６２に格納しておく他、に対して何らかのコンピュータ読み取り可能な記録媒体を用いてロボットシステムに供給することができる。その場合、プログラムを供給するためのコンピュータ読み取り可能な記録媒体としては、例えば各種フラッシュメモリデバイス、着脱式のＨＤＤやＳＳＤ、光学ディスクなど、任意の外部記憶デバイスを用いることができるのはいうまでもない。いずれにしても、コンピュータ読み取り可能な記録媒体から読み出された撮像制御プログラム自体が上述した実施例の機能を実現することになり、その場合プログラム自体、ないしそのプログラムを記録した記録媒体も本発明を構成することになる。
【符号の説明】
【０１０６】
１…ロボットシステム、２…ロボットアーム、３…ロボット制御装置、４…カメラ、５…画像処理装置、６…コントローラ、７…部品、２０…アーム先端部、２１…ハンド、５０…画像取得部、５１…位相計測部、６２…ＲＯＭ（プログラムメモリ）、２１０…ハンドベース部、２１１…ハンド先端部、２１２…関節、２１１０〜２１１２…フィンガー
【図１】
2015217489.tif 000004
【図２】
2015217489.tif 000005
【図３】
2015217489.tif 000006
【図４】
2015217489.tif 000007
【図５】
2015217489.tif 000008
【図６】
2015217489.tif 000009
【図７】
2015217489.tif 000010
【図８】
2015217489.tif 000011
【図９】
2015217489.tif 000012
【図１０】
2015217489.tif 000013
【図１１】
2015217489.tif 000014
【図１２】
2015217489.tif 000015
【図１３】
2015217489.tif 000016