(57)【特許請求の範囲】
【請求項１】
手首部に設けた力センサによってエンドエフェクタに加わる力を取得し力制御によって動作するロボットの教示再生装置であって、
ロボットの運動を制御するコントローラと、
操作者がロボットに力制御による動作を教示するための、前記コントローラに接続される教示ペンダントと、
ロボットへの位置指令値および力指令値と、ロボットからの位置フィードバック値および力フィードバック値を表示する力制御状態表示手段と、
を有し、
前記コントローラは、前記コントローラに予め記憶された教示データに基づいてロボットを再生動作させているときに、操作者による任意のタイミングで行われた教示ペンダントからの力制御による動作の教示を、その開始タイミングとともに、再生している教示データに追加することができる、教示再生装置。
【請求項２】
請求項１に記載の教示再生装置であって、前記コントローラは、ロボットの再生動作中に教示ペンダントを介して追加された教示を含む教示データを、新たな教示データとして前記コントローラ内に記憶する、教示再生装置。
【請求項３】
請求項１または２に記載の教示再生装置であって、
前記教示ペンダントは、ロボットの複数の動作からなる１つのまとまった動作を生成可能であり、前記１つのまとまった動作を再生中の教示データに追加できる、教示再生装置。
【請求項４】
請求項１乃至３のいずれか一項に記載の教示再生装置であって、
前記コントローラは、再生動作時において、
前記力センサから得られる情報およびロボットの内界センサから得られる情報の少なくともいずれか一方に基づいて、前記エンドエフェクタの状態値を演算し、
演算された状態値に対応する教示データを作成するときに記憶された前記エンドエフェクタの状態値と、演算された状態値との差分を用いて評価値を演算し、
前記評価値を所定値と比較することで、ロボットの動作が教示通りに遂行されているかを判断する、教示再生装置。
【請求項５】
請求項４に記載の教示再生装置であって、
前記コントローラは、再生動作時において、
前記力センサから得られる情報およびロボットの内界センサから得られる情報の少なくともいずれか一方に基づいて、前記エンドエフェクタの複数の状態値を記憶し、
演算された状態値に対応する教示データを作成するときに記憶された前記エンドエフェクタの複数の各状態値と、演算された複数の各状態値との差分を用いて第２の評価値を演算し、
前記第２の評価値を所定値と比較することで、ロボットの動作が教示通りに成功したかを判断する、教示再生装置。
【請求項６】
請求項４または５に記載の教示再生装置であって、
前記エンドエフェクタの状態値の演算は、所定の周波数で行われる、教示再生装置。
【請求項７】
請求項６に記載の教示再生装置であって、前記周波数は、前記ロボットの動作速度が大きいときに相対的に前記周波数が大きく、前記ロボットの動作速度が小さいときに相対的に前記周波数が小さい、教示再生装置。
【請求項８】
手首部に設けた力センサによってエンドエフェクタに加わる力を取得し力制御によって動作し、前記ロボットへの位置指令値および力指令値と、前記ロボットからの位置フィードバック値および力フィードバック値を表示する力制御状態表示手段を有するロボットの教示方法であって、
予め作成された予備教示データに基づいてロボットを再生動作させるステップと、
前記予備教示データに従ってロボットを再生動作させているときに、前記予備教示に加えてさらに任意のタイミングで行われた力制御による動作の教示を、その開始タイミングとともに、再生動作中のロボットに重畳的に与えるステップと、を有するロボットの教示方法。
【請求項９】
手首部に設けた力センサによってエンドエフェクタに加わる力を取得し力制御によって動作し、前記ロボットへの位置指令値および力指令値と、前記ロボットからの位置フィードバック値および力フィードバック値を表示する力制御状態表示手段を有するロボットの教示データ作成方法であって、
予め作成された予備教示データに基づいてロボットを再生動作させるステップと、
前記予備教示データに従ってロボットを再生動作させているときに、前記予備教示データに加えてさらに任意のタイミングで行われた力制御による動作の教示データを、その開始タイミングとともに、再生動作中のロボットの予備教示データに加算するステップと、を有するロボットの教示データ作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、産業用ロボットを用いて嵌合などの接触作業を教示および再生する装置、教示再生する方法、教示データを作成する方法に関する。
【背景技術】
【０００２】
産業用ロボットで嵌合など接触作業を実行する場合、ロボットマニピュレータのエンドエフェクタまたは手首部に力センサを設け、力センサから得られる情報を利用して力制御機構を構成する技術が広く知られている。産業用ロボットは教示再生方式に基づいているが、基本的に位置制御を対象としているため、力制御による接触作業の場合は新たな教示再生の仕組みを構築する必要がある。接触作業の教示再生に関する技術の例が特許文献１から特許文献８に開示されている。
【特許文献１】特許第３４８３６７５号公報
【特許文献２】特開２００２−５２４８５号公報
【特許文献３】特開平６−２６２５６３号公報
【特許文献４】特開２００７−１３６５８８号公報
【特許文献５】特許第３３０４２５１号公報
【特許文献６】特開２００４−１６７６５１号公報
【特許文献７】特開平９−９１０２６号公報
【特許文献８】特許第３５７７１２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一般に、特に接触を伴う場合の教示作業では、再生動作時にワークおよびロボットに過大な力を発生させないようにするために、教示する状態量として位置情報と同時に力の情報にも気を配りながら教示する必要がある。そのため、一回の教示作業では最適な教示データを生成することは困難であり、教示、再生、教示の修正を繰り返し行い最適な教示データを作成することがある。このように教示データの作成には試行錯誤を繰り返すので非常に時間がかかる。
【０００４】
また、教示データの作成に際して、実際のロボットを誘導操作することなくオフラインでロボットプログラムを作成するために、シミュレータを用いて教示データを作成する場合もある。しかし、シミュレータを用いたオフラインでの教示では、接触作業などの細かな動作を教示することは困難である。シミュレータを用いてワークの位置情報を教示し、後のテスト運転において接触作業などの細かな教示を調整できれば便宜である。
【０００５】
本発明は、以上のような問題点に鑑みなされたものであり、嵌合作業等の接触作業に際して、教示時および再生動作時にワークおよびロボットに過大な力を発生させることなく、簡易な手法で効率的にロボットの動作を教示データを修正するためのロボットの教示再生装置、教示再生方法、及び教示データの作成方法を提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、手首部に設けた力センサによってエンドエフェクタに加わる力を取得し力制御によって動作するロボットの教示再生装置が提供される。このロボット教示再生装置は、ロボットの運動を制御するコントローラと、操作者がロボットに力制御による動作を教示するための、前記コントローラに接続される教示ペンダントと、前記ロボットへの位置指令値および力指令値と、前記ロボットからの位置フィードバック値および力フィードバック値を表示する力制御状態表示手段と、を有する。コントローラは、コントローラに予め記憶された教示データに基づいてロボットを再生動作させているときに、操作者による任意のタイミングで行われた教示ペンダントからの力制御による動作の教示を、その開始タイミングとともに、再生している教示データに追加することができる。
【０００７】
一実施形態において、コントローラは、ロボットの再生動作中に教示ペンダントを介して追加された教示を含む教示データを、新たな教示データとして前記コントローラ内に記憶することができる。
【０００８】
一実施形態において、教示ペンダントは、ロボットの複数の動作からなる１つのまとまった動作を生成可能であり、１つのまとまった動作を再生中の教示データに追加できる。ここでいう１つのまとまった動作とは、ロボットの運動速度または運動方向が変化する動作をいう。
【０００９】
一実施形態において、コントローラは、再生動作時において、ロボットのエンドエフェクタに取り付けられたセンサから得られる情報およびロボットの内界センサから得られる情報の少なくともいずれか一方に基づいて、ロボットのエンドエフェクタの状態値を演算し、演算された状態値に対応する教示データを作成するときに記憶されたロボットのエンドエフェクタの状態値と、演算された状態値との差分を用いて評価値を演算し、評価値を所定値と比較することで、ロボットの動作が教示通りに遂行されているかを判断することができる。
【００１０】
一実施形態において、コントローラは、再生動作時において、ロボットのエンドエフェクタに取り付けられたセンサから得られる情報およびロボットの内界センサから得られる情報の少なくともいずれか一方に基づいて、ロボットのエンドエフェクタの複数の状態値を記憶し、演算された状態値に対応する教示データを作成するときに記憶されたロボットのエンドエフェクタの複数の各状態値と、演算された複数の各状態値との差分を用いて第２の評価値を演算し、第２の評価値を所定値と比較することで、ロボットの動作が教示通りに成功したかを判断することができる。
【００１１】
一実施形態において、ロボットのエンドエフェクタの状態値の演算は、所定の周波数で行われる。好ましくは、周波数は、ロボットの動作速度が大きいときに相対的に周波数が大きく、ロボットの動作速度が小さいときに相対的に周波数が小さい。
【００１２】
本発明の一態様によれば、手首部に設けた力センサによってエンドエフェクタに加わる力を取得し力制御によって動作し、前記ロボットへの位置指令値および力指令値と、前記ロボットからの位置フィードバック値および力フィードバック値を表示する力制御状態表示手段を有するロボットの教示方法が提供される。この方法は、予め作成された予備教示データに基づいてロボットを再生動作させるステップと、予備教示データに従ってロボットを再生動作させているときに、予備教示に加えてさらに任意のタイミングで行われた力制御による動作の教示を、その開始タイミングとともに、再生動作中のロボットに重畳的に与えるステップと、を有する。
【００１３】
本発明の一態様によれば、手首部に設けた力センサによってエンドエフェクタに加わる力を取得し力制御によって動作し、前記ロボットへの位置指令値および力指令値と、前記ロボットからの位置フィードバック値および力フィードバック値を表示する力制御状態表示手段を有するロボットの教示データ作成方法が提供される。この方法は、予め作成された予備教示データに基づいてロボットを再生動作させるステップと、前記予備教示データに従ってロボットを再生動作させているときに、前記予備教示データに加えてさらに任意のタイミングで行われた力制御による動作の教示データを、その開始タイミングとともに、再生動作中のロボットの予備教示データに加算するステップと、を有する。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態におけるロボットの教示再生装置の構成図である。
【図２】本発明の一実施形態におけるロボットの教示再生方法のフローチャートである。
【図３】嵌合アプローチ点への移動動作の教示を説明する図であり、（ａ）はロボットの状態を表し、（ｂ）は動作プログラムを表す。
【図４】非接触状態での力制御の手動操作手順を説明する図であり、（ａ）はロボットの状態を表し、（ｂ）は教示ペンダントの状態を表す。
【図５】接触状態の教示手順を説明する図であり、（ａ）はロボットの状態を表し、（ｂ）は教示ペンダントの状態を表す。
【図６】探り操作の手順を説明する図であり、（ａ）はロボットの状態を表し、（ｂ）は教示ペンダントの状態を表す。
【図７】嵌合状態の教示手順を説明する図であり、（ａ）はロボットの状態を表し、（ｂ）は教示ペンダントの状態を表す。
【図８】挿入操作の手順を説明する図であり、（ａ）はロボットの状態を表し、（ｂ）は教示ペンダントの状態を表す。
【図９】詰まり解消操作の手順を説明する図であり、（ａ）はロボットの状態を表し、（ｂ）は教示ペンダントの状態を表す。
【図１０】挿入完了状態の教示手順を説明する図であり、（ａ）はロボットの状態を表し、（ｂ）は教示ペンダントの状態を表す。
【図１１】教示データから変換された動作プログラムを表す図である。
【図１２】本発明の一実施形態による、ロボットの再教示方法を示すフローチャートである。
【図１３】教示時と再生時のロボットの状態の比較を説明する図であり、（ａ）は位置情報、（ｂ）はトルク情報を表す。
【図１４】教示ペンダントによる操作者への情報提示を示す図である。
【図１５】一般的なロボットシステムと周辺機器の接続を表す図である。
【図１６】一般的な産業用ロボットの構成図である。
【図１７】インピーダンス制御のブロック図である。
【図１８】嵌合挿入作業の状態分類を示す図であり、（ａ）接触状態（ｂ）嵌合状態（ｃ）挿入完了状態を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について図を参照して説明する。
まず、一般的な産業用ロボットと力制御のシステム構成（いずれも公知技術）を説明し、その後、教示ペンダントを用いた教示データの作成および教示データに基づくロボットの再生の一形態を説明する。その後に、本発明による教示データの修正およびロボットの動作エラー判定について説明する。
【００１６】
一般的な産業用ロボットと力制御のシステム構成
図１５は、一般的な産業用ロボットの構成図である。図１５において、ロボット１０１は、複数の関節軸とリンクを有するマニピュレータである。各関節軸には、エンコーダつきの駆動モータが内蔵されており、各関節を独立に駆動することができる。ロボット１０１はコントローラ１０２に接続されており、コントローラ１０２はロボット１０１とともに各関節軸駆動モータのエンコーダ信号をもとにフィードバック制御（位置制御系）を構成し、ロボット１０１の運動を制御する。コントローラ１０２には、教示者がロボットを手動（JOG）操作したり、動作プログラムを作成・編集したりするためのインターフェイスである教示ペンダント１０３が接続されている。教示ペンダント１０３は主に操作ボタン群１０３ａと表示画面１０３ｂとで構成されている。ロボット１０１は、手首部に設けられたエンドエフェクタ１０４を備える。エンドエフェクタとしてアプリケーションに応じて様々なツールが取り付けられる。図１５、１６の場合は部品を把持するためのハンド（グリッパ）が取り付けられている。
【００１７】
図１６は力制御される産業用ロボットの構成図を示している。ロボット１０１は、手首に取り付けられた６軸力センサ１０５を備え、XYZ各軸方向の力と各軸回りのモーメントを計測できる。コントローラ１０２は、内部に構成された力制御手段１０６を備え、力制御手段１０６は力センサ１０５と各軸エンコーダからの信号をもとにフィードバック制御系（力制御系）を構成している。力制御部１０６からは各駆動モータのトルク指令または電流指令が出力され、そのトルク（または電流）指令値をもとにアクチュエータ駆動アンプ部１０７が各駆動モータに電力を供給する。コントローラ１０２は、教示ペンダントで作成（教示）された動作プログラムをコントローラ内部で記憶する動作プログラム記憶部１０８を備える。コントローラ１０２は、動作プログラム記憶部１０８に記憶された動作プログラムを解釈・実行し、力制御部１０６に動作指令を与える動作プログラム実行手段１０９を備える。エンドエフェクタ１０４は嵌合部品１１０ａを把持することができ、嵌合部品１１０ａは被嵌合部品１１０ｂに嵌合される。ロボット１０１を力制御状態にすることによって、位置姿勢誤差を許容して嵌合部品１１０ａを被嵌合部品１１０ｂに嵌合させることが可能になる。
【００１８】
具体的な力制御方式としては、インピーダンス制御が一般に利用される。図１７に一般的なインピーダンス制御の制御ブロック図を示す。図１７において、１０６ａは位置制御系であり、各関節軸の位置指令と現在位置（フィードバック）をもとに各駆動モータのトルク（または電流指令）をアクチェータ駆動アンプ部１０７に出力する。Frefは力モーメント指令（力モーメント目標値）、Ffbは力モーメントフィードバック値である。θrefは動作プログラム実行部１０９から送られてくる位置指令（関節座標系）、δθはインピーダンス制御演算部１０６ｂが計算する位置修正量である。インピーダンス制御演算部１０６ｂでは、まず、FrefとFfbをもとに、次式にしたがって直交座標系における位置修正量δPが計算される（１０６ｃ）。
【００１９】
δP ＝（Ｍｓ2＋Ｄｓ＋Ｋ）-1（Fref−Ffb）
ここで、Ｍ，Ｄ，Ｋはそれぞれ、慣性マトリクス、粘性係数マトリクス、剛性マトリクス（バネ定数）である。通常、これらは対角行列として、各軸方向に独立なインピーダンス特性を設定する。また、ｓはラプラス演算子であり、時間に関する一階微分に相当する。
【００２０】
直交座標系における位置修正量δPは、ヤコビ行列Ｊ(θ)を用いて次式により関節座標系の位置修正量δθに分解される（１０６ｄ）。
δθ＝Ｊ(θ)-1 δP
このδθをθrefに足し合わせた位置指令θref’を位置制御系１０６ａに与えることによって、外力やモーメントに対して、Ｍ，Ｄ，Ｋで指定された特性を保ちながらロボットを動作させる。例えば、Ｋにより外力に対してロボットがバネのように動作し、その際、ＭおよびＤを小さくすることによって軽くスムーズに動作する。
【００２１】
教示ペンダントを用いた教示データの作成
次に、教示ペンダントを用いて教示データの作成するためのシステム構成および教示データの作成方法の一形態を説明する。  図１は一形態によるロボットの教示再生装置の構成図である。図１において、図１６と同符号の要素（１０１〜１１０）については同じものを表しているので説明を省略する。
【００２２】
教示ペンダント１０３は、力制御設定手段１１１、力制御手動操作手段１１２、力制御状態表示手段１１３、および作業状態保存手段１１４を備えている。力制御設定手段１１１と力制御状態表示手段１１３および作業状態保存手段１１４は教示ペンダント１０３の表示画面１０３ｂに表示される。表示画面１０３ｂは液晶タッチパネル式になっており、教示者は表示画面１０３ｂに表示されたソフトウェアキーをタッチすることにより、力制御設定手段１１１、力制御状態表示手段１１３、作業状態保存手段１１４の各手段を操作することができる。
【００２３】
また、教示ペンダント１０３の力制御手動操作手段１１２は各操作に対応する操作ボタン群１０３ａを備える。なお、図１では力制御手動操作手段１１２は操作ボタン群１０３ａとして実現しているが、ソフトウェアキーに置き換えることも可能である。また、教示者が教示ペンダント１０３の操作ボタン群１０３ａや表示画面１０３ｂに表示されたソフトウェアキーを操作することによって、表示画面１０３ｂに図1に示されるような画面以外にも様々な画面を表示することができるようにしてもよい。
【００２４】
力制御設定手段１１１は、第１の座標系選択手段１１１ａと力制御開始／終了手段１１１ｂ、および操作モード選択手段１１１ｃを備える。
まず、第１の座標系選択手段１１１ａをタッチすることにより、力制御をどの座標系に基づいて実行するかを選択することができる。例えば、タッチするたびにロボット座標系→ツール座標系→ユ-ザ座標系→ロボット座標系→・・・のように座標系が順番に切り替わるようにすることができる。
【００２５】
ここでロボット座標系とツール座標系の例を図１５に示す。ロボット座標系は図１５に示すようにロボットの基台部分を原点とする直交座標系として定義されることが一般的である。またツール座標系はエンドエフェクタやその付近に原点を持つ直交座標系として定義されることが一般的である。ユ-ザ座標系は、ロボット座標系やツール座標系に加えて教示者が任意に定めることができる座標系である。
【００２６】
座標系を選択して、力制御開始終了手段１１１ｂをタッチすると、教示時のロボット１０１をインピーダンス制御状態で操作することができる。また、インピーダンス制御状態で力制御開始／終了手段１１１ｂをタッチすれば、インピーダンス制御を終了して通常の位置制御に戻すことができる。
【００２７】
操作モード選択手段１１１ｃは、そのＸ、Ｙ、Ｚの各ボタンをタッチすることによって、第１の座標系選択手段１１１ａで選択した座標系の各軸方向について「位置」「一定力」「振動力」のいずれかのモードを選択することができる。Ｚボタンを例に説明すると、ボタンをタッチする度に、「Z：位置」→「Z：一定力」→「Z：振動力」→「Z：位置」→・・・のように順番に切り替わるようにすることができる。
【００２８】
各モードでのロボットの動作は次のようになる。Ｚ方向を「Z：位置」に設定した状態で力制御手動操作手段１１２の「Z+」または「Z-」ボタンを押下すると、そのボタン操作に応じて位置指令Pref（図１７）のZ成分の値が増減して、ロボットを手動操作できる。すなわち通常のJOG動作と同様の動作をする。Ｚ方向を「Z：一定力」に設定した状態で力制御手動操作手段１１２の「Z+」または「Z-」ボタンを押下すると、そのボタン操作に応じて力制御手段１０６への力指令Fref（図１７）のＺ成分の値が増減して、ロボットを手動操作できる。Ｚ方向を「Z：振動力」に設定した状態で力制御手動操作手段１１２の「Z+」または「Z-」ボタンを押下すると、力制御手段１０６への力指令Fref（図１７）のＺ成分が一定の振幅と周期（周波数）を有する波形に沿って変化して、ロボットを手動操作できる。ボタン操作によってロボットへの位置指令を手動操作する際の時間当たりの変化量（速度）（mm/s）や、力指令を手動操作する際の時間当たりの変化量（N/s）、振幅（N）および周波数（Hz）については、操作モード選択手段１１１ｃのそれぞれの表示箇所をタッチして選択し、力制御手動操作手段１１２の「高」「低」ボタンを押下することで値を増減させ調節することができる。また、操作モード選択手段１１１ｃの「前」ボタン、「次」ボタンの用途については後述する。
【００２９】
力制御状態表示手段１１３は、インピーダンス制御状態でのロボット１０１の位置と力との変化を図や数値でリアルタイムに表示することができる。例えば、図１に示すように力指令Fref、力フィードバック（力FB）Ffb、位置指令Prefおよび位置フィードバック（位置FB）Pfbが棒グラフと数値で表示される。力制御状態表示手段１１３は、第２の座標系選択手段１１３ａと軸選択手段１１３ｂとを備える。第２の座標系選択手段１１３ａをタッチすることにより、第１の座標系選択手段１１１ａと同様にして位置と力の変化を所望の座標系に基づいて表示させることができる。通常は第１の座標系選択手段１１１ａで選択したものと同じ座標系が選択されるであろう。軸選択手段１１３ｂをタッチすると、Ｘ軸→Ｙ軸→Ｚ軸→Ｘ軸→・・・のように順番に軸を切り替えることができる。第２の座標系選択手段１１３ａで指定した座標系の軸のうち、軸選択手段１１３ｂで選択した軸方向に関する位置と力の情報がグラフ、数値の一方あるいは両方によって表示される。
【００３０】
教示者は、力制御状態表示手段１１３に表示される位置と力の状態を確認しながら、力制御設定手段１１１と力制御手動操作手段１１２とを使用することで、ハンドに把持された部品の接触状態すなわち作業状態を直感的な操作で変化させることができる。部品がどのような作業状態にあるかを教示者が判断・選択し、適当な時点で明示的な操作（例えば作業状態保存手段１１４にある「保存」ボタンを教示者がタッチする）を行うことによって、作業状態保存手段１１４は、作業状態の種類と共に、その時点での力指令Fref、力フィードバックFfb、位置指令Pref、位置フィードバックPfb等を、教示データとしてコントローラ１０２内の教示データ記憶部１１５に記憶することができる。
【００３１】
図１６に示すようにエンドエフェクタ１０４が把持した嵌合部品１１０ａを被嵌合部品１１０ｂの穴に嵌合させて穴底まで挿入させる嵌合挿入作業の場合、作業状態として図１８（ａ）〜（ｃ）に示すように「接触状態」「嵌合状態」「挿入完了状態」の３つの状態を定義し、作業状態保存手段１１４にて教示データを記憶する際、３つの状態のうちどの状態であるかを合わせて指定できるようにする。具体的には、作業状態保存手段１１４に「接触」「嵌合」「挿入完了」ボタンを設定することで、教示者が各ボタンをタッチすることにより、ロボットがどの作業状態にあるのかを明示的に指定することができる。これらの３つのボタンは択一式になっている。また、一連の作業状態の教示終了後に作業状態保存手段１１４の「変換」ボタンを押下すると、コントローラ１０２内の教示データ変換手段１１６が作動し、教示データ記憶部１１５に記憶された各作業状態に関する位置や力のデータが、動作プログラムに変換されて動作プログラム記憶部１０８に記憶される。教示データの動作プログラムへの変換の詳細については後述する。
【００３２】
上記の説明では、作業状態保存手段１１４のボタンをタッチして教示データをどの作業状態として保存すべきかを教示者が明示的に指定していたが、ほとんどの場合、「接触」「嵌合」「挿入完了」の順に教示作業を進めるので、教示者が「保存」ボタンをタッチする度に作業状態を順番に自動で切り替えてもよい。接触状態を教示する際には、事前に教示者が力制御開始終了手段１１１をタッチして力制御状態に移行するので、その際に自動的に作業状態保存手段１１４の「接触」ボタンをタッチ状態にすればよい。
【００３３】
動作プログラムへの変換が終了したら、従来から行われているようにロボットのモードを教示モードから再生動作モードに変更し、変換された動作プログラムを再生することにより、「接触」「嵌合」「挿入完了」の動作が再現される。
【００３４】
以上説明したように、上記の実施形態によるロボットの教示再生装置は、教示ペンダント１０３の表示画面１０３ｂに力制御設定手段１１１、力制御手動操作手段１１２、力制御状態表示手段１１３および作業状態保存手段１１４を設け、力制御状態表示手段１１３で力と位置に関するデータを視認しつつ適宜力制御設定手段１１１にて操作モードを変更しながら教示を行うことで、教示者が力制御での教示に熟練していない場合であっても直感的に力制御手動操作手段１１２を操作してワークおよびロボットに過大な力をかけることなく嵌合挿入作業を教示することができる。
【００３５】
続いて図１に示したロボットの教示再生装置での教示方法について説明する。図２は一形態によるロボットの教示方法および再生方法のフローチャートである。以下、図２〜１１に従って、嵌合挿入作業の教示について詳細な説明を行う。まず、図３に示すように、教示ペンダント１０３によってエンドエフェクタ（ハンド）１０４のツール座標系３０１を設定し、嵌合部品１１０ａを把持したハンド１０４を被嵌合部品１１０ｂの穴のアプローチ点（図３（ａ）のPOOO）まで移動させた後、図３（ｂ）のようにアプローチ点までの移動命令「MOV  POOO  V=10」を動作プログラムに登録する（Ｓ２０１）。なお、図３（ｂ）では表示画面１０３ｂの表示内容を切り替えて動作プログラムを表示させている。ここで、MOVはロボットに対する移動命令であり、POOOで目標とするロボットの手先位置を指定している。またV=10は目標位置（POOO）までの移動速度を指定している。また、本実施例ではツール座標系３０１は図３（ａ）に示すようにハンドに把持された嵌合部品１１０ａの先端部にその原点が位置するよう設定されている。ツール座標系のＹ軸は記載されていないが、ツール座標系は直交座標系であり、Ｙ軸は紙面と直交する方向に定義される。教示者が直感的にツール座標系に基づいたロボット操作ができるよう、ツール座標系設定の際、その軸の１つを嵌合部品１１０ａの軸線と一致させるのが一般的である。図３（ａ）では嵌合部品１１０ａの軸線をツール座標系のＺ軸としているが、これをＸ軸としたりＹ軸としたりしてもよい。また、位置指令や位置フィードバックは、ツール座標系３０１の原点の位置を指すものとする。
【００３６】
続いて図４（ｂ）に示すように、教示ペンダント１０３の画面表示を切り替え、力制御設定手段１１１にて「ツール座標系」を選択し、さらに力制御（インピーダンス制御）状態に移行する（Ｓ２０２）。なお力制御状態表示手段１１３の座標系は「ツール座標系」、軸は「Z軸」に事前に設定しておく。そして図４（ｂ）に示すように、力制御設定手段１１１でツール座標系のＺ軸方向（部品の嵌合方向）の操作モードを「Z：位置」にし、力制御状態表示手段１１３の棒グラフ表示を確認しながら力制御手動操作手段１１２（操作ボタン群１０３ｂ）の「Z+」ボタンを押下してア-ムをツール座標系のＺ方向に移動させる。この際ロボットの様子を図４（ａ）に示す。この際の移動速度は、力制御設定手段１１１の「Z：位置」の隣の「mm/s」ボタンをタッチして、力制御手動操作手段１１２の「高」「低」ボタンを押下することによって調節できる（Ｓ２０３）。
【００３７】
嵌合部品１１０ａが被嵌合部品１１０ｂに接触すると、力制御状態表示手段１１３の力フィードバック値が図５（ｂ）に示すようにゼロから変化するので、教示者は部品同士の接触を判断することができる。教示者は接触と判断したら、力制御手動操作手段１１２の「Z+」ボタンを離す。「位置」操作モードでは、式（1）によるインピーダンス制御のバネ定数Ｋの該当成分（この場合はＺ成分）を非ゼロにし、「Z+」ボタンを離しても接触状態は維持されるようになっている。図５（ａ）に示すように接触状態を維持したまま作業状態保存手段１１４の「接触」ボタンをタッチして「接触状態」を選択し、「保存」ボタンをタッチして接触状態の教示データを教示データ記憶部１１５に記憶する。接触状態の教示データとして、力フィードバック値（突き当て力）と位置フィードバック値（接触位置）を記憶する（Ｓ２０４）。
【００３８】
次に、手動操作（探り操作）で図５（ａ）の接触状態から図７（ａ）の嵌合状態まで推移させる。探り操作について図６に基づき説明する。図５（ａ）あるいは図６（ａ）に示すように嵌合部品１１０ａは被嵌合部品１１０ｂの穴に対してツール座標系のＸ方向にずれている場合を想定する。まず、力制御設定手段１１１のＸ方向の操作モードを「振動力」に切り替える。「振動力」に切り替えると振幅「N」と周波数「Hz」のボタンが隣に現れる。「N」ボタンをタッチ（選択）して力制御手動操作手段１１２の「高」または「低」ボタンを押下することによって振動力の振幅を調節できる。同様に「Hz」ボタンをタッチ（選択）して「高」「低」ボタンを押下することによって振動力の周波数を調節できる。この様子を図６（ｂ）に示す。図６（ｂ）において、操作モード選択手段１１１ｃの「X：振動力」の右側の「10N」が振動力の振幅を表し、「10Hz」が周波数を表す。「振動力」に切り替えた状態で力制御手動操作手段１１２の「X+」または「X-」ボタンを押下することによって、ボタンを押下している間、力制御手段１０６への力指令値FrefのＸ成分に振動力が印加され、把持した嵌合部品１１０ａを被嵌合部品１１０ｂに接触させた状態でＸ軸方向に往復運動させることができる。「X+」ボタンを押下した場合はＸ+方向を初期方向として往復運動する。「X-」ボタンを押下した場合はＸ-方向を初期方向として往復運動する。また、Ｘ軸方向だけでなく、Ｙ軸方向についても力制御設定手段１１１の操作モード選択手段１１１ｃにて操作モードを「振動力」モードに切り替え、「X-」ボタンと「Y+」あるいは「Y-」ボタンを同時に押下することによってＸＹ平面の任意の方向に往復運動させることができる。さらに、「X-」ボタンを押下しながら、「高」「低」ボタンを押下することによって、実際に往復運動させながらその振幅（あるいは周波数）を増減できる。したがって、振幅をどの程度の値にすればよいか分からない場合は、振幅をゼロ（ON）にしておいて、「X-」ボタンを押下しながら「高」ボタンを押下して振幅を徐々に大きくして調整すればよい。Ｚ方向への突き当て力（図５参照）は維持された状態で往復運動（探り操作）するので、嵌合部品１１０ａと被嵌合部品１１０ｂの中心軸が一致すると図７（ａ）のように嵌合部品１１０ａは被嵌合部品１１０ｂの穴にわずかに嵌った状態に推移する。
【００３９】
接触状態から嵌合状態に推移する瞬間（嵌合部品１１０ａが穴に嵌った瞬間）にツール座標系のＺ方向の力が急に減少し、同時に位置フィードバック値が増加するので教示者は嵌合部品１１０ａが穴に嵌ったかどうかを判断できる。教示者は嵌合判断したら「X-」ボタンを離して探り操作を止める。インピーダンス制御のバネ定数ＫのＺ成分は非ゼロであるので、嵌合状態は維持される（Ｓ２０５）。
【００４０】
図７（ａ）のような嵌合状態になると、その状態を維持したまま、図７（ｂ）に示すように作業状態保存手段１１４の「嵌合」ボタンをタッチして「嵌合状態」を選択し、「保存」ボタンをタッチして嵌合状態の教示データを教示データ記憶部１１５に記憶する。嵌合状態の教示データとして、嵌合状態での位置フィードバック値（嵌合位置）と探り操作時（図６）の振幅および周波数を記憶する（Ｓ２０６）。
【００４１】
続いて図８（ｂ）のように力制御設定手段１１１でＺ方向の操作モードを「一定力」に切り替える。「一定力」に切り替えると、インピーダンス制御のバネ定数ＫのＺ成分はゼロに自動設定される。この状態で図８（ｂ）に示すように再び「Z+」ボタンを押下する。操作モードが「一定力」の場合は「Z+」ボタンを押下している間、インピーダンス制御（力制御手段１０６）への力指令FrefのＺ成分は増加しつづける。逆に「Z-」ボタンを押下している間は力指令FrefのＺ成分は減りつづける。この増加減少の変化率は「Z：一定力」の隣の「N/s」ボタンをタッチ（選択）した上で力制御手動操作手段１１２の「高」「低」ボタンを押下して調節することができる。また、現在加えられている力指令値は力制御状態表示手段１１３に力フィードバック値と共に表示されるので、教示者は常に力の状態を視覚的に把握しながらボタン操作ができる。Ｚ+方向の力指令Frefを徐々に増加させFrefが部品間の摩擦力を超えると嵌合部品１１０ａは被嵌合部品１１０ｂの穴底に向かって移動を始める（Ｓ２０７）。この様子を図８（ａ）に示す。教示者はこの段階で「Z+」ボタンを離せばよい。なお、移動している最中の力フィードバック値（絶対値）は力指令値（絶対値）よりも小さい値になる。嵌合方向に誤差があると（嵌合の公差が小さいほど許容できる誤差は小さくなる）、嵌合部品１１０ａが挿入途中で被嵌合部品１１０ｂの穴にひっかかる「詰まり」が発生する場合があるが、その場合は次に説明するような詰まりを解消する操作を手動で行う。なお、詰まりが発生したか否かは、力制御状態表示手段１１３の棒グラフ表示や数値表示での、位置指令と位置フィードバックの差によって確認することができる。また教示者が嵌合部品１１０ａの位置を目視したり、嵌合部品１１０ａと被嵌合部品１１０ｂの穴との干渉によって発生する音を聞いたりすることによっても確認することができる。
【００４２】
図９に基づいて詰まり解消操作について説明する。図９（ａ）のように嵌合部品１１０ａがツール座標系のＹ軸回りに傾いていることで詰まりが発生した場合を想定する。教示者は、図９（ｂ）に示すように、まず操作モード選択手段１１１ｃの「次」ボタンをタッチすることによって並進動作軸（XYZ軸）から回転動作軸（RxRyRz軸）に画面を変更しておき、力制御設定手段１１１のRy軸（Y軸回りの回転）方向の操作モードを「振動力」に切り替える。操作モード選択手段１１１ｃは、「前」「次」ボタンの各ボタンをタッチすることによって、第１の座標系選択手段１１１ａで選択した座標系の各軸方向（XYZ）について操作モードを選択するのか、各軸回り（RxRyRz）について操作モードを選択するのかを切り替えることができる。探り操作（図６参照）の場合と同様に、振動力の振幅（回転動作のときは力「N」ではなくモーメント「Nm」）と周波数を調整し、力制御手動操作手段１１２の「Ry+」または「Ry-」ボタンを押下して、把持した嵌合部品１１０ａにモーメント振動を印加する。Ｚ方向への力は維持したままなので、適度なモーメント振動により、詰まり（引っかかり）が解消されると挿入動作が再開する（Z方向に再び移動し始める）。振幅のモーメント振動をどの程度の値にすればよいか分からない場合は、振幅をゼロ（ONm）にしておいて、「Ry+」ボタンを押下しながら「高」ボタンを押下して振幅を徐々に大きくして調整すればよい。また、モーメント振動ではなく、探り操作と全く同様にX軸方向の振動（併進力）を印加して、詰まりを解消してもよい。挿入完了して移動が止まると力指令値と力フィードバック値が釣り合った状態になる。また力制御状態表示手段１１３で位置指令値（嵌合状態の位置のまま）と位置フィードバック値の差分（嵌合状態からの移動量）を見ることによって、穴底に到達した状態（挿入完了状態）になったか判断できる。
【００４３】
図１０（ａ）に示すように挿入が完了すると、教示者は図１０（ｂ）に示すように挿入完了状態を維持したまま（Z+方向に力指令値が加えられたまま）で作業状態保存手段１１４の「挿入完了」ボタンをタッチして挿入完了状態を選択し、「保存」ボタンをタッチして、挿入完了状態の教示データを教示データ記憶部１１５に記憶する。挿入完了状態の教示データとして、挿入完了状態での力指令値（挿入力）と位置フィードバック値（挿入完了位置）を記憶する。また、詰まり解消操作時に設定した振幅と周波数も記憶する（Ｓ２０８）。
【００４４】
接触から挿入までの一連の教示が完了し教示者が作業状態保存手段１１４の「変換」ボタンをタッチすると、コントローラ１０２内の教示データ変換手段１１６が作動し、教示データ記憶部１１５に記憶された教示データが図１１に示す動作プログラムに変換され、動作プログラム記憶部１０８に記憶される（Ｓ２０９）。図１１は教示ペンダントの画面表示を切り替えて図３（ｂ）のように動作プログラムを表示させた状態を示している。なお、これまでの説明では、作業状態保存手段１１４の各状態ボタン「接触」「嵌合」「挿入完了」を明示的にタッチして状態を選択してから「保存」ボタンをタッチするようにしているが、「保存」ボタンをタッチする度に状態が「接触」から「嵌合」、そして「挿入完了」へと自動的に推移するようにしてもよい。また、「変換」ボタンについても明示的にタッチするようにしているが、「挿入完了」状態で「保存」を押下したら、自動的に教示データが動作プログラムに変換されるようにしてもよい。
【００４５】
「変換」ボタンをタッチすることで教示データを基に変換された動作プログラムは、図１１に示すように、位置制御状態から力制御状態に移行させる力制御開始コマンド「IMPON」、非接触状態から接触状態に移行させる突き当て動作コマンド「TSUKIATE」、接触状態を維持したまま穴位置を探って嵌合状態に移行させる探り動作コマンド「SAGURI」、嵌合状態から挿入完了状態に移行させる挿入動作コマンド「INSERT」、力制御状態から位置制御状態に戻る力制御終了コマンド「IMPOFF」からなる。「TSUKIATE」コマンドにはV、Dir、F、Lがパラメ-タとして指定される。また「SAGURI」コマンドにはF、L、Fv、Tvがパラメ-タとして指定される。「INSERT」コマンドにはF、L、Mv、Tvがパラメ-タとして指定される。これらパラメ-タは各状態において教示データとして教示データ記憶部１１５に記憶された値をもとに自動的に決定される。詳細については後述する。
【００４６】
教示データに基づくロボットの再生動作
以上が教示モードでの嵌合挿入作業の教示手順である。続いて、再生動作時において、教示によって作成した動作プログラムに沿ってロボットを動作させる場合について説明する。教示モードから再生動作モードに切り替えて、変換された動作プログラムを再生する（Ｓ２１０）と、まずロボットはエンドエフェクタ１０４で嵌合部品１１０ａを把持してアプローチ点POOOまで位置制御で移動する（Ｓ２１１）。次に、力制御開始コマンド（図１１のIMPONコマンド）が実行されて力制御状態に移行する（Ｓ２１２）。
【００４７】
力制御状態移行後、続いて突き当て動作コマンド（図１１のTSUKIATEコマンド）が実行される（Ｓ２１３）。図１１の突き当て動作コマンドでは、「Dir」で指定されたツール座標系のＺ+方向に「V」で指定された速度Vａpで移動し、接触を検知したらＺ+方向に「F」で指定された力指令値Fpushを加え、接触検知後に「L」で指定された移動量Lpushだけ移動したら嵌合状態になったと判断して次のステップへ進む。接触検知については、再生動作時に検出された力フィードバック値と予め設定した閾値（接触力）を比較して自動で判断される。また接触検知後の力指令値Fpushには、教示の際Ｓ２０４での接触状態教示データの突き当て力が自動設定され、教示者が数値を入力する必要はない。さらに嵌合状態判断についても、嵌合状態教示データの位置フィードバック値（嵌合位置）とＳ２０４にて記憶した接触状態教示データの位置フィードバック値（接触位置）とのＺ方向差分値が移動量の閾値Lpushとして自動的に設定され、教示者が閾値を数値入力する必要はない。なお、「V」で指定された速度Vapについては予めコントローラに設定された値が用いられ、動作プログラム変換時に自動的に割り当てられる。実際に突き当て動作を実行してみて移動速度が不適当であれば変更することも可能である。
【００４８】
突き当て動作コマンド実行から所定時間内に移動量が閾値Lpushに達しないと突き当て動作コマンドが失敗したと判断され、探り動作コマンド（図１１のSAGURIコマンド）が実行される（Ｓ２１４）。突き当て動作コマンドが成功した場合は探り動作コマンドはスキップされる。探り動作コマンドは「F」で指定されたＺ+方向への突き当て力Fpushを維持した状態で、「Fv」で指定された振幅Fvib、「Tv」で指定された周期Tvibの振動力をz軸の垂直方向に印加しながらＺ+方向への移動量が閾値Lpushに達したかどうか監視する。所定時間内に閾値Lpushを超えた場合は成功として終了し、Lpushに達しない場合は失敗として力制御終了コマンド（図１１のIMPOFFコマンド）にて力制御を終了する（Ｓ２１６）。探り動作コマンドの振幅Fvibと周期Tvibは、教示の際の探り操作時（図６参照）において調整し、Ｓ２０６で教示データ記憶部１１５に記憶された振動力の振幅と、周波数の逆数がそれぞれ自動設定され、教示者が数値を入力する必要はない。
【００４９】
突き当て動作コマンドあるいは探り動作コマンドが成功すると、挿入動作コマンド（図１１のINSERTコマンド）が実行される（Ｓ２１５）。挿入動作コマンドでは、Ｚ+方向に「F」で指定された力指令値Finsを加え、接触検知後の移動量が「L」で指定されたLinsになったら挿入完了と判断して終了する。力指令値Finsについては、教示の際のＳ２０８で教示データ記憶部１１５に記憶された挿入完了状態の教示データのZ方向力指令値（挿入力）が自動設定され、教示者が数値入力する必要はない。また、挿入量閾値Linsについても、教示の際のＳ２０４で教示データ記憶部１１５に記憶された接触状態教示データの位置フィードバック値（接触位置）と、Ｓ２０８で記憶された挿入完了状態教示データの位置フィードバック値（挿入完了位置）とのＺ方向差分値が自動設定され、教示者が数値入力する必要はない。挿入途中で（移動量がLinsに達する前に）停止すると、詰まりが発生したと判断し、「Mv」で指定された振幅Mvib、「Tv」で指定された周期Tvibのモーメント振動を印加して、詰まり解消動作を実行する。詰まり解消動作の振幅Mvibと周期Tvibは、教示の際の詰まり解消操作時（図９参照）において調整し、Ｓ２０８で教示データ記憶部１１５に記憶された振動力の振幅と、周波数の逆数がそれぞれ自動設定され、教示者が数値入力する必要はない。
【００５０】
挿入動作コマンドが終了すると、力制御終了コマンド（図１１のIMPOFFコマンド）が実行されて力制御状態から位置制御状態に移行する（Ｓ２１６）。その後はエンドエフェクタ１０４を開放して嵌合部品１１０ａを放すことで嵌合挿入作業を終了する。このように、本実施形態では直感的な操作で簡単に嵌合挿入作業が教示できる上、教示段階での「接触」「嵌合」「挿入完了」め各状態で得た教示データが動作プログラムのパラメ-タに自動的に変換されるので教示者がパラメ-タを数値入力する手間が省けて教示作業時間を短縮できる。
【００５１】
以上のように、教示ペンダントを用いた力制御状態での教示とロボットの再生とを説明したが、接触作業に関する教示は、教示する状態量として位置および力の両方の情報に気を配りながら行う複雑な作業であるので、１回の教示では最適な教示データとならないことがある。そこで、作成した教示データを後に簡単に修正できると便宜である。そこで本発明は、教示データを以下に説明するような簡易な方法で修正できるようにし、ロボットの動作プログラムの作成を効率的に行えるようにする。
【００５２】
教示データの修正
以下の本発明の実施形態の説明においては、予め教示データが作成されていることを前提とする。このような教示データを本明細書では予備教示データと言及することもある。
【００５３】
本発明の一実施形態におけるロボットの教示再生装置は、予備教示データに基づいてロボットを再生しているときに、操作者による教示ペンダントからの教示を、再生している教示データに追加する機能を備える。かかる機能は、コントローラ１０２および教示ペンダント１０３により実現することができる。一実施形態として、コントローラ１０２および教示ペンダントは、以下に説明する予備教示データの修正方法を実現できるようにプログラムされる。
【００５４】
図１２を参照しながら、本発明の一実施形態による予備教示データの修正方法を説明する。
ステップＳ３０１において、ロボット１０１の予備教示データを作成する。本発明において、予備教示データの作成方法は任意である。前述したように教示ペンダント１０３を用いて教示データを作成してもよいし、他の方法で予備教示データを作成してもよい。たとえば、シミュレータを用いてオフラインで予備教示データを作成してもよい。また、本発明により修正される予備教示データは、必ずしも上述のような嵌合作業のような接触作業の教示データでなくてもよい。
【００５５】
ステップＳ３０２において、ロボット１０１のテスト運転をスタートする。すなわち、予備教示データに従ってロボット１０１を再生させる。操作者が余裕を持って予備教示データを修正できるように、ロボット１０１の運転速度を変更できることが望ましい。従って、コントローラ１０２および教示ペンダント１０３は、ロボットの運転速度を変更できるようにプログラムされることが望ましい。また、インチングなど寸動により微小なステップの動きでロボット１０１の動作を停止でき、操作者の指示操作により再度動作させることができることが望ましい。従って、コントローラ１０２および教示ペンダント１０３は、ロボットがインチング動作等が可能になるようにプログラムされることが好ましい。
【００５６】
次にステップＳ３０３において、ロボット１０１のテスト運転実行中に教示ペンダント１０３のJOGキー（たとえば操作ボタン群１０３ａ）により、操作者はロボット１０１の動作を修正（再教示ともいう）することができる。修正が必要かどうかは操作者が判断する。ロボットの作業工程を目視して修正の必要性を判断してもよいし、教示ペンダント１０３の力制御状態表示部１１３などに表示されるロボット１０１の状態量から判断してもよい。ロボットのテスト運転中に再教示する方法は、前述した予備教示を行ったときと同様の方法で、教示ペンダント１０３を用いて行うことができる。すなわち、教示ペンダント１０３の力制御状態表示部１１３の表示を確認しながら、操作者が教示ペンダント１０３の操作ボタン群１０３ａを操作することにより、テスト運転中のロボットの動作に加算して重畳的にロボットを動かすことができるように、コントローラ１０２でプログラムされる。
【００５７】
テスト運転の実行中において、嵌合作業時における詰まりが発生した場合に詰まりを解消する場合などに、これらの作業を支援する機能があると望ましい。そこで、教示ペンダント１０３で、ロボットの複数の動作を１つのまとまった動作として教示できるようにすることが望ましい。ここでいう１つのまとまった動作とは、ロボットの運動速度または運動方向が変化する動作をいう。従って、１つのまとまった動作ではない動作は、ロボットの等速直線運動または等角速度運動をいう。上述のシステムにおいては、等速直線運動の教示は、教示ペンダント１０３の手動操作手段１１２のボタン「X+」「X-」「Y+」「Y-」「Z+」「Z-」により行うことができ、等角速度運動の教示は、教示ペンダント１０３の手動操作手段１１２のボタン「Rx+」「Rx-」「Ry+」「Ry-」「Rz+」「Rz-」により行うことができる。一方、１つのまとまった動作の教示の一例として、たとえば、予め教示ペンダント１０３のボタン等にロボットの振動動作を割り当てておき、振動を１つの単位の動作として教示できるようにすることができるようにプログラムすることができる。具体的な制御としては、テスト運転中の位置指令に正弦波状の力指令を追加することでロボットの振動動作を実現させることができる。詰まりの解消には振動の周波数や力の大きさが関係する場合が多いため、正弦波の振幅や周波数を変更できるようにすることが望ましい。上述のシステムにおいては、教示ペンダント１０３で、力制御設定における操作モードで「振動力」を選択することにより１つのまとまった動作として振動動作を教示することができる。あるいは、嵌合作業などにおいて、嵌合部品を被嵌合部品に挿入するときに、挿入角度が合わずに挿入できないときなどに、複数方向ある傾きのうちの一つの方向に正弦波状の繰り返し動作を与える教示を行えるようにしてもよい。もちろん、他のシステムにおいて、１つのまとまった動作として他の動作を設定して教示できるようにしてもよく、本発明は以上の例に限定されるものではない。
【００５８】
このようにロボットのボタン操作に対応して一つのまとまった動きを教示することで、挿入時に発生するつまりの解消やロボットの誘導を容易にすることができ、スムーズな作業遂行の継続ができる。
【００５９】
ステップＳ３０３においてテスト運転実行中に操作者により教示ペンダントを介して与えられた教示は、予備教示データとともにコントローラ１０２内で記憶される。たとえば、ステップＳ３０３で追加された動作によりロボット作業の遂行が正しく進んだときの教示の補正データを、元の予備教示を記憶しているメモリ領域とは別のメモリ領域に記憶させる。ハードウェアとしてのメモリ媒体自体は同一でもよい。
【００６０】
ステップＳ３０４において、予備教示に基づく動作プログラムの動作が完了する。なお、ステップＳ３０３で教示を与えてもロボットの作業を成功に導くことができなかったら、作業を中断し、再度ステップＳ３０１またはＳ３０２からやり直すようにしてもよい。
【００６１】
ボタン操作で調整しながら動作の最終ステップまで到達したら、ステップ３０５において、ステップＳ３０３における操作者の再教示に基づいて予備教示データを修正する。スムーズな再生運転のためには、修正に伴うデータは時間経過に伴う位置と力の遍歴、位置の変化に伴う位置と力の遍歴のようなある程度の連続性をもったデータであることが望ましい。このように、本実施形態においては、ステップＳ３０３で修正された教示データに基づいてロボット１０１の動作プログラムを作成することができる。修正された教示データからロボットの動作プログラムの作成については予備教示データからロボットの動作プログラムを作成するところで既に説明した通りに実行してもよい。もちろん、他の方法で教示データからロボットの動作プログラムを作成してもよいし、動作プログラムの形式は任意である。
【００６２】
このように、本実施形態においては、ロボットのテスト運転時に操作者の意図通りにロボットが動作しない場合でも、ロボット動作中に操作者が介入して作業が成功するよう動きを微修正することができる。従って、実際にロボットを稼動させる場合にも成功の確率が高い動作プログラムを生成することができる。また、全く元プログラムがない状態からロボットの動作プログラムを生成するわけではないので、ボタン操作だけでロボットの作業を成功に導くことが容易である。
【００６３】
ロボットの動作エラー判定
本発明の一側面によれば、ロボットの再生動作時にロボットが教示通りに動作したかどうかを判定する機能が提供される。かかる機能は、コントローラ１０２および教示ペンダント１０３等により実現される。一実施形態において、コントローラ１０２および教示ペンダント１０３は、以下に説明する方法を実現するようにプログラムされる。
【００６４】
なお、以下の説明において、予備教示を修正した再教示に基づいてロボットを動作させる場合を想定して本発明の一実施形態による判定手法を説明する。しかし、本発明の判定機能は、再教示に基づいてロボットを動作させる場合にのみ適用できるものではなく、再教示を行わない場合にも適用できる。
【００６５】
図１２のステップＳ３０６において、再教示により作成した動作プログラムに基づいてロボットを再生動作させる。
ステップＳ３０７において、現在のロボットの作業工程が、動作プログラムの最終ステップであるかどうかを判断する。最終ステップでない場合は、ステップＳ３０８において現在の作業工程が正しく行われているかどうかを判断する。ステップＳ３０８の判断は以下のように行われる。
【００６６】
まず、ステップＳ３０３で再教示したときの（再教示を行わない場合は予備教示時の）ロボットの状態量（位置情報および力情報など）はコントローラ１０２に記憶されている。一例として、図１３に、再教示時に取得されたロボットの先端位置と再教示時に取得されたロボットのトルクを実線で示す。ここでは、再教示時に連続データとしてこれらのデータが取得されることを想定している。なお、ここでいう「連続」とは数学的に厳密に連続であることを意味するのではなく、本発明の判定機能に必要な程度のサンプリング周波数で取得されたデータであることを意味している。たとえば、ロボットの動作生成時に各関節軸の動作指令を生成する数ｍｓ程度のサンプリング周波数とすることができる。あるいは、ロボットの動作速度に応じてサンプリング周波数を変更してもよい。たとえば、ロボットの動作速度が大きいときにはサンプリング周波数を大きくし、ロボットの動作速度が小さいときにはサンプリング周波数を小さくすることができる。あるいは、一定のサンプリング周波数でサンプリングした後に、ロボットの動作速度に応じてデータを間引き処理をしてもよい。このようにすれば十分な精度を保ったまま過剰なメモリ消費を避けることができる。
【００６７】
ロボットの再生動作は再教示データに基づいて行われるので、ロボットの再生動作中は、位置指令値（すなわち再教示時に取得されたロボットの先端位置）とトルク指令値（すなわち再教示時に取得されたロボットのトルク）、およびエンコーダ等からの位置情報と力センサからの力検出値が得られる。そこで、位置と力とに関する指令値と実測値とを比較することで、ロボットが適切に動作しているかどうかを判断する。図１３に、一例としてロボットから取得された位置情報とトルク情報を破線で示す。理想的な状態であれば、教示時のデータ（すなわち指令値）と再生時のデータは一致するはずである。しかし、通常、これらの値は異なった値となる。その原因は主にワークの個体差やワークがセッティングされる位置が作業ごとに異なることなどである。
【００６８】
ロボットでの作業が適切に行われているかどうかは、ある時刻の指令値と実測値の乖離を評価することで判定できる。たとえば以下の評価関数を用いることができる。
0005545534.tif 000002
【００６９】
ここで、H1:評価値、Fref:力指令値、F:力実測値、Xref:位置指令値、X:位置実測値、k1、k2：重み付け係数、である。重み付け係数は、作業の性質によって変更することができる。たとえば、力の制御が重要となる作業工程においては、k1を相対的に大きくし、位置の制御が重要となる作業工程においては、k2を相対的に大きくするようにすればよい。k1およびk2のいずれか一方がゼロであってもよい。なお、評価基準は一般的にロボット先端の６自由度に関して評価するので、各指令値、各実測値に関して座標系を一致させる演算は別途行われるものとする。
【００７０】
評価値の演算の後、評価値H1が基準値以上になった場合はロボットの動きや作用力が指令値から大きくずれたものとして、ロボットの非常停止や周辺機器への信号を発する（Ｓ３１２）。また、図１４に示すように、教示ペンダント１０３の通知手段１１８によって操作者へ異常であることを通知してもよい（Ｓ３１２）。ロボットの作業が正しく行われていないときは、図１２のフローチャートのステップＳ３０１またはＳ３０２からやり直してもよい。
【００７１】
このように、ロボットの再生動作時における作業遂行の状態量を教示時に記憶した状態量と逐次比較することにより、作業が正しく行われているかどうかの判定がロボットの再生動作中に随時可能であり、作業の途中においてもロボットや周辺機器の作業を変更あるいは中断させることでロボットやワークの破損等の致命的な異常状態を回避することができる。
【００７２】
上述の式（１）を用いた評価は、ロボットの再生動作中の任意の時間で行うことができる。たとえば、一定の時間間隔で式（１）を用いた評価を行うことで、定期的にロボットの動作が正しく行われているかを判定できる。あるいは、一定の時間間隔ではなく、ロボットが一定の距離だけ動作した時、つまりロボットの一定の動作距離間隔で式（１）を用いた評価を行ってもよい。あるいは、ロボットの動作速度に応じて評価を行う時間間隔を変更してもよい。
【００７３】
上述のステップＳ３０７からＳ３０９による判定は、ロボットの作業途中における異状の有無を判定するものであるが、ロボットの作業工程全体を通して作業が正しく基準内で終了したかどうかの判定を以下のように行うことができる。たとえば次式（２）で表される作業開始から終了までの指令と実測値が、基準値内に収まっているかどうかを判断基準とすることができる。
0005545534.tif 000003
【００７４】
ここで、H2：評価値、k3,k4：重み付け係数、Σ：部品単位での評価値の総和、である。
ここでも判定で異常が検出された場合は、これ以降の工程への進行を止める必要があるため、ロボットの非常停止や周辺機器への信号を発する（Ｓ３１２）。また、図１４に示すように、教示ペンダント１０３の通知手段１１８によって操作者へ異常であることを通知してもよい。ロボットの作業が正しく行われていないときは、図１２のフローチャートのステップＳ３０１またはＳ３０２からやり直してもよい。
【００７５】
このように、試行錯誤により獲得した教示時の成功事例の状態量の推移と再生動作時の状態量全体の推移を比較することによって、再生動作時のロボット作業における成功失敗の評価が可能なため、操作者は特別に意識することなく確実な作業遂行の成否判定が自動できる枠組みを提供できる。
【００７６】
以上のように、本願発明を実施形態に沿って説明したが、本発明は上述の実施形態に限定されるものではない。また、上述の実施形態の様々な特徴は、互いに矛盾しないかぎり分離または組み合わせることが可能である。たとえば、上述の実施形態では、ロボットの動作エラー判定機能を、本発明により修正された教示データに基づいてロボットを動作させる場合について説明したが、ロボットの動作エラー判定機能は、本発明により修正された教示データに基づいてロボットを動作させる場合にのみ適用できるものではない。たとえば、修正せずに、予備教示データに基づいてロボットを動作させる場合にでも、ロボットの動作エラー判定機能を実行することができる。そのような構成は以上の本明細書の説明から当業者に自明であろう。
【符号の説明】
【００７７】
１０１  ロボット
１０２  コントローラ
１０３  教示ペンダント
１０３ａ  操作ボタン群
１０３ｂ  表示画面
１０４  エンドエフェクタ
１０５  力センサ
１０６  力制御手段
１０６ａ  位置制御系
１０６ｂ  インピーダンス制御演算部
１０６ｃ  インピーダンスモデル
１０６ｄ  速度分解演算部
１０７  アクチュエータ駆動アンプ部
１０８  動作プログラム記憶部
１０９  動作プログラム実行手段
１１０ａ  嵌合部品
１１０ｂ  被嵌合部品
１１１  力制御設定手段
１１２  力制御手動操作手段
１１３  力制御状態表示手段
１１４  作業状態保存手段
１１５  教示データ保存部
１１６  教示データ変換手段
１１７  ロボットの周辺装置
１１８  作業状態確認エリア
【図１】
0005545534.tif 000004
【図２】
0005545534.tif 000005
【図３】
0005545534.tif 000006
【図４】
0005545534.tif 000007
【図５】
0005545534.tif 000008
【図６】
0005545534.tif 000009
【図７】
0005545534.tif 000010
【図８】
0005545534.tif 000011
【図９】
0005545534.tif 000012
【図１０】
0005545534.tif 000013
【図１１】
0005545534.tif 000014
【図１２】
0005545534.tif 000015
【図１３】
0005545534.tif 000016
【図１４】
0005545534.tif 000017
【図１５】
0005545534.tif 000018
【図１６】
0005545534.tif 000019
【図１７】
0005545534.tif 000020
【図１８】
0005545534.tif 000021