(57)【特許請求の範囲】
【請求項１】
位置及び速度の状態フィードバックループを有し、各関節を駆動するモータの制御回路を備えたロボットの制御装置であって、
モータの動作指令値からモータの加速トルク及びモータの速度を維持するための速度  維持トルクを算出する手段と、
前記加速トルクと速度維持トルクを加算してモータの運動に必要な仮想トルク指令を算出する手段と、
前記算出結果に基づいてロボットの発生トルクを制限する手段とを有するロボットの制御装置において、
前記ロボットの発生トルクを制限する手段によって制限されたトルクに前記ロボットに作用する重力トルクを補償するトルクを加える重力補償手段を有し、
前記ロボットの発生トルクを制限する手段が、
ロボットヘの位置指令や速度指令の動作指令の状態によって前記動作指令を加速・等速、減速、指令なしの３つのモードに分類し前記モードに応じて発生トルクの制限方法を切り替える手段と、前記トルク制限に一定時間かかった際に接触や衝突が発生したと判断して動作を停止する手段とからなり、
前記ロボットの発生トルクを制限する手段は、前記指令なしモードおよび接触や衝突が発生したと判断した時点から前記指令なしモードに至るまでの間においてはトルク制限を０にすることを特徴とするロボットの制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はロボットに用いられるモータの制御系において、ロボットアームが周辺物体に衝突した場合のロボットアーム本体やツール、ワークの保護、あるいはロボットアームがオペレータに接触した場合の安全を確保することが可能な制御を実現する制御装置に関する。
【０００２】
【従来の技術】
従来のロボット関節を駆動するモータのサーボ系では、位置フィードバックループと速度フィードバックループを有し、指令との差であるサーボ偏差を増幅し、その増幅ゲインをできるだけ高くとることにより制御を行っている。図１３にロボットの従来の運動制御のブロック図を示す。図において、１０は軌道発生ブロックであり、ティーチペンダントＪＯＧキー１２の入力から、あるいはメモリ１３のデータからモータの運動の指令を生成する。メモリ１３にはあらかじめ教示された位置、速度等のデータ及び補間方法が保存されている。ティーチペンダント１２あるいはメモリ１３のデータをもとに、軌道生成部座標変換部１４で生成された軌道データは座標変換され、各関節のモータの回転指令として運動制御ブロック１１へ送られる。運動制御ブロック１１はモータのサーボ系であり、ロボット関節駆動モータ１５の位置・速度フィードバック信号と軌道生成部座標変換部１４で生成された各モータの運動指令とに基づいて制御信号を出力するサーボ制御系メインループ１６と、制御信号を電力増幅するアンプ１７を備えている。この運動制御ブロック１１は、ロボットの駆動系を構成しているモータの数だけ存在する。
【０００３】
図１４は、各関節で位置制御系を構成する場合の運動制御ブロック１１を更に詳しく示している。ここでは、１軸のサーボ系のみを記載しているが他のモータ軸に関しても同様の構成である。図１４において、Ｋｐは位置制御ゲイン、Ｋｖは速度制御ゲイン、Ｔｉは積分器の時定数である。ここで、従来においては、位置ループと速度ループのゲインＫｐ、Ｋｖは高めにトルク外乱の影響を受けにくくし、積分時定数Ｔｉは短めに設定することにより、位置の指令値に対してモータの追従性を良くしている。このような従来の制御方法では、指令値と現在値の差、すなわち制御偏差によりモータのトルクが発生する。制御偏差は通常、ロボットアームの慣性や制御装置の応答遅れなどサーボの追従遅れによるものと、ロボットアームに作用する重力や減速機の摩擦、その他、ロボットアームに作用する外力などのトルク外乱により発生する。ロボットを希望する位置や方向に動かす場合は、動作指令に対してはロボットは高速に追従することが望ましい。一方、ロボットが運動中、周辺の物体に衝突したり、人間に接触した場合には、それを出来るだけ速く運動を停止することが望ましい。
【０００４】
ところが、従来のロボット制御装置では、指令値応答、外乱応答ともに区別することなく、制御偏差が発生すれば、制御偏差量、もしくは偏差の過去の積算値に比例したトルクをモータにより発生していた。そのため、教示中に誤ってロボットを周辺の物体やワークに衝突させた場合には、教示ツールが変形する、さらにはロボット自体が破損するなどの不都合を起こしていた。ロボットが破損することは重大な問題であるが、教示ツールが変形することで、過去の教示データが使用不能になったり、教示データを変形ツールに合わせて変更するなど、めんどうな手続きが必要であるという問題があった。また、さらに重大なことは、教示者の安全性の問題である。すなわち、教示中はロボットの先端の微妙な位置決めを行う必要があるため、教示者はロボットの近傍で作業を行うことが多い。このとき、教示中に誤って教示者自身の体にロボットアームをぶつけてしまう、あるいは、ロボットアームと周辺ワークの間に腕などを挟む等の危険性がある。さらに、複雑なワーク、たとえば自動車の車体フレーム内に教示者が入り、微妙な位置決めなど行う場合に、ロボット動作速度の選択、ロボット動作方向のＪＯＧキーを押し間違う等の危険が常に存在していた。
【０００５】
このような教示時の安全面を考慮した方策として、柔軟教示モードを操作者に表示する方法がある。この教示モードにおける柔軟制御状態を表示するために、図１５に示すように、プログラムペンダント上ＬＣＤ４０１の文字表示や、教示状態表示灯４０２のような教示確認手段が設けられ、操作者は表示灯を確認しながら教示作業を行うようにしている。図１５中、４０３は制御盤４０５に設けられプレイ状態表示灯、４０４は制御盤４０５内に設けられたモード切替を行うリレー回路である。しかしながら、図１５に示すプログラムペンダント上ＬＣＤ４０１の文字表示や、教示状態表示灯４０２だけでは柔軟教示モードであることを操作者に知らせる効果が低く、教示時とプレイバック時のロボット４００のコントロール状態の相違を明確に教示者に通告できない。このため柔軟制御が有効でないプレイバック時にロボットの可動範囲に入ってしまう可能性があり危険であった。ロボットはプレイバックモードにおいて作業を短時間で行うため、頻繁に急加速、急減速を繰り返すことが多く、モータは非常に大きなトルクを発生させ、ロボットアームは高速で運動するため大きな運動エネルギーを有し、教示者にとって非常に危険である。また、教示モードでロボットが柔軟制御状態にある場合、ロボットの発生トルクが非常に小さく押さえられているため、外部から作用する力でロボットが容易に動作する。このようなロボットアームの動きが、ロボットアームとロボットの作業対象であるワークとの接触や、ロボットの周辺の機械との干渉を誘発し、不具合を引き起こすことがあった。
【０００６】
【０００７】
【０００８】
【発明が解決しようとする課題】
そこで本発明は、予期せぬ外乱力がロボットに作用した場合の、操作者の安全確保、あるいはロボットや周辺機器の破損防止を解決課題とする。
【０００９】
【課題を解決するための手段】
前記課題を解決するための手段は、位置及び速度の状態フィードバックループを有し、各関節を駆動するモータの制御回路を備えたロボットの制御装置であって、モータの動作指令値からモータの加速トルク及びモータの速度を維持するための速度維持トルクを算出する手段と、前記加速トルクと速度維持トルクを加算してモータの運動に必要な仮想トルク指令を算出する手段と、前記算出結果に基づいてロボットの発生トルクを制限する手段とを有するロボットの制御装置において、前記ロボットの発生トルクを制限する手段によって制限されたトルクに前記ロボットに作用する重力トルクを補償するトルクを加える重力補償手段を有し、前記ロボットの発生トルクを制限する手段が、ロボットヘの位置指令や速度指令の動作指令の状態によって前記動作指令を加速・等速、減速、指令なしの３つのモードに分類し前記モードに応じて発生トルクの制限方法を切り替える手段と、前記トルク制限に一定時間かかった際に接触や衝突が発生したと判断して動作を停止する手段とからなり、前記ロボットの発生トルクを制限する手段は、前記指令なしモードおよび接触や衝突が発生したと判断した時点から前記指令なしモードに至るまでの間においてはトルク制限を０にするものである。
【００１０】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。
図１は、本発明の第１実施例を示すものであり、運動制御ブロック１１に、各モータの運動指令から加速トルク及び速度トルクを演算する演算手段１８と、演算手段１８により演算された仮想トルク指令とサーボ制御系メインループ１６から得られたトルク指令を比較する比較器１９と、比較器１９の出力に基づいてブレーキを制御するブレーキ制御部２０を有している。その他の構成は従来例を示す図１３と同様である。図２は第１実施例における制御ブロック図を示している。図中、２１は時間遅れ補償のためのフィルタ、２２は関節駆動モータ１５の位置信号を記憶するメモリ、２５，２７は加減算器である。
本実施例において、ティーチペンダント上にはジョグキー１２と呼ばれる、ロボット誘導の動作ボタンが配置されている。ジョグキー１２を押すと、その時に選択されている座標系と速度に応じて、押下するジョグキー１２で示される方向にロボットが動作することになる。その時の信号の流れは、ジョグキー１２が押されるとその方向と大きさの情報が軌道生成部１４に入力される。軌道生成部１４では現在のロボットの指令に対して、指定座標系から基準座標系に変換された増分値が加算され新たなロボットの位置指令が生成される。基準座標系は通常ロボットのベースを中心とした直交座標系で表現されるため、動作指令値は実際のロボットの動作を行うためにロボットの関節座標系に変換され、モータのサーボ系の指令値となる。
【００１１】
各モータの制御を行うサーボ系では、例えば図３のブロック図で示されるような処理が行われる。図３において、位置指令信号は２つのブロック１０１，１０２の処理系に信号が分かれる。１つのブロックは通常のモータの位置、速度制御系１０１であり、もう１つは本発明で付加される制御系の処理系１０２のブロックである。速度制御系１０１では位置制御および速度制御が実施される。位置制御では比例制御、速度制御系では比例積分制御などが用いられることが一般的である。図３に示す制御系１０２は、仮想トルク指令を算出する部分である。通常のロボットの運動で必要となるトルクは、ロボットアームとロボットの先端負荷の両者を加速するトルク、運動状態で速度を維持するためのトルクの２種類である。１８−２は加速トルクの演算を行うブロック、１８−１は速度を維持するためのブロックを示している。ブロック１８−２では慣性と加速度の積から必要となるトルクが算出される。慣性の情報は、以下のいずれかの方法により求められる。
１）ロボットの関節の動きに応じて変動する値を演算により求める。
２）適応オブザーバなどのパラメータ同定手法を用いて推定する。
３）代表的な慣性の値を用いる。例えば常に一定の値を用いる、あるいは変位に応じてテーブルから値を引く。図３は１）の場合の例を示している。
【００１２】
ブロック１８−１では速度を維持するためのトルクが算出される。速度トルクはほぼ動摩擦の値に等しい。従って、あらかじめ求めた速度と摩擦の関係を用いて、現在の速度から必要なトルクを求めることができる。ブロック１８−１，１８−２で算出され、加算器２４で加算されたトルクの加算値はロボットが運動を行うトルクとほぼ等しい値である。演算結果は仮想トルク指令１０３として、加減算器２５により、メインループ（ブロック１０１）のトルク指令１０４より減算され、予め設定した値１０５と比較され、予め設定した値１０５より大きいときはブレーキ制御装置２０によりロボットの運動を停止する。ロボットアームが外部環境に接触などを起こした場合には、位置速度制御系の制御偏差が発生してメインループ（ブロック１０１）のトルク指令１０４は大きな値になるが、位置指令の変化はないため仮想トルク指令１０３は通常の動作で得られる値になり差が生じる。この差を予め設定した値１０５と比較し、その比較した結果の符号によりロボットの運動を停止する。重力方向に動くロボットでは重力トルクは１０６で示される補償演算をもとにメインループで補償されるため、仮想トルク指令値が重力の影響で大きくズレを生じることはない。重力補償演算は、例えばロボットの関節角度とアームの重心位置、重量から必要となるトルクを算出することで行われる。ブロック１８−１，１８−２で生成される仮想トルク指令１０３とメインループのトルク指令１０４の発生時間のずれを補償するために、ロボットの加速トルクの算出手段の後段あるいは速度維持トルクの算出手段の後段に高周波成分を除去するフィルタ２１を有する。フィルタ２１は一般的な１次遅れフィルタや２次遅れフィルタにより調整することが可能である。
【００１３】
以上の説明はティーチングペンダントで教示を行う場合を例にとって説明をおこなったが、プレイバックの状態でも当然用いることができる。プレイバック時にはティーチペンダントのかわりにメモリ１３から軌道生成部１４にデータの情報が払い出される。メモリ１３にはあらかじめ教示されたロボットの位置、姿勢の情報が保存されている。また、本発明はロボットに力センサを取け付け、操作者が加える力を計測しロボットを誘導するタイプの、いわゆるダイレクトティーチングのロボットにも適用が可能であり、教示者の安全を確保する上で有効に作用する。ダイレクトティーチング時にはティーチペンダントの代わりに力センサの信号からロボットの運動指令を生成し、軌道生成部１４にデータの情報が払い出される。このように、ダイレクトティーチではロボットを直接把持しての作業となるため、本発明は特に有効に作用する。
【００１４】
図４は本発明の第２実施例を示すものである。本実施例では、運動制御ブロック１１に、トルク制限値をサーボ制御系メインループ１６に与えるかどうかの切り替えを行う切替スイッチ２３を設け、切替スイッチ２３をオンにしたときに、各モータの運動指令から加速トルク及び速度トルクを演算する演算部１８によりトルク制限値を演算するようにしたものである。以下、本実施例について説明する。図４に示すジョグキー１２を押すと、その時に選択されている座標系と速度に応じて、押下するジョグキー１２で示される方向にロボットが動作することになる。そのときの信号の流れは、ジョグキー１２が押されるとその方向と大きさの情報が軌道生成部１４に入力される。軌道生成部１４では、現在のロボットの指令に対して、指定座標系から基準座標系に変換され増分値が加算され新たなロボットの位置指令が生成される。基準座標系は通常ロボットのベースを中心とした直交座標系で表現されるため、動作指令値は実際のロボットの動作を行うためにロボットの関節座標系に変換され、モータのサーボ系の指令値となる。
【００１５】
各モータの制御を行うサーボ系では、例えば図５のブロック図で示されるような処理が行われる。図５において、位置指令信号は２つのブロックの処理系に信号が分かれる。１つのブロックは通常の位置、速度制御系２０１であり、もう１つは本発明で付加される制御系の処理系２０２のブロックである。ブロック２０２の処理系では位置制御および速度制御が施される。位置制御では比例制御、速度制御系では比例積分制御などが用いられることが一般的である。図５で示す２０２の制御系は、運動に必要となるトルクをもとにトルク制限値を算出する部分である。通常のロボットの運動で必要となるトルクは、ロボットアームとロボット先端負荷の両者を加速するトルク、運動状態で速度を維持するためのトルクの２種類である。図５の実施例では、ロボットの関節の動きに応じて変動する慣性を演算により求める場合の例を示している。ブロック１８−１では速度を維持するためのトルクが算出される。速度トルクはほぼ動摩擦の値に等しい。従って、あらかじめ求めた速度と摩擦の関係を用いて、現在の速度から必要なトルクを求めることができる。ブロック１８−１，１８−２で算出されたトルクの加算値はロボットが運動を行うトルクとほぼ等しい値である。計算結果は、トルク制限値演算ブロック２０３ヘ入力される。ここでは、前段の演算をもとにメインブロック２０１で発生するトルクの制限値を演算する。ここでは、制限値は前段で制限された値に適度幅を設けることにより求めている。幅を設ける理由は、１つは、指令トルクと発生トルクが必ずしも一致していないことがあるため、その誤差を吸収することである。上記で述べた通り、ブロック２０３で演算された制限値がロボットの運動で必要となるトルクからずれが生ずることがありうる。このような状態は先端負荷の質量などの正確な情報が得られない場合などに起こりうる。したがって、指令通りの正確な運動が必要とされるプレイバック動作では制御ブロック２０２を用いず、教示モードでのみブロック２０２が機能するよう切り替えることができる。図４では切り替えスイッチ２３がこの部分の働きを行う。
【００１６】
また、図６は操作者に教示時であることを知らせる例を示している。ロボット上に表示ランプ３１を取り付け、教示時には制御盤３３内のリレー回路３２が作動して表示ランプ３１を任意の点灯パターンで表示させ操作者に通知する。
【００１７】
【００１８】
【００１９】
【００２０】
次に、本発明の第３実施例を説明する。図７に示す第３実施例は、図４に示す第２実施例の構成に、ロボット関節駆動モータの回転位置を検出するエンコーダ３４から、その回転位置を現在値として軌道生成部１４にフィードバックするようにしたものである。本実施例において、ティーチングペンダント上にはＪＯＧキーと呼ばれる、ロボット誘導の動作ボタンが配置されている。ＪＯＧキー１２を押すと、そのときに選択されている座標系と速度に応じて、押下するＪＯＧキーで示される方向にロボットが動作することになる。そのときの信号の流れは、ＪＯＧキー１２が押されるとその方向と大きさの情報が軌道生成部１４に入力される。軌道生成部１４では現在のロボットの指令に対して、指定座標系から基準座標系に変換された増分値が加算され新たなロボットの位置指令が生成される。基準座標系は通常ロボットのベースを中心とした直交座標系で表現されるため、実際のロボットの動作を行うためにロボットの関節座標系に変換される。関節座標系での変位の値は時間あたりの変位量としてロボットの関節を駆動するパルス列に変換される。変換されたパルス列は関節を駆動するサーボ系への位置指令信号となる。各モータの制御を行うサーボ系では例えば図８のブロック図で示されるような処理が行われる。図８で、位置指令信号は２つのブロックの処理系に信号が分かれる。１つは通常のモータの位置、速度制御系２０１であり、もう１つは本発明で付加される制御系の処理系２０２である。２０１の処理系では位置制御および速度制御が施される。位置制御では比例制御、速度制御系では比例積分制御などが用いられることが一般的である。
【００２１】
図８で示す２０２の制御系は、運動に必要となるトルクを算出する部分である。通常のロボットの運動で必要となるトルクは、ロボットアームとロボットの先端負荷の両者を加速するトルク、通常の運動状態で速度を維持するためのトルクの２種類である。１８−２は加速トルクの演算を行うブロック、１８−１は速度を維持するためのブロックを示している。ブロック１８−２では慣性と加速度の積から必要となるトルクが算出される。慣性の情報は、以下のいずれかの方法が用いられる。
１）慣性はロボットの動きに応じて変動する値を演算により求める。
２）適応オブザーバなどのパラメータ同定手法を用いて推定する。
３）代表的な慣性の値を用いる。
図８では１）の場合を示している。ブロック１８−１では速度トルクが算出される。速度トルクはほぼ動摩擦の値に等しい。従って、あらかじめ求めた速度と摩擦の関係から、現在の位置指令の速度を求めることで必要なトルクを求めることができる。
【００２２】
ブロック１８−１，１８−２で算出されたトルクの加算値はロボットが運動を行うトルクとほぼ等しい値である。計算結果はトルク制限値演算ブロック２０３ヘ入力される。ここでは、前段の演算をもとにメインブロック２０１で発生するトルクの制限値を演算する。制限値は前段で演算された値に適度な幅を設けることにより求めることができる。ここで適度な幅を設ける理由は、指令トルクと発生トルクが必ずしも一致していないことがあるため、その誤差を吸収すること、また、時間的な発生トルクのずれを吸収することである。時間的なずれの補償とは、指令値により発生トルクを演算した瞬間のトルクとメインブロック２０１で発生するトルクが時間的なずれを生ずる可能性があり、その誤差をトルクの制限の幅で吸収することである。この時間的なずれは演算ブロックの出力に時間遅れを補償するフィルタ２１を挿入することでも吸収することができる。フィルタは一般的な１次遅れフィルタや２次遅れフィルタにより調整する事が可能である。
【００２３】
このようなトルク制限を設けることによる物理的な作用の説明を次に行う。ブロック２０１で示される制御系のメインループではロボットに外部からの力が作用した場合、位置偏差と速度偏差が発生する。位置偏差は定数倍され速度指令となり、速度偏差は比例積分制御され、その出力はモータのトルク指令となる。ロボットに特別の外力が作用しない場合、モータで発生すべきトルクは加速トルク、速度トルクである。通常の動作でロボットが運動するためには上記のトルクを発生すれば良い。ところが、ロボットに外部から力が作用する（またはロボット自身が外部に接触する）場合には、外力によりロボットが動作し前述の制御偏差が発生することになる。従って、そのときの指令トルクはブロック２０２で演算を行ったトルクの制限域から逸脱したものになる。制限がなければその可能な限りのトルクが発生することになる。適度に制限された場合には制限内のトルクが発生し、外部からの力により偏差をゆるす、すなわちロボットが外力により動くことになる。また、重力方向に動くロボットでは重力トルクはメインブロック２０１で補償されるため、トルク制限演算ブロック２０３によりメインループのトルクが小さく抑えられた場合でも、ロボットアームが重力で落下するなどのことはない。
【００２４】
次にトルクの制限の方法を図９を用いて具体的に述べる。図９はロボットアームの１つの関節の運動に着目した場合である。関節５は図９（ａ）で示されるような加速、等速、減速の運動指令が与えられるものとする。図９（ｂ）は図８の信号２０５、図９（ｃ）は図８での信号２０６を表している。また、図９（ｄ）の細線はトルク制限ブロックでのトルク制限の上限値と下限値を表している。下限値については例えば、アームを進行方向に押すような場合に下限値にかかることが考えられる。しかしながら、このような場合はほとんど現れることはなく、また危険な方向ではないので、必ずしもトルク制限の下限値を設定する必要はない。トルク制限の一例を図１０を用いてさらに詳しく説明する。図１０は図９と同様、１つの関節の運動に着目した場合であり、図１０（ａ）のような加速、等速、減速の運動指令が与えられたときの通常動作のトルク制限の状態（ｂ）とぶつかり時のトルク制限の状態（ｃ）を示している。ここでは簡単に上限値のみを示している。図１０（ｂ）では、まず、速度指令（一定時間当たりの位置指令）がないときにはモード０として、トルク出力（図８のトルク制限部２０４の出力）を０にする。このような運動指令がない場合でも図８のトルク制限演算２０３の結果は上記で述べたように適度な幅を持っているので、位置偏差が生じた場合にはそれを解消するような方向にある程度のトルクが出力される。従ってロボットアームが指令を待っている状態で停止しているときに作業者の手でアームを押す際にはトルク制限の幅の分以上の力で押さなければならない。
【００２５】
しかしながら、このとき上述のようにモード０としてトルク出力を強制的に０にすれば、人間の手で軽く動かすことができる。このときにも、図８のように後段で重力補償１０６が施されるので、重力方向にアームが落下するようなことはない。これは、例えば、操作ミスにより作業者の腕がワークとロボットの間に挟まれて止まった場合などに有効であり、簡単にアームを手で押して回避させ、脱出することが可能である。このような場合、従来では操作者自身や共同作業者が非常停止ボタンを押すか、モータが過負荷状態になって非常停止が作用するまでロボットは動き続けることになる。非常停止が働くと、モータの供給電源を遮断すると共に、ブレーキが作動しロボットは運動を停止する。ブレーキが作動するとロボットは機械的にロックされた状態になり、挟みこまれた教示者は自力では脱出できなかった。速度指令区間では図９で説明したようにモード１としてトルク制限演算２０３で計算されたトルク制限を施す。速度指令区間後ある一定時間を減速区間、モード２とする。この区間では速度指令はないが、減速しながら最終的な指令位置に行き着くまで動作している。この区間では図９のようにトルク制限演算２０３の結果でトルク制限してもよいし、図１０（ｂ）のように一定のトルク制限を施してもよい。このときはモード１のトルク制限値をそのまま用いたり、あるいは、予め測定しておいた摩擦分のトルクをトルク制限値として用いる。すなわち最終的な位置決めに必要な最低限のトルク制限をしておき、この区間として十分指令位置へ行き着く時間を設定しておけば、運動指令に対しての追従性は確保される。また、一定時間後はモード０へ移行する。
【００２６】
ロボットアームが動作中に周辺の物体５１に接触した場合は、図１０（ｃ）のように、モード１でトルク制限値にかかるが、このとき一定時間このトルク制限値にかかり続ければ、ぶつかったと判断してトルク出力（図８のトルク制限部２０４の出力）を０にする。ぶつかりを検出した場合は強制的にモード３へ移行し、トルク出力を０にするとともに、アラームを発生させ作業者にこれを知らせる。このとき仮に教示者がロボットアームの接触に気がつかず、ＪＯＧキーを押し続けており、速度指令が発生している場合でも、トルク出力（図８のトルク制限部２０４の出力）は０となっているので、周辺物体への接触力は十分小さいものとなる。またこのぶつかりを検出する一定時間内でも、トルク制限ブロック２０４により速度を維持するためのトルクにある程度の幅を持たせたトルクのみが発生トルクであるため、衝撃は十分小さいものになる。ぶつかりを検出後、教示者がＪＯＧキーを離して速度指令がなくなればモード０へ移行する。ぶつかりを検出する時間は短ければ短いほどよいが、上述したように指令トルクと発生トルクとの誤差や時間的なずれのために、ぶつかってもいないのに誤ってぶつかったと判断されないように適度に調整する必要がある。ロボットアームが周辺物体に接触した後や、さらにその後ロボットアームを作業者の手で回避させた後では大きな位置偏差を生じる。例えば図８のサーボ系２０１ではこのとき位置偏差が大きくなっている。しかし、軌道発生ブロック１０からの指令がなければモード０でトルク出力（図８のトルク制限部２０４の出力）は０になっているので、ロボットアームが動くことはない。ただし、教示者が再びＪＯＧキーを押して指令が発生した場合にはその指令に応じたトルクに加えて、位置偏差分のトルクも発生してしまうので大変危険である。ここで、ぶつかりを検出した際に残った位置偏差や過去の偏差の積算値をクリアすることでこのような危険が回避できる。
【００２７】
しかしながら、これだけでは図１１（ｂ）のように軌道発生ブロック１０で指令した位置と現在の位置（エンコーダ値）とは矛盾が生じたままであり、そのまま続けて動作させてもこの指令値と現在値との差は残ったままである。特に、直線補間をさせながらロボットアームの先端を直線移動させるような場合では、この差のために座標系が歪んでしまい、思った通りの直線動作ができなくなってしまう。そこで、軌道発生ブロック１０で保持している指令値をエンコーダ３４の現在の値で再生成すれば、このような矛盾を解消でき、ぶつかった後でも再び正確な直線動作が可能となる。このような指令値の再生成のタイミングとしては例えば、指令値と現在値との比較によって、大きな偏差を検出したときに行ったり、モード０のときに行ってもよい。あるいはモード０で指令値と現在値との大きな偏差を検出したときに行ってもよい。また、大きな偏差が生じたときやぶつかりを検出した際にアラームを発生し、操作者がアラームリセットを行うときに指令値の再生成を行っても良い。ロボットアームの動作中は常に指令値と現在値との定常的な偏差が存在するのでこれは停止中に行うべきである。以上の説明はティーチングペンダントで教示を行う場合を例にとって説明をおこなったが、プレイバックの状態でも当然用いることができる。プレイバック時にはティーチペンダントのかわりにメモリから軌道生成ブロックにデータの情報が払い出される。メモリにはあらかじめ教示されたロボットの位置、姿勢の情報が保存されている。
【００２８】
さて、ブロック２０３で演算されたトルク制限値がロボットの運動で必要となるトルクからのずれが大きく生ずることがありうる。このような状態は先端の負荷の重力の正確な情報が得られない場合などに起こり得る。したがって、指令通りの正確な運動が必要とされるプレイバック動作では制御ブロック２０２を用いず、教示モードでのみブロック２０２が機能するよう切り替えることができる。図７では切り替えスイッチ２３がこの部分の働きを行う。教示モードにおいても負荷の変動等、必ずしも指令通りにロボットの動きが行われない場合が起こり得る。このような場合、エンコーダなど現在のロボットの関節の変位量を教示データとしてメモリ１３に保存することで、教示者の意図したポイントの位置及び姿勢が登録されることになる。また、本実施例はロボットに力センサを取け付け、操作者が加える力を計測しロボットを誘導するタイプの、いわゆるダイレクトティーチングのロボットにも適用が可能であり、教示者の安全を確保する上で有効に作用する。ダイレクトティーチングではロボット近傍での作業となるため、本実施例は特に有効である。
【００２９】
図１２は上記実施例のハードウェア構成を示している。図７の軌道発生ブロック１０と軌道生成部１４と運動制御ブロック１１がそれぞれ図１２のシステム制御基板６０１とティーチングペンダント６０２、演算基板６１１、サーボ基板６２１とサーボアンプ６２６に対応している。それぞれの基板は共有のバスによって接続されている。軌道発生ブロック６００において、ティーチングペンダント６０２で教示したデータは不揮発性メモリ６０６に記憶される。また、ロボットの機構的、制御的なパラメータもこの不揮発性メモリ６０６に記憶されており、バスで共有化されている。軌道発生の機能はＲＯＭ６０４に格納されたプログラムをＣＰＵ６０３が実行することによって実現される。軌道生成ブロック６１０においては、軌道生成や座標変換の機能はＲＯＭ６１３に格納されたプログラムをＣＰＵ６１２が実行することによって実現される。図８における制御ブロックは運動制御ブロック６２０のサーボ基板６２１の中のＲＯＭ６２３にプログラムされている。このプログラムをＣＰＵ６２２が読み込んで実行することによって実際にトルク制限処理が行われ、その結果がサーボアンプ６２６に出力される。さらにダイレクトティーチングを行う場合は、センサブロック６３０を追加することによって実現可能となる。センサ基板６３１では力センサ６３７の値をＡＤ変換部６３３で読み込み、インピーダンス制御などの力制御手段によって位置修正量等が出力される。
【００３０】
以上説明したように、第３実施例によれば、従来のロボットのモータの制御系に動作指令から生成される新たなブロックを付け加え、ロボットの関節を駆動するモータの発生トルクを制限することで、ロボットの運転中に外部環境にロボットアームが衝突する、あるいはロボットアームに外部の機械等が衝突するなどした場合、ロボットが柔軟に変形することで、ロボットやワーク、あるいは外部の機械が損傷することがなくなる。また、教示中の操作者の安全が守られるなど従来のロボットでは実現が不可能であった安全な制御機能を具備することが可能となる。また、衝突があった場合、ぶつかりが検出されトルク出力（トルク制限部の出力）を０にするモードによって接触力を十分小さくすることができ、ロボットアームを人間の力で安全な位置・姿勢に軽く回避させることができる。あるいは衝突がなくても、ロボットアームが停止しているときにも人間の力で軽く動かすことができる。このようにトルク出力が０であっても、重力トルク分は常に加算されており、アームが落下することはない。さらに、減速区間で最終位置決めに必要な最低限のトルクを出力することによって最終的な指令値まで行き着くことが可能である。このように柔軟な性能を持ちながら、指令に対する追従性を確保できる。また、ぶつかった後や人間の力でロボットアームを動かした場合でも制御偏差をクリアし、エンコーダの現在値から指令値を再生成することによって、サーボ電源を落とさずにそのまま正確な直線動作など、教示作業を続けることが可能となる。
【００３１】
【発明の効果】
以上説明したように、本発明によれば、ロボットの運転中にロボットが外部環境に衝突したり、ロボットアームに外部の機械が衝突した場合、ロボットやワークあるいは外部の機械の損傷がなくなり、また、教示中の操作者の安全が守られるなど、従来のロボットでは実現が不可能であった安全な制御機能が可能となる。
【図面の簡単な説明】
【図１】  本発明の第１実施例を示すブロック図である。
【図２】  第１実施例のサーボ制御部のブロック図である。
【図３】  第１実施例の制御部の詳細を示すブロック図である。
【図４】  本発明の第２実施例を示すブロック図である。
【図５】  第２実施例の制御部の詳細を示すブロック図である。
【図６】  教示状態表示器の例を示す説明図である。
【図７】  本発明の第３実施例を示すブロック図である。
【図８】  第３実施例のサーボ系制御ブロック図である。
【図９】  第３実施例の作用を示すグラフである。
【図１０】  第３実施例の各状態を示すグラフである。
【図１１】  第３実施例のアームの状態を示す図である。
【図１２】  第３実施例におけるハードウェア構成を示す図である。
【図１３】  従来の制御装置の信号の流れを示すブロック図である。
【図１４】  従来のモータのサーボ制御部のブロック図である。
【図１５】  従来の教示モード確認方法を示す説明図である。
【図１】
0004055090.tif 000002
【図２】
0004055090.tif 000003
【図３】
0004055090.tif 000004
【図４】
0004055090.tif 000005
【図５】
0004055090.tif 000006
【図６】
0004055090.tif 000007
【図７】
0004055090.tif 000008
【図８】
0004055090.tif 000009
【図９】
0004055090.tif 000010
【図１０】
0004055090.tif 000011
【図１１】
0004055090.tif 000012
【図１２】
0004055090.tif 000013
【図１３】
0004055090.tif 000014
【図１４】
0004055090.tif 000015
【図１５】
0004055090.tif 000016