(57)【特許請求の範囲】
【請求項１】
手先部を有し、この手先部を移動させるアームを有するロボットと、
前記手先部の位置と、前記手先部の移動先である目標位置とを検出する外界センサと、
前記アームを計測して前記手先部の位置を検出する内界センサと、
前記外界センサで検出された前記手先部の位置と、前記外界センサで検出された前記手先部の目標位置との誤差を算出し、この誤差を、カメラ座標系からロボット座標系へ変換後、前記内界センサにより検出された前記手先部の位置に加えることで、前記手先部の仮想目標位置を設定し、設定された前記仮想目標位置へ前記手先部が移動するよう前記アームを制御する制御手段とを備え、
前記制御手段は、前記仮想目標位置を次式に設定する
ことを特徴とするロボット制御システム。
【数１】
0006485620.tif 000036
但し、ｘｄはロボットの手先部の真の目標位置で左肩のｗはロボット座標系からみたことを示しており、Δｘｍはロボットの手先部の真の位置と内界センサで計測されたロボットの手先部の位置との間のずれ、Δｘｃｄはロボットの手先部の真の目標位置と外界センサで計測されたロボットの手先部の目標位置との間のずれ、Δｘｃはロボットの手先部の真の位置と外界センサで計測されたロボットの手先部の位置との間のずれである。
【請求項２】
手先部とこの手先部を移動させるアームとを有するロボットの制御方法であって、
前記手先部の位置と前記手先部の移動先である目標位置とを検出する位置検出工程と、
前記アームを計測して前記手先部の位置を検出する手先検出工程と、
前記位置検出工程で検出された前記手先部の位置と、前記位置検出工程で検出された前記手先部の目標位置との誤差を算出し、この誤差をカメラ座標系からロボット座標系へ変換する誤差算出工程と、
前記手先検出工程にて検出された前記手先部の位置に前記誤差算出工程で算出した誤差を加えることで、前記手先部の仮想目標位置を設定する位置設定工程と、
前記位置設定工程にて設定された前記仮想目標位置へ前記手先部が移動するよう前記アームを制御する制御工程とを含み、
前記位置設定工程では、前記仮想目標位置を次式に設定する
ことを特徴とするロボット制御方法。
【数２】
0006485620.tif 000037
但し、ｘｄはロボットの手先部の真の目標位置で左肩のｗはロボット座標系からみたことを示しており、Δｘｍはロボットの手先部の真の位置と内界センサで計測されたロボットの手先部の位置との間のずれ、Δｘｃｄはロボットの手先部の真の目標位置と外界センサで計測されたロボットの手先部の目標位置との間のずれ、Δｘｃはロボットの手先部の真の位置と外界センサで計測されたロボットの手先部の位置との間のずれである。
【請求項３】
前記位置検出工程と、前記手先検出工程と、前記誤差算出工程と、前記位置設定工程と、前記制御工程とを順次に繰り返し実行するか、または、前記手先検出工程と、前記位置検出工程と、前記誤差算出工程と、前記位置設定工程と、前記制御工程とを順次に繰り返し実行する
ことを特徴とする請求項２に記載のロボット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、先端部の手先を移動可能に構成された産業用ロボットの手先位置および姿勢の制御システムと制御方法に関するものである。特に、カメラなどで計測されたロボットの情報に基づいて、ロボットの手先の位置を制御するロボット制御システムおよびロボット制御方法に関するものである。
【背景技術】
【０００２】
下記特許文献１には、カメラによりワークおよび部品が撮像され、その画像に基づいて視覚認識装置によりワークおよび部品のカメラ座標値が算出され、この算出されたカメラ座標値と視覚認識装置に予め格納されているワークおよび部品の正規のカメラ座標値とが比較されてワークおよび部品の位置ずれ量が算出され、これがカメラ座標系からロボット座標系に変換され、この変換された位置ずれ量に基づいてロボットが制御される方法が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−１０８１２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、前記特許文献１に開示されたようなビジュアルフィードバック制御では、ロボットの最終的な手先の位置および姿勢の精度を向上させるためには、ロボットとカメラとを高精度にキャリブレーションする必要がある。これは、カメラの内部および外部パラメータの設定誤差、カメラ座標系からロボット座標系への変換時の誤差、およびロボットの実際の手先位置と測定されたロボットの手先位置との誤差が順次に上乗せされるためである。
【０００５】
ロボットとカメラとのキャリブレーションを高精度に行うには、時間がかかったり、コストが高くなったりしてしまう。また、現在では、位置制御や速度制御を用いた産業用ロボットが主流となっており、このような既存のロボットに適用できることが望まれている。
【０００６】
本発明が解決しようとする課題は、ロボットおよびカメラのキャリブレーションにかかる時間やコストを低減することができ、かつ既存の産業用ロボットにも容易に適用可能なロボット制御システムおよびロボット制御方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、前記課題を解決するためになされたもので、請求項１に記載の発明は、手先部を有し、この手先部を移動させるアームを有するロボットと、前記手先部の位置と、前記手先部の移動先である目標位置とを検出する外界センサと、前記アームを計測して前記手先部の位置を検出する内界センサと、前記外界センサで検出された前記手先部の位置と、前記外界センサで検出された前記手先部の目標位置との誤差を算出し、この誤差を、カメラ座標系からロボット座標系へ変換後、前記内界センサにより検出された前記手先部の位置に加えることで、前記手先部の仮想目標位置を設定し、設定された前記仮想目標位置へ前記手先部が移動するよう前記アームを制御する制御手段とを備え、前記制御手段は、前記仮想目標位置を次式に設定することを特徴とするロボット制御システムである。
【数１】
0006485620.tif 000002
但し、ｘｄはロボットの手先部の真の目標位置で左肩のｗはロボット座標系からみたことを示しており、Δｘｍはロボットの手先部の真の位置と内界センサで計測されたロボットの手先部の位置との間のずれ、Δｘｃｄはロボットの手先部の真の目標位置と外界センサで計測されたロボットの手先部の目標位置との間のずれ、Δｘｃはロボットの手先部の真の位置と外界センサで計測されたロボットの手先部の位置との間のずれである。
【０００８】
請求項２に記載の発明は、手先部とこの手先部を移動させるアームとを有するロボットの制御方法であって、前記手先部の位置と前記手先部の移動先である目標位置とを検出する位置検出工程と、前記アームを計測して前記手先部の位置を検出する手先検出工程と、前記位置検出工程で検出された前記手先部の位置と、前記位置検出工程で検出された前記手先部の目標位置との誤差を算出し、この誤差をカメラ座標系からロボット座標系へ変換する誤差算出工程と、前記手先検出工程にて検出された前記手先部の位置に前記誤差算出工程で算出した誤差を加えることで、前記手先部の仮想目標位置を設定する位置設定工程と、前記位置設定工程にて設定された前記仮想目標位置へ前記手先部が移動するよう前記アームを制御する制御工程とを含み、前記位置設定工程では、前記仮想目標位置を次式に設定することを特徴とするロボット制御方法である。
【数２】
0006485620.tif 000003
但し、ｘｄはロボットの手先部の真の目標位置で左肩のｗはロボット座標系からみたことを示しており、Δｘｍはロボットの手先部の真の位置と内界センサで計測されたロボットの手先部の位置との間のずれ、Δｘｃｄはロボットの手先部の真の目標位置と外界センサで計測されたロボットの手先部の目標位置との間のずれ、Δｘｃはロボットの手先部の真の位置と外界センサで計測されたロボットの手先部の位置との間のずれである。
【０００９】
さらに、請求項３に記載の発明は、前記位置検出工程と、前記手先検出工程と、前記誤差算出工程と、前記位置設定工程と、前記制御工程とを順次に繰り返し実行するか、または、前記手先検出工程と、前記位置検出工程と、前記誤差算出工程と、前記位置設定工程と、前記制御工程とを順次に繰り返し実行することを特徴とする請求項２に記載のロボット制御方法である。
【発明の効果】
【００１０】
従来のビジュアルフィードバック制御では、外界センサ（たとえばカメラ）とロボットとのキャリブレーション誤差が、ロボットの手先部の位置と目標位置との間の最終的な誤差に直接影響するため、ロボットとカメラとのキャリブレーションを高精度に行う必要があった。しかしながら、請求項１に記載の発明および請求項２に記載の発明によれば、内界センサにより検出されたロボットの手先部の位置に、外界センサにより検出された手先部の位置と外界センサにより検出された手先部の目標位置との誤差を加えて設定した仮想目標位置に、手先部を移動させることができる。これにより、外界センサとロボットとのキャリブレーション誤差が、ロボットの手先部の位置と目標位置との間の最終的な誤差に直接影響しないようにすることができ、これによりロボットとカメラとのキャリブレーションにかかる時間やコストを低減することができる。また、請求項１に記載の発明および請求項２に記載の発明によれば、上述した制御によりロボットを制御できるため、既存の産業用ロボットに実装されているコントローラにも容易に適用することができ、工場などで稼動している既存のロボットにも直接適用することができ、利用範囲を広げることができる。
【００１１】
さらに、請求項３に記載の発明によれば、各工程を順次に繰り返すことで、ロボットの手先部の位置と目標位置との間の最終的な誤差を小さくすることができ、より高精度な制御を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】本発明が適用されるロボットの一例を示す概略斜視図である。
【図２】本発明のロボット制御システムの一実施例を示す概略ブロック図である。
【図３】本発明のロボット制御システムの一実施例における制御の手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の具体的実施例を図面に基づいて詳細に説明する。
【００１４】
図１は、本発明のロボット制御システムおよびロボット制御方法が適用されるロボットの一例を示す概略斜視図である。図２は、本発明のロボット制御システムの一実施例を示す概略ブロック図である。本実施例のロボット制御システムは、ロボット１と、外界センサ２と、内界センサ３と、センサ２，３からの検出信号に基づきロボット１を制御できる制御手段４とを主要部として備える。以下では、ロボット１は、工場などで用いられている産業用ロボットとされ、この産業用ロボットに本実施例のロボット制御システムが適用される場合について説明する。
【００１５】
ロボット１は、土台５と、土台５に回転自在に設けられるアーム６と、アーム６に設けられる手先部７とを有して構成される。アーム６は、複数のリンク棒８と、隣接するリンク棒８，８同士を互いに回転自在に接続する関節９とを有する。本実施例のアーム６は、３本のリンク棒８を有し、隣接するリンク棒８，８同士が関節９を介して互いに回転自在に接続される。アーム６は、基端部が関節９を介して土台５に回転自在に接続されて外方へ延出され、先端に手先部７が固定される。各関節９には、モータ１０が設けられており、このモータ１０を駆動させることで、関節９を回転させることができ、ひいてはリンク棒８を回転させることができる。なお、図１に示される座標系ＸＹＺは、３次元のロボット座標系とされる。
【００１６】
外界センサ２は、ロボット１の手先部７の位置と、ロボット１の手先部７の移動先である目標位置とを検出するものである。外界センサ２は、本実施例ではカメラとされる。本実施例では、カメラ２は２台用いられ、それらのカメラ２は、像面ＩＭ１，ＩＭ２同士が互いに直交するように配置される。
【００１７】
具体的には、一方のカメラ２は、ロボット座標系のＹＺ平面を撮影できるように配置され、他方のカメラ２は、ロボット座標系のＺＸ平面を撮影できるように配置される。なお、図１に示されるように、一方のカメラ２には、互いに直交するＵ１軸、Ｖ１軸およびＷ１軸からなる３次元のカメラ座標系が設けられ、他方のカメラ２には、互いに直交するＵ２軸、Ｖ２軸およびＷ２軸からなる３次元のカメラ座標系が設けられる。各カメラ２は、前述したように像面ＩＭ１，ＩＭ２同士が互いに直交するように配置され、ロボット１の手先部７の現在の位置と、手先部７の移動先である目標位置とを撮影することができる。
【００１８】
内界センサ３は、ロボット１のアーム６を計測して手先部７の位置を検出するものである。内界センサ３は、本実施例ではエンコーダとされ、各関節９に設けられる。本実施例のエンコーダ３は、モータ１０の回転位置を検出し、この検出結果から現在の手先部７の位置を求めることができる。
【００１９】
制御手段４は、カメラ２で検出されたロボット１の手先部７の位置と、カメラ２で検出されたロボット１の手先部７の移動先である目標位置との誤差を算出し、この誤差を、カメラ座標系からロボット座標系へ変換するものである。制御手段４は、ロボット１の手先部７の真の位置と、カメラ２により検出されたロボット１の手先部７の位置との手先誤差を算出することができる。制御手段４は、カメラ２に接続されており、これらのカメラ２からロボット１の手先部７の位置情報を取得することができる。この取得したロボット１の手先部７の位置と、ロボット１の手先部７の真の位置との誤差である手先誤差を、制御手段４により算出することができる。ここで、手先誤差について説明する。カメラ２からロボット１の手先部７をとらえたときには、カメラ２のひずみなどが原因で、ロボット１の手先部７の実際の位置である真の位置との間に誤差が生じることになり、これが手先誤差となる。
【００２０】
また、制御手段４は、ロボット１の手先部７の真の目標位置と、カメラ２により検出されたロボット１の手先部７の目標位置との目標誤差を算出することができる。制御手段４は、前述したようにカメラ２に接続されており、これらのカメラ２からのロボット１の手先部７の目標位置と、ロボット１の手先部７の真の目標位置との誤差である目標誤差を算出できる。この目標誤差は、カメラ２のひずみなどの原因により、カメラ２からロボット１の手先部７の目標位置をとらえたときに、ロボット１の手先部７の実際の目標位置である真の目標位置との間に生じる誤差である。
【００２１】
具体的には、次のとおりである。ロボット１の手先部７の真の位置をｘ＝（ｘ，ｙ，ｚ）、ロボット１の手先部７の真の目標位置をｘｄ＝（ｘｄ，ｙｄ，ｚｄ）、カメラ２で計測されたロボット１の手先部７の位置をｘｃ＝（ｘｃ，ｙｃ，ｚｃ）、カメラ２で計測されたロボット１の手先部７の目標位置をｘｃｄ＝（ｘｃｄ，ｙｃｄ，ｚｃｄ）とする。カメラ２で計測されたロボット１の手先部７の位置およびカメラ２で計測されたロボット１の手先部７の目標位置は、キャリブレーション誤差を含んでいる。このとき、カメラ２のキャリブレーションによる誤差Δｘｃ、すなわち真値からのずれである手先誤差および目標誤差は、以下の式で表される。なお、以下の式において、左肩に設けられた「ｗ」は、基準となるワールド座標系からみたことを示している。本実施例では、ロボット座標系をワールド座標系としている。また、左肩に設けられた「ｃ」は、カメラ座標系からみたことを示している。
【００２２】
【数１】
0006485620.tif 000004
【００２３】
【数２】
0006485620.tif 000005
【００２４】
【数３】
0006485620.tif 000006
【００２５】
ここで、チルダは誤差を含んだ値を示しており、その他は以下のとおりである。
【数４】
0006485620.tif 000007
【００２６】
数１、数２および数３においては、手先誤差および目標誤差は、カメラ座標系からロボット座標系に変換されている。一方、エンコーダ３で計測されたロボット１の手先部７の現在の位置をｘｍ＝（ｘｍ，ｙｍ，ｚｍ）とすると、ロボット１のキャリブレーションによる誤差Δｘｍ、すなわち真値からのずれは、以下の式で表される。
【００２７】
【数５】
0006485620.tif 000008
【００２８】
ここで、ｆ（ｑ）は、各関節角度からロボット１の手先部７の位置へ変換する関数を示している。なお、ロボット１の幾何情報が正確、かつ各リンク棒８が十分な剛性を有する場合には、Δｘｍはゼロに近づくことになる。同様に、エンコーダ３で計測されたロボット１の手先部７の目標位置をｘｍｄ＝（ｘｍｄ，ｙｍｄ，ｚｍｄ）として、目標位置近傍における誤差、すなわち真値からのずれは、以下の式で定義される。
【００２９】
【数６】
0006485620.tif 000009
【００３０】
【数７】
0006485620.tif 000010
【００３１】
このように、エンコーダ３で計測されたロボット１の手先部７の位置およびエンコーダ３で計測されたロボット１の手先部７の目標位置と、それぞれの真値との間には、リンク棒８の歪みや弛みなどが原因とされる誤差が生じる。
【００３２】
次に、ロボット１の手先部７の位置および姿勢の制御時に生じる誤差は、以下の式で定義される。これは、静止摩擦や重力などの影響による誤差とされる。
【００３３】
【数８】
0006485620.tif 000011
【００３４】
ここでは、以下のとおりである。
【数９】
0006485620.tif 000012
【００３５】
数８で示される誤差は、静止摩擦などの影響が小さく、ロボット１の各関節角が目標位置に正確に制御可能であるとき、Δｘｍ２＝０となる。ここでは、産業用ロボットを対象とするため、この値はゼロとする。ただし、式の展開中では記述することとする。これにより、ロボット１に後述の目標位置を与えた際、制御後のロボット１の手先部７の位置は、数８より以下のようになる。
【００３６】
【数１０】
0006485620.tif 000013
【００３７】
また、制御手段４は、エンコーダ３により検出されたロボット１の手先部７の位置に、前述したように座標系が変換された誤差を加えることで、ロボット１の手先部７の仮想目標位置を設定することができる。制御手段４は、エンコーダ３に接続されており、このエンコーダ３からのロボット１の手先部７の位置情報を取得することができる。そして、エンコーダ３からのロボット１の手先部７の位置に前述した誤差を加えることで、ロボット１の手先部７の仮想目標位置を設定することができる。
【００３８】
具体的には、次のとおりである。仮想目標位置ｘｖｄを以下のように設定し、数１、数２および数４により、仮想目標位置ｘｖｄは以下のようになる。
【００３９】
【数１１】
0006485620.tif 000014
【００４０】
さらに、制御手段４は、設定された仮想目標位置へロボット１の手先部７が移動するように、ロボット１のアーム６を制御することができる。制御手段４は、モータ１０と接続されており、このモータ１０を制御することで、関節９ひいてはリンク棒８を回転させて、ロボット１の手先部７を設定された仮想目標位置へ到達させることができる。
【００４１】
次に、本実施例のロボット１を用いたロボット制御方法について説明する。図３は、本実施例のロボットの制御の手順の一例を示すフローチャートである。この図３に示されるように、本実施例では、前述した制御を用いて、位置検出工程Ｓ１、手先検出工程Ｓ２、誤差算出工程Ｓ３、位置設定工程Ｓ４および制御工程Ｓ５が順次に実行される。
【００４２】
具体的には、まずロボット１の手先部７の位置とロボット１の手先部７の移動先である目標位置とを検出する（ステップＳ１）。この検出は、カメラ２によりなされる。次に、ロボット１のアーム６を計測して、ロボット１の手先部７の位置を検出する（ステップＳ２）。この検出は、エンコーダ３によりなされる。そして、位置検出工程Ｓ１にて検出されたロボット１の手先部７の位置と、位置検出工程Ｓ１にて検出されたロボット１の手先部７の目標位置との誤差を算出し、この誤差をカメラ座標系からロボット座標系へ変換する（ステップＳ３）。
【００４３】
カメラ座標系からロボット座標系へ変換された前記誤差を、手先検出工程Ｓ２にて検出されたロボット１の手先部７の位置に加えることで、ロボット１の手先部７の仮想目標位置を設定する（ステップＳ４）。設定された仮想目標位置へ、ロボット１の手先部７が移動するようにアーム６を制御する（ステップＳ５）。
【００４４】
ところで、本実施例では、ロボット１の位置について説明したが、本実施例の手法は、ロボット１の姿勢にも応用することができる。具体的には、次のとおりである。
【００４５】
ロボット１の手先部７の真の姿勢をＲ、ロボット１の手先部７の真の目標姿勢をＲｄ、カメラ２で計測されたロボット１の手先部７の姿勢をＲｃａ、カメラ２で計測されたロボット１の手先部７の目標姿勢をＲｃｄとする。カメラ２で計測されたロボット１の手先部７の姿勢およびカメラ２で計測されたロボット１の手先部７の目標姿勢は、キャリブレーション誤差を含んでいる。このとき、カメラ２のキャリブレーションによる誤差ΔＲｃ、すなわち真値からのずれは、以下の式で表される。なお、以下の式において、右肩に設けられた「Ｔ」は、これの付された行列の転置行列を表している。
【００４６】
【数１２】
0006485620.tif 000015
【００４７】
【数１３】
0006485620.tif 000016
【００４８】
【数１４】
0006485620.tif 000017
【００４９】
ここで、チルダは誤差を含んだ値を示しており、その他は以下のとおりである。
【数１５】
0006485620.tif 000018
【００５０】
数１２、数１３および数１４においては、各誤差は、カメラ座標系からロボット座標系に変換されている。一方、エンコーダ３で計測されたロボット１の手先部７の現在の姿勢をＲｍとすると、ロボット１のキャリブレーションによる誤差ΔＲｍ、すなわち真値からのずれは、以下の式で表される。
【００５１】
【数１６】
0006485620.tif 000019
【００５２】
ここで、ｇ（ｑ）は、各関節角度からロボット１の手先部７の姿勢へ変換する関数を示している。なお、ロボット１の幾何情報が正確、かつ各リンク棒８が十分な剛性を有する場合には、ΔＲｍはＩに近づくことになる。同様に、エンコーダ３で計測されたロボット１の手先部７の目標姿勢をＲｍｄとして、目標姿勢近傍における誤差、すなわち真値からのずれは、以下の式で定義される。
【００５３】
【数１７】
0006485620.tif 000020
【００５４】
【数１８】
0006485620.tif 000021
【００５５】
このように、エンコーダ３で計測されたロボット１の手先部７の姿勢およびエンコーダ３で計測されたロボット１の手先部７の目標姿勢と、それぞれの真値との間には、リンク棒８の歪みや弛みなどが原因とされる誤差が生じる。
【００５６】
次に、ロボット１の手先部７の位置および姿勢の制御時に生じる誤差は、以下の式で定義される。これは、静止摩擦や重力などの影響による誤差とされる。
【００５７】
【数１９】
0006485620.tif 000022
【００５８】
ここでは、以下のとおりである。
【数２０】
0006485620.tif 000023
【００５９】
数１９で示される誤差は、静止摩擦などの影響が小さく、ロボット１の各関節角が目標姿勢に正確に制御可能であるとき、ΔＲｍ２＝Ｉとなる。ここでは、産業用ロボットを対象とするため、この値はＩとする。ただし、式の展開中では記述することとする。
【００６０】
そして、仮想目標姿勢Ｒｖｄを以下のように設定する。この仮想目標姿勢Ｒｖｄとなるようにアーム６を制御する。
【００６１】
【数２１】
0006485620.tif 000024
【００６２】
本実施例によれば、各工程を順次に１回実行した場合の最終的な誤差Δｘｆｐは、以下のようになる。
【００６３】
【数２２】
0006485620.tif 000025
【００６４】
ここで、Δｘｍ２＝０を考慮すれば、誤差Δｘｆｐは、以下のようになる。
【００６５】
【数２３】
0006485620.tif 000026
【００６６】
このように、本実施例では、キャリブレーション誤差は、制御前の誤差と制御後の誤差との差分として影響している。これは、制御前と制御後のそれぞれの位置における誤差量が近ければ近いほど、最終的な誤差Δｘｆｐが小さくなることを示す。
【００６７】
これに対し、従来では、ある目標位置を与えた場合の１回の実行による誤差が、本実施例とは異なる。具体的には、次のとおりである。従来では、ロボットの手先部の誤差は、Δｘｃｄ＋Δｘｍ２となる。従来における最終的な誤差をΔｘｆとおくと、目標値はカメラで計測した目標位置を用いるので、以下のとおりとなる。
【００６８】
【数２４】
0006485620.tif 000027
【００６９】
ここで、数２を用いることで、Δｘｆは以下のとおりとなる。
【００７０】
【数２５】
0006485620.tif 000028
【００７１】
さらに、Δｘｍ２＝０を考慮すれば、Δｘｆは以下のとおりとなる。
【００７２】
【数２６】
0006485620.tif 000029
【００７３】
これは、カメラおよびロボットのキャリブレーション誤差の双方が、そのままの形で残っていることを示す。すなわち、カメラおよびロボットのキャリブレーション誤差が、最終的な誤差に直接影響している。従って、ロボットおよびカメラのキャリブレーションを高精度に行わなければならなかった。しかしながら、本実施例では、前述した数２３のような式で表されるため、カメラ２およびロボット１のキャリブレーション誤差が直接影響することがなく、カメラ２およびロボット１のキャリブレーションにかかる時間やコストを低減することができる。
【００７４】
また、本実施例によれば、姿勢制御では、位置制御の場合と同様に、その姿勢制御を１回実行した場合の最終的な誤差ΔＲｆｐは、以下のようになる。
【００７５】
【数２７】
0006485620.tif 000030
【００７６】
ここで、ΔＲｍ２＝Ｉとすれば、誤差ΔＲｆｐは以下のとおりとなる。
【００７７】
【数２８】
0006485620.tif 000031
【００７８】
このように、姿勢の誤差についても位置の場合と同様に、実行前後の誤差同士の相体量が最終的な誤差として残っていることが分かる。
【００７９】
これに対し、従来では、最終的な誤差ΔＲｆが以下のとおりとなる。
【００８０】
【数２９】
0006485620.tif 000032
【００８１】
ここで、位置制御の場合と同様に、ΔＲｍ２＝Ｉとすれば、以下のとおりとなる。
【００８２】
【数３０】
0006485620.tif 000033
【００８３】
このように、従来では、位置制御の場合と同様に、カメラおよびロボットのキャリブレーション誤差がそのまま残っている。
【００８４】
また、本実施例によれば、各工程を順次に繰り返し実行することができる。すなわち、制御工程Ｓ５終了後、その状態において再び位置検出工程Ｓ１を行い、そして残りの各工程を実行する。この繰り返し回数は、適宜に変更可能とされる。具体的には、以下の条件を満たす場合において繰り返し実行する。ここで、ロボット１の実行前の手先部７の位置をｘα、ロボット１の実行後の手先部７の位置をｘβとすると、条件は以下のとおりである。
【００８５】
【数３１】
0006485620.tif 000034
【００８６】
この条件を満たす場合において繰り返し実行することで、より高精度な制御を行うことができる。すなわち、各工程を繰り返すごとに、真の目標位置に近付くことになり、精度を向上させることができる。これは、ロボット１の実行前の手先部７の位置と目標位置との距離が、場所によるセンサの計測誤差に比べて大きい場合を示す。つまり、繰り返し実行することで、センサの計測誤差の非線形成分と同等の精度を実現することが可能となるということが分かる。さらに、非線形成分についても、制御前と制御後との位置が近いほど誤差量は減少し、繰り返すごとに精度を高めることができる。
【００８７】
また、本実施例によれば、姿勢制御は、位置制御の場合と同様に、その姿勢制御を繰り返し実行することができる。具体的には、ロボット１の実行前の手先部７の姿勢をＲα、実行後のロボット１の手先部７の姿勢をＲβとすると、繰り返し実行することで誤差が減少し、目標値に収束するための条件は、以下のとおりになる。
【００８８】
【数３２】
0006485620.tif 000035
【００８９】
この条件を満たす場合に、繰り返し実行することで、目標値へ収束させることができる。この条件の性質は、位置制御の場合の収束条件である数３１と同様である。
【００９０】
さらに、本実施例によれば、上述した制御によりロボット１を制御できるため、既存の産業用ロボットに実装されているコントローラ（制御手段）に、ソフトウェアの変更箇所を抑制しつつ、容易に適用することができる。すなわち、工場などで稼動している既存のロボットに、ハードウェアやソフトウェアの変更箇所を抑制しつつ、直接適用することができ、利用範囲を広げることができる。
【００９１】
本発明のロボット制御システムおよびロボット制御方法は、前記実施例の構成に限らず、適宜変更可能である。たとえば、前記実施例では、位置検出工程Ｓ１、手先検出工程Ｓ２、誤差算出工程Ｓ３、位置設定工程Ｓ４および制御工程Ｓ５が順次に実行されたが、これに限定されるものではなく、手先検出工程、位置検出工程、誤差算出工程、位置設定工程および制御工程を順次に実行してもよい。また、前記実施例では、ロボット１は、３本のリンク棒８を有していたが、これに限定されるものではなく、適宜に変更可能である。この場合、関節９の数も、リンク棒８の数に合わせて、適宜に変更可能である。さらに、前記実施例では、カメラ２は２台とされたが、これに限定されるものではなく、３台以上としてもよい。
【符号の説明】
【００９２】
１  ロボット
２  外界センサ（カメラ）
３  内界センサ（エンコーダ）
４  制御手段
６  アーム
７  手先部
Ｓ１  位置検出工程
Ｓ２  手先検出工程
Ｓ３  誤差算出工程
Ｓ４  位置設定工程
Ｓ５  制御工程
【図１】
0006485620.tif 000038
【図２】
0006485620.tif 000039
【図３】
0006485620.tif 000040