(57)【要約】【課題】摩擦補償を適切に行うことでロボットの実際の動作軌跡をより理論に近づける。【解決手段】ロボット制御装置３は、モータ軸側ギアと出力軸側ギアとが停止しており且つ弾性変形量がゼロである状態から出力軸を目標駆動方向に駆動させる場合に、モータ軸側ギアに印加する目標駆動方向への摩擦補償用トルクを徐々に増加させ、弾性変形量が最大弾性変形量に到達した以後では弾性変形量が最大弾性変形量に到達した時点での摩擦補償用トルクを一定値として印加する。【選択図】図１
2010240827.tif 000002
【特許請求の範囲】
【請求項１】
モータ軸側ギアと出力軸側ギアとが噛み合っている状態で前記モータ軸側ギアが回転することに連動して前記出力軸側ギアが回転することで前記出力軸が駆動可能に構成されてなる駆動軸の動作を制御するロボット制御装置において、
前記モータ軸のねじれ、前記モータ軸と前記モータ軸側ギアとの接続箇所のねじれ、前記モータ軸側ギアの変形、前記出力軸側ギアの変形及び前記出力軸側ギアと前記出力軸との接続箇所のねじれに起因する変形を弾性変形としてそれらの合算値である弾性変形量の最大値を最大弾性変形量角度として記憶する最大弾性変形量角度記憶手段と、
前記モータ軸の回転角度を検出するモータ軸側エンコーダが電源投入時に示す角度を弾性変形量ゼロ角度とし、前記モータ軸側エンコーダが検出した角度であるモータ軸側エンコーダ角度と前記弾性変形量ゼロ角度との差分が前記最大弾性変形量角度を超えているか否かを判定し、前記モータ軸側エンコーダ角度と前記弾性変形量ゼロ角度との差分が前記最大弾性変形量角度を超えていない場合に前記モータ軸側エンコーダ角度を弾性変形中の角度として判定して弾性変形量を計算し、一方、前記モータ軸側エンコーダ角度と前記弾性変形量ゼロ角度との差分が前記最大弾性変形量角度を超えている場合に前記モータ軸側エンコーダ角度を動作開始時の角度として判定する弾性変形量計算手段と、
前記弾性変形量ゼロ角度と前記モータ軸側エンコーダ角度との差分が示す正負を判定して前記モータ軸側ギアの弾性変形方向を検出する弾性変形方向検出手段と、
前記モータ軸側ギアに摩擦補償用トルクを印加するモータ制御手段とを備え、
前記モータ制御手段は、弾性変形量を更新する弾性変形更新処理を実行することに続いて摩擦補償用トルクを決定する摩擦補償用トルク決定処理を実行する処理を周期的に行い、前記弾性変形更新処理においては、前記弾性変形量計算手段により計算された弾性変形量と正方向の最大弾性変形量及び負方向の最大弾性変形量とを比較し、前記弾性変形量計算手段により計算された弾性変形量が正方向の最大弾性変形量を超えていなく且つ負方向の最大弾性変形量を超えていないと判定したときには弾性変形中であると判定して現在の弾性変形量を維持し、前記弾性変形量計算手段により計算された弾性変形量が正方向の最大弾性変形量を超えていると判定したときには弾性変形中でないと判定してその正方向の最大弾性変形量を弾性変形量として設定し、前記弾性変形量計算手段により計算された弾性変形量が負方向の最大弾性変形量を超えていると判定したときには弾性変形中でないと判定してその負方向の最大弾性変形量を弾性変形量として設定し、前記摩擦補償用トルク決定処理においては、目標方向と前記弾性変形方向検出手段により検出された弾性変形方向とを比較し、目標方向と前記弾性変形方向検出手段により検出された弾性変形方向とが逆方向であると判定したときには摩擦補償用トルクをサンプリングタイム単位毎に連続的又は段階的に減少させ、目標方向と前記弾性変形方向検出手段により検出された弾性変形方向とが同方向であると判定したときには弾性変形量が最大弾性変形量であるか否かを判定し、弾性変形量が最大弾性変形量でないと判定したときには摩擦補償用トルクをサンプリングタイム単位毎に連続的又は段階的に増加させ、弾性変形量が最大弾性変形量であると判定したときには予め設定されている最大補償トルクを摩擦補償用トルクとして設定することを特徴とするロボット制御装置。
【請求項２】
モータ軸側ギアと出力軸側ギアとが噛み合っている状態で前記モータ軸側ギアが回転することに連動して前記出力軸側ギアが回転することで前記出力軸が駆動可能に構成されてなる駆動軸の動作を制御するロボット制御装置において、
前記モータ軸のねじれ、前記モータ軸と前記モータ軸側ギアとの接続箇所のねじれ、前記モータ軸側ギアの変形、前記出力軸側ギアの変形及び前記出力軸側ギアと前記出力軸との接続箇所のねじれに起因する変形を弾性変形としてそれらの合算値である弾性変形量の最大値を最大弾性変形量角度として記憶する最大弾性変形量角度記憶手段と、
前記モータ軸の回転角度を検出するモータ軸側エンコーダが検出した角度であるモータ軸側エンコーダ角度と前記出力軸の回転角度を検出する出力軸側エンコーダが検出した角度である出力軸側エンコーダ角度との差分が前記最大弾性変形量角度を超えているか否かを判定し、前記モータ軸側エンコーダ角度と前記出力軸側エンコーダ角度との差分が前記最大弾性変形量角度を超えていない場合に前記モータ軸側エンコーダ角度を弾性変形中の角度として判定して弾性変形量を計算し、一方、前記モータ軸側エンコーダ角度と前記出力軸側エンコーダ角度との差分が前記最大弾性変形量角度を超えている場合に前記モータ軸側エンコーダ角度を動作開始時の角度として判定する弾性変形量計算手段と、
前記モータ軸側エンコーダ角度と前記出力軸側エンコーダ角度との差分が示す正負を判定して前記モータ軸側ギアの弾性変形方向を検出する弾性変形方向検出手段と、
前記モータ軸側ギアに摩擦補償用トルクを印加するモータ制御手段とを備え、
前記モータ制御手段は、弾性変形量を更新する弾性変形更新処理を実行することに続いて摩擦補償用トルクを決定する摩擦補償用トルク決定処理を実行する処理を周期的に行い、前記弾性変形更新処理においては、前記弾性変形量計算手段により計算された弾性変形量と正方向の最大弾性変形量及び負方向の最大弾性変形量とを比較し、前記弾性変形量計算手段により計算された弾性変形量が正方向の最大弾性変形量を超えていなく且つ負方向の最大弾性変形量を超えていないと判定したときには弾性変形中であると判定して現在の弾性変形量を維持し、前記弾性変形量計算手段により計算された弾性変形量が正方向の最大弾性変形量を超えていると判定したときには弾性変形中でないと判定してその正方向の最大弾性変形量を弾性変形量として設定し、前記弾性変形量計算手段により計算された弾性変形量が負方向の最大弾性変形量を超えていると判定したときには弾性変形中でないと判定してその負方向の最大弾性変形量を弾性変形量として設定し、前記摩擦補償用トルク決定処理においては、目標方向と前記弾性変形方向検出手段により検出された弾性変形方向とを比較し、目標方向と前記弾性変形方向検出手段により検出された弾性変形方向とが逆方向であると判定したときには摩擦補償用トルクをサンプリングタイム単位毎に連続的又は段階的に減少させ、目標方向と前記弾性変形方向検出手段により検出された弾性変形方向とが同方向であると判定したときには弾性変形量が最大弾性変形量であるか否かを判定し、弾性変形量が最大弾性変形量でないと判定したときには摩擦補償用トルクをサンプリングタイム単位毎に連続的又は段階的に増加させ、弾性変形量が最大弾性変形量であると判定したときには予め設定されている最大補償トルクを摩擦補償用トルクとして設定することを特徴とするロボット制御装置。
【請求項３】
請求項１又は２に記載したロボット制御装置において、
前記モータ制御手段は、前記弾性変形更新処理及び前記摩擦補償用トルク決定処理を実行することに続いて停止時のチャタリングを防止する停止時チャタリング防止処理を実行する処理を周期的に行い、前記停止時チャタリング防止処理においては、ロボットの動作停止命令を判定したときには、ロボットの動作が停止される直前の摩擦補償用トルクを維持し、ロボットの動作開始命令を判定したときには、外乱力に対する補償を行うロボットの動作開始時の積分補償の状態量を次に示す計算式にしたがって計算することを特徴とするロボット制御装置。
ロボットの動作開始時の積分補償の状態量
＝ロボットの動作開始直前の積分補償の状態量−（ロボットの動作開始時の摩擦補償の状態量−ロボットの動作開始直前の摩擦補償の状態量）
【請求項４】
請求項１又は２に記載したロボット制御装置において、
前記モータ制御手段は、前記弾性変形更新処理及び前記摩擦補償用トルク決定処理を実行することに続いて停止時の摩擦補償を行う停止時摩擦補償処理を実行する処理を周期的に行い、前記停止時摩擦補償処理においては、ロボットの動作停止命令を判定したときに、目標角度と前記モータ軸側エンコーダ角度との差分の絶対値が前記最大弾性変形量角度よりも大きな角度である設定角度を超えているか否かを判定し、前記目標角度と前記モータ軸側エンコーダ角度との差分の絶対値が前記設定角度を超えている場合に、弾性変形量を考慮した摩擦補償を行うことを特徴とするロボット制御装置。
【請求項５】
請求項４に記載したロボット制御装置において、
前記モータ制御手段は、前記停止時摩擦補償処理においては、ロボットの動作停止命令を判定したときに、前記目標角度と前記モータ軸側エンコーダ角度との差分の絶対値が前記設定角度を超えていない場合に、弾性変形量を考慮した摩擦補償を行わないと共に、ロボットの動作が停止される直前の摩擦補償用トルクを維持し、ロボットの動作開始命令を判定したときには、外乱力に対する補償を行うロボットの動作開始時の積分補償の状態量を次に示す計算式にしたがって計算することを特徴とするロボット制御装置。
ロボットの動作開始時の積分補償の状態量
＝ロボットの動作開始直前の積分補償の状態量−（ロボットの動作開始時の摩擦補償の状態量−ロボットの動作開始直前の摩擦補償の状態量）
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータ軸側ギアと出力軸側ギアとが噛み合っている状態で前記モータ軸側ギアが回転することに連動して前記出力軸側ギアが回転することで前記出力軸が駆動可能に構成されてなる駆動軸の動作を制御するロボット制御装置に関する。
【背景技術】
【０００２】
モータ軸側ギアが回転することに連動して出力軸側ギアが回転することで出力軸が駆動可能に構成されてなる駆動軸を有するロボットの動作軌跡の精度を高める方法として、送り系のバックラッシに起因するロストモーション量、ギアの弾性変形に起因するロストモーション量及び静摩擦に起因するロストモーション量を予め計算しておき、軸の移動方向が反転する場合に、モータのギアをバックラッシ加速度で送り系のバックラッシに起因するロストモーション量だけ駆動させ、続いて弾性変形加速度でギアの弾性変形に起因するロストモーション量だけ駆動させ、続いて静摩擦加速度で静摩擦に起因するロストモーション量だけ駆動させる方法がある（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−２８２０１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されている方法では理論上ではロボットの動作軌跡の精度を高めることが可能であるが、しかしながら、具体的にどのような動作制御で摩擦補償を行えば良いのかについては開示されておらず、ロボットの動作軌跡の精度を高めることができるという点で不確かな点が多い。
【０００５】
本発明は、上記した事情に鑑みてなされたものであり、その目的は、摩擦補償を適切に行うことでロボットの実際の動作軌跡をより理論に近づけることができ、ロボットの動作軌跡を高い精度で再現することができるロボット制御装置を提供することにある。
【課題を解決するための手段】
【０００６】
請求項１に記載した発明によれば、最大弾性変形量角度記憶手段は、モータ軸のねじれ、モータ軸とモータ軸側ギアとの接続箇所のねじれ、モータ軸側ギアの変形、出力軸側ギアの変形及び出力軸側ギアと出力軸との接続箇所のねじれに起因する変形を弾性変形としてそれらの合算値である弾性変形量の最大値を最大弾性変形量角度として記憶する。弾性変形量計算手段は、モータ軸の回転角度を検出するモータ軸側エンコーダが電源投入時に示す角度を弾性変形量ゼロ角度とし、モータ軸側エンコーダ角度と弾性変形量ゼロ角度との差分が最大弾性変形量角度を超えているか否かを判定し、モータ軸側エンコーダ角度と弾性変形量ゼロ角度との差分が最大弾性変形量角度を越えていなければ、モータ軸側エンコーダ角度を弾性変形中の角度として判定して弾性変形量を計算し、一方、モータ軸側エンコーダ角度と弾性変形量ゼロ角度との差分が最大弾性変形量角度を越えていれば、モータ軸側エンコーダ角度を動作開始時の角度として判定する。弾性変形方向検出手段は、弾性変形量ゼロ角度とモータ軸側エンコーダ角度との差分が示す正負を判定してモータ軸側ギアの弾性変形方向を検出する。
【０００７】
モータ制御手段は、弾性変形量を更新する弾性変形更新処理を実行することに続いて摩擦補償用トルクを決定する摩擦補償用トルク決定処理を実行する処理を周期的に行う。弾性変形更新処理においては、弾性変形量計算手段により計算された弾性変形量と正方向の最大弾性変形量及び負方向の最大弾性変形量とを比較し、弾性変形量計算手段により計算された弾性変形量が正方向の最大弾性変形量を超えていなく且つ負方向の最大弾性変形量を超えていないと判定したときには弾性変形中であると判定して現在の弾性変形量を維持し、弾性変形量計算手段により計算された弾性変形量が正方向の最大弾性変形量を超えていると判定したときには弾性変形中でないと判定してその正方向の最大弾性変形量を弾性変形量として設定し、弾性変形量計算手段により計算された弾性変形量が負方向の最大弾性変形量を超えていると判定したときには弾性変形中でないと判定してその負方向の最大弾性変形量を弾性変形量として設定する。
【０００８】
又、摩擦補償用トルク決定処理においては、目標方向と弾性変形方向検出手段により検出された弾性変形方向とを比較し、目標方向と弾性変形方向検出手段により検出された弾性変形方向とが逆方向であると判定したときには摩擦補償用トルクをサンプリングタイム単位毎に連続的又は段階的に減少させ、目標方向と弾性変形方向検出手段により検出された弾性変形方向とが同方向であると判定したときには弾性変形量が最大弾性変形量であるか否かを判定し、弾性変形量が最大弾性変形量でないと判定したときには摩擦補償用トルクをサンプリングタイム単位毎に連続的又は段階的に増加させ、弾性変形量が最大弾性変形量であると判定したときには予め設定されている最大補償トルクを摩擦補償用トルクとして設定する。
【０００９】
これにより、例えばロボットの駆動を開始する場合などであり弾性変形していない停止状態から出力軸を目標駆動方向に駆動させる場合では、モータ軸側ギアに印加する目標駆動方向への摩擦補償用トルクを徐々に増加させ、弾性変形量が最大弾性変形量に到達した以後では弾性変形量が最大弾性変形量に到達した時点での摩擦補償用トルクを一定値として印加し、出力軸を目標駆動方向に駆動させることになる。
【００１０】
又、例えばロボットの動作途中で正転を一旦停止して正転を再開する場合などであり弾性変形している停止状態から出力軸を弾性変形方向と同一方向である目標駆動方向に駆動させる場合では、モータ軸側ギアに印加する目標駆動方向への摩擦補償用トルクを徐々に増加させ、弾性変形量が最大弾性変形量に到達した以後では弾性変形量計算手段により計算された弾性変形量が最大弾性変形量に到達した時点での摩擦補償用トルクを一定値として印加し、出力軸を目標駆動方向に駆動させることになる。
【００１１】
又、例えばロボットの動作途中で正転を一旦停止して反転を開始する場合などであり弾性変形している停止状態から出力軸を弾性変形方向と反対方向である目標駆動方向に駆動させる場合では、モータ軸側ギアに印加する目標駆動方向とは反対方向への摩擦補償用トルクを徐々に減少させた後にモータ軸側ギアに印加する目標駆動方向への摩擦補償用トルクを徐々に増加させ、弾性変形量が最大弾性変形量に到達した以後では弾性変形量が最大弾性変形量に到達した時点での摩擦補償用トルクを一定値として印加し、出力軸を目標駆動方向に駆動させることになる。
【００１２】
このように弾性変形することを考慮して摩擦補償用トルクを印加する制御を行い、摩擦補償を行うことで、ロボットの如何に拘らず実際の動作軌跡をより理論に近づけることができ、ロボットの動作軌跡を高い精度で再現することができる。
【００１３】
以下、上記した請求項１に記載した発明の技術的特徴について、図１７乃至図１９を参照して説明する。上記した請求項１に記載した発明は、モータ軸側ギアに印加する目標駆動方向への摩擦補償用トルクを徐々に増加させる点及び摩擦補償用トルクと加速トルクとを切分けて制御している点を特徴としている。
【００１４】
理論上、弾性変形を考慮することなく摩擦補償だけを考慮してロボットの動作軌跡の精度を高めるようとする場合には、図１７に示すように制御すれば良い。即ち、最大静止摩擦を超える摩擦補償用トルクを一気に（急激に）印加したとしても、ロボットの動作軌跡は線形となるので、静止摩擦分のトルクを加速トルクに加算すれば良い。
【００１５】
しかしながら、摩擦補償だけでなく弾性変形をも考慮してロボットの動作軌跡の精度を高めようとする場合、上記した図１７に示す技術思想にしたがって最大静止摩擦を超える摩擦補償用トルクを一気に印加すると、ロボットの動作軌跡は理論上では上記した図１７に示したものと同様に線形となるが、現実的には制御対象となる物体は理論のように絶対的な硬度を持たず弾性変形する性質であるので、図１８に示すように、弾性変形分だけの位置移動が先行し、物体の動作開始時に弾性変形分が戻ることで逆方向への位置移動が発生し、その後に加速トルクにより物体の位置移動が開始するという現象が発生する。即ち、物体の形状の揺り戻しによる動作軌跡のぐらつきが発生し、理論にしたがった動作軌跡とはならず、動作軌跡の精度を高めることは困難である。これは上記した特許文献１の技術に相当する。
【００１６】
このような事情から、請求項１に記載した発明では、図１９に示すように、摩擦補償用トルクと加速トルクとを切分けて制御し、摩擦補償用トルクを徐々に増加させることで、一旦弾性変形した物体を弾性変形させたままで加速トルクにより位置移動させることが可能となり、動作軌跡の精度を高めることが可能となる。
【００１７】
尚、以上に説明した上記した請求項１に記載した発明の技術的特徴は後述する請求項２に記載した発明の技術的特徴と同様であり、請求項２に記載した発明は請求項１に記載した発明の技術的特徴と同じ理論に基づく発明である。
【００１８】
請求項２に記載した発明によれば、最大弾性変形量角度記憶手段は、モータ軸のねじれ、モータ軸とモータ軸側ギアとの接続箇所のねじれ、モータ軸側ギアの変形、出力軸側ギアの変形及び出力軸側ギアと出力軸との接続箇所のねじれに起因する変形を弾性変形としてそれらの合算値である弾性変形量の最大値を最大弾性変形量角度として記憶する。弾性変形量計算手段は、モータ軸の回転角度を検出するモータ軸側エンコーダ角度と出力軸の回転角度を検出する出力軸側エンコーダ角度との差分が最大弾性変形量角度を超えているか否かを判定し、モータ軸側エンコーダ角度と出力軸側エンコーダ角度との差分が最大弾性変形量角度を越えていなければ、モータ軸側エンコーダ角度を弾性変形中の角度として判定して弾性変形量を計算し、一方、モータ軸側エンコーダ角度と出力軸側エンコーダ角度との差分が最大弾性変形量角度を越えていれば、モータ軸側エンコーダ角度を動作開始時の角度として判定する。弾性変形方向検出手段は、モータ軸側エンコーダ角度と出力軸側エンコーダ角度との差分が示す正負を判定してモータ軸側ギアの弾性変形方向を検出する。
【００１９】
モータ制御手段は、弾性変形量を更新する弾性変形更新処理を実行することに続いて摩擦補償用トルクを決定する摩擦補償用トルク決定処理を実行する処理を周期的に行う。弾性変形更新処理においては、弾性変形量計算手段により計算された弾性変形量と正方向の最大弾性変形量及び負方向の最大弾性変形量とを比較し、弾性変形量計算手段により計算された弾性変形量が正方向の最大弾性変形量を超えていなく且つ負方向の最大弾性変形量を超えていないと判定したときには弾性変形中であると判定して現在の弾性変形量を維持し、弾性変形量計算手段により計算された弾性変形量が正方向の最大弾性変形量を超えていると判定したときには弾性変形中でないと判定してその正方向の最大弾性変形量を弾性変形量として設定し、弾性変形量計算手段により計算された弾性変形量が負方向の最大弾性変形量を超えていると判定したときには弾性変形中でないと判定してその負方向の最大弾性変形量を弾性変形量として設定する。
【００２０】
又、摩擦補償用トルク決定処理においては、目標方向と弾性変形方向検出手段により検出された弾性変形方向とを比較し、目標方向と弾性変形方向検出手段により検出された弾性変形方向とが逆方向であると判定したときには摩擦補償用トルクをサンプリングタイム単位毎に連続的又は段階的に減少させ、目標方向と弾性変形方向検出手段により検出された弾性変形方向とが同方向であると判定したときには弾性変形量が最大弾性変形量であるか否かを判定し、弾性変形量が最大弾性変形量でないと判定したときには摩擦補償用トルクをサンプリングタイム単位毎に連続的又は段階的に増加させ、弾性変形量が最大弾性変形量であると判定したときには予め設定されている最大補償トルクを摩擦補償用トルクとして設定する。
【００２１】
これにより、上記した請求項１に記載したものと弾性変形量を計算する手順が異なるだけであり、上記した請求項１に記載したもの同様の作用効果を得ることができる。
【００２２】
請求項３に記載した発明によれば、モータ制御手段は、弾性変形更新処理及び摩擦補償用トルク決定処理を実行することに続いて停止時のチャタリングを防止する停止時チャタリング防止処理を実行する処理を周期的に行い、停止時チャタリング防止処理においては、ロボットの動作停止命令を判定したときには、ロボットの動作が停止される直前の摩擦補償用トルクを維持し、ロボットの動作開始命令を判定したときには、外乱力に対する補償を行うロボットの動作開始時の積分補償の状態量を次に示す計算式にしたがって計算する。
【００２３】
ロボットの動作開始時の積分補償の状態量
＝ロボットの動作開始直前の積分補償の状態量−（ロボットの動作開始時の摩擦補償の状態量−ロボットの動作開始直前の摩擦補償の状態量）
これにより、ロボットの動作停止時から動作開始時までの停止期間では、外乱力や摩擦が変化すると、その外乱力や摩擦が変化したことに追従して変化分を積分補償することで、外乱力及び摩擦の和と積分補償及び摩擦補償の和との間で均衡を保つことができ、ロボットの動作開始時においても外乱力及び摩擦の和と積分補償及び摩擦補償の和との間で両者の均衡を保つことができ、ロボットの動作開始から動作停止までの全体の動作軌跡の精度をより高めることができる。又、このように積分補償の状態量を変化させるだけで良いので、制御系の安定性に悪影響を与えることなく、単純な演算だけで実装可能である。
【００２４】
請求項４に記載した発明によれば、モータ制御手段は、弾性変形更新処理及び摩擦補償用トルク決定処理を実行することに続いて停止時の摩擦補償を行う停止時摩擦補償処理を実行する処理を周期的に行い、停止時摩擦補償処理においては、ロボットの動作停止命令を判定したときに、目標角度とモータ軸側エンコーダ角度との差分の絶対値が最大弾性変形量角度よりも大きな角度である設定角度を超えているか否かを判定し、目標角度とモータ軸側エンコーダ角度との差分の絶対値が設定角度を超えている場合に、弾性変形量を考慮した摩擦補償を行う。
【００２５】
ロボットの動作停止時では、停止指令がロボット制御装置から出力された後に速度をゼロとするので、停止指令が出力されてから速度をゼロとするまでの僅かな期間がタイムラグとして発生する。又、物体には物理現象としての慣性が存在する。よって、停止指令が出力された後に上記したタイムラグ分だけ遅れて実際の速度がゼロとなる。ロボットの動作としては、このタイムラグが発生している期間中の動作により、目標角度を僅かに越えてしまい（オーバーシュートしてしまい）、その後に目標角度に対して僅かに越えてしまったオーバーシュート分を戻す動作を行うことで、目標角度に近づけるようにしている。
【００２６】
一方、ロボットは例えば生産性の効率が高いことが要求されていることから、なるべく短い時間で正確な位置に到達されることが要求されており、よって、上記したようなオーバーシュートが発生した状況でもなるべく短い時間で目標角度に到達することが要求されている。そこで、通常のトルク制御である時間と目標角度までの差で積分を行い、積分値に比例したトルクを印加するものであるが、この方法では、そもそもオーバーシュート分の角度が極めて僅かであり、全体の動作軌跡の精度を高めることを考慮すると、最初は極めて僅かな積分量では極めて僅かなトルクを印加することしかできず、オーバーシュート分を戻る（方向反転）時に発生する静止摩擦を超える（打ち勝つ）ことができない。最初から大きなトルクを印加してしまうと、静止摩擦を超えることができるようになるが、全体の動作軌跡を精度良く形成することができなくなる。
【００２７】
このような事情から、オーバーシュートした後では、オーバーシュート分を直ちに戻すことができず、外見的にオーバーシュートした角度であたかも停止した状態になる。その後、時間経過にしたがって積分が進み、積分値が一定値に達し、印加するトルクが方向反転時の静止摩擦を超えるようになると、そこで初めてオーバーシュート分を戻す制御を開始する。このようにオーバーシュート分を戻す制御を開始するまでに時間がかかり、オーバーシュートを解消するまでに時間がかかるという問題がある。
【００２８】
そこで、ロボットの動作停止時においても、目標角度とモータ軸側エンコーダ角度との差分の絶対値が最大弾性変形量角度よりも大きな角度である設定角度を超えていることを条件に、ロボットの動作開始時に弾性変形量を考慮した摩擦補償を行うことと同様に、弾性変形量を考慮した摩擦補償を行うことにより、オーバーシュート分を戻す制御を早く開始し、オーバーシュートを解消するまでにかかる時間を短縮することができる。これにより、ロボットの動作開始時だけでなく動作停止時までも含めて動作軌跡をより理論に近づけることができ、ロボットの動作軌跡を高い精度で再現することができる。
【００２９】
請求項５に記載した発明によれば、モータ制御手段は、停止時摩擦補償処理においては、ロボットの動作停止命令を判定したときに、目標角度とモータ軸側エンコーダ角度との差分の絶対値が設定角度を超えていない場合に、弾性変形量を考慮した摩擦補償を行わないと共に、ロボットの動作が停止される直前の摩擦補償用トルクを維持し、ロボットの動作開始命令を判定したときには、外乱力に対する補償を行うロボットの動作開始時の積分補償の状態量を次に示す計算式にしたがって計算する。
【００３０】
ロボットの動作開始時の積分補償の状態量
＝ロボットの動作開始直前の積分補償の状態量−（ロボットの動作開始時の摩擦補償の状態量−ロボットの動作開始直前の摩擦補償の状態量）
これにより、上記した請求項４に記載した弾性変形量を考慮した摩擦補償を行うことで、目標角度とモータ軸側エンコーダ角度との差分が最大弾性変形量角度よりも大きな角度である設定角度を超えなくなった後に（ある程度まで目標角度に収束した後に）、上記した請求項３に記載したものと同様の作用効果を得ることができる。即ち、オーバーシュートを解消するまでにかかる時間を短縮することができ、しかも、ロボットの動作開始から動作停止までの全体の動作軌跡の精度をより高めることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明の第１の実施形態を示す機能ブロック図
【図２】ロボット制御システムの全体構成を示す図
【図３】軸の駆動部分を概略的に示す図
【図４】フローチャート
【図５】図４相当図
【図６】図４相当図
【図７】図４相当図
【図８】モータ軸側ギアが動作開始時に弾性変形する態様を示す図及び摩擦補償用トルクの推移を示す図
【図９】図８相当図
【図１０】図８相当図
【図１１】モータ軸側ギアが動作停止時に弾性変形する態様を示す図及び摩擦補償用トルクの推移を示す図
【図１２】図１１相当図
【図１３】外乱力及び摩擦に対する積分補償及び摩擦補償を概略的に示す図
【図１４】図１３相当図
【図１５】図１３相当図
【図１６】測定結果を示す図
【図１７】本発明の原理を説明する図
【図１８】図１７相当図
【図１９】図１７相当図
【図２０】本発明の第２の実施形態を示すフローチャート
【図２１】図２０相当図
【図２２】停止時摩擦補償処理を行わなかった場合の目標角度に近づくまでの挙動を示す図
【図２３】停止時摩擦補償処理を行った場合の目標角度に近づくまでの挙動を示す図
【発明を実施するための形態】
【００３２】
（第１の実施形態）
以下、本発明の第１の実施形態について、図１乃至図１９を参照して説明する。図２は、ロボット制御システムの全体構成を示している。ロボット制御システム１は、例えば６軸の垂直多関節型ロボットからなるロボット２と、ロボット２の動作を制御するロボット制御装置３と、作業者が操作するティーチングペンダンド４とを備えて構成されている。
【００３３】
ロボット２は、ベース５と、ベース５に水平方向に旋回可能に支持されているショルダ部６と、ショルダ部６に上下方向に旋回可能に支持されている下アーム７と、下アーム７に上下方向に旋回可能に支持されている第１の上アーム８と、第１の上アーム８の先端部に捻り回転可能に支持されている第２の上アーム９と、第２の上アーム９に上下方向に回転可能に支持されている手首１０と、手首１０に回転（捻り動作）可能に支持されているフランジ１１とを備えて構成されている。
【００３４】
上記したベース５を含め、ショルダ部６、下アーム７、第１の上アーム８、第２の上アーム９、手首１０及びフランジ１１は、ロボット２におけるリンクとして機能し、ベース５を除く各リンクは前段のリンクに対して回転関節により回転可能に連結されている。最先端のリンクであるフランジ１１にはワークを把持するためのハンド（図示せず）が取付け可能になっている。
【００３５】
尚、本実施形態では、第１のリンクであるベース５と第２のリンクであるショルダ部６との間を連結する回転関節の関節軸を１軸、第２のリンクであるショルダ部６と第３のリンクである下アーム７との間を連結する回転関節の関節軸を２軸、第３のリンクである下アーム７と第４のリンクである第１の上アーム８との間を連結する回転関節の関節軸を３軸、第４のリンクである第１の上アーム８と第５のリンクである第２の上アーム９との間を連結する回転関節の関節軸を４軸、第５のリンクである第２の上アーム９と第６のリンクである手首１０との間を連結する回転関節の関節軸を５軸、第６のリンクである手首１０と第７のリンクであるフランジ１１との間を連結する回転関節の関節軸を６軸として図示している。
【００３６】
図１は、ロボット制御装置３及びロボット２の電気的な構成を機能ブロック図により示している。ロボット制御装置３は、マイクロコンピュータからなるＣＰＵ１２（本発明でいう最大弾性変形量角度記憶手段、弾性変形量計算手段、弾性変形方向検出手段、モータ制御手段）と、ＣＰＵ１２からの動作指令に基づいて駆動信号をロボット２に出力する駆動回路１３と、ロボット２の動作プログラムなどを記憶するＲＡＭ１４と、ロボット２のシステムプログラムや動作プログラムを作成するためのロボット言語などを記憶するＲＯＭ１５とを備えて構成されている。ロボット２は、ショルダ部６、各アーム７〜９、手首１０及びフランジ１１を駆動させるモータ１６と、モータ１６の回転角度を検出するエンコーダ１７とを備えている。尚、これらモータ１６及びエンコーダ１７はリンク毎に設けられている。
【００３７】
ＣＰＵ１２は、リンク毎のエンコーダ１７から入力したエンコーダ角度（エンコーダ値）に基づいてベース５に対するショルダ部６の回転角度、ショルダ部６に対する下アーム７の回転角度、下アーム７に対する第１の上アーム８の回転角度、第１の上アーム８に対する第２の上アーム９の回転角度、第２の上アーム９に対する手首１０の回転角度、手首１０に対するフランジ１１の回転角度を検出し、ロボット２の位置（姿勢）を検出すると共に、エンコーダ角度をフィードバック制御して駆動回路１３から駆動信号を出力させ、それらショルダ部６、各アーム７〜９、手首１０及びフランジ１１の動作を制御する。
【００３８】
ロボット２における各軸の駆動部分は、図３に示すように、モータ１６のモータ軸１８に取付けられているモータ軸側ハーモニックギア（以下、モータ軸側ギアと称する）１９と出力軸２０に取付けられている出力軸側ハーモニックギア（以下、出力軸側ギアと称する）２１とが噛み合っており、ロボット制御装置３からモータ１６に駆動信号が出力されてトルク指令値が与えられることでモータ１６がモータ軸側ギア１９を回転させ、モータ軸側ギア１９が回転されることに追従して出力軸側ギア２１が回転されるように構成されている。尚、これ以降、モータ軸１８の回転角度を検出するエンコーダ１７が出力するエンコーダ角度をモータ軸側エンコーダ角度として定義し、出力軸２０の回転角度を検出するエンコーダが出力するエンコーダ角度を出力軸側エンコーダ角度として定義する。
【００３９】
上記した構成では、モータ軸１８のねじれ、モータ軸１８とモータ軸側ギア１９との接続箇所のねじれ、モータ軸側ギア１９の変形、出力軸側ギア２１の変形及び出力軸側ギア２１と出力軸２０との接続箇所のねじれに起因する弾性変形が発生する。このような事情から、本実施形態ではＣＰＵ１２は以下に示す制御を行う。以下、上記した構成の作用として、ＣＰＵ１２が本発明に関連して行う制御を図４乃至図１６を参照して説明する。ロボット制御装置３において、ＣＰＵ１２は、ＲＡＭ１４に記憶されている動作プログラムを実行して所定周期（サンプリング単位周期）で以下に示すメイン処理を実行する。
【００４０】
ＣＰＵ１２は、実行中にある動作プログラムから目標角度指令を取得すると（ステップＳ１）、その目標角度指令により指示されている目標角度（目標値）とエンコーダ１７から入力しているモータ軸側エンコーダ角度とに基づいて指令速度を計算し（ステップＳ２）、計算した指令速度とエンコーダ速度とに基づいてトルク指令値を計算する（ステップＳ３）。そして、ＣＰＵ１２は、現在のモータ軸側エンコーダ角度と現在の出力軸側エンコーダ角度とに基づいて弾性変形量を更新する弾性変形量更新処理に移行する（ステップＳ４）。
【００４１】
ＣＰＵ１２は、メイン処理から弾性変形量更新処理に移行すると、現在の出力軸側エンコーダ角度を制御視点角度とし、制御視点角度から現在のモータ軸側エンコーダ角度を減算した値を弾性変形量として計算し（ステップＳ１１）、その計算した弾性変形量と予め記憶している正方向の最大弾性変形量及び負方向の弾性変形量との大小関係を比較判定する（ステップＳ１２、Ｓ１３）。ここで、ＣＰＵ１２は、計算した弾性変形量が正方向の最大弾性変形量を超えていなく（同等又は小さく）且つ負方向の最大弾性変形量を超えていない（同等又は大きい）と判定すると（ステップＳ１２にて「ＮＯ」、Ｓ１３にて「ＮＯ」）、モータ軸側ギア１９が弾性変形中であると判定し、現在の弾性変形量を維持し（ステップＳ１４）、弾性変形量更新処理を終了してメイン処理に戻り、弾性変形量から摩擦補償用トルクを決定する摩擦補償用トルク決定処理に移行する（ステップＳ５）。
【００４２】
一方、ＣＰＵ１２は、計算した弾性変形量が正方向の最大弾性変形量を超えていると判定すると（ステップＳ１２にて「ＹＥＳ」）、モータ軸側ギア１９が弾性変形中でないと判定し、その正方向の最大弾性変形量を弾性変形量として設定し（ステップＳ１５）、正方向の最大弾性変形量と現在のモータ軸側エンコーダ角度とを加算した値を制御視点角度として計算し（ステップＳ１６）、弾性変形量更新処理を終了してメイン処理に戻り、摩擦補償用トルク決定処理に移行する（ステップＳ５）。
【００４３】
又、ＣＰＵ１２は、計算した弾性変形量が負方向の最大弾性変形量を超えていると判定すると（ステップＳ１３にて「ＹＥＳ」）、モータ軸側ギア１９が弾性変形中でないと判定し、その負方向の最大弾性変形量を弾性変形量として設定し（ステップＳ１７）、負方向の最大弾性変形量と現在のモータ軸側エンコーダ角度とを加算した値を制御視点角度として計算し（ステップＳ１８）、弾性変形量更新処理を終了してメイン処理に戻り、摩擦補償用トルク決定処理に移行する（ステップＳ５）。
【００４４】
次いで、ＣＰＵ１２は、メイン処理から摩擦補償用トルク決定処理に移行すると、目標方向と弾性変形方向とを比較し、目標方向と弾性変形方向とが逆方向であるか否かを判定する（ステップＳ２１）。ここで、ＣＰＵ１２は、目標方向と弾性変形方向とが逆方向であると判定すると（ステップＳ２１にて「ＹＥＳ」）、摩擦補償用トルクを減少させ（ステップＳ２２）、摩擦補償用トルク決定処理を終了してメイン処理に戻り、停止時のチャタリングを防止する停止時チャタリング防止処理に移行する（ステップＳ６）。
【００４５】
又、ＣＰＵ１２は、目標方向と弾性変形方向とが逆方向でないと判定すると（ステップＳ２１にて「ＮＯ」）、弾性変形量が最大弾性変形量であるか否かを判定し（ステップＳ２３）、弾性変形量が最大弾性変形量でないと判定すると（ステップＳ２３にて「ＮＯ」）、摩擦補償用トルクを増加させ（ステップＳ２４）、摩擦補償用トルク決定処理を終了してメイン処理に戻り、停止時チャタリング防止処理に移行する（ステップＳ６）。一方、ＣＰＵ１２は、弾性変形量が最大弾性変形量であると判定すると（ステップＳ２３にて「ＹＥＳ」）、予め設定されている最大補償トルクを摩擦補償用トルクとして設定し（ステップＳ２５）、摩擦補償用トルク決定処理を終了してメイン処理に戻り、停止時チャタリング防止処理に移行する（ステップＳ６）。
【００４６】
次いで、ＣＰＵ１２は、メイン処理から停止時チャタリング防止処理に移行すると、計算した指令速度がゼロであるか否か（ロボット２の動作停止命令であるか否か）を判定する（ステップＳ３１）。ＣＰＵ１２は、指令速度がゼロでないと判定すると（ステップＳ３１にて「ＮＯ」）、指令速度ゼロフラグをオンに設定しているか否かを判定し（ステップＳ３２）、指令速度ゼロフラグをオンに設定していないと判定すると（ステップＳ３２にて「ＮＯ」）、現在の摩擦補償用トルクを保存補償トルクとして設定し（ステップＳ３３）、停止時チャタリング防止処理を終了してメイン処理に戻る。そして、ＣＰＵ１２は、摩擦補償用トルクをトルク指令値に加算し（ステップＳ７）、メイン処理を終了する。
【００４７】
ここで、ＣＰＵ１２は、指令速度がゼロであると判定すると（ステップＳ３１にて「ＹＥＳ」）、指令速度ゼロフラグをオフに設定しているか否かを判定し（ステップＳ３４）、指令速度ゼロフラグをオフに設定していると判定すると（ステップＳ３４にて「ＹＥＳ」）、指令速度ゼロフラグをオンに設定し（ステップＳ３５）、現在の保存補償トルクを摩擦補償用トルクとして設定し（ステップＳ３６）、停止時チャタリング防止処理を終了してメイン処理に戻る。そして、ＣＰＵ１２は、摩擦補償用トルクをトルク指令値に加算し（ステップＳ７）、メイン処理を終了する。即ち、ＣＰＵ１２は、ロボット２の動作停止時には、ロボット２の動作を停止させる直前の摩擦補償用トルクを維持する。
【００４８】
次いで、ＣＰＵ１２は、指令速度がゼロでないと判定し（ステップＳ３１にて「ＮＯ」）、指令速度ゼロフラグをオンに設定していると判定すると（ステップＳ３２にて「ＹＥＳ」）、指令速度ゼロフラグをオフに設定し（ステップＳ３７）、外乱力に対する補償を行う積分補償の状態量を次に示す計算式にしたがって計算する（ステップＳ３８）。
【００４９】
積分補償の状態量←積分補償の状態量−（保存補償トルク−摩擦補償用トルク）／積分補償ゲイン
そして、ＣＰＵ１２は、現在の摩擦補償用トルクを保存補償トルクとして設定し（ステップＳ３３）、停止時チャタリング防止処理を終了してメイン処理に戻る。そして、ＣＰＵ１２は、摩擦補償用トルクをトルク指令値に加算し（ステップＳ７）、メイン処理を終了する。
【００５０】
尚、上記した処理では、現在の出力軸側エンコーダ角度を制御視点角度とし、モータ軸側エンコーダ角度と出力軸側エンコーダ角度との差分に基づいて弾性変形量を計算する方法を説明したが、エンコーダ１７が電源投入時に示す角度を弾性変形量ゼロ角度とし、モータ軸側エンコーダ角度と弾性変形量ゼロ角度との差分に基づいて弾性変形量を計算するようにしても良い。
【００５１】
又、このようにモータ軸側ギアに印加する目標駆動方向への摩擦補償用トルクを徐々に増加させる点及び摩擦補償用トルクと加速トルクとを切分けて制御している点を特徴とするのは、前述した「課題を解決するための手段」で説明した通りである。
【００５２】
図８乃至図１０は、モータ軸側ギア１９が動作開始時に弾性変形する態様及び摩擦補償用トルクの推移を示しており、図１１及び図１２は、モータ軸側ギア１９が動作停止時に弾性変形する態様及び摩擦補償用トルクの推移を示している。尚、図８乃至図１２中では、「ａ１」は制御視点角度を示しており、「ａ２」はモータ軸側エンコーダ角度を示している。
【００５３】
図８は、モータ軸側ギア１９の弾性変形量がゼロである状態から出力軸２０を目標駆動方向に駆動させる場合を示しており、この場合は、摩擦補償用トルクがゼロの状態から摩擦補償用トルクをモータ軸側ギア１９の弾性変形量が最大弾性変形量に達するまで正比例的に増加させ、モータ軸側ギア１９の弾性変形量が最大弾性変形量に達した以後は一定値とする。即ち、摩擦補償用トルクが最大補償トルクを超えない領域では弾性変形し、摩擦補償用トルクが最大補償トルクを超えた領域では最大弾性変形量まで変形して出力軸２０が動作開始する。
【００５４】
図９は、モータ軸側ギア１９の弾性変形量がゼロでない状態から出力軸２０を目標駆動方向に駆動させる場合であり、出力軸を弾性変形方向と同一方向である目標駆動方向に駆動させる場合を示しており、この場合は、摩擦補償用トルクが所定値の状態から摩擦補償用トルクをモータ軸側ギア１９の弾性変形量が最大弾性変形量に達するまで正比例的に増加させ、モータ軸側ギア１９の弾性変形量が最大弾性変形量に達した以後は一定値とする。即ち、摩擦補償用トルクが最大補償トルクを超えた領域では最大弾性変形量まで変形して最初の弾性変形方向と同一方向に出力軸２０が動作開始する。
【００５５】
図１０は、モータ軸側ギア１９の弾性変形量がゼロでない状態から出力軸２０を目標駆動方向に駆動させる場合であり、出力軸を弾性変形方向と反対方向である目標駆動方向に駆動させる場合を示しており、この場合は、摩擦補償用トルクが所定値の状態から摩擦補償用トルクをモータ軸側ギア１９の弾性変形量が最大弾性変形量に達するまで正比例的に減少させ、モータ軸側ギア１９の弾性変形量が最大弾性変形量に達した以後は一定値とする。即ち、摩擦補償用トルクが最大補償トルクを超えた領域では最大弾性変形量まで変形して最初の弾性変形方向と反対方向に出力軸２０が動作開始する。
【００５６】
図１１は、出力軸側ギア２１が目標位置を通過することなく停止した場合を示しており、この場合は、出力軸側ギア２１が目標位置で停止した状態の摩擦補償用トルクを維持する。図１２は、出力軸側ギア２１が目標位置を通過して停止した場合を示しており、この場合は、出力軸側ギア２１を目標位置まで戻すために摩擦補償用トルクを減少させ、出力軸側ギア２１が目標位置で停止した状態の摩擦補償用トルクを維持する。
【００５７】
ところで、上記したように摩擦補償を実施した場合では、理論上では振動することなくロボット２が動作停止すると考えられるか、実際には僅かな補償誤差や外乱力（主には重力）に起因して振動が発生する。そのため、ロボット２の動作停止時には摩擦補償を停止する必要があるが、単純に摩擦補償をオンオフする制御では不連続な部分が発生して新たな振動が発生する要因となる。即ち、図１３に示すように、外乱力及び摩擦の和と積分補償及び摩擦補償の和とが同じであり両者の均衡が保たれている状況から摩擦が変化すると、摩擦が変化したことに追従して摩擦補償が変化することで、両者の均衡が継続して保たれることになる。
【００５８】
一方、図１４に示すように、外乱力及び摩擦の和と積分補償及び摩擦補償の和とが同じであり両者の均衡が保たれている状況で摩擦補償をオフすると、摩擦補償をオフした分だけ両者の均衡が崩れる。そして、両者の均衡が崩れると、オフした分の摩擦補償を時間が経過するにしたがって積分補償が補うことになり、その結果、両者の均衡が保たれるようになる。しかしながら、オフした分の摩擦補償を積分補償が補ったままの状況でロボット２の動作開始時（動作開始直後）に摩擦補償をオンすると、摩擦補償をオンした分だけ両者の均衡が崩れることになる。
【００５９】
そこで、本実施形態では、図１５に示すように、外乱力及び摩擦の和と積分補償及び摩擦補償の和とが同じであり両者の均衡が保たれている状況では摩擦補償をオフすることなく更新を停止する。即ち、ロボット２の動作停止直後では両者の均衡が保たれるようになる。その状況から時間経過にしたがって摩擦及び外乱力が変化すると、摩擦補償の更新を停止しているので、それら摩擦及び外乱力の変化分を積分補償が補うことで、両者の均衡が継続して保たれる。そして、ロボット２の動作開始時に摩擦補償の更新を再開し、更新を停止した時点から摩擦補償が変化することで摩擦と摩擦補償との均衡は保たれるが、その分、それまでに摩擦の変化分を補っていた積分補償に相当する分の補償量だけ均衡が崩れることになる。したがって、均衡を保つために、ロボット２の動作開始時の積分補償用トルク（状態量）を次式にしたがって計算して変更する。
【００６０】
ロボットの動作開始時の積分補償の状態量（図１５中（１）参照）
＝ロボットの動作開始直前の積分補償の状態量（図１５中（２）参照）−（ロボットの動作開始時の摩擦補償の状態量（図１５中（３）参照）−ロボットの動作開始直前の摩擦補償の状態量（図１５中（４）参照））
上記した計算式における（ロボットの動作開始時の摩擦補償の状態量−ロボットの動作開始直前の摩擦補償の状態量）は補正量に相当する。
【００６１】
尚、上記した図１５では、ロボット２の動作停止中に摩擦が増加したことで積分補償を加えたので、その加えた分を結果的に減じる場合を説明したが、これとは反対に、ロボット２の動作停止中に摩擦が低下したことで積分補償を減じた場合には、その減じた分を結果的に加えることになり、その場合も、不連続となることはなく、両者の均衡が継続して保たれることになる。
【００６２】
図１６は摩擦補償及び停止時チャタリング防止処理を行ったか否かによる動作中及び動作停止後の振動の発生状況を示す図であり、（ａ）は摩擦補償を行わなかった場合での振動の発生状況を示しており、（ｂ）は摩擦補償を行わったが停止時チャタリング防止処理を行わなかった場合での振動の発生状況を示しており、（ｃ）は摩擦補償を行って停止時チャタリング防止処理を行った場合での振動の発生状況を示している。図１６から明らかなように、摩擦補償を行った場合には、摩擦補償を行わなかった場合に比べて、動作中には振動の発生が抑制されるが、その一方で、動作停止後には逆に振動が発生している。しかしながら、摩擦補償を行った後に上記した積分補償の状態量を変化させることで、摩擦補償を行わなかった場合と同程度まで振動の発生が抑制される。
【００６３】
以上に説明したように第１の実施形態によれば、ロボット制御装置３において、モータ軸側ギア１９と出力軸側ギア２１とが停止しており且つ弾性変形量がゼロである状態から出力軸２０を目標駆動方向に駆動させる場合に、モータ軸側ギア１９に印加する目標駆動方向への摩擦補償用トルクを徐々に増加させ、弾性変形量が最大弾性変形量に到達した以後では弾性変形量が最大弾性変形量に到達した時点での摩擦補償用トルクを一定値として印加するように構成したので、例えばロボット２の駆動を開始する場合などであり、弾性変形していない停止状態から出力軸２０を目標駆動方向に駆動させる場合に、このように弾性変形することを考慮して摩擦補償用トルクを印加することで摩擦補償を適切に行うことでロボット２の実際の動作軌跡をより理論に近づけることができ、ロボットの動作軌跡を高い精度で再現することができる。
【００６４】
又、モータ軸側ギア１９と出力軸側ギア２１とが停止しており且つ弾性変形量がゼロでない状態から出力軸２０を弾性変形方向と同一方向である目標駆動方向に駆動させる場合に、モータ軸側ギア１９に印加する目標駆動方向への摩擦補償用トルクを徐々に増加させ、弾性変形量が最大弾性変形量に到達した以後では弾性変形量が最大弾性変形量に到達した時点での摩擦補償用トルクを一定値として印加するように構成したので、例えばロボット２の動作途中で正転を一旦停止して正転を再開する場合などであり、弾性変形している停止状態から出力軸２０を弾性変形方向と同一方向である目標駆動方向に駆動させる場合にも、このように弾性変形することを考慮して摩擦補償用トルクを印加することで摩擦補償を適切に行うことができ、ロボットの動作軌跡の精度を適切に高めることができる。
【００６５】
又、モータ軸側ギア１９と出力軸側ギア２１とが停止しており且つ弾性変形量がゼロでない状態から出力軸２０を弾性変形方向と反対方向である目標駆動方向に駆動させる場合に、モータ軸側ギア１９に印加する目標駆動方向とは反対方向への摩擦補償用トルクを徐々に減少させた後にモータ軸側ギア１９に印加する目標駆動方向への摩擦補償用トルクを徐々に増加させ、弾性変形量が最大弾性変形量に到達した以後では弾性変形量が最大弾性変形量に到達した時点での摩擦補償用トルクを一定値として印加するように構成したので、例えばロボット２の動作途中で正転を一旦停止して正転を再開する場合などであり、弾性変形している停止状態から出力軸２０を弾性変形方向と反対方向である目標駆動方向に駆動させる場合にも、このように弾性変形することを考慮して摩擦補償用トルクを印加することで摩擦補償を適切に行うことができ、ロボットの動作軌跡の精度を適切に高めることができる。
【００６６】
更に、ロボット２の動作停止時では摩擦補償をオフすることなく更新を停止し、ロボット２の動作再開時では、ロボット２の動作再開時の摩擦補償とロボット２の動作再開直前の摩擦補償との差分を補正量として計算し、ロボット２の動作再開時の積分補償をロボット２の動作開始直前の積分補償から補正量を差引くことで計算するように構成したので、ロボット２の動作再開直後においても外乱力及び摩擦の和と積分補償及び摩擦補償の和との間で両者の均衡を保つことができ、ロボット２の動作開始から動作停止までの全体の動作軌跡の精度をより高めることができる。又、このように積分補償の状態量を変化させるだけで良いので、制御系の安定性に悪影響を与えることなく、単純な演算だけで実装可能である。
【００６７】
（第２の実施形態）
次に、本発明の第２の実施形態について、図２０乃至図２３を参照して説明する。尚、上記した第１の実施形態と同一部分については説明を省略し、異なる部分について説明する。第２の実施形態は、ロボット２の動作停止時にオーバーシュートの現象が発生することを考慮し、第１の実施形態で説明した動作開始時に行う摩擦補償と同様の制御を動作停止時にも行うことで、ロボット２の動作軌跡をより高い精度で再現するものである。
【００６８】
即ち、ロボット２の動作停止時では、停止指令がロボット制御装置３から出力された後に速度をゼロとするので、停止指令が出力されてから速度をゼロとするまでの僅かな期間がタイムラグとして発生する。又、物体には物理現象としての慣性が存在する。よって、停止指令が出力された後に上記したタイムラグ分だけ遅れて実際の速度がゼロとなる。ロボット２の動作としては、このタイムラグが発生している期間中の動作により、目標角度を僅かに越えてしまい（オーバーシュートしてしまい）、その後に目標角度に対して僅かに越えてしまったオーバーシュート分を戻す動作を行うことで、目標角度に近づけるようにしている。
【００６９】
一方、ロボット２は例えば生産性の効率が高いことが要求されていることから、なるべく短い時間で正確な位置に到達されることが要求されており、よって、上記したようなオーバーシュートが発生した状況でもなるべく短い時間で目標角度に到達することが要求されている。そこで、通常のトルク制御である時間と目標角度までの差で積分を行い、積分値に比例したトルクを印加するものであるが、この方法では、そもそもオーバーシュート分の角度が極めて僅かであり、全体の動作軌跡の精度を高めることを考慮すると、最初は極めて僅かな積分量では極めて僅かなトルクを印加することしかできず、オーバーシュート分を戻る（方向反転）時に発生する静止摩擦を超える（打ち勝つ）ことができない。最初から大きなトルクを印加してしまうと、静止摩擦を超えることができるようになるが、全体の動作軌跡を精度良く形成することができなくなる。
【００７０】
このような事情から、オーバーシュートした後では、オーバーシュート分を直ちに戻すことができず、外見的にオーバーシュートした角度であたかも停止した状態になる。その後、時間経過にしたがって積分が進み、積分値が一定値に達し、印加するトルクが方向反転時の静止摩擦を超えるようになると、そこで初めてオーバーシュート分を戻す制御を開始する。このようにオーバーシュート分を戻す制御を開始するまでに時間がかかり、オーバーシュートを解消するまでに時間がかかるという問題がある。
【００７１】
そこで、第２の実施形態では、ロボット２の動作停止時においても、目標角度とモータ軸側エンコーダ角度との差分の絶対値が最大弾性変形量角度よりも大きな角度である設定角度を超えていることを条件に、ロボット２の動作開始時に弾性変形量を考慮した摩擦補償を行うことと同様に、弾性変形量を考慮した摩擦補償を行うことにより、オーバーシュート分を戻す制御を早く開始し、オーバーシュートを解消するまでにかかる時間を短縮し、ロボット２の動作軌跡をより高い精度で再現するものである。
【００７２】
第２の実施形態では、ＣＰＵ１２は、弾性変形量更新処理を行い（ステップＳ４）、摩擦補償用トルク決定処理を行った後に（ステップＳ５）、停止時摩擦補償処理を行う（ステップＳ４１）。この停止時摩擦補償処理は第１の実施形態で説明した停止時チャタリング防止処理を含む処理である。ＣＰＵ１２は、メイン処理から停止時摩擦補償処理に移行すると、指令速度がゼロであるか否か（ロボット２の動作停止命令であるか否か）を判定する（ステップＳ３１）。
【００７３】
ここで、ＣＰＵ１２は、指令速度がゼロであると判定すると（ステップＳ３１にて「ＹＥＳ」）、第１の実施形態とは異なり、目標角度とモータ軸側エンコーダ角度との差分の絶対値を計算し、その計算した目標角度とモータ軸側エンコーダ角度との差分の絶対値が設定角度を超えているか否かを判定する（ステップＳ５１）。設定角度とは予め最大弾性変形量角度よりも大きな角度として設定された角度である。そして、ＣＰＵ１２は、目標角度とモータ軸側エンコーダ角度との差分の絶対値が設定角度を超えていると判定すると（ステップＳ５１にて「ＹＥＳ」）、第１の実施形態で説明したステップＳ３２以降の処理を行い、即ち、弾性変形量を考慮した摩擦補償を行う。これに対して、ＣＰＵ１２は、目標角度とモータ軸側エンコーダ角度との差分の絶対値が設定角度を超えていないと判定すると（ステップＳ５１にて「ＮＯ」）、第１の実施形態で説明したステップＳ３４以降の処理を行い、即ち、弾性変形量を考慮した摩擦補償を行うことはなく、続けて、現在の保存補償トルクを摩擦補償用トルクとして設定し、摩擦補償値を固定した停止時チャタリング防止の摩擦補償を行う。
【００７４】
尚、第１の実施形態で説明したように、ＣＰＵ１２は、メイン処理を所定周期（サンプリング単位周期）で行うことから、停止時摩擦補償処理を所定周期で行うことになり、即ち、指令速度がゼロであると判定し続けており、且つ目標角度とモータ軸側エンコーダ角度との差分の絶対値が設定角度を超えていると判定し続けている期間で、弾性変形量を考慮した摩擦補償を行う。
【００７５】
図２２は停止時摩擦補償処理を行わなかった場合の目標角度に近づくまでの挙動を示しており、図２３は停止時摩擦補償処理を行った場合の目標角度に近づくまでの挙動を示している。図２２及び図２３から明らかなように、停止時摩擦補償処理を行わなかった制御と停止時摩擦補償処理を行った制御とを比較すると、後者は前者よりも目標角度に近づくまでの戻り始め動作を開始するまでの時間が短いので、戻り始め動作を早く開始した分、目標角度とモータ軸側エンコーダ角度との差分の絶対値が設定角度の範囲内に収束するまでの時間が短くなっている。尚、停止時摩擦補償処理を行わなかった場合でのロボットの動作が停止される直前の摩擦補償用トルクは、停止指令が出力されたと同時に摩擦補償を行わなくなるので、図２２中「Ａ」にて示す位置であるが、一方、停止時摩擦補償処理を行った場合でのロボットの動作が停止される直前の摩擦補償用トルクは、停止指令が出力された以降でも実際の角度が設定角度の範囲内となるまで摩擦補償を継続するので、図２３中「Ｂ」にて示す位置である。
【００７６】
以上に説明したように第２の実施形態によれば、ロボット２の動作停止時においても、目標角度とモータ軸側エンコーダ角度との差分が最大弾性変形量角度よりも大きな角度である設定角度を超えていることを条件に、ロボット２の動作開始時に弾性変形量を考慮した摩擦補償を行うことと同様に、弾性変形量を考慮した摩擦補償を行うように構成したので、戻り始め動作を開始するまでにかかる時間を短縮することができる。これにより、ロボット２の動作開始時だけでなく動作停止時までも含めて動作軌跡をより理論に近づけることができ、ロボット２の動作軌跡を高い精度で再現することができる。
【００７７】
又、目標角度とモータ軸側エンコーダ角度との差分の絶対値が設定角度を超えなくなると（ある程度まで目標角度に収束すると）、第１の実施形態で説明した停止時チャタリング防止処理と同様の処理を行うように構成したので、ロボット２の動作停止時から動作開始時までの停止期間で外乱力及び摩擦の和と積分補償及び摩擦補償の和との間で均衡を保つことができ、ロボット２の動作開始時においても外乱力及び摩擦の和と積分補償及び摩擦補償の和との間で両者の均衡を保つことができ、ロボット２の動作開始から動作停止までの全体の動作軌跡の精度をより高めることができる。
【００７８】
（その他の実施形態）
本発明は、上記した実施形態にのみ限定されるものではなく、以下のように変形又は拡張することができる。
対象とするロボットは６軸の垂直多関節型ロボットに限らず他のロボットであっても良い。
【符号の説明】
【００７９】
図面中、２はロボット、３はロボット制御装置、１２はＣＰＵ（最大弾性変形量角度記憶手段、弾性変形量計算手段、弾性変形方向検出手段、モータ制御手段）、１６はモータ、１８はモータ軸、１９モータ軸側ギア、２０は出力軸、２１は出力軸側ギアである。
【図１】
2010240827.tif 000003
【図２】
2010240827.tif 000004
【図３】
2010240827.tif 000005
【図４】
2010240827.tif 000006
【図５】
2010240827.tif 000007
【図６】
2010240827.tif 000008
【図７】
2010240827.tif 000009
【図８】
2010240827.tif 000010
【図９】
2010240827.tif 000011
【図１０】
2010240827.tif 000012
【図１１】
2010240827.tif 000013
【図１２】
2010240827.tif 000014
【図１３】
2010240827.tif 000015
【図１４】
2010240827.tif 000016
【図１５】
2010240827.tif 000017
【図１６】
2010240827.tif 000018
【図１７】
2010240827.tif 000019
【図１８】
2010240827.tif 000020
【図１９】
2010240827.tif 000021
【図２０】
2010240827.tif 000022
【図２１】
2010240827.tif 000023
【図２２】
2010240827.tif 000024
【図２３】
2010240827.tif 000025