(57)【要約】【課題】教示者がロボットに直接教示を行う際に、ロボットアームが意図しない動きをするのを抑制できるとともに、ロボットアームの位置と姿勢を広い範囲で教示者が容易に操作でき、しかも構成が簡易な制御装置が求められていた。【解決手段】ロボットアームの位置が外から印加された操作力により予め設定された基準位置から第一の範囲以内にある位置に変化したら、基準位置に向けてロボットアームを移動させる方向に作用し、基準位置からの変化の量が大きいほど大きくなる力制御信号を生成する。基準位置から第一の範囲を超えた位置に変化したら、基準位置からの変化の量が第二の範囲までは変化の量が大きいほど小さくなり、第二の範囲を越えたら一定値から所定の大きさ以上は変化しない力制御信号を生成する。【選択図】図４
2019030931.tif 000002
【特許請求の範囲】
【請求項１】
ロボットアームの位置を検出する位置検出部と、
前記ロボットアームの速度を検出する速度検出部と、
前記ロボットアームの駆動部を制御する駆動制御信号を生成する制御部と、を有し、
前記制御部は、
前記ロボットアームが初期位置にあるときの前記位置検出部の検出結果を基準位置情報として記憶し、
前記基準位置情報を記憶した後に前記位置検出部が検出する位置を前記基準位置情報と比較し、
前記基準位置から第一の範囲以内にある位置への位置変化を検出したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が大きいほど大きくなる力制御信号を生成し、前記力制御信号を用いて前記駆動制御信号を生成し、
前記基準位置から前記第一の範囲を超えた位置への位置変化を検出したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が第二の範囲までは位置変化が大きくなるほど小さくなるが、前記第二の範囲を越えたら位置変化の大きさにかかわらず一定値から所定の大きさ以上は変化しない力制御信号を生成し、前記力制御信号を用いて前記駆動制御信号を生成するとともに、
前記基準位置から前記第一の範囲を超えた位置への位置変化を検出し、かつ前記速度検出部がロボットアームの速度の方向の反転を検出したら、反転を検出したときの位置と反転を検出したときの前記力制御信号の値に基づいて新たな基準位置を決定し、前記基準位置情報を更新して記憶する、
ことを特徴とするロボットの制御装置。
【請求項２】
前記制御部は、前記ロボットアームに固定して設定された基準座標系の座標軸ごとに、前記力制御信号を生成する、
ことを特徴とする請求項１に記載のロボットの制御装置。
【請求項３】
前記ロボットアームは先端に作業ツールを装着しており、前記制御部は前記作業ツールに固定して設定されたツール座標系の座標軸ごとに、前記力制御信号を生成する、
ことを特徴とする請求項１に記載のロボットの制御装置。
【請求項４】
前記第一の範囲以内において生成する力制御信号の位置に対する変化の傾きの絶対値は、前記第一の範囲を超えてから前記第二の範囲を越えるまでに生成する力制御信号の位置に対する変化の傾きの絶対値と比べて、大きいかまたは等しい、
ことを特徴とする請求項１乃至３のいずれか１項に記載のロボットの制御装置。
【請求項５】
前記制御部は、自重補償演算部とダンパ演算部を有し、前記自重補償演算部の出力信号と前記ダンパ演算部の出力信号と前記力制御信号とを加算した信号を用いて前記駆動制御信号を生成する、
ことを特徴とする請求項１乃至４のいずれか１項に記載のロボットの制御装置。
【請求項６】
ロボットアームとコンピュータを備えたロボットの制御方法において、
前記コンピュータは、
前記ロボットアームの位置が操作力により基準位置から第一の範囲以内にある位置に変化したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が大きいほど大きくなる力制御信号を生成し、前記力制御信号を用いて前記ロボットアームの駆動制御信号を生成する処理を実行し、
前記ロボットアームの位置が操作力により前記基準位置から前記第一の範囲を超えた位置に変化したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が第二の範囲までは位置変化が大きくなるほど小さくなるが、前記第二の範囲を越えたら位置変化の大きさにかかわらず一定値から所定の大きさ以上は変化しない力制御信号を生成し、前記力制御信号を用いて前記ロボットアームの駆動制御信号を生成する処理を実行し、
前記ロボットアームの位置が操作力により前記基準位置から前記第一の範囲を超えた位置に変化し、かつ前記ロボットアームの速度の方向が反転したら、反転したときの位置および反転したときの前記力制御信号の値に基づいて前記基準位置を更新する処理を実行する、
ことを特徴とするロボットの制御方法。
【請求項７】
前記コンピュータは、前記ロボットアームに固定して設定された基準座標系の座標軸ごとに、前記力制御信号を生成する、
ことを特徴とする請求項６に記載のロボットの制御方法。
【請求項８】
前記ロボットアームは先端に作業ツールを装着しており、前記コンピュータは前記作業ツールに固定して設定されたツール座標系の座標軸ごとに、前記力制御信号を生成する、
ことを特徴とする請求項６に記載のロボットの制御方法。
【請求項９】
前記第一の範囲以内において生成する力制御信号の位置に対する変化の傾きの絶対値は、前記第一の範囲を超えてから前記第二の範囲を越えるまでに生成する力制御信号の位置に対する変化の傾きの絶対値と比べて、大きいかまたは等しい、
ことを特徴とする請求項６乃至８のいずれか１項に記載のロボットの制御方法。
【請求項１０】
前記コンピュータは、自重補償演算を行って出力信号を生成する処理と、ダンパ演算を行って出力信号を生成する処理を実行し、前記自重補償演算の出力信号と前記ダンパ演算の出力信号と前記力制御信号とを加算した信号を用いて前記駆動制御信号を生成する、
ことを特徴とする請求項６乃至９のいずれか１項に記載のロボットの制御方法。
【請求項１１】
請求項６乃至１０のいずれか１項に記載のロボットの制御方法の処理を前記コンピュータに実行させるロボットの制御プログラム。
【請求項１２】
請求項１１に記載のロボットの制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１３】
請求項６乃至１０のいずれか１項に記載のロボットの制御方法で制御したロボットアームの位置および姿勢を、教示値として記憶する、
ことを特徴とするロボットの教示方法。
【請求項１４】
ロボットアームと、
前記ロボットアームの位置を検出する位置検出部と、
前記ロボットアームの速度を検出する速度検出部と、
駆動制御信号を生成する制御部と、
前記駆動制御信号に基づき前記ロボットアームを駆動する駆動部と、を有し、
前記制御部は、
前記ロボットアームが初期位置にあるときの前記位置検出部の検出結果を基準位置情報として記憶し、
前記基準位置情報を記憶した後に前記位置検出部が検出する位置を前記基準位置情報と比較し、
前記基準位置から第一の範囲以内にある位置への位置変化を検出したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が大きいほど大きくなる力制御信号を生成し、前記力制御信号を用いて前記駆動制御信号を生成し、
前記基準位置から前記第一の範囲を超えた位置への位置変化を検出したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が第二の範囲までは位置変化が大きくなるほど小さくなるが、前記第二の範囲を越えたら位置変化の大きさにかかわらず一定値から所定の大きさ以上は変化しない力制御信号を生成し、前記力制御信号を用いて前記駆動制御信号を生成するとともに、
前記基準位置から前記第一の範囲を超えた位置への位置変化を検出し、かつ前記速度検出部がロボットアームの速度の方向の反転を検出したら、反転を検出したときの位置情報と反転を検出したときの前記力制御信号の値に基づいて新たな基準位置を決定し、前記基準位置情報を更新して記憶する、
ことを特徴とするロボット装置。
【請求項１５】
前記制御部は、前記ロボットアームに固定して設定された基準座標系の座標軸ごとに、前記力制御信号を生成する、
ことを特徴とする請求項１４に記載のロボット装置。
【請求項１６】
前記ロボットアームは先端に作業ツールを装着しており、前記制御部は前記作業ツールに固定して設定されたツール座標系の座標軸ごとに、前記力制御信号を生成する、
ことを特徴とする請求項１４に記載のロボット装置。
【請求項１７】
前記第一の範囲以内において生成する力制御信号の位置に対する変化の傾きの絶対値は、前記第一の範囲を超えてから前記第二の範囲を越えるまでに生成する力制御信号の位置に対する変化の傾きの絶対値と比べて、大きいかまたは等しい、
ことを特徴とする請求項１４乃至１６のいずれか１項に記載のロボット装置。
【請求項１８】
前記制御部は、自重補償演算部とダンパ演算部を有し、前記自重補償演算部の出力信号と前記ダンパ演算部の出力信号と前記力制御信号とを加算した信号を用いて前記駆動制御信号を生成する、
ことを特徴とする請求項１４乃至１７のいずれか１項に記載のロボット装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの動作を制御する制御装置、制御方法に関し、特に所謂ダイレクトティーチによりロボットアームの動作を教示する装置に関する。
【背景技術】
【０００２】
従来から、ロボットに動作を教示する際には、ティーチングペンダントのようなリモコンを用いてエンドエフェクタの先端部などを所定位置へ移動させる操作を行い、目視等で位置を確認しつつ、教示位置を記憶させることが行われていた。ティーチングペンダントを用いた教示方法では、座標を数値で入力するか、微小移動（ＪＯＧ動作）の繰り返しでロボットを移動させており、作業が煩雑で操作性が高いとは言えず、教示を効率的に行うことができなかった。
【０００３】
そこで、教示作業の操作性を改善する方法のひとつとして、直接教示もしくはダイレクトティーチと呼ばれる方法が知られている。教示者が掴むなどしてロボットに外力を直接加えて誘導し、ロボットアームを所望の位置および姿勢になるよう操作する方法である。直接教示の利点は、リモコンを使った煩雑なプログラミングを介さずに教示者が直接的にロボットアームを操作できるため、教示作業が容易になることである。
【０００４】
直接教示の作業性を向上するには、ロボットアームが重力等により意図しない位置や姿勢になるのを抑制しながら、同時に、教示者による誘導操作を容易にする必要がある。ここでいう位置とは典型的にはロボットアームの先端の位置であり、姿勢とは典型的にはロボットアームの先端の向きである。重力等による意図しない動きを抑制するには、ロボットアームが基準状態（基準位置、基準姿勢）から変化したときに、元に戻らせるための復元トルクを各関節に作用させればよい。復元トルクの大きさは、基準状態からの変化量に応じて増大するよう設定するのが一般的である。
【０００５】
教示者は、基準状態にあるロボットアームに力を加えて位置や姿勢を変化させて教示作業を行うが、教示者の操作によってロボットアームの位置や姿勢が変わると、ロボットアームを基準状態に戻すための復元トルクが各関節に作用する。基準状態から離れるほど大きな復元トルクが作用するようになるため、例えば大きな距離を移動する動作を直接教示しようとすると、教示者は大きな力でロボットアームを誘導しなければならず、操作が困難になってしまう。
【０００６】
そこで、特許文献１には、ロボットアームの先端近くに直接教示専用のハンドルを装着して、ハンドルに設けられたスイッチを押下げることにより基準状態を切り替えられるようにした直接教示装置が開示されている。教示者にとって復元トルクが大き過ぎると感じられるまでロボットアームを操作した場合には、スイッチを押下げることで、その時点のロボットアームの位置と姿勢を新たな基準状態とすることができ、復元トルクが小さな状態に戻すことができる。
【０００７】
また、特許文献２には、教示者がロボットアームに加える力を、ロボットアームに装着した力センサもしくはトルクセンサを用いて検知して、検知した力ベクトルの方向について制御による剛性を下げるような方法が開示されている。なお、ここでいう剛性とは、ロボットアームの位置の変化量に比例して復元力を作用させる際の、位置の変化量と復元力の間の比例係数である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−７８３０８号公報
【特許文献２】米国特許出願公開第２０１５／００８１０９８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１に記載のロボットの直接教示装置においては、基準位置を変更するためのスイッチを備えた専用ハンドルが必要であり、構造が複雑になる。また、教示作業を行うためには、予め専用ハンドルをロボットに装着する作業工程が必要となり、作業が煩雑になってしまう。
【００１０】
また、特許文献２には、教示者の操作力を検知して、検知した方向に制御の剛性を下げる方法が開示されているが、この方法では、操作力を検知するためのセンサを設ける必要があり、ロボットの構造が複雑になる。さらに、センサの検出信号から教示者の操作力に対応する成分を抽出しなくてはならないが、ロボットアームにはアーム先端と作業ワークとの接触力やモータの発生トルクなど、様々な成分の力が作用する。この中から目的とする操作力のみを抽出するためには、複雑で高度なアルゴリズムが必要であると推認されるが、特許文献２にはこのためのアルゴリズムについては具体的な開示はされていない。
【００１１】
以上のように、直接教示を行う際にロボットアームが意図しない動きをするのを抑制でき、ロボットアームの位置と姿勢を広い範囲にわたり教示者が容易に操作でき、しかも構成が簡易な制御装置は、達成されていなかった。
【課題を解決するための手段】
【００１２】
本発明は、ロボットアームの位置を検出する位置検出部と、前記ロボットアームの速度を検出する速度検出部と、前記ロボットアームの駆動部を制御する駆動制御信号を生成する制御部と、を有し、前記制御部は、前記ロボットアームが初期位置にあるときの前記位置検出部の検出結果を基準位置情報として記憶し、前記基準位置情報を記憶した後に前記位置検出部が検出する位置を前記基準位置情報と比較し、前記基準位置から第一の範囲以内にある位置への位置変化を検出したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が大きいほど大きくなる力制御信号を生成し、前記力制御信号を用いて前記駆動制御信号を生成し、前記基準位置から前記第一の範囲を超えた位置への位置変化を検出したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が第二の範囲までは位置変化が大きくなるほど小さくなるが、前記第二の範囲を越えたら位置変化の大きさにかかわらず一定値から所定の大きさ以上は変化しない力制御信号を生成し、前記力制御信号を用いて前記駆動制御信号を生成するとともに、前記基準位置から前記第一の範囲を超えた位置への位置変化を検出し、かつ前記速度検出部がロボットアームの速度の方向の反転を検出したら、反転を検出したときの位置と反転を検出したときの前記力制御信号の値に基づいて新たな基準位置を決定し、前記基準位置情報を更新して記憶する、ことを特徴とするロボットの制御装置である。
【００１３】
また、本発明は、ロボットアームとコンピュータを備えたロボットの制御方法において、前記コンピュータは、前記ロボットアームの位置が操作力により基準位置から第一の範囲以内にある位置に変化したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が大きいほど大きくなる力制御信号を生成し、前記力制御信号を用いて前記ロボットアームの駆動制御信号を生成する処理を実行し、前記ロボットアームの位置が操作力により前記基準位置から前記第一の範囲を超えた位置に変化したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が第二の範囲までは位置変化が大きくなるほど小さくなるが、前記第二の範囲を越えたら位置変化の大きさにかかわらず一定値から所定の大きさ以上は変化しない力制御信号を生成し、前記力制御信号を用いて前記ロボットアームの駆動制御信号を生成する処理を実行し、前記ロボットアームの位置が操作力により前記基準位置から前記第一の範囲を超えた位置に変化し、かつ前記ロボットアームの速度の方向が反転したら、反転したときの位置および反転したときの前記力制御信号の値に基づいて前記基準位置を更新する処理を実行する、ことを特徴とするロボットの制御方法である。
【００１４】
また、本発明は、ロボットアームと、前記ロボットアームの位置を検出する位置検出部と、前記ロボットアームの速度を検出する速度検出部と、駆動制御信号を生成する制御部と、前記駆動制御信号に基づき前記ロボットアームを駆動する駆動部と、を有し、前記制御部は、前記ロボットアームが初期位置にあるときの前記位置検出部の検出結果を基準位置情報として記憶し、前記基準位置情報を記憶した後に前記位置検出部が検出する位置を前記基準位置情報と比較し、前記基準位置から第一の範囲以内にある位置への位置変化を検出したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が大きいほど大きくなる力制御信号を生成し、前記力制御信号を用いて前記駆動制御信号を生成し、前記基準位置から前記第一の範囲を超えた位置への位置変化を検出したら、前記基準位置に向けて前記ロボットアームを移動させる方向に作用し、前記基準位置からの位置変化が第二の範囲までは位置変化が大きくなるほど小さくなるが、前記第二の範囲を越えたら位置変化の大きさにかかわらず一定値から所定の大きさ以上は変化しない力制御信号を生成し、前記力制御信号を用いて前記駆動制御信号を生成するとともに、前記基準位置から前記第一の範囲を超えた位置への位置変化を検出し、かつ前記速度検出部がロボットアームの速度の方向の反転を検出したら、反転を検出したときの位置情報と反転を検出したときの前記力制御信号の値に基づいて新たな基準位置を決定し、前記基準位置情報を更新して記憶する、ことを特徴とするロボット装置である。
【発明の効果】
【００１５】
本発明は、直接教示を行う際にロボットアームが意図しない動きをするのを抑制でき、ロボットアームの位置と姿勢を広い範囲にわたり教示者が容易に操作でき、しかも構成が簡易な制御装置を提供できる。
【図面の簡単な説明】
【００１６】
【図１】実施例のロボットの制御装置の外形を示す斜視図。
【図２】実施例のロボットアームの関節部を示す部分断面図。
【図３】実施例のロボットに設定された座標系を示す斜視図。
【図４】実施例の制御装置の機能ブロック図。
【図５】実施例の制御装置の作用を示す模式図。
【図６】実施例の直接教示の動作のフローチャート。
【図７】（ａ）第１演算部の動作を説明するための図。（ｂ）第２演算部の動作を説明するための図。
【図８】相対位置検出部の動作を説明するための図。
【図９】（ａ）速度ｖｓ時間のグラフ。（ｂ）位置ｖｓ時間のグラフ。（ｃ）力制御信号ｖｓ時間のグラフ。
【図１０】第２演算部で演算される関数の傾きを示すグラフ。
【図１１】パラメータ（ｘ、ｙ、ｚ、α、β、γ）と座標系の設定を説明するための図。
【発明を実施するための形態】
【００１７】
本発明の実施形態であるロボットの制御装置は、ロボットアームの位置情報を検出する位置検出部と、ロボットアームの速度情報を検出する速度検出部と、ロボットアームの駆動部を制御する駆動制御信号を生成する制御部を備える。
制御部は、教示者がロボットアームを掴む等して直接教示を開始した初期におけるロボットアームの位置と姿勢を、初期の基準状態として記憶する。そして、ダイレクトティーチが開始されると、制御部は位置検出部からの位置情報と速度検出部からの速度情報に応じて力制御信号を演算して駆動部に伝達し、ロボットアームを駆動するためのアクチュエータの力もしくはトルクを制御する。アクチュエータが直動系の場合は力を制御し、回転系の場合はトルクを制御する。教示者がロボットアームに力を加えて基準状態から移動させた時には、制御部は位置と姿勢を軌道の教示値として記憶してゆく。
【００１８】
ロボットアームの動き出し、すなわち基準状態から第一の範囲内での動きに対しては、制御部内の第１演算部が位置情報の増減に応じて大きさが増減するような力制御信号を生成し、これを用いて駆動部への駆動制御信号を生成する。力制御信号を生成する演算は、典型的には単調増加関数で実行される。この力制御信号を用いて生成した駆動制御信号を駆動部に伝達することにより、位置情報の若干の変動に対してロボットアームを基準状態に戻す方向の力が出力されるような制御がなされる。この作用によって、ロボットアームが教示者にとって意図しない動きをしてしまうようなことが抑制される。例えば、後述する自重補償演算部の演算精度が十分ではなく、重力の影響を完全に補償できない場合であっても、教示者にとって意図しない動きが発生することを抑制できる。
第１演算部は、ロボットアームを基準状態に留め置くような静止摩擦力と類似の力を駆動部に出力させる作用を奏する。
【００１９】
制御部は、ロボットアームが基準状態から第一の範囲を超えた位置まで移動したことを位置情報に基づいて検知すると、制御部内の切り替え部を作用させて力制御信号の演算を第１演算部から第２演算部に切り替える。すなわち、第一の範囲を越えてロボットアームが移動した場合には、教示者が意図的にロボットアームを操作していると推認して、力の制御を切り替える。したがって、第一の範囲の大きさは、ロボットアームの移動が教示者の意図的な操作か否かを判別するのに適した大きさに設定する。
【００２０】
第２演算部は、基準位置からの位置変化の量が第二の範囲までは、位置変化の量が大きくなるほど小さくなるが、第二の範囲を越えたら略一定値となるような力制御信号を生成する。ここで、略一定値とは、一定値から所定幅以上変化しないことを意味する。この演算は、典型的には、第１演算部の最大出力（最終出力）と等しい値を始点として、位置情報の大きさが増加するにつれて始点よりも小さな一定値に向けて遷移してゆくような関数を用いて実行される。この力制御信号を用いて生成した駆動制御信号を駆動部に伝達することにより、ロボットアームを基準状態に戻す方向の力が出力される制御がなされる。
【００２１】
この一定値は、ロボットアームの移動中に教示者が一定の小さな負荷として感じる動摩擦力と類似の力を駆動部に出力させる作用を奏する。この作用によって、教示者は基準状態から大きく変化した状態にロボットアームを操作する時であっても、一定の小さな負荷を感じながらロボットアームを移動させることが出来る。すなわち、ロボットアームを基準状態から大きく移動させたときに、教示者が感じる負荷が増大して操作の継続が困難になるような不都合を回避することができる。
【００２２】
切り替え部は、静止摩擦に類似した力から動摩擦に類似した力への切り替えを行う。尚、第１演算部の信号から第２演算部の信号に切り替わった時に力制御信号が不連続になると、第一の範囲の境界付近で教示者が感じる力が不連続になり、スムーズな操作に支障をきたす恐れがある。そこで、第一の範囲の境界を挟んで、第１演算部が出力する信号と第２演算部が出力する信号の大きさが等しくなるようにする。そして、教示者が静止摩擦から動摩擦への切り替えが急激すぎて不自然に感じないように、第二の範囲の大きさを適宜設定する。
【００２３】
尚、第１演算部、第２演算部、切り替え部という用語を用いて説明したのは、第一の範囲の内外で異なるアルゴリズムを用いて力制御信号を演算することを説明するための便宜であって、各部を別個の電気回路で構成しなければならないという意味ではない。もちろん、別個の電気回路で各部の機能を実現してもよいが、例えば第一の範囲の内外で異なる演算を処理するような制御プログラムを準備してコンピュータに記憶させ、コンピュータの処理によってこれらの機能を実現してもよい。制御プログラムは、コンピュータ読み取り可能な記録媒体や、ネットワークを介してコンピュータに提供することができる。
【００２４】
教示者が直接教示を遂行する中では、ロボットアームの操作方向を反転させる場合があるが、本実施形態では第一の範囲を越えた領域で操作方向が反転した時には、基準状態をリセットする。
すなわち、制御部は、ロボットアームの位置が基準状態から第一の範囲を超えた位置に変化し、かつ速度検出部がロボットアームの速度方向の反転を検出したら、従前記憶していた基準状態に代えて新たな基準状態を記憶する。尚、基準状態の更新については、後に図８を参照して詳述する。そして、制御部は、リセットされた基準状態（位置、姿勢）に基づき、上述の制御を行う。リセット時には、ロボットアームはリセットされた基準状態から第一の範囲内に存することになるが、基準状態のリセットと同期して力制御信号の演算は第２演算部から第１演算部に戻るよう切り替えられる。したがって、自重補償演算部の演算精度が十分ではなく、重力の影響を完全に補償できない場合であっても、リセット後にロボットアームが教示者にとって意図しない動きをしてしまうようなことは抑制される。速度の方向が反転した際には、移動中の動摩擦に類似した力から静止摩擦に類似した力への切り替えを行う。
【００２５】
本実施形態のロボットの制御装置では、上述した力の制御を、ロボットアームに固定された基準座標系に対応して行う。基準座標系は、典型的には、ロボットアームのベースに固定されたＸＹＺ座標系である。ＸＹＺ座標系が表現する座標空間は、並進の３成分と回転の３成分を合わせた６次元空間であるが、制御部がこれらの成分ごとに上述の力の制御を行うことで、並進方向も回転方向も、ロボットアームが意図しない方向に動くようなことは抑制される。教示者がロボットアームを移動させる方向には、動摩擦を模擬した一定の低負荷が作用するので、教示者はロボットアームを容易に大きく移動させることが出来る。
【００２６】
さらに、第１演算部が出力する信号の最大値については、並進方向に比べて回転方向を大きく設定すれば、ロボットアームの姿勢もしくはロボットアームの先端の向きをほぼ一定に保持したまま、ロボットアームの位置を教示することが容易となる。例えば１つの作業テーブル内でワークを移動させるように、ロボットアームの先端の向きをテーブルに対して垂直で一定に保持させながら教示を行いたい場合、直接教示をより容易に実行することが可能となる。
【００２７】
また、本実施形態のロボットの制御装置は、上述した力の制御を、ロボットアームの先端に装着された作業ツールに固定されたツール座標系の座標軸に応じて行うこともできる。作業ツールとは、典型的には、ワークを把持するためのロボットハンドや、ビスを締結するためのビス締め機であるが、これらに限られない。ロボットハンドの把持方向やビス締め機の軸方向などのように、それぞれのツールには作業を規定するために適切な座標系が存在する。制御部の第１演算部と第２演算部の関数を設定する際、各ツールのツール座標系の座標軸に応じた関数設定を行うことで、作業内容に応じた適切な力制御が可能となる。
【００２８】
また、本実施形態のロボットの制御装置は、第１演算部における入力（位置変化）に対する出力の傾きの絶対値が、第２演算部における入力（位置変化）に対する出力の傾きの絶対値よりも大きいか同等になるよう関数を設定する。上述のように、第２演算部では、ロボットアームの移動中に第１演算部の最終出力から概略一定の出力に遷移するような関数を実行する。第１演算部には静止摩擦に類似した作用があり、第２演算部には動摩擦に類似した作用がある。
【００２９】
静止摩擦力に比べて小さな動摩擦力に遷移する際に遷移カーブの傾きが大きいと、ロボットアームを操作している最中に突然負荷が小さくなったように教示者にとっては感じられる。教示者が、ロボッアームを比較的短い距離で移動させたいときに、操作負荷が急激に低減したのでは、所望の位置でロボットアームを止められずに行き過ぎてしまうおそれがある。教示者が操作する際に感覚として感じるのは、負荷の大きさとその変化率である。動き出しにおける負荷増大率の絶対値と、低負荷に遷移する際の負荷減少率の絶対値を比較して、負荷減少率が同等もしくは小さければ、教示者にとって操作負荷が突然小さくなるように感じることは抑制できる。すなわち、教示者が比較的短い距離でロボットアームを操作する際に、所望の位置でロボットアームを止められずに行き過ぎてしまうようなことを抑制できる。
【００３０】
本実施形態では、教示者がロボットアームに力を加えて直接教示を行いながら、上述した力制御を行い、教示した軌道を制御部が記憶する。本実施形態の装置によれば、教示者は摩擦力に類似した力を感じながら直接教示を行うことができるため、違和感のない自然な感覚で過剰な負荷なくロボットアームを操作することが可能であり、教示する軌道の精度を高めることができる。また、自重補償演算部の演算精度が十分ではなく、重力の影響を完全に補償できないような場合であっても、重力の影響で教示者にとって意図しない動きが発生することを抑制できる。本実施形態の制御装置によれば、教示者の操作力を検知するための高価な力センサや、特殊なスイッチを備えたハンドルを設けなくても、簡易な構成で上述の効果を達成できる。
【実施例】
【００３１】
以下、図面を参照して、本発明の実施例について説明する。
図１は、本発明の実施例に係るロボット２００とロボットの制御装置３００を示す斜視図である。ロボット２００は、多軸の垂直多関節型のロボットアーム２０１と、ロボットアーム２０１の先端部に取り付けられたエンドエフェクタとしてのロボットハンド２０２とを有している。ロボットアーム２０１は、作業台に固定されるベース部（基端リンク）２１０と、変位や力を伝達する複数のリンク２１１〜２１６とが関節Ｊ１〜Ｊ６で屈曲（旋回）又は回転可能に連結されている。
【００３２】
本実施例では、ロボットアーム２０１は、屈曲する３軸と回転する３軸の６軸の関節Ｊ１〜Ｊ６で構成されている。ここで、屈曲とは２つのリンクの結合部のある点で折れ曲がること、回転とは２つのリンクの長手方向の回転軸でリンクが相対的に回ることをいい、それぞれを屈曲部、回転部と呼ぶ。ロボットアーム２０１は、６つの関節Ｊ１〜Ｊ６から構成され、関節Ｊ１、Ｊ４、Ｊ６が回転部、関節Ｊ２、Ｊ３、Ｊ５が屈曲部である。
【００３３】
ロボットハンド２０２は、複数のフィンガー２２０を有し、ロボットアーム２０１の先端部、即ちリンク（先端リンク）２１６の先端部に取り付けられている。複数のフィンガー２２０は、ハンドベースに対して中心軸を中心とする半径方向内側及び外側に移動するようにハンドベースに支持されている。複数のフィンガー２２０を閉動作（半径方向内側に動作）させることにより、ワークＷ１を把持することができ、複数のフィンガー２２０を開動作（半径方向外側に動作）させることにより、ワークＷ１を把持解放することができる。
【００３４】
ロボットアーム２０１は、各関節Ｊ１〜Ｊ６をそれぞれ駆動するための６つの関節駆動装置２３０を有している。なお、図１では、関節駆動装置２３０は、図示の便宜上、関節Ｊ２にのみ示している。他の関節Ｊ１、Ｊ３〜Ｊ６については図示を省略しているが、他の関節Ｊ１、Ｊ３〜Ｊ６にも、同様の構成の関節駆動装置２３０が配置されている。
【００３５】
図２は、ロボットアーム２０１の関節Ｊ２を示す部分断面図である。以下、関節Ｊ２を例に挙げて説明するが、他の関節Ｊ１、Ｊ３〜Ｊ６については同様の構成であるため、説明を省略する。
関節駆動装置２３０は、電動式回転モータであるモータ２３１と、モータ２３１の回転軸２３２の回転を減速する減速機２３３と、を有している。関節Ｊ２は、モータ２３１の回転軸２３２（減速機２３３の入力軸）の回転角度を検出するモータ角度検出部であるエンコーダ２３５を有する。モータ２３１は、サーボモータであり、例えばブラシレスＤＣサーボモータやＡＣサーボモータである。エンコーダ２３５は、アブソリュート型のロータリーエンコーダが望ましく、１回転の絶対角度エンコーダ、絶対角度エンコーダの回転総数のカウンタ、及びカウンタに電力を供給するバックアップ電池を有して構成される。ロボットアーム２０１への電源の供給がオフになっても、このバックアップ電池が有効であれば、ロボットアーム２０１への電源供給のオン／オフに関係なく、カウンタにおいて回転総数が保持される。したがって、ロボットアーム２０１の姿勢が制御可能となる。なお、エンコーダ２３５は、回転軸２３２に取り付けられているが、減速機２３３の入力軸に取り付けてもよい。
【００３６】
また、リンク２１１とリンク２１２とは、クロスローラベアリング２３７を介して回転自在に結合されている。モータ２３１は、モータカバー２３８で覆われて保護されている。モータ２３１とエンコーダ２３５との間には、不図示のブレーキユニットが設けられている。ブレーキユニットの主な機能は、電源オフ時のロボットアーム２０１の姿勢の保持である。
【００３７】
減速機２３３は、小型軽量で減速比の大きい波動歯車減速機である。減速機２３３は、モータ２３１の回転軸２３２に結合された、入力軸であるウェブジェネレータ２４１と、リンク２１２に固定された、出力軸であるサーキュラスプライン２４２と、を備えている。なお、サーキュラスプライン２４２は、リンク２１２に直結されているが、リンク２１２に一体に形成されていてもよい。また、減速機２３３は、ウェブジェネレータ２４１とサーキュラスプライン２４２との間に配置され、リンク２１１に固定されたフレクスプライン２４３を備えている。フレクスプライン２４３は、ウェブジェネレータ２４１の回転に対して減速比Ｎで減速され、サーキュラスプライン２４２に対して相対的に回転する。従って、モータ２３１の回転軸２３２の回転は、減速機２３３で１／Ｎの減速比で減速されて、フレクスプライン２４３が固定されたリンク２１１に対してサーキュラスプライン２４２が固定されたリンク２１２を相対的に回転運動させ、関節Ｊ２を屈曲させる。
【００３８】
図３は、ロボット２００に設定された座標系を示す斜視図である。ベース座標系ΣＢは基端リンク２１０に固定され、互いに直交するＸＢ軸、ＹＢ軸、ＺＢ軸を有する。ツール座標系ΣＴはロボットハンド２０２に固定され、互いに直交するＸＴ軸、ＹＴ軸、ＺＴ軸を有する。ロボット２００の動作はベース座標系ΣＢに対するツール座標系ΣＴの相対的な位置と姿勢で表される。位置を表すパラメータは（ｘ、ｙ、ｚ）の３つである。姿勢を表すパラメータは（α、β、γ）の３つである。即ちロボットの動作は６つのパラメータ（ｘ、ｙ、ｚ、α、β、γ）で表される。これに対して、既に説明したようにロボットアーム２０１は６つの関節Ｊ１〜Ｊ６を有する。関節Ｊ１〜Ｊ６の角度とパラメータ（ｘ、ｙ、ｚ、α、β、γ）は相互に変換ができる。
【００３９】
図４は、本発明の実施形態に係る制御装置３００の主要な機能ブロックを示した機能ブロック図である。尚、図中の制御装置３００が含む各機能ブロックは、各機能を達成可能な電気回路を用いてハードウエアとして構成してもよいし、各機能を達成可能なプログラムを用いてソフトウエアとして構成してもよい。
【００４０】
図４においては、ロボット２００については、ロボットアーム２０１の関節Ｊ１の駆動部のみをブロック化して図示している。図を簡潔にするため、関節Ｊ２〜Ｊ６については図示を省略しているが、関節Ｊ１と同様に制御装置３００によって制御される。関節Ｊ１には既に説明したように関節駆動装置２３０とモータ２３１およびエンコーダ２３５が備えられている。関節Ｊ２〜Ｊ６についても同様である。
【００４１】
制御装置３００は、角度演算部３０６ａ、角速度演算部３０７ａ、先端位置演算部３０９、先端速度演算部３１０、各軸パラメータの力制御部３０１ｘとダンパ演算部３０８ｘ、自重補償演算部３１１、関節トルク演算部３１２、トルク制御部３１３ａを含んでいる。このうち、力制御部３０１ｘは、相対位置検出部３０５ｘ、切り替え部３０２ｘ、第１演算部３０３ｘ、第２演算部３０４ｘを含んでいる。尚、各軸パラメータの力制御部３０１ｘとダンパ演算部３０８ｘ、自重補償演算部３１１、関節トルク演算部３１２、トルク制御部３１３ａをまとめて、制御部と呼ぶ場合がある。
【００４２】
角度演算部３０６ａは、関節Ｊ１に搭載されたエンコーダ２３５の角度検出結果を示す値に基づき、関節Ｊ１の関節角度の値を算出する。角速度演算部３０７ａは、関節Ｊ１に搭載されたエンコーダ２３５の角度検出結果を示す値に基づき、微分演算により関節Ｊ１の関節角速度の値を算出する。同様に、制御装置３００は、関節Ｊ２〜Ｊ６の関節角度を算出する角度演算部３０６ｂ、３０６ｃ、３０６ｄ、３０６ｅ、３０６ｆおよび関節角速度を算出する角速度演算部３０７ｂ、３０７ｃ、３０７ｄ、３０７ｅ、３０７ｆを備えるが、図示は省略する。
【００４３】
先端位置演算部３０９は、角度演算部３０６ａ〜３０６ｆの出力に基づいてロボットアームの位置と姿勢を表すパラメータ（ｘ、ｙ、ｚ、α、β、γ）を演算する。先端速度演算部３１０は、角速度演算部３０７ａ〜３０７ｆの出力と先端位置演算部３０９の出力に基づいてパラメータ（ｘ、ｙ、ｚ、α、β、γ）の時間微分である速度ｄ（ｘ、ｙ、ｚ、α、β、γ）／ｄｔを演算する。この時間微分を演算するために、先端位置演算部３０９の出力するパラメータ（ｘ、ｙ、ｚ、α、β、γ）が必要であることは当業者に公知である。先端速度演算部３１０は、ロボットアームの先端の速度を演算するとともに、速度の方向の反転を検出する。
【００４４】
力制御部３０１ｘは、６つのパラメータの中のｘに対応するブロックである。同様に力制御部３０１ｙ、３０１ｚ、３０１α、３０１β、３０１γは、各々パラメータ（ｙ、ｚ、α、β、γ）に対応するブロックとして設けられるが、図示は省略する。力制御部３０１ｘ〜３０１γは、ロボットハンドの基準位置からの変位に応じて、静止摩擦力に類似した力あるいは動摩擦力に類似した力の力制御信号を生成して、関節トルク演算部３１２に出力する。力制御部３０１ｘは、相対位置検出部３０５ｘ、切り替え部３０２ｘ、第１演算部３０３ｘ、第２演算部３０４ｘを含んでいる。
【００４５】
相対位置検出部３０５ｘは、基準状態を記憶するとともに、記憶した基準状態に対する現在位置の相対位置を検出し、切り替え部３０２ｘを介して相対位置情報を第１演算部または第２演算部に出力する。現在位置は、先端位置演算部３０９から相対位置検出部３０５ｘに入力される。
【００４６】
相対位置検出部３０５ｘは、直接教示モードの開始時には、その時点における先端位置演算部３０９の出力値を、基準状態の初期値として記憶する。そして、相対位置検出部３０５ｘは、所定のタイミングで、記憶している基準状態をリセットする。リセットをするタイミングは、ロボットハンドが第一の範囲を越えて移動した後に、先端速度演算部３１０が出力する速度ｄｘ／ｄｔの方向が反転した時点である。速度の方向が反転する時点とは、ロボット２００の移動が止まり、次の動き出しとして逆方向への移動が開始される時点である。この時、第２演算部から第１演算部に切り替えるが、力制御信号が不連続となることを避けるため、直前に第２演算部から出力されていた力制御信号と同一な値を第１演算部が出力するようにする。その方法については、後に図８を参照して説明する。
尚、不図示の力制御部３０１ｙ〜３０１γについても、力制御部３０１ｘと同様の動作を行う。
【００４７】
第１演算部３０３ｘは、静止摩擦力に類似した力で制御できるように、入力された相対位置情報に基づいて力制御信号を演算して出力する。第２演算部３０４ｘは、動摩擦力に類似した力で制御できるように、入力された相対位置情報に基づいて力制御信号を演算して出力する。
【００４８】
切り替え部３０２ｘは、第１演算部３０３ｘに演算を実行させるか第２演算部３０４ｘに演算を実行させるかを所定のタイミングで切り替える。切り替えるタイミングは、先端位置が第一の範囲以内から範囲外に移ったタイミングか、または基準状態をリセットしたタイミングである。尚、切り替え部３０２ｘは、図４では第１演算部３０３ｘおよび第２演算部３０４ｘの入力側と出力側の両側に設けたスイッチとして示されているが、要は関節トルク演算部に対して出力する演算部を切り替えられればよいので、出力側だけのスイッチでもよい。
【００４９】
自重補償演算部３１１は、重力の影響をキャンセルするような制御値を演算して出力する。ダンパ演算部３０８ｘは、速度ｄｘ／ｄｔに比例定数を掛ける演算を実行して出力する。図４では図示を省略したダンパ演算部３０８ｙ〜３０８γも、同様に速度ｄｙ／ｄｔ〜ｄγ／ｄｔに比例定数を掛ける演算を実行して出力する。
【００５０】
自重補償演算部３１１の出力信号と、力制御部３０１ｘ〜３０１γの出力信号と、ダンパ演算部３０８ｘ〜３０８γの出力信号は、加算されて関節トルク演算部３１２へ導かれる。関節トルク演算部３１２は、パラメータ（ｘ、ｙ、ｚ、α、β、γ）ごとの力制御信号を関節Ｊ１〜Ｊ６ごとのトルク指令に変換して、各関節のトルク制御部に出力する。
【００５１】
トルク制御部３１３ａは、関節Ｊ１のトルク指令に応じて関節Ｊ１に搭載されたモータ２３１のトルクを制御する。トルク制御のためには、モータ２３１に流れる電流が制御される。あるいは、関節駆動装置２３０にトルクセンサを搭載して、トルクセンサの検出する関節トルクがトルク指令に一致するようにモータ２３１の電流を制御してもよい。
トルク制御部３１３ｂ〜３１３ｆについては図示を省略するが、関節Ｊ２〜Ｊ６ごとのトルク指令に応じて関節Ｊ２〜Ｊ６に搭載されたモータ２３１のトルクを制御する。
【００５２】
図５は、直接教示を行う場合の制御装置３００の作用を示す模式図である。教示者がロボット２００を操作する際、制御装置３００の動作により、ロボットハンド２０２に図５に模式的に示すような負荷が作用する。
まず、ｘ、ｙ、ｚで示される３つの並進方向にはダンパ力と摩擦力が作用する。ダンパ力は並進方向の速度に比例した力である。摩擦力としては、静止摩擦力と動摩擦力とが切り替わって作用する。静止摩擦力とは、ロボット２００の動き出しにおいて教示者の操作に対抗してロボットハンド２０２を初期位置に留めるように作用する摩擦力である。動摩擦力とは、教示者が静止摩擦力を超えた力をロボット２００に加えた際に、一定な低負荷として作用する摩擦力である。
【００５３】
また、α、β、γで示される３つの回転方向には、ダンパトルクと摩擦トルクが作用する。ダンパトルクは、回転方向の角速度に比例したトルクである。摩擦トルクとしては、摩擦力と同様に、静止摩擦トルクと動摩擦トルクが切り替わって作用する。静止摩擦トルクとは、ロボット２００の動き出しにおいて教示者の操作に対抗してロボットハンド２０２を初期姿勢に留めるように作用する摩擦トルクである。動摩擦トルクとは、教示者が静止摩擦トルクを超えたトルクをロボット２００に加えた際に、一定な低負荷として作用する摩擦トルクである。
【００５４】
図６は、力制御部３０１ｘの動作を示すフローチャートである。力制御部３０１ｙ〜３０１γについても、これと同様の動作を行うが、説明は省略する。
力制御部３０１ｘは、直接教示開始の指示を受けると（Ｓ１）、その時点での位置、姿勢を基準状態として記憶する（Ｓ２）。以後、ロボットハンドの現在の状態と記憶した基準状態とを逐次比較し、基準状態から第一の範囲以内にあるかを調べる（Ｓ３）。
第一の範囲以内にある場合には、力制御部３０１ｘは第１演算部３０３ｘを用いて演算した力制御信号を関節トルク演算部３１２に出力する（Ｓ４）。第一の範囲以内にある間は、（Ｓ３）と（Ｓ４）が繰り返され、第１演算部３０３ｘによる力制御が継続される。
【００５５】
一方、教示者の操作によりロボットハンドが第一の範囲を越えて移動した場合には、力制御部３０１ｘは第２演算部３０４ｘを用いて演算した力制御信号を関節トルク演算部３１２に出力する（Ｓ５）。そして、先端速度演算部３１０が出力する速度ｄｘ／ｄｔが、方向を反転しているかを検知する（Ｓ６）。速度方向の反転すなわちリセット条件が検知されない間は、（Ｓ５）と（Ｓ６）が繰り返され、第２演算部３０４ｘによる力制御が継続される。
【００５６】
一方、リセット条件が検知された場合には、記憶していた基準状態がリセットされ、新たな基準状態が記憶される（Ｓ７）。そして、力制御部３０１ｘは、直接教示終了の指示が入力されているかを調べる（Ｓ８）。終了の指示が入力されていない場合には、（Ｓ３）に戻り、リセットされた基準状態に基づき、力制御を継続する。直接教示終了の指示が入力された場合には、直接教示動作を終了する（Ｓ９）。
【００５７】
図７（ａ）と図７（ｂ）は、それぞれ第１演算部３０３ｘと第２演算部３０４ｘの作用を説明するための図である。グラフの横軸に示される位置ｘの絶対値が第一の範囲を決める閾値Ｐ１ｘよりも小さいか同値の場合には、第１演算部３０３ｘが選択され、図７（ａ）の特性による演算が行われる。グラフの横軸に示される位置ｘの絶対値が第一の範囲を決める閾値Ｐ１ｘよりも大きい場合には、第２演算部３０４ｘが選択され、図７（ｂ）の特性による演算が行われる。言い換えれば、位置ｘの絶対値が、閾値Ｐ１ｘよりも小さいか同値な状態から閾値Ｐ１ｘよりも大きい状態に遷移したときに、第１演算部から第２演算部への切り替えが実行される。
【００５８】
図７（ａ）は、第１演算部３０３ｘで実行される演算の入出力関数を示すグラフである。入力である位置ｘの絶対値は、第一の範囲を決める閾値Ｐ１ｘよりも小さいか同値である。出力は、最大絶対値がＦ１ｘとなる単調増加関数である。Ｆ１ｘは、静止摩擦における最大静摩擦力を模擬する。また、矢印で示したように、増減を繰り返すような双方向の入力を許容する。第１演算部がかかる力制御信号を関節トルク演算部３１２に出力することにより、位置情報の若干の変動に対してはロボットアームを基準状態に戻す方向の力が印可される制御がなされる。
【００５９】
図７（ｂ）は、第２演算部３０４ｘで実行される演算の入出力関数を示すグラフである。入力である位置ｘの絶対値は、第一の範囲を決める閾値Ｐ１ｘよりも大きい。第２演算部３０４ｘの入出力関数は、Ｆ１ｘからそれよりも小さいＦ２ｘに遷移して、以降は一定値をとるような関数である。Ｆ２ｘは動摩擦力を模擬する。第二演算部が、かかる力制御信号を関節トルク演算部３１２に出力することにより、位置情報の変動に対してロボットアームを基準状態に戻す方向の力が印可される制御がなされる。入力がＰ２ｘの値となるときに出力はＦ２ｘとなる。図７（ｂ）に参考のため点線で記したのは、第１演算部の入出力関数である。第１演算部と第２演算部の入出力関数は（Ｐ１ｘ、Ｆ１ｘ）および（−Ｐ１ｘ、−Ｆ１ｘ）の点で連続的につながっている。このため、切り替えの際に出力は連続である。
【００６０】
また、矢印で示したように、第２演算部は絶対値が増加する方向の入力のみを許容する。入力である位置ｘの絶対値が減少するのは速度の方向が反転した場合であるが、速度ｄｘ／ｄｔが反転した時点で第２演算から第１演算への切り替えが実行される。第２演算から第１演算に切り替える際に出力が連続となるように、切り替える直前の出力Ｆ０ｘが記憶される。
【００６１】
図８は、リセット時の相対位置検出部３０５ｘの動作を説明するための図である。図８で示した関数は、図７（ａ）に示した第１演算部の関数の逆関数である。
相対位置検出部３０５ｘは、第一の範囲を超えた位置において先端速度演算部が速度の反転を検出した時には、その位置情報およびその時に第２演算部が出力していた力制御信号の値に基づいて新たな基準位置を決定し、基準位置情報を更新して記憶する。例えば、後述する図９（ｃ）のように、リセットを実行する際に第２演算部が出力していた力制御信号がＦ２ｘである場合には、リセット時の実際の位置から図８の逆関数により求められるＰ０ｘに相当する距離だけずれた位置を新たな基準状態として記憶する。この相対位置検出部３０５ｘの作用により、第２演算から第１演算に切り替えた際に、関節トルク演算部３１２に対して出力される力制御信号の連続性が保持される。
尚、直接教示モードの開始時には力制御信号値はゼロであるから、相対位置検出部３０５ｘは、直接教示モード開始時の位置を基準状態として記憶する。
【００６２】
以上、図７（ａ）、図７（ｂ）および図８を用いて、第１演算部３０３ｘ、第２演算部３０４ｘ、相対位置検出部３０５ｘの動作を説明した。他の軸に関する第１演算部３０３ｙ〜３０３γ、第２演算部３０４ｙ〜３０４γ、相対位置検出部３０５ｙ〜３０５γについても動作は同様であるので、説明は省略する。
【００６３】
図９（ａ）、図９（ｂ）、図９（ｃ）は、直接教示における力制御部３０１ｘの動作を説明するための図で、順に、速度ｖｓ時間のグラフ、位置ｖｓ時間のグラフ、力制御信号ｖｓ時間のグラフ、である。
直接教示の実行中に速度ｄｘ／ｄｔと位置ｘが力制御部３０１ｘに入力されたとき、出力である力制御信号は図９（ｃ）のようになる。矢印Ａ、Ｂ、Ｃは、切り替え部３０２ｘが動作する時点を示す。
【００６４】
矢印Ａは、位置ｘが第一の範囲を規定する閾値Ｐ１ｘを超えた時であり、第１演算部から第２演算部に切り替わる。この切り替え時には、力制御信号は最大静止摩擦力に相当するＦ１ｘである。その後、位置ｘがＰ２ｘまで移動するのに伴い、力制御信号は動摩擦力に類似するＦ２ｘに遷移する。矢印Ｂは、速度ｄｘ／ｄｔの方向が反転する時点であり、切り替え部３０２ｘにより第２演算部から第１演算部に切り替わり、相対位置検出部３０５ｘにより基準状態がリセットされる。矢印Ｂの時点から位置ｘがＰ０ｘだけ減少した時点で力制御信号はゼロとなり、その後、第一の範囲を規定する閾値Ｐ１ｘを超えた時点である矢印Ｃで、再び第１演算部から第２演算部に切り替わる。尚、図９（ａ）、図９（ｂ）、図９（ｃ）では力制御部３０１ｘの動作を説明したが、力制御部３０１ｙ〜３０１γについても動作は同様である。
【００６５】
図１０は、第２演算部３０４ｘで演算される関数のパラメータ設定を示すグラフである。入力がＰ１ｘからＰ２ｘまで変化する間に、出力は最大静止摩擦力に類似する出力Ｆ１ｘから動摩擦力に類似するＦ２ｘまで遷移する。同図では、Ｐ２ｘが２Ｐ１ｘに等しい場合と、Ｐ２ｘが３Ｐ１ｘに等しい場合の２通りの遷移の様子を示す。Ｐ２ｘが大きいほど、入出力の変化率は小さくなる。教示者にとっては、負荷の急峻な変化がないことが、ロボット２００を円滑かつ意図通りに操作するために好ましい。Ｐ２ｘを２Ｐ１ｘと同じかそれ以上の大きさに設定することで、教示者は直接教示をより好適に実施できる。すなわち、第一の範囲以内において生成する力制御信号の位置に対する変化の傾きの絶対値は、第一の範囲を超えてから第二の範囲以内において生成する力制御信号の位置に対する変化の傾きの絶対値と比較して、大きいかまたは等しいようにする。なお、図１０では第２演算部３０４ｘの動作を説明したが、第２演算部３０４ｙ〜３０４γについても動作は同様である。
【００６６】
図１１は、パラメータ（ｘ、ｙ、ｚ、α、β、γ）と座標系の設定を説明する図である。上記の実施例では、基端リンク２１０に固定されたベース座標系ΣＢからロボットハンドをみた場合の相対的な位置と姿勢で、パラメータ（ｘ、ｙ、ｚ、α、β、γ）を導いてきた。本発明の実施形態はこれに限定されるものではなく、ロボットハンドの先端に作業ツールを装着し、作業ツールに固定して設定されたツール座標系の各座標軸ごとに力制御信号を生成するものであってもよい。すなわち、ロボットハンド２０２に固定されたツール座標系ΣＴとパラメータ（ｘ、ｙ、ｚ、α、β、γ）を対応付けてもよい。まず初期状態におけるツール座標系ΣＴ０を空間に固定する。ツール座標系ΣＴはロボット２００の動作に応じて空間を移動する。矢印Ａは、ΣＴ０からみたΣＴの相対移動を示す。ΣＴ０からみたΣＴの相対的な位置と姿勢に対応させて、パラメータ（ｘ、ｙ、ｚ、α、β、γ）を導出してもよい。  
【００６７】
本実施例では、上述したロボットアームの力制御を行いながら教示者がロボットアームに力を加えて直接教示を行い、教示した軌道を制御装置３００が記憶する。本実施例の装置によれば、直接教示を行う際に、教示者は摩擦力に類似した力を感じることができるため違和感のない自然な感覚で過剰な負荷なくロボットアームを操作することが可能であり、教示する軌道の位置精度を高めることができる。また、例えば自重補償演算部の演算精度が十分ではなく、重力の影響を完全に補償できない場合であっても、重力の影響で教示者にとって意図しない動きが発生することを抑制できる。本実施例の制御装置によれば、教示者の操作力を検知するための高価な力センサや、特殊なスイッチを備えたハンドルを設けなくても、簡易な構成で上述の効果を達成できる。
【００６８】
本発明の実施は、上述した実施形態や実施例に限られるものではなく、本発明の技術的思想の範囲内で多くの変形が可能である。例えば、制御対象となるロボットの軸数は、実施例の例に限られない。また、ロボットハンドに固定されるツールに制限はなく、ツールの種類に応じたツール座標系を設定することができる。また、力制御部、自重補償演算部、ダンパ演算部に加えて、さらに他の力演算を行う機能ブロックを備えてもよい。
【符号の説明】
【００６９】
２００・・・ロボット／２０１・・・ロボットアーム／２０２・・・ロボットハンド／２１０・・・ベース部（基端リンク）／２１１〜２１６・・・リンク／２３５・・・エンコーダ／３００・・・制御装置／３０１ｘ・・・力制御部／３０２ｘ・・・切り替え部／３０３ｘ・・・第１演算部／３０４ｘ・・・第２演算部／３０５ｘ・・・相対位置検出部／３０６ａ・・・角度演算部／３０７ａ・・・角速度演算部／３０８ｘ・・・ダンパ演算部／３０９・・・先端位置演算部／３１０・・・先端速度演算部／３１１・・・自重補償演算部／３１２・・・関節トルク演算部／３１３ａ・・・トルク制御部
【図１】
2019030931.tif 000003
【図２】
2019030931.tif 000004
【図３】
2019030931.tif 000005
【図４】
2019030931.tif 000006
【図５】
2019030931.tif 000007
【図６】
2019030931.tif 000008
【図７】
2019030931.tif 000009
【図８】
2019030931.tif 000010
【図９】
2019030931.tif 000011
【図１０】
2019030931.tif 000012
【図１１】
2019030931.tif 000013