(57)【要約】【課題】マニュピュレータを対象物まで短時間で移動させること。【解決手段】対象物であるボルト穴を視認可能なカメラが取り付けられたマニュピュレータを、複数の対象物まで移動させる制御を行う装置が、複数の対象物の各々の位置に対応させて予め設定された目標位置ＴＰｉ’に向けて、マニュピュレータを移動させるティーチングプレイバック制御を実行する（ステップＳ３）。装置は、マニュピュレータが目標位置ＴＰｉ’に移動した場合、目標位置ＴＰｉ’に対応する実穴位置Ｈｉについての実誤差量ｄｉを検出する（ステップＳ５）。装置は、実誤差量ｄ１乃至ｄｉの履歴のうち、少なくとも１回分の履歴を用いて、次のｉ＋１回目の目標位置ＴＰｉ＋１’を更新する（ステップＳ１０，Ｓ１２，Ｓ１３）。【選択図】図３
2011093076.tif 000002
【特許請求の範囲】
【請求項１】
ワーク上の複数の対象物を視認可能な視覚装置が取り付けられたマニュピュレータを、前記複数の対象物の各々まで移動させる制御を行う情報処理装置が実行する情報処理方法において、
前記複数の対象物の位置に対応させて予め教示により設定された複数の教示位置の各々を、所定の順番で目標位置に順次設定し、前記目標位置に向けて前記マニュピュレータを順次移動させるティーチングプレイバック制御を実行する基礎動作ステップと、
前記基礎動作ステップの前記ティーチングプレイバック制御により前記マニュピュレータが前記目標位置に順次移動する毎に、当該目標位置に対応する前記対象物の位置に関する位置情報を検出する検出ステップと、
前記検出ステップの処理により検出された前記位置情報の履歴のうち、少なくとも同一の前記ワークの過去１回分の履歴を用いて、次回の目標位置の設定を補正する補正ステップと、
を含むことを特徴とする情報処理方法。
【請求項２】
前記位置情報は、前記目標位置に移動した前記マニュピュレータの位置と、前記目標位置に対応する前記対象物の位置との誤差量を示す情報である
ことを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記複数の対象物は、前記ワークの予め規定された固定位置にそれぞれ存在し、
前記補正ステップは、次回が４回目以降である場合、３回分の前記履歴を用いて、次回の目標位置の設定を補正するステップを含む
ことを特徴とする請求項１又は２に記載の情報処理方法。
【請求項４】
前記補正ステップは、
次回が２回目である場合、１回目の前記履歴を用いて、２回目の目標位置の設定を補正するステップと、
次回が３回目である場合、１回目及び２回目の前記履歴を用いて、３回目の目標位置の設定を補正するステップと、
をさらに含む
ことを特徴とする請求項３に記載の情報処理方法。
【請求項５】
ワーク上の複数の対象物を視認可能な視覚装置が取り付けられたマニュピュレータを、前記複数の対象物の各々まで移動させる制御を行う情報処理装置において、
前記複数の対象物の位置に対応させて予め教示により設定された複数の教示位置の各々を、所定の順番で目標位置に順次設定し、前記目標位置に向けて前記マニュピュレータを順次移動させるティーチングプレイバック制御を実行する基礎動作手段と、
前記基礎動作手段の前記ティーチングプレイバック制御により前記マニュピュレータが前記目標位置に順次移動する毎に、当該目標位置に対応する前記対象物の位置に関する位置情報を検出する検出手段と、
前記検出手段により検出された前記位置情報の履歴のうち、少なくとも同一の前記ワークの過去１回分の履歴を用いて、次回の目標位置の設定を補正する補正手段と、
を備えることを特徴とする情報処理装置。
【請求項６】
ワーク上の複数の対象物を視認可能な視覚装置が取り付けられたマニュピュレータを、前記複数の対象物各々まで移動させる制御を行うコンピュータに、
前記複数の対象物の位置に対応させて予め教示により設定された複数の教示位置の各々を、所定の順番で目標位置に順次設定し、前記目標位置に向けて前記マニュピュレータを順次移動させるティーチングプレイバック制御を実行する基礎動作ステップと、
前記基礎動作ステップの前記ティーチングプレイバック制御により前記マニュピュレータが前記目標位置に順次移動する毎に、当該目標位置に対応する前記対象物の位置に関する位置情報を検出する検出ステップと、
前記検出ステップの処理により検出された前記位置情報の履歴のうち、少なくとも同一の前記ワークの過去１回分の履歴を用いて、次回の目標位置の設定を補正する補正ステップと、
を含む制御処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マニュピュレータの動作を制御する情報処理方法及び装置並びにプログラムに関する。詳しくは、マニュピュレータを対象物まで短時間で移動させることが可能な情報処理方法及び装置並びにプログラムに関する。
【背景技術】
【０００２】
従来より、マニュピュレータを備えるロボットアームは、自動車等の生産ラインに配設され、自動車のドア等をワークとして、ワークの組立時におけるボルト締めの作業を行っている。すなわち、ロボットアームは、ワークの表面に形成されているボルトを対象物として、対象物まで移動して、ボルトを挿入して捻じ込む作業を行う。
【０００３】
ロボットアームを対象物まで移動させる制御として、対象物の位置に基づいて予め設定された位置（以下、「教示位置」と称する）を目標位置として、目標位置までの予め定められた経路に沿って、ロボットアームを移動させるティーチングプレイバック制御が用いられている。ティーチングプレイバック制御とは、予め定められた経路に沿ってロボットアームを移動させる動作を事前に教示しておき、この動作を再現させるオープンループ制御をいう。
【０００４】
しかしながら、実際の作業においては、生産ライン上でのワーク搬送の停止精度や、ワークを生産ライン上で搬送するためのワークパレットの個体差等に起因して、ワークの位置や姿勢にズレが生ずる。このズレのために、教示位置と、ボルト穴の実際の位置との間に誤差が生ずる。
そこで、この誤差を解消すべく、特許文献１及び２には、ロボットアームの先端に取り付けられたカメラにより、ロボットアームの先端の位置とボルト穴の実際の位置との偏差を求め、この偏差に基づいて、ロボットアームの位置補正を行う手法が開示されている。この位置補正には、偏差に基づく値をフィードバック値として用いる所定のフィードバック制御、例えばＰＩＤ制御が用いられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−１７４４５７号公報
【特許文献２】特開２００１−２４６５８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、自動車のドアには多数のボルト穴が形成されているため、多数のボルト穴の各々に対する位置補正に要する時間が積み重なって、自動車のドアの全てのボルト締めの作業が終了するまで長時間を要するという課題が生ずる。
かかる課題は、自動車のドアのボルト締め作業にのみ生ずるのではなく、マニュピュレータが移動すべき対象物が多数存在するワークの作業に対して広く一般的に生ずるので、マニュピュレータを対象物まで短時間で移動させることが要求されている。
【０００７】
本発明は、マニュピュレータの動作を制御する情報処理方法及び装置並びにプログラムであって、マニュピュレータを対象物まで短時間で移動させることが可能な情報処理方法及び装置並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の情報処理方法は、ワーク（例えば実施形態におけるワーク２）上の複数の対象物（例えば実施形態におけるボルト穴２１−１乃至２１−Ｎ）を視認可能な視覚装置（例えば実施形態におけるカメラ１３）が取り付けられたマニュピュレータ（例えば実施形態におけるロボットアーム１１を構成する多関節マニュピュレータ２３）を、前記複数の対象物まで移動させる制御を行う情報処理装置（例えば実施形態における制御装置１５）が実行する情報処理方法において、
前記複数の対象物の位置に対応させて予め教示により設定された複数の教示位置の各々を、所定の順番で目標位置に順次設定し、前記目標位置に向けて前記マニュピュレータを順次移動させるティーチングプレイバック制御を実行する基礎動作ステップ（例えば実施形態におけるステップＳ３）と、
前記基礎動作ステップの前記ティーチングプレイバック制御により前記マニュピュレータが前記目標位置に順次移動する毎に、当該目標位置に対応する前記対象物の位置に関する位置情報を検出する検出ステップ（例えば実施形態におけるステップＳ５）と、
前記検出ステップの処理により検出された前記位置情報の履歴のうち、少なくとも同一の前記ワークの過去１回分の履歴を用いて、次回の目標位置の設定を補正する補正ステップ（例えば実施形態におけるステップＳ１０，Ｓ１２，Ｓ１３）と、
を含むことを特徴とする。
【０００９】
この発明によれば、ティーチングプレイバック制御により複数の目標位置の各々にマニュピュレータを移動させる場合に、マニュピュレータが目標位置に順次移動する毎に、対応する対象物の位置情報が順次蓄積される。これらの位置情報の履歴のうち、少なくとも同一のワークの過去１回分の履歴を用いて、次回の目標位置の設定が補正される。
これにより、補正後の目標位置の、対象物の実際の位置に対する誤差（以下、「補正後の誤差」と称する）は、補正前の目標位置（教示位置）の、対象物の実際の位置に対する誤差（以下、「補正前の誤差」と称する）と比較して小さくなる。従って、誤差が小さくなった分だけ、その誤差を解消するための位置補正に要する時間が短縮される。ここで、このような位置補正に要する時間とティーチングプレイバック制御に要する時間との加算時間が、マニュピュレータが対象物に移動するまでの時間である。従って、マニュピュレータが対象物に移動するまでの時間も短縮される。このようにして、マニュピュレータを対象物まで短時間で移動させることが可能になる。
【００１０】
この場合、前記位置情報は、前記目標位置に移動した前記マニュピュレータの位置と、前記目標位置に対応する前記対象物の位置との誤差量を示す情報であるようにしてもよい。
【００１１】
また、この場合、前記複数の対象物は、同一のワーク（例えば実施形態におけるワーク２）の予め規定された固定位置にそれぞれ存在し、前記補正ステップは、次回が４回目以降である場合、３回分の前記履歴を用いて、次回の目標位置の設定を補正するステップ（例えば実施形態におけるステップＳ１３）を含むと好ましい。
【００１２】
この発明によれば、マニュピュレータが移動した目標位置に対応する対象物の位置情報の履歴のうち、３回分の履歴を用いて、次回の目標位置の設定が補正される。
これにより、補正後の誤差は、補正前の誤差と比較してより一段と小さくなる。
すなわち、複数の対象物が同一のワークの予め規定された固定位置にそれぞれ存在する場合、補正前の誤差には、ワークの位置及び姿勢のズレに起因する誤差（以下、「ワークズレ誤差」と称する）が多く含まれている。補正前の複数の目標位置（教示位置）は、ワーク上の固定位置に存在する複数の対象物の各々に対応して設定されているため、ワークズレ誤差は、全ての教示位置における補正前の誤差の中に同様に含まれる。
このようなワークの位置及び姿勢のズレは、３次元情報であるため、３点情報で特定することが可能であり、この３点情報として３回分の履歴を用いることが可能である。従って、３回分の履歴を用いてワークの位置及び姿勢のズレを特定することができれば、次回の補正前の目標位置（教示位置）に対して、ワークの位置及び姿勢のズレ分を補正した位置を、次回の補正後の目標位置とすることができる。これにより、補正後の誤差では、ワークズレ誤差を実質上除外することができるため、補正後の誤差は、補正前の誤差と比較してより一段と小さなものとなる。
【００１３】
この場合、前記補正ステップは、次回が２回目である場合、１回目の前記履歴を用いて、２回目の目標位置の設定を補正するステップ（例えば実施形態におけるステップＳ１０）と、次回が３回目である場合、１回目及び２回目の前記履歴を用いて、３回目の目標位置の設定を補正するステップ（例えば実施形態におけるステップＳ１２）と、をさらに含むと好ましい。
【００１４】
この発明によれば、１回目の履歴を用いて２回目の目標位置の設定が補正され、１回目及び２回目の履歴を用いて３回目の目標位置の設定が補正される。
これにより、２回目や３回目のマニュピュレータの移動の場合にも、補正後の誤差は、補正前の誤差と比較してより一段と小さくなる。
すなわち、２回目や３回目では、ワークの位置及び姿勢のズレを特定するために必要な３点情報は得られていないため、ワークの位置及び姿勢のズレを特定することは非常に困難である。しかしながら、１点情報又は２点情報の中にも、ワークの位置及び姿勢のズレを特定するための有意情報は含まれている。１点情報として、１回分の履歴を用いることが可能であり、２点情報として、２回分の履歴を用いることが可能である。従って、１回分又は２回分の履歴を用いて次回の目標位置を補正することで、補正後の誤差では、ワークズレ誤差のうち一部の要素に起因する誤差を除外することができる。これにより、補正後の誤差は、補正前の誤差と比較してより一段と小さなものとなる。
【００１５】
本発明の情報処理装置（例えば実施形態における制御装置１５）及びプログラム（例えば実施形態におけるＣＰＵ１０１により実行されるプログラム）は、上述の本発明の情報処理方法に対応する装置及びプログラムである。従って、上述の本発明の情報処理方法と同様の効果を奏することが可能になる。
【発明の効果】
【００１６】
本発明によれば、目標位置の補正後の誤差は、補正前の誤差と比較して小さくなる。従って、誤差が小さくなった分だけ、その誤差を解消するための位置補正に要する時間が短縮される。ここで、このような位置補正に要する時間とティーチングプレイバック制御に要する時間との加算時間が、マニュピュレータが対象物に移動するまでの時間である。従って、マニュピュレータが対象物に移動するまでの時間も短縮される。このようにして、マニュピュレータを対象物まで短時間で移動させることが可能になる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に係るロボットシステムの概略外観構成を示す斜視図である。
【図２】図１のロボットシステムの制御装置の機能的構成例を示す機能ブロック図である。
【図３】図２の制御装置が実行するティーチングプレイバック制御の経路の一例を説明するためのワークの斜視図である。
【図４】ワークズレ誤差を説明するためのワークの斜視図である。
【図５】図２の制御装置のハードウェアの構成例を示すブロック図である。
【図６】図５の制御装置によるボルト締め処理の流れの一例を示すフローチャートである。
【図７】図５の制御装置により決定される目標位置の決定手法を説明するための模式図である。
【発明を実施するための形態】
【００１８】
以下、本発明の一実施形態を図面に基づいて説明する。
図１は、本発明の一実施形態に係るロボットシステム１の概略外観構成を示す斜視図である。
例えば、ロボットシステム１は、自動車の生産ラインに配設され、自動車のドア等をワーク２として、ワーク２の組立時におけるボルト締めを行う。すなわち、ワーク２の表面においては、Ｎ個の予め規定されている位置（以下、「規定位置」と称する）の各々にボルト穴２１−１乃至２１―Ｎ（図１にはボルト穴２１−１乃至２１−４のみ図示）が形成されている。なお、Ｎは、１以上の整数値であり、図１の例では４以上の整数値である。ロボットシステム１は、ボルト穴２１−１乃至２１―Ｎの各々に対して、ボルトを挿入して捻じ込む作業を行う。
なお、以下、ボルト穴２１−１乃至２１―Ｎを個々に区別する必要が無い場合、これらをまとめて「ボルト穴２１」と称する。
【００１９】
ロボットシステム１は、ロボットアーム１１と、エンドエフェクタ１２と、カメラ１３と、ロボットアーム駆動装置１４と、制御装置１５と、を備える。
【００２０】
ロボットアーム１１は、ロボットベース２２と、そのロボットベース２２に旋回可能に取り付けられる多関節マニュピュレータ２３と、を備える。
多関節マニュピュレータ２３は、関節３１ａ乃至３１ｄと、連結部材３２ａ乃至３２ｅと、各関節３１ａ乃至３１ｄを回転させるサーボモータ（図示せず）と、サーボモータの位置、速度、電流等の各種状態を検出する検出器（図示せず）と、を備える。
各サーボモータによる各関節３１ａ乃至３１ｄの回転動作と、それらの回転動作に連動する各連結部材３２ａ乃至３２ｅの移動動作との組合せにより、多関節マニュピュレータ２３の全体の動作、すなわちロボットアーム１１の全体の動作が実現される。
【００２１】
エンドエフェクタ１２は、多関節マニュピュレータ２３の連結部材３２ｅの先端に取り付けられ、ボルト穴２１に対してボルトを挿入して捻じ込む動作をする。
【００２２】
カメラ１３は、エンドエフェクタ１２の先端を画角の中心として撮影できるように、多関節マニュピュレータ２３の連結部材３２ｅの外周部に固定して取り付けられている。
カメラ１３は、エンドエフェクタ１２の先端の方向に対して、画角の範囲内にある画像を撮影する。以下、カメラ１３により撮影された画像を、「撮影画像」と称する。ここで、本実施形態では、画角の中心であるエンドエフェクタ１２の先端の位置が、ロボットアーム１１の位置として採用されている。これにより、撮影画像の中心位置がロボットアーム１１の位置となるため、後述する制御装置１５は、撮影画像の画像データに対して画像処理を施すことで、撮影画像に含まれる各被写体についての、ロボットアーム１１の位置に対する相対位置を容易に求めることができる。
【００２３】
ロボットアーム駆動装置１４には、ロボットアーム１１を目標位置まで移動させる指令（以下、「移動指令」と称する）が、後述する制御装置１５から供給される。そこで、ロボットアーム駆動装置１４は、移動指令に従って、多関節マニュピュレータ２３に内蔵された各検出器の検出値をフィードバック値として用いて、多関節マニュピュレータ２３に内蔵された各サーボモータに対するトルク（電流）制御を行う。これにより、多関節マニュピュレータ２３の全体の動作、すなわちロボットアーム１１の全体の動作が制御される。
ロボットアーム駆動装置１４は、このような制御中に、フィードバック値に基づいてロボットアーム１１の位置や速度等の各種状態を逐次検出し、検出結果を状態情報として制御装置１５に供給する。
【００２４】
制御装置１５は、ロボットシステム１の全体の動作を制御する。
図２は、制御装置１５の機能的構成例を示す機能ブロック図である。
【００２５】
制御装置１５は、ロボットアーム制御部４１と、エンドエフェクタ制御部４２と、を備える。
ロボットアーム制御部４１は、ロボットアーム駆動装置１４を介して、ロボットアーム１１の移動を制御する。ロボットアーム１１は、この制御により、ボルト穴２１まで移動する。
エンドエフェクタ制御部４２は、エンドエフェクタ１２を制御する。エンドエフェクタ１２は、この制御により、ボルトをボルト穴２１に挿入して捻じ込む。
【００２６】
以下、ロボットアーム制御部４１の詳細について説明する。
ロボットアーム制御部４１は、ティーチングプレイバック制御部５１と、フィードバック制御部５２と、制御切替部５３と、画像処理部５４と、ロボットアーム状態取得部５５と、を備える。
【００２７】
ティーチングプレイバック制御部５１は、予め設定された所定の経路に沿ってロボットアーム１１を移動させるティーチングプレイバック制御を実行する。
ティーチングプレイバック制御部５１は、教示位置保持部６１と、目標位置決定部６２と、移動指令生成部６３と、を備える。
教示位置保持部６１は、ティーチングプレイバック制御で用いられる経路の情報を保持する。すなわち、予め教示により設定された１以上の教示位置を、予め設定された所定の順番で結ぶことで形成される経路が、ティーチングプレイバック制御において用いられている。従って、１以上の教示位置に関する情報、例えばその座標や経路内の順番を示す情報が、教示位置保持部６１に保持される。
目標位置決定部６２は、教示位置保持部６１の保持内容から、次回の教示位置を認識する。そして、目標位置決定部６２は、次回の教示位置に基づいて、ロボットアーム１１の次回の目標位置を決定し、移動指令生成部６３に通知する。なお、目標位置決定部６２による目標位置の決定手法の詳細については、図３以降の図面を参照して後述する。
移動指令生成部６３は、目標位置決定部６２から通知された目標位置に基づいて移動指令を生成し、制御切替部５３を介してロボットアーム駆動装置１４に供給する。すると、上述したように、ロボットアーム駆動装置１４は、この移動指令に従って、ロボットアーム１１を次回の目標位置まで移動させる。
【００２８】
このようなティーチングプレイバック制御により各々の目標位置まで移動を試みたロボットアーム１１の実際の到達位置と、対応するボルト穴２１の実際の位置との間には誤差が生じている。なお、以下、ロボットアーム１１の実際の到達位置を、「実アーム位置」と称し、ボルト穴２１の実際の位置を、「実穴位置」と称し、実アーム位置と実穴位置との間の誤差を、以下、「実誤差」と称する。
【００２９】
制御切替部５３は、この実誤差を解消すべく、ロボットアーム１１の動作の制御を、ティーチングプレイバック制御部５１によるティーチングプレイバック制御から、フィードバック制御部５２によるフィードバック制御に切り替える。
【００３０】
フィードバック制御部５２は、所定のフィードバック制御により、移動指令を生成して、制御切替部５３を介してロボットアーム駆動装置１４に供給する。
フィードバック制御部５２から移動指令が供給されたロボットアーム駆動装置１４は、上述したように、この移動指令に従って、ロボットアーム１１をボルト穴２１の実穴位置まで移動させる。
実誤差が解消すると、すなわち、ロボットアーム１１の実アーム位置とボルト穴２１の実穴位置とが略一致すると、フィードバック制御部５２によるフィードバック制御は停止して、ロボットアーム１１の移動動作が停止する。すると、エンドエフェクタ制御部４２は、エンドエフェクタ１２を制御して、ボルトをボルト穴２１に挿入して捻じ込む。
【００３１】
なお、フィードバック制御部５２に適用されるフィードバック制御の手法は、特に限定されない。従って、フィードバック情報も、フィードバック制御部５２に適用されたフィードバック制御の手法に応じた情報であれば、特に限定されない。
【００３２】
例えば、フィードバック制御部５２に対して、カメラ１３の撮影画像に基づく情報をフィードバック情報として用いる視覚サーボ制御を適用してもよい。この場合、本実施形態では、画像処理部５４の画像処理の結果が、フィードバック情報としてフィードバック制御部５２に供給される。
具体的には、画像処理部５４は、カメラ１３の撮影画像の画像データに対して各種画像処理を施すべく、対象物認識部６４と、誤差検出部６５と、を備えている。
対象物認識部６４は、カメラ１３から出力された画像データに基づいて、撮影画像の中からボルト穴２１を対象物として認識する。
ロボットアーム１１の位置がボルト穴２１から遠方に離れていて、カメラ１３の画角内にボルト穴２１が存在しない間は、撮影画像にはボルト穴２１は被写体として含まれない。従って、このような場合、対象物認識部６４により対象物は認識されない。
その後、ティーチングプレイバック制御によりロボットアーム１１がボルト穴２１の近傍に移動してきて、カメラ１３の画角内にボルト穴２１が存在するようになると、撮影画像にはボルト穴２１が被写体として含まれるようになる。このような場合、対象物認識部６４は、ボルト穴２１を対象物として認識し、その認識結果及び撮影画像の画像データを誤差検出部６５に供給する。
誤差検出部６５は、撮影画像の画像データに対して画像処理を施すことで、撮影画像に対象物として含まれるボルト穴２１の実穴位置の、実アーム位置（撮影画像の中心位置）に対する実誤差量を求める。
以下、実誤差量を、ｄ又はｄ＝（ｄｘ，ｄｙ，ｄｚ）と記述する。ｄｘ，ｄｙ，ｄｚの各々は、カメラ１３の画角内の座標系（以下、「カメラ座標系」と称する）における、実誤差量のＸ座標，Ｙ座標，Ｚ座標の各々を示している。
実誤差量ｄは、視覚サーボ制御のフィードバック情報として、フィードバック制御部５２に供給される。さらに、実誤差量ｄは、ティーチングプレイバック制御部５１にも供給されるが、ティーチングプレイバック制御部５１における用途については図３以降の図面を参照して後述する。
【００３３】
また例えば、フィードバック制御部５２に対して、視覚サーボ制御以外のフィードバック制御を適用してもよい。具体的には例えば、ロボットアーム駆動装置１４から供給される状態情報をフィードバック情報として用いるＰＩＤ制御を適用してもよい。この場合、ロボットアーム状態取得部５５は、ロボットアーム駆動装置１４から供給される状態情報を取得して、この状態情報をフィードバック情報としてフィードバック制御部５２に供給する。
【００３４】
以上、制御装置１５の機能的構成例について説明した。
次に、図３と図４を参照して、本発明が適用されるティーチングプレイバック制御の目標位置の決定手法について説明する。
図３は、ティーチングプレイバック制御の経路の一例を示している。
図３に示す座標系は、ワーク２が配置される空間の座標系であり、以下、ワールド座標系と称する。
図３に示すように、生産ラインを搬送されてきたワーク２が、ロボットアーム１１によるボルト締めの作業位置に誤差なく配置されることを前提として、経路が設定される。すなわち、このような前提の下、ワーク２のボルト穴２１−１乃至２１―Ｎが本来形成されるべき規定位置が、教示位置ＴＰ１乃至ＴＰＮ（図２にはＴＰ１乃至ＴＰ４のみ図示）として設定される。
従って、本実施形態では、教示位置ＴＰ１乃至ＴＰＮの座標や経路内の順番（各符号の順番）が、教示位置保持部６１に保持されている。
目標位置決定部６２は、教示位置保持部６１の保持内容から、教示位置ＴＰ１乃至ＴＰＮのうち、次のｉ回（ｉは１乃至Ｎの何れかの整数値）の教示位置ＴＰｉを認識する。そして、目標位置決定部６２は、その教示位置ＴＰｉに基づいて、次のｉ回の目標位置ＴＰｉ’を決定し、移動指令生成部６３に通知する。
【００３５】
ここで、仮に、目標位置ＴＰｉ’として、従来と同様に教示位置ＴＰｉをそのまま用いる場合、実誤差には、主に次の３つの誤差の成分が含まれている。
図４は、３つの誤差の成分のうちの、ワークズレ誤差を説明する図である。
図４に示すように、生産ラインを搬送されてきたワーク２が、ロボットアーム１１によるボルト締めの作業位置に実際に配置された場合には、ズレ量９１の分だけ、ワーク２の位置及び姿勢のズレが生じる。このズレ量９１に起因する誤差が、ワークズレ誤差として、実誤差に含まれる。
また、ワーク２上のボルト穴２１の実穴位置が規定位置からズレていることがあり、このズレに起因する誤差（以下、「穴位置誤差」と称する）が、実誤差に含まれる。さらに、ティーチングプレイバック制御はいわゆるオープンループ制御であるため、制御精度上の誤差（以下、「制御誤差」と称する）が、実誤差に含まれる。
しかしながら、ワークズレ誤差の実測範囲は±５ｍｍ、±２ｄｅｇ程度の範囲であるのに対して、穴位置誤差の実測範囲は±０．５ｍｍ程度の範囲と遥かに小さく、さらに制御誤差は無視できる程小さい。従って、実誤差の大部分は、ワークズレ誤差によるものである。
【００３６】
一方、本実施形態では、ワーク２は自動車のドア等であり、ワーク２上のＮ個の規定位置にボルト穴２１−１乃至２１−Ｎが形成されている。すなわち、ボルト穴２１−１乃至２１−Ｎの相対的な位置関係は、穴位置誤差を無視すれば、個々のワーク２によらず常に一定となる。また、位置及び姿勢のズレがなくワーク２が配置された場合のＮ個の規定位置が、教示位置ＴＰ１乃至ＴＰＮとして設定されている。このため、教示位置ＴＰ１乃至ＴＰＮを結ぶ経路と、ボルト穴２１−１乃至２１−Ｎを結ぶ経路とは、図４に示すワーク２の位置及び姿勢のズレ量９１を修正した場合には、穴位置誤差や制御誤差を無視すれば一致する。
【００３７】
従って、次のｉ回の教示位置ＴＰｉに対して、ワーク２の位置及び姿勢のズレ量９１の分を補正した位置を、目標位置ＴＰｉ’とすることで、次のｉ回の実誤差は、ワークズレ誤差の影響が無くなり非常に小さなものになる。
ワーク２の位置及び姿勢のズレ量９１は、３次元情報であるため、穴位置誤差や制御誤差を無視すれば、３つのボルト穴２１の実穴位置に関する位置情報（３点情報）により特定可能である。このような３点情報として、３つのボルト穴２１についての実誤差量ｄを採用することが可能である。
そこで、ｉ＝４回以降の場合、目標位置決定部６２は、３回分の実誤差量ｄの履歴に基づいて次のｉ回の教示位置ＴＰｉを補正し、補正後の位置を目標位置ＴＰｉ’に決定する。実誤差量ｄの履歴であれば、何れの回の実誤差量ｄを用いても構わないが、本実施形態では１乃至３回目の実誤差量ｄが用いられる。すなわち、本実施形態では、ｉ＝４回以降の場合、目標位置決定部６２は、次の式（１）を演算することで目標位置ＴＰｉ’を決定する。
【数１】
2011093076.tif 000003
・・・（１）
式（１）において、右辺のｆ４は、４つのパラメータＴＰｉ，ｄ１，ｄ２，ｄ３を入力として、これらのパラメータを用いる所定の演算の結果を出力とする関数を示している。ｄｍ（ｍは１以上の整数値であって、式（１）においては１乃至３の何れかの値）は、ｍ回目の実誤差量ｄを示している。実誤差量ｄｍは、上述のごとく誤差検出部６５により検出されて、目標位置決定部６２に供給される。
【００３８】
ここで、ｉ＝３回以下の場合には、３つの実誤差量ｄが得られていないため、ワーク２の位置及び姿勢のズレ量９１を特定することは困難である。
しかしながら、上述したように、実誤差の大部分はワークズレ誤差によるものであるため、１つ又は２つの実誤差量ｄの中にも、ワーク２の位置及び姿勢のズレ量９１の概略又は一部分を推定するための有意情報が含まれている。従って、次のｉ回の教示位置ＴＰｉに対して、１つ又は２つの実誤差量ｄの履歴に基づいて補正することで、ワーク２の位置及び姿勢のズレ量９１をある程度補正することが可能になる。
【００３９】
そこで、本実施形態では、ｉ＝３回の場合、目標位置決定部６２は、２つのボルト穴２１−１及び２１−２についての実誤差量ｄ１及びｄ２に基づいて教示位置ＴＰ３を補正し、補正後の位置を目標位置ＴＰ３’に決定する。すなわち、ｉ＝３回の場合、目標位置決定部６２は、次の式（２）を演算することで目標位置ＴＰ３’を決定する。
【数２】
2011093076.tif 000004
・・・（２）
式（２）において、右辺のｆ３は、３つのパラメータＴＰ３，ｄ１，ｄ２を入力として、これらのパラメータを用いる所定の演算の結果を出力とする関数を示している。
【００４０】
ｉ＝２回の場合、目標位置決定部６２は、１つのボルト穴２１−１についての実誤差量ｄ１に基づいて教示位置ＴＰ２を補正し、補正後の位置を目標位置ＴＰ２’に決定する。すなわち、ｉ＝２回の場合、目標位置決定部６２は、次の式（３）を演算することで目標位置ＴＰ２’を決定する。
【数３】
2011093076.tif 000005
・・・（３）
式（３）において、右辺のｆ２は、２つのパラメータＴＰ２，ｄ１を入力として、これらのパラメータを用いる所定の演算の結果を出力とする関数を示している。
【００４１】
なお、ｉ＝１の場合、すなわち初回の場合には、実誤差量ｄは得られていないので、目標位置決定部６２は、教示位置ＴＰ１をそのまま、目標位置ＴＰ１’に決定する。
【００４２】
以上、本発明が適用されるティーチングプレイバック制御の目標位置の決定手法について説明した。次に、このような目標位置の決定手法が適用された制御装置１５のハードウェア構成例について説明する。
【００４３】
図５は、制御装置１５のハードウェアの構成例を示すブロック図である。
【００４４】
制御装置１５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、バス１０４と、入出力インターフェース１０５と、入力部１０６と、出力部１０７と、記憶部１０８と、通信部１０９と、ドライブ１１０と、を備えている。
【００４５】
ＣＰＵ１０１は、ＲＯＭ１０２に記録されているプログラムに従って各種の処理を実行する。又は、ＣＰＵ１０１は、記憶部１０８からＲＡＭ１０３にロードされたプログラムに従って各種の処理を実行する。ＲＡＭ１０３にはまた、ＣＰＵ１０１が各種の処理を実行する上において必要なデータ等も適宜記憶される。
【００４６】
例えば本実施形態では、上述した図２のロボットアーム制御部４１及びエンドエフェクタ制御部４２の各機能を実行するプログラムが、ＲＯＭ１０２や記憶部１０８に記憶されている。従って、ＣＰＵ１０１が、このプログラムに従った処理を実行することで、ロボットアーム制御部４１及びエンドエフェクタ制御部４２の各機能を実現することができる。なお、以下、このプログラムに従った処理を、ボルト締め処理と称する。ボルト締め処理の一例については、図６のフローチャートを参照して後述する。
【００４７】
ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３とは、バス１０４を介して相互に接続されている。このバス１０４にはまた、入出力インターフェース１０５も接続されている。
【００４８】
入出力インターフェース１０５には、キーボード等で構成される入力部１０６と、表示デバイスやスピーカ等で構成される出力部１０７と、ハードディスク等より構成される記憶部１０８と、通信部１０９と、が接続されている。通信部１０９は、カメラ１３との間で行う通信と、ロボットアーム駆動装置１４との間で行う通信と、インターネットを含むネットワークを介して他の装置（図示せず）との間で行う通信と、をそれぞれ制御する。なお、これらの通信は、図１の例では有線通信とされているが、無線通信であってもよい。
【００４９】
入出力インターフェース１０５にはまた、必要に応じてドライブ１１０が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等よりなるリムーバブルメディア１１１が適宜装着される。そして、それらから読み出されたプログラムが、必要に応じて記憶部１０８にインストールされる。
【００５０】
図６は、図５の制御装置１５によるボルト締め処理の流れの一例を示すフローチャートである。
図６のボルト締め処理において、ボルト締め回数ｉにおけるボルト締めの対象は、ボルト穴２１−ｉである。すなわち、本実施形態では、Ｎ個のボルト穴２１−１乃至２１−Ｎが存在するので、ボルト締め回数ｉは１乃至Ｎのうちの何れかの整数値になる。なお、以下、ボルト締めの最終回数Ｎは５以上であるとする。
【００５１】
ステップＳ１において、ＣＰＵ１０１は、ボルト締め回数ｉ＝１に設定する。ステップＳ２において、ＣＰＵ１０１は、教示位置ＴＰ１をそのまま目標位置ＴＰｉ（＝１）’に決定する。
【００５２】
ステップＳ３において、ＣＰＵ１０１は、ロボットアーム１１を目標位置ＴＰｉ’に移動させる。
すなわち、ＣＰＵ１０１は、ティーチングプレイバック制御により、目標位置ＴＰｉ’に基づいて移動指令を生成し、通信部１０９を介して、ロボットアーム駆動装置１４に送信する。すると、上述したように、ロボットアーム駆動装置１４は、この移動指令に従って、ロボットアーム１１を目標位置ＴＰｉ’まで移動させる。
ボルト締め回数ｉ＝１の場合、目標位置ＴＰｉ’は教示位置ＴＰ１なので、ロボットアーム１１は、教示位置ＴＰ１まで移動する。これにより、処理はステップＳ３からＳ４に進む。
【００５３】
ステップＳ４において、ＣＰＵ１０１は、ボルト穴２１−ｉの実穴位置Ｈｉを認識する。ステップＳ５において、ＣＰＵ１０１は、実穴位置Ｈｉにおける実誤差量ｄｉを検出する。
すなわち、ＣＰＵ１０１は、ロボットアーム１１が目標位置ＴＰｉ’に移動した時点のカメラ１３の撮影画像の画像データを、通信部１０９を介して受信する。ＣＰＵ１０１は、この画像データに基づいて、撮影画像からボルト穴２１−ｉを認識する。カメラ座標系におけるボルト穴２１−ｉの中心の座標が、実穴位置Ｈｉの座標になる。ここで、本実施形態では、カメラ１３の画角の中心がロボットアーム１１の実アーム位置となるように、カメラ１３が設定されている。従って、本実施形態では、実穴位置Ｈｉの座標がそのまま、実誤差量ｄｉとして用いられる。
【００５４】
ステップＳ６において、ＣＰＵ１０１は、実誤差量ｄｉに基づいて、ロボットアーム１１の位置ズレを補正する制御を行う。
すなわち、ＣＰＵ１０１は、ロボットアーム１１の動作の制御を、ティーチングプレイバック制御からフィードバック制御に切り替える。そして、ＣＰＵ１０１は、所定のフィードバック制御により移動指令を生成して、通信部１０９を介してロボットアーム駆動装置１４に送信する。
ロボットアーム駆動装置１４は、移動指令を受信すると、上述したように、この移動指令に従って、ロボットアーム１１をボルト穴２１−ｉの実穴位置Ｈｉまで移動させる。実誤差量ｄｉが略０になると、すなわち、ロボットアーム１１の実アーム位置とボルト穴２１−ｉの実穴位置Ｈｉとが略一致すると、フィードバック制御は停止して、ロボットアーム１１の移動動作も停止する。これにより、処理はステップＳ６からＳ７に進む。
【００５５】
ステップＳ７において、ＣＰＵ１０１は、ロボットアーム１１によるボルト締め作業を制御する。すなわち、ＣＰＵ１０１は、通信部１０９を介してエンドエフェクタ１２を制御することによって、ボルトをボルト穴２１−ｉに挿入して捻じ込む。
【００５６】
ステップＳ７のボルト締め作業が終了すると、ステップＳ８において、ＣＰＵ１０１は、ボルト締め回数ｉを１だけインクリメントする（ｉ＝ｉ＋１）。
【００５７】
ステップＳ９において、ＣＰＵ１０１は、ボルト締め回数ｉ＝２であるか否かを判定する。
【００５８】
ボルト穴２１−１に対する１回目のボルト締め作業後には、ステップＳ８の処理でボルト締め回数ｉ＝２となるので、ステップＳ９においてＹＥＳであると判定されて、処理はステップＳ１０に進む。
ステップＳ１０において、ＣＰＵ１０１は、上述した式（３）に従って、目標位置ＴＰｉ（＝２）’を決定する。
【００５９】
図７は、目標位置ＴＰｉの決定手法の一例を説明するための模式図である。
具体的には例えば、ＣＰＵ１０１は、図７ａに示すような目標位置ＴＰｉ（＝２）’を決定する。すなわち、この場合、式（３）の具体例として、次の式（４）が用いられる。
【数４】
2011093076.tif 000006
・・・（４）
式（４）において、Ｘ２’，Ｙ２’，Ｚ２’のそれぞれは、目標位置ＴＰｉ（＝２）’のワールド座標系のＸ座標，Ｙ座標，Ｚ座標のそれぞれを示している。Ｘ２，Ｙ２，Ｚ２のそれぞれは、教示位置ＴＰ２のワールド座標系のＸ座標，Ｙ座標，Ｚ座標のそれぞれを示している。
上述のごとく、ワークズレ誤差を全て解消するためには、教示位置ＴＰ２に対して、図４に示すワーク２の位置及び姿勢のズレ量９１の分を補正した量を、目標位置ＴＰｉ（＝２）’とすることが必要である。しかしながら、図４に示すワーク２の位置及び姿勢のズレ量９１は、３次元情報であるため、３点情報が存在しないと特定することが実質上できない。これに対して、ボルト締め回数ｉ＝２回目では、１回目の実誤差量ｄ１という１点情報しか得られていない。このため、ボルト締め回数ｉ＝２回目では、図７ａや式（４）に示すように、図４に示すワーク２の位置及び姿勢のズレ量９１のうち、実誤差量ｄ１から導き出せる位置のズレ量分を補正することにしている。これにより、２回目の実誤差量ｄ２は、ワークズレ誤差のうち位置のズレ量分の誤差が解消されている。従って、２回目の実誤差量ｄ２は、１回目の実誤差量ｄ１と比較して大幅に低下する。
【００６０】
このようにして、ステップＳ１０において目標位置ＴＰｉ（＝２）’が決定されると、処理はステップＳ１４に進む。ステップＳ１４において、ＣＰＵ１０１は、ボルト締め回数ｉが最終回数Ｎを超えたか（ｉ＞Ｎであるか）否かを判定する。
ステップＳ１０において目標位置ＴＰｉ（＝２）’が決定された後の場合、ボルト締め回数ｉ＝２であるので、ステップＳ１４においてＮＯであると判定されて処理はステップＳ３に戻され、それ以降の処理が繰り返される。
【００６１】
すなわち、ボルト締め回数ｉ＝２回目について、ロボットアーム１１が目標位置ＴＰｉ（＝２）’まで移動し（ステップＳ３）、ボルト穴２１−２の実穴位置Ｈ２が認識され（ステップＳ４）、実誤差量ｄ２が検出されて（ステップＳ５）、位置ズレが補正されて（ステップＳ６）、ボルト穴２１−２に対するボルト締め作業が行われる（ステップＳ７）。
このとき、上述したように、２回目の実誤差量ｄ２は、１回目の実誤差量ｄ１と比較して大幅に低下している。従って、ロボットアーム１１が、２回目の目標位置ＴＰｉ（＝２）’まで移動してからボルト穴２１−２に対するボルト締め作業を行うまでの処理時間、すなわち、ステップＳ４乃至Ｓ６の処理時間は、１回目の処理時間と比較して大幅に短縮する。
【００６２】
その後、ボルト締め回数ｉ＝３回目に更新され（ステップＳ８）、ステップＳ９においてＮＯであると判定されて、処理はステップＳ１１に進む。ステップＳ１１において、ＣＰＵ１０１は、ボルト締め回数ｉ＝３であるか否かを判定する。
【００６３】
ボルト穴２１−２に対する２回目のボルト締め作業後には、ステップＳ８の処理でボルト締め回数ｉ＝３となるので、ステップＳ１１においてＹＥＳであると判定されて、処理はステップＳ１２に進む。
ステップＳ１２において、ＣＰＵ１０１は、上述した式（２）に従って、目標位置ＴＰｉ（＝３）’を決定する。
具体的には例えば、ＣＰＵ１０１は、図７ｂに示すような目標位置ＴＰｉ（＝３）’を決定する。すなわち、この場合、式（２）の具体例として、次の式（５）が用いられる。
【数５】
2011093076.tif 000007
・・・（５）
式（５）において、Ｘ３’，Ｙ３’，Ｚ３’のそれぞれは、目標位置ＴＰｉ（＝３）’のワールド座標系のＸ座標，Ｙ座標，Ｚ座標のそれぞれを示している。Ｘ３，Ｙ３，Ｚ３のそれぞれは、教示位置ＴＰ３のワールド座標系のＸ座標，Ｙ座標，Ｚ座標のそれぞれを示している。θは、図７ａに示すように、原点Ｏから更新後の目標位置ＴＰ２’を結ぶ直線と、原点Ｏからボルト穴２１−２の中心を結ぶ直線との各々をＸＹ平面に投影したもののなす角度である。この角度θは、２回目の実誤差量ｄ２に基づいて演算される。
【００６４】
ボルト締め回数ｉ＝３回目では、１回目の実誤差量ｄ１及び２回目の実誤差量ｄ２という２点情報しか得られておらず、図４に示すワーク２の位置及び姿勢のズレ量９１を特定することが実質上できない。このため、ボルト締め回数ｉ＝３回目では、図７ｂや式（５）に示すように、図４に示すワーク２の位置及び姿勢のズレ量９１のうち、実誤差量ｄ１から導き出される位置のズレ量分、及び、実誤差量ｄ２から導き出せる角度θに対応するＺ軸周り（ＸＹ平面）の傾きのズレ量分を修正することにしている。これにより、３回目の実誤差量ｄ３は、ワークズレ誤差のうち、位置のズレ量分、及び、Ｚ軸周り（ＸＹ平面）の傾きのズレ量分の誤差が解消されている。換言すると、３回目の実誤差量ｄ３に含まれるワークズレ誤差の成分としては、Ｘ軸とＹ軸の２軸の周りの回転ズレ量分のみとなる。従って、３回目の実誤差量ｄ３は、２回目の実誤差量ｄ２と比較してさらに一段と低下することになる。
【００６５】
このようにして、ステップＳ１２において目標位置ＴＰｉ（＝３）’が決定されると、処理はステップＳ１４に進む。この場合、ボルト締め回数ｉ＝３であるので、ステップＳ１４においてＮＯであると判定されて処理はステップＳ３に戻され、それ以降の処理が繰り返される。
【００６６】
すなわち、ボルト締め回数ｉ＝３回目について、ロボットアーム１１が目標位置ＴＰｉ（＝３）’まで移動し（ステップＳ３）、ボルト穴２１−３の実穴位置Ｈ３が認識され（ステップＳ４）、実誤差量ｄ３が検出されて（ステップＳ５）、位置ズレが補正されて（ステップＳ６）、ボルト穴２１−３に対するボルト締め作業が行われる（ステップＳ７）。
このとき、上述したように、３回目の実誤差量ｄ３は、２回目の実誤差量ｄ２と比較してさらに一段と低下する。従って、ロボットアーム１１が、３回目の目標位置ＴＰｉ（＝３）’まで移動してからボルト穴２１−３に対するボルト締め作業を行うまでの処理時間、すなわち、ステップＳ４乃至Ｓ６の処理時間は、２回目の処理時間と比較してさらに一段と短縮する。
【００６７】
その後、ボルト締め回数ｉ＝４回目に更新され（ステップＳ８）、ステップＳ９及びＳ１１のそれぞれにおいてＮＯであると判定されて、処理はステップＳ１３に進む。
ステップＳ１３において、ＣＰＵ１０１は、上述した式（１）に従って、目標位置ＴＰｉ（＝４）’を決定する。
具体的には例えば、ＣＰＵ１０１は、図７ｃに示すような目標位置ＴＰｉ（＝４）’を決定する。
ボルト締め回数ｉ＝４回目では、１回目の実誤差量ｄ１、２回目の実誤差量ｄ２、及び、３回目の実誤差量ｄ３という３点情報が得られているので、図４に示すワーク２の位置及び姿勢のズレ量９１を特定することが可能である。このため、ボルト締め回数ｉ＝４回目では、例えば図４に示すワーク２の位置及び姿勢のズレ量９１だけ回転移動させるための３次元の回転行列を求めて、教示位置ＴＰ４に対して、この回転行列をかける式を、式（１）として用いることにしている。これにより、４回目の実誤差量ｄ４は、実質上、ワークズレ誤差の全てが解消されている。換言すると、４回目の実誤差量ｄ４には、ワークズレ誤差と比較して遥かに小さな穴位置誤差や制御誤差しか含まれない。従って、４回目の実誤差量ｄ４は、３回目の実誤差量ｄ３と比較してさらに一段と低下する。
【００６８】
このようにして、ステップＳ１３において目標位置ＴＰｉ（＝４）’が決定されると、処理はステップＳ１４に進む。この場合、ボルト締め回数ｉ＝４であるので、ステップＳ１４においてＮＯであると判定されて処理はステップＳ３に戻され、それ以降の処理が繰り返される。
【００６９】
すなわち、ボルト締め回数ｉ＝４回目について、ロボットアーム１１が目標位置ＴＰｉ（＝４）’まで移動し（ステップＳ３）、ボルト穴２１−４の実穴位置Ｈ４が認識され（ステップＳ４）、実誤差量ｄ４が検出されて（ステップＳ５）、位置ズレが補正されて（ステップＳ６）、ボルト穴２１−４に対するボルト締め作業が行われる（ステップＳ７）。
このとき、上述したように、４回目の実誤差量ｄ４は、３回目の実誤差量ｄ３と比較してさらに一段と低下している。従って、ロボットアーム１１が、４回目の目標位置ＴＰｉ（＝４）’まで移動してからボルト穴２１−４に対するボルト締め作業を行うまでの処理時間、すなわち、ステップＳ４乃至Ｓ６の処理時間は、３回目の処理時間と比較してさらに一段と短縮する。
【００７０】
その後、ボルト締め回数ｉ＝５乃至Ｎ回目のそれぞれについて、ｉ＝４回目の場合と同様の処理が繰り返される。すなわち、ｉ＝４回目以降では、上述した式（１）に従って決定された目標位置ＴＰｉ’が用いられて、ステップＳ３乃至Ｓ７の処理が実行される。この場合、ｉ＝５乃至Ｎ回目の実誤差量ｄｉは、４回目の実誤差量ｄｉと同様に、実質上、ワークズレ誤差の全てが解消されている。換言すると、ｉ＝５乃至Ｎ回目の実誤差量ｄｉには、ワークズレ誤差と比較して遥かに小さな穴位置誤差や制御誤差しか含まれない。従って、ロボットアーム１１が、ｉ回目の目標位置ＴＰｉ’まで移動してからボルト穴２１−ｉに対するボルト締め作業を行うまでの処理時間、すなわち、ステップＳ４乃至Ｓ６の処理時間は、４回目の処理時間とほぼ同様の短時間となる。
【００７１】
ボルト締め回数ｉ＝Ｎ回目のボルト締め作業が終了すると（ステップＳ７）、ボルト締め回数ｉ＝Ｎ＋１回目に更新され（ステップＳ８）、ステップＳ９及びＳ１１のそれぞれにおいてＮＯであると判定されて、処理はステップＳ１３の後ステップＳ１４に進む。この場合、ステップＳ１４においてＹＥＳであると判定されて、ボルト締め処理は終了する。
【００７２】
本実施形態によれば、以下のような効果がある。
（１）制御装置１５は、ボルト穴２１を視認可能なカメラ１３が取り付けられたロボットアーム１１を、ティーチングプレイバック制御により移動させる。この場合、制御装置１５は、次のｉ回のボルト穴２１―ｉの位置に対応させて予め設定された教示位置ＴＰｉの各々に対して、ｉ−１回までに検出された実誤差量ｄ１乃至ｄｉ−１の履歴のうち少なくとも１回分の履歴を用いた補正を行い、補正後の位置を次回の目標位置ＴＰｉ’として設定する。
これにより、補正後の実誤差量ｄｉは、補正前の教示位置ＴＰｉのボルト穴２１−ｉに対する誤差量と比較して小さくなる。従って、誤差量が小さくなった分だけ、その誤差量を解消するための位置補正に要する時間、例えば主に図６のステップＳ６の処理時間が短縮される。ここで、このような位置補正に要する時間とティーチングプレイバック制御に要する時間との加算時間が、ロボットアーム１１が対象物に移動するまでの時間である。従って、ロボットアーム１１が対象物に移動するまでの時間も短縮される。このようにして、マニュピュレータを対象物まで短時間で移動させることが可能になる。
【００７３】
なお、本発明は本実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
例えば、マニュピュレータは、本実施形態ではロボットアーム１１に取り付けられていたが、特にこれに限定されず、任意のワーク上の複数の対象物の各々に移動可能なものであればよい。
例えば、ｉ＝４回以降の場合の目標位置ＴＰｉ’を決定するために用いる履歴は、本実施形態では１乃至３回目の実誤差量ｄ１乃至ｄ３が用いられていたが、これに限定されず、任意の３回分の実誤差量ｄを用いてもよい。具体的には例えば、直前のｉ−３乃至ｉ−１回目の実誤差量ｄｉ−３乃至ｄｉ−１を用いてもよい。また、目標位置ＴＰｉ’を決定するために用いる履歴の個数は、本実施形態では最大３個とされていたが、４個以上としてもよい。
例えば、次回の目標位置を補正するための情報として、本実施形態では実誤差量が採用されたが、これに限定されず、マニュピュレータが実際に移動した目標位置に対応する対象物の位置情報であれば、任意の情報でよい。
例えば、このような位置情報は、本実施形態ではカメラ１３の撮影画像に基づいて生成されたが、生成するための情報はこれに限定されず、対象物の位置を特定可能な任意の情報に基づいて位置情報を生成することが可能である。
【００７４】
また、本実施形態では、図２のロボットアーム制御部４１及びエンドエフェクタ制御部４２をソフトウェアとハードウェア（ＣＰＵ１０１を含む関連部分）の組合せにより構成するものとして説明したが、かかる構成は当然ながら例示であり、本発明はこれに限定されない。例えば、ロボットアーム制御部４１及びエンドエフェクタ制御部４２の少なくとも一部を、専用のハードウェアで構成してもよし、ソフトウェアで構成してもよい。
【００７５】
このように、本発明に係る一連の処理は、ソフトウェアにより実行させることも、ハードウェアにより実行させることもできる。
【００７６】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムを、コンピュータ等にネットワークを介して、或いは、記録媒体からインストールすることができる。コンピュータは、専用のハードウェアを組み込んだコンピュータであってもよいし、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータであってもよい。
【００７７】
本発明に係る一連の処理を実行するための各種プログラムを含む記録媒体は、情報処理装置（例えば本実施形態では制御装置１５）本体とは別に、ユーザにプログラムを提供するために配布されるリムーバブルメディアでもよく、或いは、情報処理装置本体に予め組み込まれた記録媒体等でもよい。リムーバブルメディアは、例えば、磁気ディスク（フロッピディスクを含む）、光ディスク、又は光磁気ディスク等により構成される。光ディスクは、例えば、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ），ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等により構成される。光磁気ディスクは、ＭＤ（Ｍｉｎｉ−Ｄｉｓｋ）等により構成される。また、装置本体に予め組み込まれた記録媒体としては、例えば、プログラムが記録されている、図５のＲＯＭ１０２や、図５の記憶部１０８に含まれるハードディスク等でもよい。
【００７８】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
【００７９】
また、本明細書において、システムとは、複数の装置や処理部により構成される装置全体を表すものである。
【符号の説明】
【００８０】
１      ロボットシステム
１１    ロボットアーム
１２    エンドエフェクタ
１３    カメラ
１４    ロボットアーム駆動装置
１５    制御装置
２３    多関節マニュピュレータ
４１    ロボットアーム制御部
５１    ティーチングプレイバック制御部
５２    フィードバック制御部
５３    制御切替部
５４    画像処理部
５５    ロボットアーム状態取得部
６１    教示位置保持部
６２    目標位置決定部
６３    移動指令生成部
６４    対象物認識部
６５    誤差検出部
【図１】
2011093076.tif 000008
【図２】
2011093076.tif 000009
【図３】
2011093076.tif 000010
【図４】
2011093076.tif 000011
【図５】
2011093076.tif 000012
【図６】
2011093076.tif 000013
【図７】
2011093076.tif 000014