(57)【特許請求の範囲】
【請求項１】
ロボットの先端部の手先効果器により把持された作業対象物を被作業対象物に組み付ける作業を教示するロボットの教示システムであって、
前記ロボットに取り付けられるとともに、長尺状に形成されて、少なくとも長手方向以外の２方向に対して弾性的に変位可能な接触プローブと、
前記ロボットに取り付けられ、前記接触プローブと前記被作業対象物との接触を検出する外力検出器と、
前記ロボットの動作を制御する位置速度制御部と、
前記接触プローブの接触状態が検出された場合、前記接触プローブの位置に基づいて接触位置を導出する接触位置計算部と、
複数の前記接触位置から前記被作業対象物の位置姿勢を計算する位置姿勢計算部と、
前記計算された前記被作業対象物の位置姿勢に基づき前記ロボットの組み付け作業プログラムを生成する作業プログラム生成部と
を備え、
前記接触位置計算部は、前記接触プローブの位置および前記外力検出器の検出値を所定の周期で記録可能であって、前記外力検出器の検出値に基づき、前記接触プローブが前記被作業対象物に接触していると判定して前記接触プローブの接触状態が検出された場合、記録された前記外力検出器の検出値に基づき、前記接触プローブの接触状態が検出された時点とは異なる前記接触プローブが実際に接触を開始した接触時点を求め、記録された該接触時点における前記接触プローブの位置を前記接触位置として導出することを特徴とするロボットの教示システム。
【請求項２】
前記ロボットを操作可能な教示ペンダントを備え、前記ロボットは前記教示ペンダントによる指令により接触位置検出動作を行い前記接触プローブと前記被作業対象物とを接触させることを特徴とする請求項１記載のロボットの教示システム。
【請求項３】
前記接触位置検出動作にて、少なくとも前記被作業対象物上の、前記作業対象物を前記被作業対象物に組み付ける際に前記作業対象物と接触する部分に前記接触プローブを接触させることを特徴とする請求項２記載のロボットの教示システム。
【請求項４】
前記被作業対象物上の穴部に前記作業対象物を嵌合する作業を教示するに際し、前記  位置姿勢計算部にて、
前記接触位置計算部にて導出した、前記穴部の内側面上の複数箇所に前記接触プローブを接触させた際の接触位置から前記穴部の中心軸を求め、
前記接触位置計算部にて導出した、前記被作業対象物の上面の複数箇所に前記接触プローブを接触させた際の接触位置から前記被作業対象物の上面の平面を求め、
前記中心軸と前記平面との交点を求めることで前記被作業対象物の位置姿勢を計算することを特徴とする請求項１乃至３のいずれか１項記載のロボットの教示システム。
【請求項５】
前記接触位置計算部は、前記外力検出器の検出値が所定値を超えたとき、前記接触プローブが接触状態であるとすることを特徴とする請求項１乃至４のいずれか１項記載のロボットの教示システム。
【請求項６】
前記接触位置計算部は、前記記録された前記外力検出器の検出値の時間微分が変化した時点を前記接触時点として求めることを特徴とする請求項１乃至５のいずれか１項記載のロボットの教示システム。
【請求項７】
前記接触位置計算部は、前記接触位置の導出に際し、記録された前記接触プローブの位置及び記録された前記外力検出器の検出値に対して同じ時間的特性を有するノイズ低減フィルタリング処理を行うことを特徴とする請求項１乃至６のいずれか１項記載のロボットの教示システム。
【請求項８】
前記教示ペンダントによる指令は、教示者が前記教示ペンダントを操作して送出するジョグ指令であることを特徴とする請求項２記載のロボットの教示システム。
【請求項９】
前記教示ペンダントによる指令は、教示者が前記教示ペンダントを操作して送出する自動検出コマンドであることを特徴とする請求項２記載のロボットの教示システム。
【請求項１０】
前記ロボットは、前記接触プローブおよび前記被作業対象物を撮像するカメラを備えたことを特徴とする請求項１乃至９のいずれか１項記載のロボットの教示システム。
【請求項１１】
前記接触プローブの接触状態が検出された場合、前記教示ペンダント上に表示することを特徴とする請求項２または３記載のロボットの教示システム。
【請求項１２】
前記接触プローブは、前記ロボットへの取り付け及び該ロボットからの取り外しを可能とするか、又は、ロボットに格納可能に構成されていることを特徴とする請求項１乃至１１のいずれか１項記載のロボットの教示システム。
【請求項１３】
ロボットの先端部の手先効果器により把持された作業対象物を被作業対象物に組み付ける作業を教示するロボットの教示方法であって、
長尺状に形成されて、少なくとも長手方向以外の２方向に対して弾性的に変位可能な接触プローブを前記ロボットに取り付け、
前記接触プローブと前記被作業対象物との接触を検出する外力検出器を前記ロボットに取り付け、
前記接触プローブを前記被作業対象物の複数箇所に接触させて、前記接触プローブの位置および前記外力検出器の検出値を所定の周期で記録し、前記外力検出器の検出値に基づき、前記接触プローブが前記被作業対象物に接触していると判定して前記接触プローブの接触状態を検出した場合、記録した前記外力検出器の検出値に基づき、前記接触プローブの接触状態が検出された時点とは異なる前記接触プローブが実際に接触を開始した接触時点を求め、記録した該接触時点における前記接触プローブの位置を前記接触位置として導出することで、前記複数箇所の前記接触位置を導出し、
複数の前記接触位置から前記被作業対象物の位置姿勢を計算し、
前記計算された前記被作業対象物の位置姿勢に基づき前記ロボットの組み付け作業プログラムを生成することを特徴とするロボットの教示方法。
【請求項１４】
教示者が前記ロボットの制御コントローラに接続された教示ペンダントを操作して前記ロボットに対してジョグ指令を送出し、前記接触プローブを前記被作業対象物に接触させることを特徴とする請求項１３記載のロボットの教示方法。
【請求項１５】
教示者が前記ロボットの制御コントローラに接続された教示ペンダントを操作して前記ロボットに対して自動検出コマンドを送出し、前記接触プローブを前記被作業対象物に接触させることを特徴とする請求項１３記載のロボットの教示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの教示システムおよび教示方法に関する。
【背景技術】
【０００２】
自動車や家電製品の組立工程では、部品同士の嵌め合い作業が含まれていることが多い。ロボットを用いてこのような組立工程を自動化、省力化する場合には、何らかの方法でロボットに嵌め合い作業を教示する必要がある。
しかし、ロボットに組立作業のような微細作業を教示するには、部品を把持したロボットの手先を対象物に１ｍｍ以下の精度で位置合わせする必要があり、教示には時間と労力が必要で、教示者にとって非常に負担となっている。
【０００３】
このような技術課題を解決するために、下記特許文献のような教示方式が公開されている。
特許文献１では、ロボットを目標とする教示位置の手前のアプローチ点でソフトフローティング機能を有効化し、ソフトフローティング状態で目標教示点へ向けて手動操作でロボットを移動し、エンドエフェクタ先端を目標教示点に押付け、設定されたサーボ制御の剛性に対応した押付け力と反力がバランスした位置を接触位置として教示することが開示されている。
特許文献２では、ロボットの先端に力検出器を介して操縦桿を取付け、力検出器の検出力に応じてロボットを制御する、いわゆるロボットの直接教示であって、教示者が操縦桿を直接把持して作業対象物にロボットを誘導し、経由点を順次、位置教示することが開示されている。
特許文献３では、検出対象物体と接触検出子の接触状況を電気的に出力する手段を設け、検出対象物体と接触検出子が接触した瞬間の接触検出子の位置データを記憶保持し、記憶保持された位置データから、接触検出子が検出対象物体と接触した位置を演算することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３４８３６７５号公報
【特許文献２】特開昭５９−０１４４８４号公報
【特許文献３】特開平０４−３４０６０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の方法では、ソフトフローティングのために、ロボットの制御アルゴリズムにおける位置ループゲインＫｐと速度ループゲインＫｖを調整する必要があり、通常の教示者には容易に調整できない。また、接触位置の登録は、ロボットの押付け力と反力がバランスした位置を教示者が人為的に判断し登録するため、施行毎に変動し、精密嵌合に要求されるような精度で、正確に接触位置を教示することは難しい。更に、ロボットの動作中に一ループゲインＫｐ、または速度ループゲインＫｖを動的に変更する（切替える）ことは困難であり、ソフトフローティング状態への切替時間を必要とするため教示時間が長大化する。
また、特許文献２の方法は、安定な力制御をするために大きな操作力が必要である。また精密な位置の調整が難しく、特許文献１同様、正確に接触位置を教示することは難しい。更に特許文献１同様、位置制御状態から力制御状態への切替処理を必要とするため、教示時間が長大化する。
更に特許文献１、特許文献２の方法は、各々の制御方法により接触位置を教示することが出来るが、いずれも制御的にロボットと作業対象物の間で接触状態を作り出すものであり、ロボットの発生力と作業に必要な力はバランスがとれず過大力が発生しセンサやワークの破損を生じるという可能性を常にはらんでいる。破損に至らずとも、過大力により教示した作業対象物の位置がずれることで一から再教示が必要となり非常に煩雑である。
また、直接ワーク同士が接触を伴う作業を実際のワークを用いて教示することは、把持したワークの位置がずれてしまうことがあり、その場合は一から再教示を行う必要がある。更に教示者が力感覚を直接感じることができないため、作業が成功した状態を作り出すこと自体が困難を伴うことであった。
また、特許文献３の方法では、検出対象物体と接触検出子の接触状況を電気的に出力する手段を取っており、プラスチックや樹脂など通電しない材質に対して接触検出信号が得られないため、接触位置の検出を行うことができず、接触位置検出方法としての汎用性を欠くものである。
また、接触検出した瞬間に移動停止するためロボットの減速機に多大な負荷を与え、故障の原因となる。更に、本手法の技術的意義は、ＣＡＤシステムにおけるオフラインプログラムの実機との位置誤差を修正するための位置検出であり、予めＣＡＤシステムで作業教示をしておくことが前提条件で、接触作業の教示を簡易化することは困難である。
【０００６】
そこで、本発明は、力制御やソフトフローティングを用いることなく、またワークを把持したロボットで作業そのものと同等の動作を必要とすることなく、組立作業の教示を行うことができるロボットの教示システムおよび教示方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明の一の観点によれば、次のように構成したのである。
【０００８】
請求項１に記載の発明は、ロボットの先端部の手先効果器により把持された作業対象物を被作業対象物に組み付ける作業を教示するロボットの教示システムであって、前記ロボットに取り付けられるとともに、長尺状に形成されて、少なくとも長手方向以外の２方向に対して弾性的に変位可能な接触プローブと、前記ロボットに取り付けられ、前記接触プローブと前記被作業対象物との接触を検出する外力検出器と、前記ロボットの動作を制御する位置速度制御部と、前記接触プローブの接触状態が検出された場合、前記接触プローブの位置に基づいて接触位置を導出する接触位置計算部と、複数の前記接触位置から前記被作業対象物の位置姿勢を計算する位置姿勢計算部と、前記計算された前記被作業対象物の位置姿勢に基づき前記ロボットの組み付け作業プログラムを生成する作業プログラム生成部とを備え、前記接触位置計算部は、前記接触プローブの位置および前記外力検出器の検出値を所定の周期で記録可能であって、前記外力検出器の検出値に基づき、前記接触プローブが前記被作業対象物に接触していると判定して前記接触プローブの接触状態が検出された場合、記録された前記外力検出器の検出値に基づき、前記接触プローブの接触状態が検出された時点とは異なる前記接触プローブが実際に接触を開始した接触時点を求め、記録された該接触時点における前記接触プローブの位置を前記接触位置として導出することを特徴とするものである。
【０００９】
請求項２に記載の発明は、前記ロボットを操作可能な教示ペンダントを備え、前記ロボットは前記教示ペンダントによる指令により接触位置検出動作を行い前記接触プローブと前記被作業対象物とを接触させることを特徴とするものである。
【００１０】
請求項３に記載の発明は、前記接触位置検出動作にて、少なくとも前記被作業対象物上の、前記作業対象物を前記被作業対象物に組み付ける際に前記作業対象物と接触する部分に前記接触プローブを接触させることを特徴とするものである。
【００１１】
請求項４に記載の発明は、前記被作業対象物上の穴部に前記作業対象物を嵌合する作業を教示するに際し、前記  位置姿勢計算部にて、前記接触位置計算部にて導出した、前記穴部の内側面上の複数箇所に前記接触プローブを接触させた際の接触位置から前記穴部の中心軸を求め、前記接触位置計算部にて導出した、前記被作業対象物の上面の複数箇所に前記接触プローブを接触させた際の接触位置から前記被作業対象物の上面の平面を求め、  前記中心軸と前記平面との交点を求めることで前記被作業対象物の位置姿勢を計算することを特徴とするものである。
【００１３】
請求項５に記載の発明は、前記接触位置計算部は、前記外力検出器の検出値が所定値を超えたとき、前記接触プローブが接触状態であるとすることを特徴とするものである。
【００１４】
請求項６に記載の発明は、前記接触位置計算部は、前記記録された前記外力検出器の検出値の時間微分が変化した時点を前記接触時点として求めることを特徴とするものである。
【００１５】
請求項７に記載の発明は、前記接触位置計算部は、前記接触位置の導出に際し、記録された前記接触プローブの位置及び記録された前記外力検出器の検出値に対して同じ時間的特性を有するノイズ低減フィルタリング処理を行うことを特徴とするものである。
【００１６】
請求項８に記載の発明は、前記教示ペンダントによる指令は、教示者が前記教示ペンダントを操作して送出するジョグ指令であることを特徴とするものである。
【００１７】
請求項９に記載の発明は、前記教示ペンダントによる指令は、教示者が前記教示ペンダントを操作して送出する自動検出コマンドであることを特徴とするものである。
【００１８】
請求項１０に記載の発明は、前記ロボットは、前記接触プローブおよび前記被作業対象物を撮像するカメラを備えたことを特徴とするものである。
【００１９】
請求項１１に記載の発明は、前記接触プローブの接触状態が検出された場合、前記教示ペンダント上に表示することを特徴とするものである。
【００２０】
請求項１２に記載の発明は、前記接触プローブは、前記ロボットへの取り付け及び該ロボットからの取り外しを可能とするか、又は、ロボットに格納可能に構成されていることを特徴とするものである。
【００２１】
請求項１３に記載の発明は、ロボットの先端部の手先効果器により把持された作業対象物を被作業対象物に組み付ける作業を教示するロボットの教示方法であって、長尺状に形成されて、少なくとも長手方向以外の２方向に対して弾性的に変位可能な接触プローブを前記ロボットに取り付け、前記接触プローブと前記被作業対象物との接触を検出する外力検出器を前記ロボットに取り付け、前記接触プローブを前記被作業対象物の複数箇所に接触させて、前記接触プローブの位置および前記外力検出器の検出値を所定の周期で記録し、前記外力検出器の検出値に基づき、前記接触プローブが前記被作業対象物に接触していると判定して前記接触プローブの接触状態を検出した場合、記録した前記外力検出器の検出値に基づき、前記接触プローブの接触状態が検出された時点とは異なる前記接触プローブが実際に接触を開始した接触時点を求め、記録した該接触時点における前記接触プローブの位置を前記接触位置として導出することで、前記複数箇所の前記接触位置を導出し、複数の前記接触位置から前記被作業対象物の位置姿勢を計算し、前記計算された前記被作業対象物の位置姿勢に基づき前記ロボットの組み付け作業プログラムを生成することを特徴とするものである。
【００２２】
請求項１４に記載の発明は、教示者が前記ロボットの制御コントローラに接続された教示ペンダントを操作して前記ロボットに対してジョグ指令を送出し、前記接触プローブを前記被作業対象物に接触させることを特徴とするものである。
【００２３】
請求項１５に記載の発明は、教示者が前記ロボットの制御コントローラに接続された教示ペンダントを操作して前記ロボットに対して自動検出コマンドを送出し、前記接触プローブを前記被作業対象物に接触させることを特徴とするものである。
【発明の効果】
【００２４】
本発明によれば、力制御やソフトフローティングを用いることなく、位置制御を用いてロボットを誘導し、作業対象物の特定箇所を所定回数だけ接触させるだけで組立作業の教示を行うことが出来、教示作業の効率が飛躍的に向上する。通常の位置制御を用いるため、力制御やソフトフローティングの知識を持たない教示者でも容易に組立作業を教示することが出来る。
また、ワークを把持して直接接触作業を伴うことなく教示を実現できるため、教示作業の失敗の可能性が低く、複雑なワーク同士でも特徴点をタッチングすることによりワークの位置情報を得るだけで作業に必要な一連の動きをロボットコントローラで生成できるという効果がある。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１実施形態に係る、ロボットの教示装置の構成図である。
【図２】本発明の第１実施形態に係る、ロボット制御コントローラの内部処理の構成図である。
【図３】本発明の第１実施形態の処理手順を示すフローチャートである。
【図４】本発明の第１実施形態の接触位置検出の手順を示すフローチャートである。
【図５】図４に示す接触位置検出の手順の説明図である。
【図６】図４に示す接触位置検出の手順の説明図である。
【図７】本発明の第１実施形態に係る、被作業対象物の位置姿勢の取得方法の説明図である。
【図８】本発明の第１実施形態に係る、ロボットにＣＣＤカメラを搭載した場合の構成図である。
【図９】本発明の第１実施形態に係る、教示ペンダントに映し出されたＣＣＤカメラ画像の説明図であって、図９−１は、接触位置検出動作前の状態、図９−２は、接触位置検出動作中の状態、図９−３は、接触検出時の状態を示す。
【図１０】本発明の第１実施形態に係る、教示位置から作業プログラムを生成する方法の説明図である。
【図１１】本発明の第２実施形態に係る、ロボット制御コントローラの内部処理の構成図である。
【図１２】本発明の第２実施形態の処理手順を示すフローチャートである。
【図１３】本発明の第２実施形態に係る、被作業対象物の位置姿勢の自動検出方法の説明図であって、図１３−１、図１３−２は、接触プローブを被作業対象物の内側面に接触させた状態、図１３−３は、被作業対象物の上面に接触させた状態を示す。
【図１４】本発明の第１の実施形態に係る説明図で、ツールデータのキャリブレーション方法を説明するものである。
【発明を実施するための形態】
【００２６】
以下、本発明の実施の形態について図を参照して説明する。なお、同一の構成については同一の符号を付することにより、重複説明を適宜省略する。
【００２７】
＜第１実施形態＞
まず、図１を参照しつつ、本発明の第１実施形態に係るロボットの教示システムの構成について説明する。図１は、本発明の第１実施形態に係る、ロボットの教示システムの構成図である。
【００２８】
本実施形態は、精密嵌合の教示に関して、位置制御を用いてロボットを被作業対象物付近まで誘導し、被作業対象物の特定箇所を所定回数だけ接触位置検出し、ロボットのアプローチ位置から挿入完了までの作業プログラムを自動生成する手順について説明する。
ここでは、精密嵌合の説明として、ロボットによって組付けする部品（作業対象物）と、作業対象物が組付けられる部品（被作業対象物）という一般的な嵌合作業を例に説明するが、これは発明内容としての汎用性を示すためで、具体的には電子機器のケーブルコネクタやカバーなど組立作業の対象となる各種部品を指す。
【００２９】
図１においてロボット１はロボット制御コントローラ６により制御されるサーボモータ（図示せず）により駆動する。各サーボモータには位置情報を取得するエンコーダ（図示せず）が備えられており、位置情報をロボット制御コントローラ６へフィードバックされる。なお、図１に示されるロボット１は、６軸の垂直多関節型ロボットを模式的に描いたものであるが、軸数や軸構成を任意に変更したロボット１に対しても本発明を適用することが可能である。
ロボット１の先端部には、作業対象物５１及び被作業対象物５２に対して作業を行う手先効果器３が搭載されている。手先効果器３は、例えばグリッパがあるが、接触作業を行うための装置であればこれに限定されない。
【００３０】
手先効果器３には、被作業対象物５２と接触して位置検出するための接触プローブ４が接続されている。接触プローブ４は取外し可能で、プローブ長手方向、または長手方向以外の２方向の曲げのいずれかに対して弾性変形領域を持つ。接触プローブ４は、接触位置検出動作に伴い被作業対象物５２と接触する際に手先効果器３もしくはロボット１と被作業対象物５２とが干渉しない程度の長さを持つ。更に先端部には対象物との接触部を持つ（本実施形態では球形）。また、ロボットの作業性を損なわないように、プローブは必要な時のみ突き出す収納式であっても良い。
【００３１】
ロボットの先端部（フランジ部）には、被作業対象物５２との接触を検出できる外力検出器２が設置されている。外力検出器２は、具体的には、接触状態を導通により電気的に検出するセンサ、接触センサ、薄型圧力センサ、トルク指令値と負荷トルクとの差で表される外乱トルクを用いた力検出器などであるがこれに限定されない。
【００３２】
ロボット制御コントローラ６は、ロボット１、手先効果器３の制御を行うと同時に、ロボット１に内在するエンコーダの位置情報や外力検出器２の検出データなどを受信し、必要なデータ処理を行うものである。ここで、ロボット制御コントローラ６の内部構成を図２を用いて説明する。本実施形態におけるロボット制御コントローラ６は、従来から知られた位置速度制御を行う位置速度制御部６６に加えて、受信したエンコーダの位置情報や外力検出器２の力検出データから接触位置を計算する接触位置計算部６１と、所定数の接触位置から被作業対象物の位置姿勢を計算する被作業対象物の位置姿勢計算部６２と、計算した被作業対象物の位置姿勢から作業プログラムを計算する作業プログラム計算部６３と、計算した作業プログラムの良否を確認する作業プログラム確認部６４と、作成した作業プログラムからロボット１に位置速度指令を送信する上位指令生成部６５とで構成される。
【００３３】
接触位置を求める際には、外力検出器の力検出データの変化を計算し、変化時点の接触プローブ先端位置を接触位置として算出する。接触プローブ先端位置はロボット１のエンコーダの位置情報と接触プローブの取付け位置、方向、およびプローブの寸法から計算して求める。また、より精度良く接触位置を計算するために、接触位置検出動作における接触プローブのアプローチ方向に応じて、プローブ先端球の中心位置に先端球の半径を加算してプローブ先端位置を計算しても良い（以下では、プローブ先端位置をプローブ先端球中心位置とする）。
上位指令生成部６５は、作業プログラムの他に、教示ペンダント７からのジョグ指令を受け付けることが出来、ジョグ指令に応じてロボット１に位置速度指令を送信する。ジョグ指令とは、教示ペンダント７のキーを押下している間だけキーに割り当てられたロボットの所定の関節軸を動作させる動作指令である。
位置速度制御部６６は、上位指令生成部６５において計算された位置速度指令と、ロボット１の各関節を駆動するサーボモータのエンコーダによる各関節軸の位置情報から位置速度制御を行い、サーボモータ（図示せず）を駆動する。
教示ペンダント７は、教示者８がキー操作し、ロボット１の作業プログラムの教示や再生を行う際に使用される。
【００３４】
図３は本発明の第１の実施形態に係る教示方法の処理手順を示すフローチャートである。図３を用いて本発明の手順を説明する。
ステップＳ１で、接触プローブ４、手先効果器３のツールデータ（取付け位置姿勢、及び寸法情報から計算する位置姿勢情報）の入力を行う。例えば教示者８が、教示ペンダント７を用いて数値を入力する。入力値として、通常は設計値を用いれば良いが、正確なツールデータ（取付け位置、寸法情報）が分からない場合には、別途キャリブレーションしても良く、例えば次のような方法がある。
【００３５】
ロボット座標系に対する位置、及び姿勢が既知のキャリブレーション用治具に対して、キャリブレーション対象物（接触プローブの先端部、もしくは手先効果器の特定部（例えば、手先効果器の先端））の姿勢を変化させながら、所定回数だけ接触させ、接触時点での、ロボット１のフランジ部位置、及び姿勢と、キャリブレーション用治具の位置、及び姿勢の「差（ベクトル）」を、キャリブレーション対象物（接触プローブ、もしくは手先効果器）のツールデータ（設計寸法、取付け位置）とするのである。ロボットのフランジ部の位置、及び姿勢は、ロボットの各関節軸のエンコーダ位置情報とリンク設計寸法より計算する。ロボット座標系はロボットの第１軸を原点として、前後にＸ方向、左右にＹ方向、上下にＺ方向を取る直交座標系である。例えば、図１４のように、ロボット座標系のＺ負方向に接触プローブをキャリブレーション治具のＸＹ平面１０１に接触動作させ、位置検出した際のロボット１のフランジ部のＺ方向位置とキャリブレーション用治具のＺ方向位置の差から、ツールデータ（設計寸法、取付け位置）のＺ方向位置が取得できるのである。
次に、プローブ先端位置を変化させて、キャリブレーション治具のＹＺ平面１０２に接触させ、位置検出した際のロボット１のフランジ部のＸ方向位置とキャリブレーション用治具のＸ方向位置の差から、ツールデータの（設計寸法、取付け位置）のＸ方向位置が取得できるのである。同様に、キャリブレーション治具ＸＺ平面１０３に接触させて、ツールデータの（設計寸法、取付け位置）のＹ方向位置が取得できるのである。
【００３６】
次に、ステップＳ２で、教示者８が教示ペンダント７を用いてロボット１を操作し、作業対象物５１を把持し、被作業対象物５２へのアプローチ位置ＲＴＡｐまで移動させる作業を教示する（ＲＴＡＰはロボット座標上におけるアプローチ位置のＸ、Ｙ及びＺ座標値と、Ｒｘ、Ｒｙ、及びＲｚの回転角度を規定する同次変換行列である）。教示手順は通常の位置教示を行う場合と同様で、教示者８が教示ペンダント７のキーを操作してロボット１を動作させて、位置教示を行う。被作業対象物５２へのアプローチ位置とは、作業対象物５１を把持して被作業対象物５２へ嵌合作業する場合に、作業対象物５１の底面と被作業対象物５２の穴面が所定距離離れた位置で、垂直方向には作業対象物５１の底面が被作業対象物５２の穴面から数センチ上方の位置で、前後左右方向には作業対象物５１の中心位置が被作業対象物５２の穴の中心位置に１ｃｍ程度の精度で、大まかに目視による位置合わせされた位置である。
【００３７】
次に、作業対象物５１を放し、ステップＳ３で、位置検出モードに切替え、教示者８が教示ペンダント７を使ってロボットを動作させることで接触プローブ４の先端部を被作業対象物５２の所定箇所に所定回数だけ接触させ、接触位置検出し、被作業対象物５２の位置姿勢を取得する。位置検出モードへの切替えとは、接触位置検出において、外力検出値の変化を監視する機能を無効から有効に切り替えることである。例えば、手先効果器３で作業対象物５１を把持した際にも外力検出器２の検出値の変化があるが、この場合は接触位置検出を行う必要がないので、外力検出器２の検出値の監視を行っていない。位置検出モードへの切替え処理は外力検出値の監視の有効無効を切替るのみであり、ロボットの動作中に動的に切替えても誤検出したり、ロボットの動作に影響を及ぼしたりすることは無く、これにより処理時間が増加することは無い。
接触位置検出の処理は、外力検出器２の検出データとエンコーダの位置情報に基づいて、接触位置計算部６１において行われ、被作業対象物の位置姿勢が、接触位置に基づいて、被作業対象物の位置姿勢計算部６２において求められる。接触位置検出部６１において、接触が検出されると、接触状態である旨が教示ペンダント７の画面に表示されることで、教示者８は正常に位置検出が行われたことを認識してロボットを次の接触箇所に移動させることができ、過大な押し込み量を与える事無く効率的に接触位置検出が出来るのである。
【００３８】
ここでステップＳ３での接触位置検出の手法について図４から図６を用いて説明する。
図４は接触位置検出の手順を示すフローチャートである。
まずステップＳ３１で教示者８が教示ペンダント７によりロボットをジョグ操作して位置検出動作を開始する。続いてステップＳ３２でプローブ先端位置と外力検出器の検出値の監視を開始する。プローブ先端位置は、前述のようにロボットの各軸のエンコーダの位置情報を順変換したロボット先端位置（プローブ取り付け位置）と接触プローブの取付け位置、方向、およびプローブの寸法とから求めることができる。
【００３９】
ステップＳ３３で外力検出値が設定閾値Ｆ０を超えているかを一定の周期で監視する。力センサの値がＦ０を超えた場合には接触と判断し、ステップＳ３４にて接触状態である旨が教示ペンダント７の画面に表示される。この表示を確認した作業者がジョグ操作を止めることでロボットは減速停止する。減速停止する事により、ロボットの減速機等への機構的な負荷を軽減する事が出来る。また、減速時の移動距離は検出プローブの柔軟性により吸収されるため、対象物を移動させたり、損傷させたりすることは無い。
【００４０】
なお、Ｆ０は、プローブ４が接触状態にあることを高い確率で判定可能にするためロボットアームに通常生じ得る振動（ロボットの動作による機械的振動や力センサの計測において発生する電気的ノイズ等）に起因する力よりも大きな値に設定するが、教示ペンダント７などを用いて外部から変更可能にしてもよい。ステップＳ３２、ステップＳ３３の処理のサンプリング周期は、必要とする接触位置検出の分解能を満たすように設定する。具体的にはサンプリング周期を必要とする位置検出の分解能を検出動作速度で除した値よりも小さい値になるように設定する。サンプリング周期が決定している場合には検出速度により位置検出分解能が決定する。
【００４１】
ステップＳ３５でプローブ先端位置と外力検出値の記録を終了する。接触位置計算部６１は、ステップＳ３６〜Ｓ３８で記録したプローブ先端位置と外力検出器の値とから、プローブ４が接触位置を計算する処理を行う。
【００４２】
図４のステップＳ３３では、振動などの外乱によって接触を誤検出する恐れを排除し、確実に接触状態を検出可能にするため、Ｆ０を、プローブが物体に接触した際に発生する通常の力よりも大きい値に設定している。このため、図５に示すように、ステップＳ３３で判断した接触判断位置（ｘ１）は、外力の値の立ち上がり位置として求められるプローブの実際の接触位置（ｘ２）とは異なり、ロボットアームの動作方向により進んだ位置となっている。かくして、本実施例では、接触状態であると検出された後に、記録されている外力検出値とプローブ位置の履歴とから実際の接触位置を計算する処理を行うようにしている。この様な手法をとる事により、プローブの接触を誤検出することなく、かつ高精度に検出することが出来る。
【００４３】
図５、図６は接触位置の検出処理の説明図である。これらの図を用いて図４のステップＳ３６〜Ｓ３８における接触位置検出処理を順を追って説明する。
ステップＳ３６で、外力検出器２により検出された外力検出値にローパスフィルタをかけ、外力検出値に重畳しているノイズ成分を除去する。ローパスフィルタとして、シャープなカットオフ周波数特性を有するのが好ましく、該カットオフ周波数は、ロボットの特性に応じて適宜変更可能である。また、本実施例では、プローブ４の先端位置の値に対してもローパスフィルタをかける。好ましくは、外力値に対して適用したものと同じ時間的特性を有するノイズ低減フィルタリング処理を実行する。これにより、同一遅れ信号同士を対応付けることができ、接触位置の検出精度を向上させることができる。
【００４４】
次にステップＳ３７で差分計算により外力検出値の時間微分を計算する。図６に示すように力センサ値の時間微分が０を超えるか又は０より小さくなった時点のプローブ先端位置を実際の接触位置ｘ２とする（ステップＳ３８）。なお、外力検出値の時間微分が０を超える時点は、プローブが何とも接触していない状態から被作業対象物に接触した時点に相当し、外力検出値の時間微分が０より小さくなる時点は、プローブが被作業対象物に接触している状態から当該被作業対象物から離れて何とも接触していない状態に移行した時点に相当している。即ち、本実施例では、接触時と離れる時の２回、接触位置を検出する機会が存在しており、いずれの時点も接触位置の検出に用いることができる。接触時と離れる際の接触位置を比較し、一致していることを確認することで、接触位置検出処理の信頼性を高めることが出来る。接触時と離れる際の接触位置が不一致である場合として、例えば、接触動作に伴い被作業対象物が変形した、移動した等が想定される。接触検出結果をこの様な対象物の状態判別手段として応用することは容易に可能である。
【００４５】
上記説明では、記録したプローブ先端位置と外力検出値から実際の接触位置を計算する処理について、ステップＳ３７にて外力検出値の時間微分により実際の接触位置を求めたが、本発明はこの例に限定されるものではない。例えば、
（１）外力検出器の検出値において接触判断した時点の時刻および外力検出値
（２）接触判断した時点から所定時間前の時点の時刻および外力検出値
この（１）と（２）から実際の接触から減速停止に到るまでの外力検出値の近似直線を求め、接触していない区間における近似直線を、同様に２つの時刻および外力検出値をサンプリングすることで計算し、両直線の交点における時刻と外力検出値から実際の接触位置を算出する等の方法がある。
【００４６】
接触箇所、接触回数は被作業対象物の寸法や形状に応じて異なるが、図７に示すように、被作業対象物が円柱状の作業対象物を挿入される形状をしている場合を例にして、その位置姿勢の取得方法を説明する。教示者８が、教示ペンダント７でロボットをジョグ操作し、接触プローブ４を被作業対象物５２の内側面に接触させ、接触位置計算部６１での処理にて接触位置Ｐ１１を得る（Ｐ１１はロボット座標系における接触位置のＸ、Ｙ、及びＺ座標値である）。Ｐ１１の接触位置から、基準座標系（例えばロボット座標系）のＸＹ平面と平行に移動させて接触プローブ４を被作業対象物５２の内側面に接触させ、Ｐ１２、Ｐ１３（図示せず）を得る。Ｐ１１〜Ｐ１３から、例えば最小二乗円近似を用いて作業対象物が挿入される円の中心位置Ｐ１４を得る。接触プローブ４をＰ１４からＺ方向に移動させ同様の手順により接触点Ｐ２１〜Ｐ２３、並びに中心位置Ｐ２４を得る。Ｐ１４、Ｐ２４より作業対象物の挿入軸（穴の中心軸）を求める。更に被作業対象物の上面の複数（Ｐ３１など）の箇所に接触させ、挿入軸と被作業対象物の上面の平面との交点を求めることでロボット座標系に基づく被作業対象物の同次変換行列ＲＴＷを得ることが出来る。
各接触位置からＰ１４やＰ２４、同次変換行列ＲＴＷを導出する処理は、被作業対象物の位置姿勢計算部６２にて行われる。
本ステップは被作業対象物の位置姿勢を求めるためのもので、被作業対象物の寸法、形状が変化した場合にも接触箇所と点数、及び位置姿勢の算出方法を変化させるだけで他の処理に影響を与えることは無い。
【００４７】
また、本ステップ（ステップＳ３）で行う、教示者８が教示ペンダント７を使って接触プローブ４先端を被作業対象物５２の所定箇所に所定回数だけ接触させ、接触位置検出し、被作業対象物５２の位置姿勢を取得する過程において、図８のように、ＣＣＤカメラ９から取得する接触プローブ４、及び被作業対象物５２の映像を参照し、教示ペンダント７に備えたタッチパネルを使うことで被作業対象物５２の位置姿勢情報を取得するための接触位置検出を簡便に行うことも可能である。ＣＣＤカメラ９による映像を参照することで、教示者８は遠隔地からでも作業が可能となるため対人安全性を確保することが出来る。また、教示ペンダント７の画面にタッチパネルを使うことで、教示ペンダント７の操作に慣れていない教示者８でも、直感的に操作が出来、教示効率が向上する。ＣＣＤカメラ９の映像は図９−１のように教示ペンダント７に映し出され、移動指令入力キー７２（タッチパネル上に表示されたキー）を押下することで、プローブ先端位置を所望する方向に移動させ、接触位置検出を行うことが出来る。ＣＣＤカメラ９は、ロボット１の各軸が回転しても接触プローブ４がＣＣＤカメラ９の視界から外れることのないよう、ロボット１の手先方向に最も近いリンクに取付けられている。ＣＣＤカメラ９の映像上には、図９−２、図９−３のように動作中の状態、接触状態を表示させて、教示者８に接触状態が視覚的に分かる様にしておくことで、接触プローブ４が被作業対象物５２に接触したまま、押し当てを続けてしまい接触プローブ４が塑性変形することが無いようにし、教示効率を向上させることが出来る。接触状態の表示は、接触位置計算部６１で、接触があったと判断した時点で、接触状態であると処理し、教示ペンダント７の画面に表示する。
【００４８】
更に、本ステップ（ステップＳ３）で行う、教示者８が教示ペンダント７を使って接触プローブ４先端を被作業対象物５２の所定箇所に所定回数だけ接触させ、接触位置検出し、被作業対象物５２の位置姿勢を取得する過程において、事前に与えられた被作業対象物５２のＣＡＤデータをシミュレータ上に表示し、被作業対象物５２の位置姿勢情報を取得するための接触位置検出を簡便に行うことも可能である。シミュレータ上にはロボット本体の幾何学モデルと運動学計算処理が備えられており、シミュレータ上のＧＵＩを操作することで、ＰＣ上（オフライン）でロボットを動作させることが出来る。また、シミュレータは、位置検出プローブ、被作業対象物のＣＡＤデータを読み込み、シミュレータ上に表示出来る。シミュレータ上で、ロボットを動作させ、被作業対象物への位置検出動作プログラムを作成し、ロボット実機による被作業対象物の位置検出に適用する。また、ロボット実機で被作業対象物の位置検出した結果をシミュレータ上に表示し、被作業対象物の位置を修正し、修正された被作業対象物の位置で作業プログラムを検討することも可能となる。更に、被作業対象物の形状が単純な円筒等の場合には、与えられた被作業対象物の寸法から、被作業対象物の位置姿勢情報取得のための、接触位置情報をシミュレータ上に提示し、作業者に接触位置を示すことが出来る。
【００４９】
次に、ステップＳ４において、ステップＳ３で求めた被作業対象物の位置姿勢ＲＴＷ（挿入開始位置）から挿入完了位置までの作業プログラムを教示する。教示方法は、移動命令を絶対値として挿入開始位置ＲＴＷから被作業対象物への挿入量分だけ移動させた挿入完了位置ＲＴＥＮＤを教示するか、もしくは相対量として被作業対象物への挿入量分だけ移動させる命令を教示する。
【００５０】
次に、ステップＳ５において、ステップＳ２で教示したアプローチ位置ＲＴＡｐと、ステップＳ３で取得した被作業対象物の位置姿勢ＲＴＷ（挿入開始位置）、及びステップＳ４で取得した挿入完了位置ＲＴＥＮＤに基づいて、アプローチ位置から挿入完了位置までの作業プログラムを生成する。作業プログラムの生成は、作業プログラム生成部６３において行われる。嵌合作業では、真上から作業対象物を被作業対象物に挿入する動作が必要であるため、図７のようにアプローチ位置ＲＴＡｐと、被作業対象物の位置姿勢ＲＴＷの間に経由点ＲＴＶＩＡを設け、被作業対象物の位置ＲＴＷに垂直に移動できるような経路を生成する。ここで経由点ＲＴＶＩＡは、ステップＳ３において計算した被作業対象物の挿入軸上に存在し、アプローチ位置ＲＴＡｐと同じ高さの位置としている。経路の生成は、アプローチ位置ＲＴＡｐと経由点ＲＴＶＩＡ、経由点ＲＴＶＩＡと被作業対象物の位置ＲＴＷ（挿入開始位置）、及び被作業対象物の位置ＲＴＷ（挿入開始位置）と挿入完了位置ＲＴＥＮＤの各々の２点間を直線で結び、台形補間などの一般的な方法を用いて行う。
【００５１】
最後に、ステップＳ６において、ステップＳ５で作成したアプローチ位置から挿入開始完了までの作業プログラムについて、干渉の有無や生成した軌跡の妥当性を確認する。作業プログラムの確認は、作業プログラム確認部６４において行われる。干渉の有無とは、ステップＳ４において作成した、アプローチ位置ＲＴＡｐから被作業対象物の位置ＲＴＷ（挿入開始位置）の間の作業プログラムにおいて、ロボット１、手先効果器３、もしくは接触プローブ４と被作業対象物５２との物理的な干渉が無いことを確認することで、オフラインシミュレータ上に取得した被作業対象物５２の位置姿勢を描画し、作成した作業プログラムを実行させ、目視で干渉の有無を確認する方法、または干渉確認対象とするロボット１、手先効果器３、もしくは接触プローブ４と被作業対象物５２を直方体や球でモデリングし、距離計算し、距離が０以下になっていた場合には干渉と判断する方法がある。一方、軌跡の妥当性とは、ステップＳ５において作成した、アプローチ位置ＲＴＡｐから挿入完了位置ＲＴＥＮＤの間の作業プログラムにおいて、アプローチ位置ＲＴＡｐから経由点ＲＴＶＩＡ、被作業対象物の位置ＲＴＷ（挿入開始位置）を経由して挿入完了位置ＲＴＥＮＤまで直線で補間されていることを確認することで、干渉の有無と同様にオフラインシミュレータ上で目視確認するか、軌跡を出力し表計算ソフトなどでプロットし、良否判定する。
【００５２】
以上の手順を踏むことにより、制御やソフトフローティングを用いることなく、位置制御を用いてロボットを誘導し、被作業対象物の特定箇所を所定回数だけ接触させるだけで組立作業の教示を行うことが出来、教示作業の効率が飛躍的に向上する。
【００５３】
＜第２実施形態＞
次に、図１１を参照しつつ、本発明の第２実施形態に係るロボットの教示システムについて説明する。図１１は本発明の第２実施形態に係るロボット制御コントローラの構成図である。
【００５４】
この第２実施形態に係るロボット制御コントローラ６は、被作業対象物の位置姿勢計算部６２に代わって、被作業対象物の位置姿勢自動計算部６７を有する点で、第１実施形態に係るロボット制御コントローラ６（図２）と異なるが、他の構成は同様に構成される。つまり、第２実施形態は、第１実施形態のステップＳ３において説明した、教示者８が教示ペンダント７を使って接触プローブ４の先端部を被作業対象物５２の所定箇所に所定回数だけ接触させて接触位置検出し、被作業対象物５２の位置姿勢情報を取得する過程を自動化するものである。以下では、説明の便宜上、重複説明を適宜省略し、第１実施形態と異なる点を中心に説明することとする。
【００５５】
図１２は本発明の第２の実施形態に係る教示方法の処理手順を示すフローチャートである。図１２を用いて本発明の手順を説明する。
ステップＳ２１で、アプローチ位置、被作業対象物の設計寸法を入力する。この寸法は、後に示す被作業対象物５２の位置姿勢自動検出における検出動作生成のために使用し、必要な設計寸法は被作業対象物の形状に応じて異なるが、例えば、本実施形態のように円柱状の作業対象物を挿入される形状であれば、作業対象物用の穴の半径、深さの設計寸法を入力する。
次に、ステップＳ２２で、教示者８が、教示ペンダント７をジョグ操作し、図１３−１に示すように、接触プローブ４の先端球を被作業対象物５２の位置姿勢自動検出を開始する位置ＲＴＡＰ’に移動させる。ＲＴＡＰ’は被作業対象物５２の中心軸と上面が交差する位置、かつ非作業対象物５２の上面と垂直になるようなプローブ姿勢にする。ＲＴＡＰ’の位置、及び姿勢は、それぞれ１ｃｍ、１°程度の精度で大まかに目視位置合わせされている。（１ｃｍ、１°程度位置ずれしていても、後の位置検出精度に影響は無い）。また、ＲＴＡＰ’の位置姿勢は後の位置姿勢自動検出において初期位置として使用する値で、上記の限りでは無い。
【００５６】
次に、ステップ２３において、位置検出モードに切替え、ステップＳ２１で入力した被作業対象物５２の寸法、およびステップＳ２２の検出開始位置を用いて、自動で、接触プローブ４の先端部を被作業対象物５２の所定箇所に所定回数だけ接触させて接触位置検出し、被作業対象物の位置姿勢を取得する。接触位置検出の操作は、教示者８が教示ペンダント７を操作し、自動検出コマンドを被作業対象物の位置姿勢自動計算部６７に送ることで行われる。被作業対象物の位置姿勢自動計算部６７では、接触位置計算部６１で接触があったと判断した時点で、接触状態であると処理し、接触プローブ４を次の接触点へ移動させる。これにより接触位置検出は連続的に、時間をロスすること無く、効率良く行われる。
なお接触位置計算部６１での接触位置検出の処理は第１実施形態で説明した手順（図４〜図６参照）と同様であるため、ここでは説明を割愛する。
【００５７】
接触箇所、接触回数は被作業対象物の寸法形状に応じて異なるが、本実施形態の場合は次のように計算できる。図１３−１〜図１３−３を用いて、円柱状の作業対象物を挿入される被作業対象物の位置姿勢の自動取得方法を説明する。ＲＴＡＰ’の接触プローブ姿勢からロボット座標系のＹ軸、もしくはＸ軸周りにθ１だけ回転させ、Ｚ軸負方向（挿入方向）に、被作業対象物の穴の深さの１／３程度だけ移動したＰ１０’に移動する。次に、図１３−１のようにＰ１０’におけるプローブ姿勢を維持したまま、被作業対象物の内側面に接触プローブ４の先端部が接触するように移動し、接触した時点のプローブ先端位置Ｐ１１’を得る。次に図１３−２のように、Ｐ１０’の位置で接触プローブをロボット座標系のＹ軸、もしくはＸ軸周りにθ２だけ回転させ、プローブ姿勢を維持したまま、ロボット座標系のＸＹ平面と平行に移動させて被作業対象物の別の内側面に接触プローブ４の先端部を接触させ、Ｐ１２’を得る。
θ１、θ２は、接触位置検出動作において、手先効果器や接触プローブの先端以外の箇所が被作業対象物と干渉すること無く、接触プローブの先端が弾性方向に被作業対象物と接触するために接触プローブがとる角度であって、干渉が発生しない値であればよい。
【００５８】
同様にして、別の接触位置Ｐ１３’（図示せず）を得、実施形態１のステップＳ３と同様に最小二乗円近似を用いて作業対象物が挿入される円の中心位置Ｐ１４’を得る。次に、Ｐ１０’の位置から更にＺ軸負方向（挿入方向）に、被作業対象物の深さの１／３程度だけ移動したＰ２０’（図示せず）に移動し、同様の手順で、接触位置Ｐ２１’、Ｐ２２’、Ｐ２３’、並びに中心位置Ｐ２４’を得る。Ｐ１４’、Ｐ２４’より作業対象物の挿入軸（穴の中心軸）を求める。
次に図１３−３のように、ＲＴＡＰ’の位置から、Ｚ軸正方向に、被作業対象物の深さの１／３だけ移動させ、更に被作業対象物の半径方向に所定距離だけ移動したＰ３０’に移動する。移動距離は、図のように被作業対象物の上面に接触できるように、被作業対象物の内径以上、外径未満となるような距離とする。Ｐ３０’の位置でプローブ姿勢を維持したまま、被作業対象物の上面に接触プローブ４の先端部が接触するように接触プローブ４を移動し、接触した時点のプローブ先端位置を複数（Ｐ３１’など）得る。挿入軸とＰ３１’などから被接触対象物の同次変換行列ＲＴＷを得ることが出来る。
ステップＳ２４以降の処理は、図３のステップＳ４以降の処理と同様であるため、ここでは説明を割愛する。
【００５９】
以上の手順を踏むことにより、接触位置検出を用いて被作業対象物の位置姿勢を取得する処理において、被作業対象物の寸法情報と、被作業対象物の位置姿勢検出を開始する位置を教示するだけで、接触位置検出を繰り返し実行し、被作業対象物の位置姿勢を算出する処理を自動化することが出来る。
【符号の説明】
【００６０】
１  ロボット
２  外力検出器
３  手先効果器
４  接触プローブ
５１  作業対象物
５２  被作業対象物
６  ロボット制御コントローラ
６１  接触位置計算部
６２  被作業対象物の位置姿勢計算部
６３  作業プログラム生成部
６４  作業プログラム確認部
６５  上位指令生成部
６６  位置速度制御部
６７  被作業対象物の位置姿勢自動計算部
７  教示ペンダント
８  教示者
９  ＣＣＤカメラ
１０１  キャリブレーション用治具ＸＹ平面
１０２  キャリブレーション用治具ＹＺ平面
１０３  キャリブレーション用治具ＸＺ平面
【図１】
0005447432.tif 000002
【図２】
0005447432.tif 000003
【図３】
0005447432.tif 000004
【図４】
0005447432.tif 000005
【図５】
0005447432.tif 000006
【図６】
0005447432.tif 000007
【図７】
0005447432.tif 000008
【図８】
0005447432.tif 000009
【図９】
0005447432.tif 000010
【図１０】
0005447432.tif 000011
【図１１】
0005447432.tif 000012
【図１２】
0005447432.tif 000013
【図１３】
0005447432.tif 000014
【図１４】
0005447432.tif 000015