【文献】
雨海明博,高瀬國克,摩擦力情報を利用した作業状態の監視,日本ロボット学会誌,日本,社団法人日本ロボット学会,1999年10月15日,第17巻第7号,第103−108頁
(58)【調査した分野】(Int.Cl.,DB名)
前記移行区間演算部は、予め測定された前記関節の関節トルクより抽出された摩擦力トルク係数を用いて、前記関節の摩擦力トルクを演算することを特徴とする請求項1に記載のロボット装置。
前記移行区間演算部は、予め測定された前記関節の関節トルクより抽出された摩擦力トルク係数を用いて、前記関節の摩擦力トルクを演算することを特徴とする請求項3に記載のロボット装置の制御方法。
【発明を実施するための形態】
【0012】
以下に本発明の一実施形態について、
図1から
図8を参照して説明する。ここで、
図1から
図8は、本発明の一実施形態を示す図である。
【0013】
まず、
図1および
図2により、本発明の一実施形態によるロボット装置1の概略について説明する。
【0014】
図1に示すように、ロボット装置1は、ロボット本体2と、ロボット本体2に接続されロボット本体2の駆動を制御する制御装置3とを備えている。
【0015】
ロボット本体2は、ベース10と、ベース10から順次設けられ、6個の関節20〜25(第1関節20、第2関節21、第3関節22、第4関節23、第5関節24、および第6関節25)を介して、互いに連結された6個のアーム体30〜35(第1アーム体30、第2アーム体31、第3アーム体32、第4アーム体33、第5アーム体34、および第6アーム体35)とを備えている。
【0016】
図2に示すように、第1アーム体30に一体的に設けられて第1関節20を構成するアーム軸40は、その一端がベース10に取付けられた減速機41の出力側に接続されている。減速機41の入力側には駆動モータ42が接続され、駆動モータ42にはその回転角を検出する回転角検出手段であるエンコーダ43が設けられている。駆動モータ42が正回転または逆回転すると、その回転は減速機41で減速されてアーム軸40に伝達され、第1アーム体30が正方向または逆方向に回転する。
なお、第2関節21〜第6関節25についても、それぞれ第1関節20と同様にアーム軸40を有し、減速機41、駆動モータ42、エンコーダ43が設けられ、同様に動作するので、説明を省略する。
【0017】
次に、
図3および
図4により、制御装置3について説明する。
【0018】
図3に示すように、制御装置3は、位置指令部50と、θ・θ’・θ”演算部51と、サーボ制御演算部52と、関節トルク推定部53と、外力演算部54と、コンプライアンスモデル演算部55と、制御対象部56とを備えている。
制御装置3は、ロボット本体2の各関節20〜25のそれぞれの駆動モータ42に設けられたエンコーダ43の検出値に基づき、所定の制御周期にて位置指令部50が目標位置・姿勢に関する指令を発し、指令を受けた制御対象部56がそれぞれの駆動モータ42を作動させ、各関節20〜25を駆動する。
【0019】
θ・θ’・θ”演算部51は、位置指令部50が算出した目標位置・姿勢に関する指令と、後述するコンプライアンスモデル演算部55で得た修正量とを加算して、逆運動学に基づく演算を行い、関節角度指令θ、関節角速度指令θ’、関節角加速度指令θ”を算出する。
【0020】
サーボ制御演算部52は、θ・θ’・θ”演算部51で算出された関節角度指令θ、関節角速度指令θ’、関節角加速度指令θ”を基に、制御対象部56に発するトルク指令を算出する。
【0021】
関節トルク推定部53は、動力学モデルに基づき、各関節20〜25に作用する関節トルクを推定するが、その詳細については後述する。
【0022】
外力演算部54は、サーボ制御演算部52で算出されたトルク指令から関節トルク推定部53で推定された関節トルクの推定トルク値を減算することにより求められた誤差トルクを基に、推定外力を算出する。
【0023】
コンプライアンスモデル演算部55は、外力演算部54で算出された推定外力を基に、目標位置・姿勢に関する修正量を算出する。
【0024】
ここで、関節トルク推定部53による、各関節20〜25に作用する関節トルクの推定について、詳細を説明する。
【0025】
関節トルク推定部53は、動力学モデルのモデル式に基づき、関節トルクを推定する。
n個の関節に作用する推定関節トルクT(Θ)は、以下の式で表される。
T(Θ)=M(Θ)Θ”+B(Θ)[Θa’Θb’]+C(Θ)[Θ’
2]+G(Θ)+F(Θ’)
上式の各項は以下の通りである。
T(Θ):推定関節トルク行列(n行1列の行列)
Θ、Θ’、Θ”:それぞれ関節角度行列、関節角速度行列、関節角加速度行列(n行1列の行列)
Θ’
2:同じ関節の関節角速度積行列(n行1列の行列)
Θa’Θb’:異なる関節の関節角速度積行列({n・(n−1)/2}行1列の行列)
M(Θ):慣性(質量)行列(n行n列の行列)
B(Θ):コリオリ力行列(n行{n・(n−1)/2}列の行列)
C(Θ):遠心力行列(n行n列の行列)
G(Θ):重力行列(n行1列の行列)
F(Θ’):摩擦力行列(n行1列の行列)
なお、本実施形態では、ロボット本体2が6個の関節20〜25を有するので、n=6となる。
【0026】
図4に示すように、関節トルク推定部53は、上述の推定関節トルクT(Θ)の式に基づき、慣性トルク推定部60とコリオリ力トルク推定部61と遠心力トルク推定部62と重力トルク推定部63と摩擦力トルク推定部64を備えている。
【0027】
慣性トルク推定部60は、上述の推定関節トルクT(Θ)の式のM(Θ)Θ”の項に基づき、所定の制御周期で発せられる関節角度指令θと関節角加速度指令θ”に対して、慣性により生ずる慣性トルクを算出する。
【0028】
コリオリ力トルク推定部61は、上述の推定関節トルクT(Θ)の式のB(Θ)[Θa’Θb’]の項に基づき、所定の制御周期で発せられる関節角度指令θと関節角速度指令θ’に対して、コリオリ力により生ずるコリオリ力トルクを算出する。
【0029】
遠心力トルク推定部62は、上述の推定関節トルクT(Θ)の式のC(Θ)[Θ’
2]の項に基づき、所定の制御周期で発せられる関節角度指令θと関節角速度指令θ’に対して、遠心力により生ずる遠心力トルクを算出する。
【0030】
重力トルク推定部63は、上述の推定関節トルクT(Θ)の式のG(Θ)の項に基づき、所定の制御周期で発せられる関節角度指令θに対して、重力により生ずる重力トルクを算出する。
【0031】
摩擦力トルク推定部64は、上述の推定関節トルクT(Θ)の式のF(Θ’)の項に基づき、所定の制御周期で発せられる関節角度指令θと関節角速度指令θ’に対して、摩擦力により生ずる摩擦力トルクを算出する。
【0032】
関節トルク推定部53は、慣性トルク推定部60で算出された慣性トルクと、コリオリ力トルク推定部61で算出されたコリオリ力トルクと、遠心力トルク推定部62で算出された遠心力トルクと、重力トルク推定部63で算出された重力トルクと、摩擦力トルク推定部64で算出された摩擦力トルクとを加算することにより関節トルクを推定し、関節トルクの推定値を得る。
【0033】
各関節20〜25に作用する摩擦力トルクを算出するに当たり、関節角速度の増加に応じて各関節20〜25に作用する摩擦がクーロン摩擦から粘性摩擦に移行すること、および、関節角速度の減少に応じて各関節20〜25に作用する摩擦が粘性摩擦からクーロン摩擦に移行することから、摩擦力トルク推定部64は、クーロン摩擦モデルのモデル式に基づくクーロン摩擦力トルク推定部70と、粘性摩擦モデルのモデル式に基づく粘性摩擦力トルク推定部71とを備えている。
そして、クーロン摩擦モデルのモデル式と粘性摩擦モデルのモデル式が不連続である場合に、その接続が不連続となる関節角速度の前後で、推定される摩擦力トルクが急激に変化して各関節20〜25の駆動が乱れることを避けるために、摩擦力トルク推定部64は、さらに、クーロン摩擦力トルク推定部70から粘性摩擦力トルク推定部71への移行と、粘性摩擦力トルク推定部71からクーロン摩擦力トルク推定部70への移行を滑らかにする移行区間演算部72を備えている。
摩擦力トルク推定部64は、クーロン摩擦力トルク推定部70と粘性摩擦力トルク推定部71と移行区間演算部72との中から、関節角速度に応じて、いずれか1つを選択する切替えスイッチ73も有している。
【0034】
次に、クーロン摩擦力トルク推定部70と粘性摩擦力トルク推定部71と移行区間演算部72とにおける摩擦力トルクの推定と、切替えスイッチ73による切替えについて説明する。
【0035】
クーロン摩擦力トルク推定部70は、クーロン摩擦モデルに準じ、各関節20〜25の関節角度指令θと関節角速度指令θ’に対して、各関節20〜25に作用するクーロン摩擦力トルクFc(θ)を、Fc(θ)=fc×sgn(θ’)の式に従って演算して推定する。ただし、fcはクーロン摩擦モデルのモデル式に準じた所定の定数を表す。
【0036】
粘性摩擦力トルク推定部71は、粘性摩擦モデルに準じ、各関節20〜25の関節角度指令θと関節角速度指令θ’に対して、各関節20〜25に作用する粘性摩擦力トルクFv(θ)を、Fv(θ)=fv(θ’)の式に従って演算して推定する。ただし、fv(θ’)は、関節角速度指令θ’を変数とする粘性摩擦モデルのモデル式に準じた所定の関数を表す。
【0037】
移行区間演算部72は、各関節20〜25の関節角度指令θと関節角速度指令θ’に対して、各関節20〜25に作用する移行区間摩擦力トルクFt(θ)を、Ft(θ)=k×(θ−θs)+fc×sgn(θ’)の式に従って演算して推定する。ただし、kは後述する摩擦力トルク係数を表し、θsは所定の制御周期における前回指令時の関節角度指令を表す。
【0038】
摩擦力トルク係数kは、予め各関節20〜25を駆動し、各関節20〜25に影響を及ぼす摩擦が、関節角度の増加によりクーロン摩擦から粘性摩擦に移行する際の各関節20〜25に作用する関節トルクを測定して、その測定結果を解析することにより定められる。各関節20〜25の駆動モータ42の電流値とエンコーダ43の検出値とを所定のサンプリング周期で複数測定し、駆動モータ42の電流値を関節トルクに、エンコーダ43の検出値を関節角度に換算する。ロボット本体2の寸法や質量等に基づき、測定時に各関節20〜25に作用していた慣性トルクとコリオリ力トルクと遠心力トルクと重力トルクを算出し、換算された関節トルクからそれらを減算することにより、測定時に各関節20〜25に作用していた摩擦力トルクを抽出する。換算された関節角度と抽出された摩擦力トルクにより、測定に基づく関節角度と摩擦力トルクとの関係Fm(θ)を得る。
【0039】
大略、測定に基づく関節角度と摩擦力トルクとの関係Fm(θ)は、関節角度が微小な領域では、クーロン摩擦の影響により関節角度の変化に対して摩擦力トルクはほぼ一定となるが、この微小な領域を超えると、関節角度の増加に従い摩擦力トルクが滑らかに増加する。この摩擦力トルクが滑らかに増加する領域において、関節角度に対する摩擦力トルクの傾きkmを抽出し、その傾きkmを摩擦力トルク係数kとする。
【0040】
なお、本実施形態では、駆動モータ42の電流値を関節トルクに、エンコーダ43の検出値を関節角度に換算しているが、他の測定装置を用いて関節トルクと関節角度を測定してもよい。
【0041】
また、ロボット装置1が複数台ある場合は、それぞれのロボット装置1について摩擦力トルク係数kを求めることが好ましいが、同一工程で製作された同一仕様の複数台のロボット装置1については、いずれか1台のロボット装置1の摩擦力トルク係数kを求め、その摩擦力トルク係数kを残りのロボット装置1に適用してもよい。
【0042】
切替えスイッチ73は、各関節20〜25の関節角速度指令θ’に応じて、クーロン摩擦力トルク推定部70と粘性摩擦力トルク推定部71と移行区間演算部72との中から、いずれか1つを選択する。
各関節20〜25の回転方向が正回転の場合、関節角速度指令θ’は正の値となり、逆回転の場合、関節角速度指令θ’は負の値となる。
関節角速度指令θ’が、0≦|θ’|≦θ1’(0<θ1’)の範囲にあるとき、切替えスイッチ73はクーロン摩擦力トルク推定部70を選択して接続し、摩擦力トルク推定部64は、クーロン摩擦力トルク推定部70にて演算することにより、各関節20〜25に作用する摩擦力トルクを推定する。なお、θ1’は、クーロン摩擦切替え関節速度指令θ1’を表し、これについては後述する。
関節角速度指令θ’が、θ1’<|θ’|<θ2’(θ1’<θ2’)の範囲にあるとき、切替えスイッチ73は移行区間演算部72を選択して接続し、摩擦力トルク推定部64は、移行区間演算部72にて演算することにより、各関節20〜25に作用する摩擦力トルクを推定する。なお、θ2’は、粘性摩擦切替え関節速度指令θ2’を表し、これについては後述する。
関節角速度指令θ’が、θ2’≦|θ’|の範囲にあるとき、切替えスイッチ73は粘性摩擦力トルク推定部71を選択して接続し、摩擦力トルク推定部64は、粘性摩擦力トルク推定部71にて演算することにより、各関節20〜25に作用する摩擦力トルクを推定する。
なお、クーロン摩擦力トルク推定部70から粘性摩擦力トルク推定部71への直接の切替えと、粘性摩擦力トルク推定部71からクーロン摩擦力トルク推定部70への直接の切替えは行われない。
【0043】
クーロン摩擦切替え関節速度指令θ1’は、クーロン摩擦力トルク推定部70がクーロン摩擦モデルに準じて算出したクーロン摩擦力トルクFc(θ)と、測定に基づく関節角度と摩擦力トルクとの関係Fm(θ)とを比較し、Fm(θ)がFc(θ)を超えるときの関節角速度が適用される。
粘性摩擦切替え関節速度指令θ2’は、粘性摩擦力トルク推定部71が粘性摩擦モデルに準じて算出した粘性摩擦力トルクFv(θ)と、測定に基づく関節角度と摩擦力トルクとの関係Fm(θ)とを比較し、Fm(θ)がFv(θ)の最小値に到達するときの関節角速度が適用される。
【0044】
本実施形態において、切替えスイッチ73によるクーロン摩擦力トルク推定部70と移行区間演算部72との間の切替え、粘性摩擦力トルク推定部71と移行区間演算部72の間の切替えは、関節角速度指令θ’とクーロン摩擦切替え関節速度指令θ1’、粘性摩擦切替え関節速度指令θ2’とを比較することにより行われるが、切替えのための条件を、適宜、変更や付加してもよい。
例えば、本実施の形態において、移行区間演算部72から粘性摩擦力トルク推定部71への切替えは、関節角速度指令θ’が粘性摩擦切替え関節速度指令θ2’以上になった(θ2’≦|θ’|)時点で切替わるとしているが、関節角速度指令θ’が粘性摩擦切替え関節速度指令θ2’よりも速くなり(θ2’<|θ’|)、かつ、移行区間摩擦力トルクFt(θ)が粘性摩擦力トルクFv(θ)の最小値よりも大きくなった(|Fv(θ)の最小値|<|Ft(θ)|)時点で切替わるとしてもよい。
【0045】
本実施形態では、上述の関節トルクの測定、測定結果の解析、測定に基づく関節角度と摩擦トルクとの関係Fm(θ)の取得、関節角度に対する摩擦力トルクの傾きkmの取得、および、クーロン摩擦切替え関節速度指令θ1’、粘性摩擦切替え関節速度指令θ2’の取得は、オペレータによりオフラインにて実施されるが、制御装置3が実行するようにプログラムソフトを追加してもよい。
【0046】
図5に、各関節20〜25に対し、本実施形態の摩擦力トルク推定部64により推定される摩擦力トルクのグラフを示す。
横軸は関節角速度を、縦軸は摩擦力トルクを示し、白丸(○)印は摩擦力トルク推定部64により推定された摩擦力トルクを示す。
【0047】
区間Aと区間A’は、関節角速度指令θ’が0≦|θ’|≦θ1’の範囲であって、所定の制御周期にて、摩擦力トルク推定部64が、クーロン摩擦力トルク推定部70で演算して、摩擦力トルクを推定したものである。
区間Bと区間B’は、関節角速度指令θ’がθ1’<|θ’|<θ2’の範囲であって、所定の制御周期にて、摩擦力トルク推定部64が、移行区間演算部72で演算して、摩擦力トルクを推定したものである。
区間Cと区間C’は、関節角速度指令θ’がθ2’≦|θ’|の範囲であって、所定の制御周期にて、摩擦力トルク推定部64が、粘性摩擦力トルク推定部71で演算して、摩擦力トルクを推定したものである。
移行区間演算部72で推定された区間B、B’の摩擦トルクは、クーロン摩擦モデルのモデル式に基づき推定された区間A、A’の摩擦力トルクと、粘性摩擦モデルのモデル式に基づき推定された区間C、C’の摩擦力トルクを滑らかに接続している。
【0048】
区間B、B’の黒丸(●)印で示すように、従来通り、この区間の摩擦力トルクをクーロン摩擦力トルク推定部70により推定すると、区間Bと区間Cの境界、および、区間B’と区間C’の境界において、摩擦力トルクが急激に変化するため、各関節20〜25の駆動が乱れる可能性がある。
本実施形態によれば、摩擦力トルク推定部64が移行区間演算部72を備えているので、クーロン摩擦力トルク推定部70から移行区間演算部72を介して粘性摩擦力トルク推定部71へ、および、粘性摩擦力トルク推定部71から移行区間演算部72を介してクーロン摩擦力トルク推定部70へ、滑らかに移行する。
【0049】
次に、本実施形態によるロボット装置1の動作を、
図6に示すフローチャートを参照して説明する。
ロボット装置1は、
図6に示すフローチャートの如く制御される。
【0050】
ロボット装置1は、ステップS100においてサーボオンされ、制御装置3が起動する。
【0051】
ステップS101において、制御装置3は、そのメモリに保存されている動力学モデルに基づく推定関節トルクT(Θ)の式のパラメータを読み込む。読み込まれるパラメータは、関節トルク推定部53の慣性トルク推定部60、コリオリ力トルク推定部61、遠心力トルク推定部62、重力トルク推定部63に適用され、ロボット本体2の寸法や質量に基づき予め求められるアーム質量、リンクオフセット量、重心オフセット、重心周り慣性モーメント等と、摩擦力トルク推定部64に含まれるクーロン摩擦力トルク推定部70のクーロン摩擦力トルクFc(θ)の式に関する情報、粘性摩擦力トルク推定部71の粘性摩擦力トルクFv(θ)の式に関する情報、移行区間演算部72の移行区間摩擦力トルクFt(θ)の式の摩擦力トルク係数k、切替えスイッチ73のクーロン摩擦切替え関節速度指令θ1’、粘性摩擦切替え関節速度指令θ2’等である。
【0052】
ステップS102において、制御装置3は、そのメモリに保存されているロボット本体2の先端の到達すべき目標位置、姿勢を読み込む。
【0053】
ステップS103において、制御装置3は、その位置指令部50にて、各関節20〜25のそれぞれの駆動モータ42に設けられたエンコーダ43の検出値に基づき、所定の制御周期にて、目標位置・姿勢を算出し、目標位置・姿勢に関する指令を発する。
【0054】
ステップS104において、制御装置3は、目標位置・姿勢に関する指令を基に、そのθ・θ’・θ”演算部51にて、逆運動学に基づく演算を行い、関節角度指令θ、関節角速度指令θ’、関節角加速度指令θ”を算出する。
【0055】
ステップS105において、制御装置3は、関節角度指令θ、関節角速度指令θ’、関節角加速度指令θ”を基に、そのサーボ制御演算部52により、トルク指令値を算出する。
【0056】
ステップS106において、制御装置3は、トルク指令を基に、制御対象部56がそれぞれの駆動モータ42を作動させ、ロボット本体2の各関節20〜25を回転させる。
【0057】
ステップS107において、制御装置3は、ロボット本体2の各関節20〜25の位置・姿勢が到達すべき目標値になっていればステップS108に進みサーボオフする。目標値に達していなければ、ステップS103に戻る。
【0058】
なお、ステップS109において、制御装置3は、ステップS104にて算出された関節角度指令θ、関節角速度指令θ’、関節角加速度指令θ”を基に、その関節トルク推定部53にて、各関節20〜25のそれぞれに作用する関節トルクを推定し、ステップS110において、その推定された関節トルクの推定トルク値からステップS105にて算出されたトルク指令を減算して、誤差トルクを算出する。
ステップS111において、制御装置3は、誤差トルクを基に、その外力演算部54にて、推定外力を算出し、ステップS112において、推定外力を基に、そのコンプライアンスモデル演算部55にて、目標位置・姿勢の修正量を演算する。
この目標位置・姿勢の修正量は、ステップS103において演算される目標位置・姿勢に加算され、算出された目標位置・姿勢はコンプライアンス制御を考慮した目標位置・姿勢となる。
【0059】
次に、関節トルク推定部53の動作を、
図7に示すフローチャートを参照して説明する。
【0060】
関節トルク推定部53は、ステップS200において関節トルクの推定を開始する。
【0061】
ステップS201において、関節トルク推定部53は、慣性トルク推定部60により慣性トルクを算出する。
【0062】
ステップS202において、関節トルク推定部53は、コリオリ力トルク推定部61によりコリオリ力トルクを算出する。
【0063】
ステップS203において、関節トルク推定部53は、遠心力トルク推定部62により遠心力トルクを算出する。
【0064】
ステップS204において、関節トルク推定部53は、重力トルク推定部63により重力トルクを算出する。
【0065】
ステップS205において、関節トルク推定部53は、摩擦力トルク推定部64により摩擦力トルクを算出する。
【0066】
ステップS206において、関節トルク推定部53は、ステップS201〜ステップS205で算出された慣性トルクとコリオリ力トルクと遠心力トルクと重力トルクと摩擦力トルクを加算して、関節トルクを推定する。
そして、ステップS207において、関節トルク推定部53は、関節トルクの推定を終了する。
【0067】
次に、摩擦力トルク推定部64の動作を、
図8に示すフローチャートを参照して説明する。
【0068】
摩擦力トルク推定部64は、ステップS300において摩擦力トルクの推定を開始する。
【0069】
ステップS301において、摩擦力トルク推定部64は、切替えスイッチ73により、クーロン摩擦力トルク推定区間にあるか、ないか、すなわち関節角速度指令θ’が0≦|θ’|≦θ1’の範囲にあるか、ないかを判定する。関節角速度指令θ’が0≦|θ’|≦θ1’の範囲にある場合はステップS305に進み、ない場合はステップS302に進む。
ステップS305において、摩擦力トルク推定部64は、クーロン摩擦力トルク推定部70にてクーロン摩擦力トルクFc(θ)を演算することにより、摩擦力トルクを推定する。
【0070】
ステップS302において、摩擦力トルク推定部64は、切替えスイッチ73により、移行区間にあるか、ないか、すなわち関節角速度指令θ’がθ1’<|θ’|<θ2’の範囲にあるか、ないかを判定する。関節角速度指令θ’がθ1’<|θ’|<θ2’の範囲にある場合はステップS306に進み、ない場合はステップS303に進む。
ステップS306において、摩擦力トルク推定部64は、移行区間演算部72にて移行区間摩擦力トルクFt(θ)を演算することにより、摩擦力トルクを推定する。
【0071】
ステップS303において、摩擦力トルク推定部64は、切替えスイッチ73により、粘性摩擦力トルク推定区間にあるか、ないか、すなわち関節角速度指令θ’がθ2’≦|θ’|の範囲にあるか、ないかを判定する。関節角速度指令θ’がθ2’≦|θ’|の範囲にある場合はステップS307に進み、ない場合は摩擦力トルクが推定されないものとして、ステップS304に進む。
ステップS307において、摩擦力トルク推定部64は、粘性摩擦力トルク推定部71にて粘性摩擦力トルクFv(θ)を演算することにより、摩擦力トルクを推定する。
【0072】
ステップS304において、摩擦力トルク推定部64は、摩擦力トルクの推定を終了する。
【0073】
なお、本発明を実施するに当たっては、ロボット装置の具体的な構成により、適宜変更して実施できる。実行する作業に応じて、ロボット本体の関節およびアーム体の個数、および、それを制御する制御装置の制御点数が決定される。