(57)【特許請求の範囲】
【請求項１】
関節軸及び前記関節軸に駆動力を伝達する駆動軸を有するロボットを制御するロボット制御装置であって、
前記関節軸を制御周期毎に駆動するアクチュエータと、
前記駆動軸の角度を検出する駆動軸角度検出部と、
前記駆動軸の角度から前記関節軸の角度を算出する関節軸角度算出部と、
前記関節軸の角度から前記ロボットの先端位置を算出する先端位置算出部と、
前記先端位置の位置指令値と、前記先端位置との位置誤差を算出する位置誤差算出部と、
前記関節軸の角度に基づいて前記先端位置での作業座標系と関節座標系との間のヤコビ行列を算出するヤコビ行列算出部と、
関節角差分を算出する関節角差分算出部と、
前記関節角差分に基づいて関節のトルク指令値を算出するトルク指令値算出部と、
前記トルク指令値に基づいて前記アクチュエータを駆動する駆動部と、
前記関節軸の角度から前記関節軸を駆動するのに必要な駆動トルクを推定する駆動トルク推定部と、
推定された前記駆動トルクと前記トルク指令値との差を外部トルクとして算出する外部トルク算出部と、
前記外部トルクと前記ヤコビ行列から前記外部トルクの要素が０とならない前記外部トルクの部分ベクトルを求めるとともに前記部分ベクトルに関連し外力が作用している外力作用関節軸に関する部分ヤコビ行列を求め、この部分ヤコビ行列と前記部分ベクトルとから前記外力作用関節軸に作用する外力を算出する外力算出部と、
前記外力作用関節軸におけるコンプライアンスモデルを記憶するコンプライアンスモデル記憶部と、
前記コンプライアンスモデルを用いて、前記外力に応じて前記外力作用関節軸での作業座標系位置に対するコンプライアンス修正量を算出するコンプライアンス修正量算出部と、
前記コンプライアンス修正量と前記部分ヤコビ行列から関節角差分修正量を算出する関節角差分修正量算出部と、
を備え、
前記関節角差分算出部は、前記位置誤差と前記ヤコビ行列から逆運動学計算により修正前の関節角差分を算出し、前記修正前の関節角差分と前記関節角差分修正量との和を関節角差分として出力するロボット制御装置。
【請求項２】
前記コンプライアンス修正量を記憶する修正量記憶部と、
前記修正量記憶部に格納された複数の修正量からコンプライアンスパラメータを修正するコンプライアンスパラメータ修正部と、
を更に備える請求項１記載のロボット制御装置。
【請求項３】
前記コンプライアンスパラメータ修正部が前記制御周期よりも大きな周期で実行される請求項２記載のロボット制御装置。
【請求項４】
前記外力算出部によって算出された前記外力と許容値とを比較し、前記外力が前記許容値を超えている場合には前記外力を許容値とし、最小値以下の場合には前記外力を０とする算出外力制限部を更に備えている請求項１乃至３のいずれかに記載のロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータなどのアクチュエータを用いてロボットを駆動するロボット制御装置に関する。
【背景技術】
【０００２】
操作者により指定された動作経由点をロボットが通過していく過程で、操作者が所望する動作の再現実行を行う動作の教示により、ロボットは組立作業などの複雑な動作を実現できる。操作者がロボットに動作を教示する方法としては、操作盤を用いてロボットの各関節やロボットの先端およびツールの位置および姿勢を指定していく間接教示と、ジョイスティックなどを用いた先端の自由度を模したポインティング装置あるいは先端部に取り付けたハンドルを操作者が操作する直接教示とがある。【０００３】
ハンドルを用いた直接教示は操作者にとって直感的であるため、教示にかかる時間を短縮させるというメリットがある。直接教示を実現させる方法としては、ロボットの一部の関節のサーボをフリー状態にして位置姿勢を指定する方法、静止時においてロボットの姿勢を維持するために必要なトルクのみを関節に与えておく方法(重力補償)などがある。しかし、操作者が関節を動かすためには、関節の減速機に起因する摩擦力に打ち勝つだけの外力を与える必要があるため、操作性はあまり良くない。そこでハンドルの取り付け部に力覚センサを設けて、操作者による操作力を入力とする力制御系を構築する方法が用いられることがある。またハンドなどのツールと対象物との衝突を検出するためにさらに力覚センサを取り付けているケースもある（例えば、特許文献１参照）。【０００４】
しかし力覚センサは高価である上に、衝撃に対して脆弱であるため、力覚センサの使用が敬遠されることが多い。また、力覚センサはロボットの先端部付近に取り付けられることが多いため、リンク部へ付加された外力の検出はできない。【０００５】
付加的なセンサを用いずに、ロボットの先端部の衝突を検出する方法としては、関節の位置指令などから関節の必要駆動トルクを算出し、算出した必要駆動トルクと、各関節を駆動するモータの電流から求まる駆動トルクとを比較することでロボットの先端部の衝突の判別を行う方法が知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第３３０７７８８号公報
【特許文献２】特許第３８７８０５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
このように、従来の技術は、ロボットの先端部の衝突の検出を行うことができる。直接教示の場合においては、先端部だけでなく、各リンク部への操作による教示が必要となるが、従来技術では、リンク部の衝突、すなわちリンク部へ付加された外力を検出することができないので、リンク部への直接教示を行うことができなかった。【０００８】
そこで、本発明は、先端部だけでなく、各リンク部への直接教示が可能なロボット制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様は、関節軸及び前記関節軸に駆動力を伝達する駆動軸を有するロボットを制御するロボット制御装置であって、前記関節軸を制御周期毎に駆動するアクチュエータと、前記駆動軸の角度を検出する駆動軸角度検出部と、前記駆動軸の角度から前記関節軸の角度を算出する関節軸角度算出部と、前記関節軸の角度から前記ロボットの先端位置を算出する先端位置算出部と、前記先端位置の位置指令値と、前記先端位置との位置誤差を算出する位置誤差算出部と、前記関節軸の角度に基づいて前記関節軸での作業座標系と関節座標系との間の部分ヤコビ行列を算出し、前記部分ヤコビ行列を統合して前記先端位置での作業座標系と関節座標系との間のヤコビ行列を算出するヤコビ行列算出部と、関節角差分を算出する関節角差分算出部と、前記関節角差分に基づいて関節のトルク指令値を算出するトルク指令値算出部と、前記トルク指令値に基づいて前記アクチュエータを駆動する駆動部と、前記関節軸の角度から前記アクチュエータを駆動するための駆動トルクを推定する駆動トルク推定部と、推定された前記駆動トルクと前記トルク指令値との差を外部トルクとして算出するとともに、前記外部トルクから外力が作用している外力作用関節軸を推定する外部トルク算出部と、前記外部トルクと前記部分ヤコビ行列から、前記外力作用関節軸に作用する外力を算出する外力算出部と、前記外力作用関節軸におけるコンプライアンスモデルを記憶するコンプライアンスモデル記憶部と、前記コンプライアンスモデルを用いて、前記外力に応じて前記外力作用関節軸での作業座標系位置に対するコンプライアンス修正量を算出するコンプライアンス修正量算出部と、前記コンプライアンス修正量と前記部分ヤコビ行列から前記関節角差分修正量を算出する関節角差分修正量算出部と、を備え、前記関節角差分算出部は、前記位置誤差と前記ヤコビ行列から逆運動学計算により修正前の関節角差分を算出し、前記修正前の関節角差分と前記関節角差分修正量との和を関節角差分として出力することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ロボットの先端部のみならず、各リンク部への直接教示が可能なロボット制御装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態によるロボット制御装置を示すブロック図。
【図２】制御対象であるロボットの一例を示す概略図。
【図３】図２に示すロボットの可動部を示す概略図。
【図４】一実施形態に係る駆動トルク推定部を示すブロック図。
【図５】一実施形態によるロボット制御装置の動作を示すフローチャート。
【図６】一実施形態に係る駆動トルク推定処理の一例を示すフローチャート。
【図７】一実施形態の変形例によるロボット制御装置を示すブロック図。
【図８】一実施形態の変形例に係るコンプライアンスパラメータ修正量算出処理を示すフローチャート。
【図９】制御対象の他の例を示す概略図。
【発明を実施するための形態】
【００１２】
本発明の実施形態を以下に図面を参照して説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであり、具体的な寸法は以下の説明を参酌して判断すべきものである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【００１３】
また、以下に示す実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１４】
本発明の一実施形態によるロボット制御装置は、図１に示すように、中央演算処理装置（ＣＰＵ）１と、アクチュエータ１００と、駆動部（アンプ）１０１と、駆動軸角度検出部１０２と、位置データ記憶部２００と、リンクパラメータ記憶部２０１と、摩擦係数記憶部２０２と、ヤコビ行列記憶部２０３と、力／モーメントデータ記憶部２０４と、コンプライアンスモデル記憶部２０５と、を備えている。
【００１５】
この実施形態において制御対象の一例とするロボットは、図２に模式的に示すように、本体３００と、本体３００に設けられた可動部３１０と、を備えている。可動部３１０は、複数のリンク３０１、３０２と、駆動プーリ３０３及び従動プーリ３０４から構成される複数の関節３０６、３０７と、駆動プーリ３０３及び従動プーリ３０４に巻きつけた伝達機構（例えば、ベルト）３０８と、を有する。
【００１６】
図３に模式的に示すように、駆動プーリ３０３、減速機３０９、アクチュエータ１００及び駆動軸角度検出部１０２が、駆動軸（関節）３０６に取り付けられている。アクチュエータ１００が制御周期毎に回転駆動し、減速機３０９が回転数を落としトルクを上げる。一方、従動プーリ３０４及び関節軸角度検出部３０５が関節軸（関節）３０７に取り付けられている。駆動軸３０６の回転により、駆動プーリ３０３、伝達機構３０８及び従動プーリ３０４を介して関節軸３０７が回転駆動する。本実施形態のロボット制御装置においては、簡単のために、駆動軸３０６及び関節軸３０７に対して制御する場合について説明する。
【００１７】
駆動軸角度検出部１０２及び関節軸角度検出部３０５のそれぞれは、エンコーダ等の位置センサが使用可能であり、所定の周波数成分を除去するフィルタを備えていても良い。駆動軸角度検出部１０２は、駆動軸３０６の位置の変位量（駆動軸角度）を検出する。関節軸角度検出部３０５は、関節軸３０７の位置の変位量（関節軸角度）を検出する。また関節軸角度は、関節軸角度検出部３０５によって検出する代わりに、駆動軸角度と、減速機３０９の減速比および伝達機構３０８の伝達比とを用いて算出しても良い。
【００１８】
図１に示したＣＰＵ１は、関節軸角度算出部１０３と、先端位置算出部１０４と、ヤコビ行列算出部１０５と、駆動トルク推定部１０６と、外部トルク算出部１０７と、外力算出部１０８と、算出外力制限部１０９と、コンプライアンス修正量算出部１１０と、関節角差分修正量算出部１１１と、位置指令値生成部１１２と、位置誤差算出部１１３と、関節角差分算出部１１４と、トルク指令値算出部１１５と、をハードウェア資源であるモジュール（論理回路）として論理的に備えている。
【００１９】
関節軸角度算出部１０３は、駆動軸角度検出部１０２により算出された駆動軸角度に基づいて、減速機３０９の減速比と、伝達機構３０８のもつ駆動軸３０６と関節軸３０７の比とに応じた関節軸角度を算出する。なお、関節軸３０７に取り付けた関節軸角度検出部３０５により関節軸角度を直接算出してもよい。
【００２０】
先端位置算出部１０４は、リンクパラメータ記憶部２０１からリンクパラメータを読み出し、関節軸角度算出部１０３により算出された関節軸角度と、読み出されたリンクパラメータとを用いて、順運動学計算によりロボットの作業座標系における先端位置を算出する。
【００２１】
ヤコビ行列算出部１０５は、関節軸角度算出部１０３により算出された関節軸角度から、ヤコビ行列を算出し、ヤコビ行列記憶部２０３に格納する。ヤコビ行列とは、ロボットの作業座標系と関節座標系との間の微小変位関係を表現した行列である。ヤコビ行列をＪとして、ロボットの先端位置の誤差Δｘと、関節角差分Δθは式（１）の関係を満たしている。  
Δｘ＝ＪΔθ         …    （１）
【００２２】
駆動トルク推定部１０６は、駆動軸角度検出１０２により算出された駆動軸角度と、関節軸角度算出部１０３により算出された関節軸角度とを用いて、ロボットの関節軸３０７を駆動するのに必要な駆動トルクを推定する。この駆動トルク推定部１０６の一具体例を図４に示す。この具体例の駆動トルク推定部１０６は、図４に示すように、駆動軸速度算出部４００と、摩擦力トルク算出部４０１と、慣性力トルク算出部４０２と、重力トルク算出部４０３と、加算部４０４と、を備えている。
【００２３】
駆動軸速度算出部４００は、関節軸角度算出部１０３により算出された関節軸角度に基づいて、例えば関節角度の時間差分を取ることにより駆動軸速度を算出する。摩擦力トルク算出部４０１は、摩擦係数記憶部２０２に格納された摩擦係数を読み出して、駆動軸速度算出部４００により算出された駆動軸速度と、読み出された摩擦係数とを用いてクーロン摩擦、粘性摩擦等に相当する摩擦力トルクを算出する。
【００２４】
慣性力トルク算出部４０２は、速度算出ユニット４１０と、加速度算出ユニット４１１と、慣性モーメント算出ユニット４１２と、慣性力トルク算出ユニット４１３と、を備えている。速度算出ユニット４１０は、関節軸角度算出部１０３により算出された関節軸角度を用いて関節角速度を算出する。加速度算出ユニット４１１は、速度算出ユニット４１０により算出された関節角速度に基づいて関節角加速度を算出する。慣性モーメント算出ユニット４１２は、リンクパラメータ記憶部２０１からリンクパラメータを読み出し、リンクパラメータと、関節軸角度算出部１０３により算出された関節軸角度とを用いて各リンク３０１、３０２の慣性モーメントを算出する。慣性力トルク算出ユニット４１３は、加速度算出ユニット４１１により算出された関節角加速度と、慣性モーメント算出ユニット４１２により算出された慣性モーメントとを用いて慣性力トルクを算出する。
【００２５】
重力トルク算出部４０３は、リンクパラメータ記憶部２０１からリンクパラメータを読み出し、読み出されたリンクパラメータと、関節軸角度算出部１０３により算出された関節軸角度とを用いて、各リンク３０１、３０２に作用する重力を算出し、この算出された重力を補償する重力トルクを算出する。
【００２６】
加算部４０４は、摩擦力トルク算出部４０１により算出された摩擦力トルクと、慣性力トルク算出ユニット４１３により算出された慣性力トルクと、重力トルク算出部４０３により算出された重力トルクとを加算し、その和を推定した駆動トルクとして出力する。
【００２７】
図１に示した外部トルク算出部１０７は、駆動トルク推定部１０６により推定された駆動トルクと、トルク指令値算出部１１６により算出されたトルク指令値との差を外部トルクとして算出する。
【００２８】
外力算出部１０８は、外部トルク算出部１０７により算出された外部トルクと、ヤコビ行列算出部１０５により算出されたヤコビ行列とを用いて外力を算出する。仮想仕事の原理より、次の式（２）のように外部トルクτｄにヤコビ行列Ｊの転置行列ＪＴの逆行列を乗じることにより外力ｆｄが算出される。  
ｆｄ＝（ＪＴ）−１τｄ            …（２）
ここで、ロボットの先端部ではなくリンク部に外力が作用した場合、先端部に近い駆動軸の外部トルクは０である。そこで外部トルクベクトルτｄの各要素において０とならない部分ベクトルをτｄｉとし、この部分ベクトルτｄｉを次の式（３）のように表す。  
τｄｉ＝（τｄｉ１、  ・・・、  τｄｉｉ）       …（３）
すなわち、ベースから第ｉ番目の関節軸に働く外力は０ではないが、第ｉ＋１番目から先端部までの関節軸に働く外力が０とする。この場合、第ｉ番目の関節軸までの部分ヤコビ行列Ｊｉの転置行列ＪｉＴの逆行列を乗じることで第ｉ番目の関節軸において作用する外力が求められる。ベースから第ｉ番目の関節軸までの部分ヤコビ行列Ｊｉはヤコビ行列の一部であり、次の式（４）を用いて求められる。
【数１】
0005383911.tif 000002
ここで、ｚｉは第ｉ番目の関節軸の関節座標系の関節軸回転方向ベクトル、ｐｉはベース座標系から見た第ｉ番目の関節軸の関節座標系原点の位置ベクトルである。式（４）において、記号「×」はベクトルの外積を示す。第ｉ番目の関節軸を外力作用関節と呼ぶと、外力作用関節において作用する外力ｆｄｉは、次の式（５）を用いて外力算出部１０８によって算出することができる。  
ｆｄｉ＝（ＪｉＴ）−１τｄｉ     …（５）
【００２９】
１０９は、力／モーメントデータ記憶部２０４に記憶された許容力および許容モーメントデータ（許容値）を読み出して、もし算出された外力が許容値を超えている場合は飽和処理を行う。すなわち、許容値を算出された外力として出力する。また、設定された最小値よりも小さい場合は算出された外力を０として算出する（不感帯処理）。算出された外力が最小値以上で許容値以下の場合には、算出された外力をそのまま出力する。
【００３０】
コンプライアンス修正量算出部１１１は、コンプライアンスモデル記憶部２０５からコンプライアンスモデルを読み出して、読み出されたコンプライアンスモデルを用いて、算出外力制限部１０９の出力に応じた位置修正量を算出する。ここで、コンプライアンスモデルとは、例えば式（６）に示すように接触対象との間において仮想的に慣性、粘性、剛性を想定したものである。  
Ｍｄ２Δｘ／ｄｔ２＋ＤｄΔｘ／ｄｔ＋ＫΔｘ＝ＫｆΔｆ     …（６）
ここで、Δｘは外力作用関節に設定された作業座標系での誤差、ｄΔｘ／ｄｔは作業座標系での速度、ｄ２Δｘ／ｄｔ２は作業座標系での加速度ベクトル、Ｍは慣性行列、Ｄは粘性係数行列、Ｋは剛性係数行列、Ｋｆは力フィードバックゲイン行列である。力と位置の作用させる軸を切り替えるコンプライアンス選択行列は力フィードバックゲイン行列Ｋｆに含んだ形になっている。誤差の速度ｄΔｘ／ｄｔ及び加速度ベクトルｄ２Δｘ／ｄｔ２は、それぞれ位置誤差ベクトルΔｘの時間に関する一回差分、二回差分で近似できることから、外力作用関節でのコンプライアンス修正量Δｘｃｏｍｐは、次の式（７）を用いて算出することができる。  
Δｘｃｏｍｐ＝１／Ｋ（ＫｆΔｆ−Ｍｄ２Δｘ／ｄｔ２−ＤｄΔｘ／ｄｔ）   …（７）
【００３１】
関節角差分修正量算出部１１１は、コンプライアンス修正量Δｘｃｏｍｐから部分ヤコビ行列Ｊｉの逆行列を用いて外力作用関節までの関節角差分修正量を、次の式（８）を用いて算出する。  
Δθｃｏｍｐ＝Ｊｉ−１Δｘｃｏｍｐ           …（８）
【００３２】
位置指令値生成部１１２は、位置データ記憶部２００に記憶された目標先端位置データを読み出して、この目標先端位置データから各制御周期における補間された先端位置指令値を算出する。
【００３３】
位置誤差算出部１１３は、位置指令値生成部１１２により生成した先端位置指令値ｘＲと、先端位置算出部１０４により算出された現在の先端位置ｘとに基づいて、次の式（９）を利用して位置誤差Δｘを算出する。  
Δｘ＝ｘＲ−ｘ               …（９）
【００３４】
関節角差分算出部１１４は、位置誤差算出部１１３により算出された誤差Δｘと、ヤコビ行列Ｊの逆行列Ｊ−１とを用いて算出した、誤差Δｘによる関節角差分に、先の関節角差分修正量Δθｃｏｍｐを加えて次の式（１０）のように算出する。  
Δθ＝Ｊ−１Δｘ＋Δθｃｏｍｐ              …（１０）
トルク指令値算出部１１５は、関節角差分算出部１１４により算出された関節角差分を積分することによりトルク指令値（制御目標値）を生成する。駆動部１０１は、トルク指令値算出部１１５により算出されたトルク指令値にしたがってアクチュエータ１００を制御周期毎に駆動する。
【００３５】
位置データ記憶部２００、リンクパラメータ記憶部２０１、摩擦係数記憶部２０２、ヤコビ行列記憶部２０３、力／モーメントデータ記憶部２０４、及びコンプライアンスモデル記憶部２０５としては、例えば半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクや磁気テープ等が採用可能である。
【００３６】
位置データ記憶部２００は、位置指令値生成部１１１が先端位置指令値を生成するために使用する目標先端位置データ列を記憶している。リンクパラメータ記憶部２０１は、ロボットのリンク３０１、３０２に関するリンクパラメータを記憶している。摩擦係数記憶部２０２は、摩擦力トルク算出部４０１が摩擦力トルクを算出するために使用する、予め定速運転において速度−トルク関係から求めておいた摩擦係数データを記憶している。ヤコビ行列記憶部２０３は、ヤコビ行列算出部１０５により算出されるヤコビ行列を記憶している。力／モーメントデータ記憶部２０４は、力指令値生成部１０９が先端位置力指令値を生成するために使用する目標先端力データ列を記憶している。コンプライアンスモデル記憶部２０５は、予め設定されたコンプライアンスモデルを記憶している。
【００３７】
（ロボット制御方法）
次に、本実施形態によるロボット制御装置の動作を、図５に示すフローチャートを参照しながら説明する。
【００３８】
（ａ）まず、制御演算を開始し、位置指令値生成部１１２によって、位置データ記憶部２００から目標先端位置データ列が読み出されて、目標先端位置データ列に基づいて各制御周期における先端位置指令値が生成される（ステップ、Ｓ１００、Ｓ１０１）。次に、ステップＳ１０２において、位置指令値生成部１１２により生成された先端位置指令値と、先端位置算出部１０４により算出された先端位置との誤差が位置誤差算出部１１３によって算出される。続いて、ステップＳ１０３において、位置誤差算出部１１３により算出された誤差に対して、関節角差分算出部１１４によって、ヤコビ行列記憶部２０３から読み出したヤコビ行列を用いて式（１０）に示すように、逆運動学計算を行って関節角差分が、後述する関節角差分修正量を考慮して算出される。
【００３９】
その後、ステップＳ１０４において、関節角差分算出部１１４により算出された関節角差分を積分することによりトルク指令値がトルク指令値算出部１１５によって算出される。次に、ステップＳ１０５において、トルク指令値算出部１１５により算出されたトルク指令値を制御目標値として駆動部１０１によってアクチュエータ１００が駆動されることにより、駆動軸３０６が駆動され、先端位置が制御される。続いて、ステップＳ１０６において、制御演算の終了を確認し、ステップＳ１０７でサーボ処理を終了する。ステップＳ１０６において制御演算が終了でなければ後述するステップＳ１０８に進む。
【００４０】
（ｂ）次に、ステップＳ１０８において、駆動軸角度検出部１０２によって駆動軸角度を検出する。次に、ステップＳ１０９において、駆動軸角度検出部１０２により算出された駆動軸角度から、減速機の減速比などに基づいて関節軸角度算出部１０３によって関節軸角度が算出される。ステップＳ１１０において、先端位置算出部１０４によって、リンクパラメータ記憶部２０１からリンクパラメータが読み出され、この読み出されたリンクパラメータと、関節軸角度算出部１０３により算出された関節軸角度とを用いて、順運動学計算により、先端位置が算出される。ステップＳ１１１において、関節軸角度算出部１０３により算出された関節軸角度を用いて、ヤコビ行列算出部１０５によってヤコビ行列が算出される。
【００４１】
（ｃ）次に、ステップＳ１１２において、駆動軸角度検出部１０２により算出された駆動軸角度と、関節軸角度算出部１０３により算出された関節軸角度とを用いて駆動トルク推定部１０６によって駆動トルクが推定される。ステップＳ１１３において、駆動トルク推定部１０６により推定された駆動トルクと、トルク指令値算出部１１６により算出された実際のトルク指令値との差から外部トルク算出部１０７によって外部トルクが算出される。ステップＳ１１４において、外部トルク算出部１０７により算出された外部トルクと、ヤコビ行列算出部１０５により算出された部分ヤコビ行列とを用いて、外力算出部１０８によって式（５）に示す外力が算出される。
【００４２】
（ｄ）次に、ステップＳ１１５において、力／モーメントデータ記憶部２０４から許容力／モーメントデータ列が読み出されて、この読み出された許容力／モーメントデータ列と、外力算出部１０８によって算出された外力とが１０９によって比較され、この比較結果に基づいて、制限された外力が出力される。すなわち、算出外力制限部１０９によって飽和処理または不感帯処理が行われる。
【００４３】
（ｅ）次に、ステップＳ１１６において、コンプライアンス修正量算出部１１０によってコンプライアンスモデル記憶部２０５からコンプライアンスモデルが読み出され、コンプライアンスモデルを用いて式（７）に示すように算出外力制限部１０９により制限されら外力に応じた外力作用関節での修正量がコンプライアンス修正量算出部１１０によって算出される。ステップＳ１１７において、コンプライアンス修正量から部分ヤコビ行列を用いて式（８）に示すように関節角差分修正量が関節角差分修正量算出部１１１によって算出される。ステップＳ１０３に戻り、式（９）に示すように、位置指令値生成部１１２により生成された先端位置指令値と、先端位置算出部１０４により算出された先端位置との誤差にヤコビ行列の逆行列を乗じたものに、関節角差分修正量算出部１１１から算出された修正量を考慮した関節角差分が位置誤差算出部１１３によって算出される。
【００４４】
（駆動トルク推定処理）
次に、図５に示したステップＳ１１２の駆動トルク推定処理を図６に示すフローチャートを参照しながら説明する。
【００４５】
（ａ）ステップＳ２００において、駆動トルク推定処理が開始され、ステップＳ２０１において、駆動軸角度検出部１０２により検出された駆動軸角度から時間差分を取ることにより駆動軸速度算出部４００によって駆動軸速度が算出される。更に、摩擦係数記憶部２０２から摩擦係数が読み出され、この読み出された摩擦係数と、駆動軸速度算出部４００により算出された駆動軸速度とを用いて摩擦力トルク算出部４０１によって摩擦力トルクが算出される。
【００４６】
（ｂ）ステップＳ２０２において、関節軸角度算出部１０３により算出された関節軸角度の時間差分を取ることにより速度算出ユニット４１０によって関節角速度が算出される。ステップＳ２０３において、速度算出ユニット４１０により関節角速度の時間差分を取ることにより加速度算出ユニット４１１によって関節角加速度が算出される。ステップＳ２０４において、リンクパラメータ記憶部２０１からリンクパラメータが読み出され、関節軸角度算出部１０３により算出された関節軸角度と、読み出されたリンクパラメータと、を用いて慣性モーメント算出ユニット４１２によって、各関節におけるリンクの慣性モーメントが算出される。ステップＳ２０５において、加速度算出ユニット４１１により算出された関節角加速度と、慣性モーメント算出ユニット４１２により算出された慣性モーメントとに基づいて、慣性力トルク算出ユニット４１３によって慣性力トルクが算出される。
【００４７】
（ｃ）ステップＳ２０６において、リンクパラメータ記憶部２０１からリンクパラメータが読み出され、関節軸角度算出部１０３により算出された関節軸角度関節軸角度と、読み出されたリンクパラメータとに基づいて、重力トルク算出部４０３によって各リンク３０１、３０２に作用する重力が算出され、これを補償する重力トルクが算出される。
【００４８】
（ｄ）ステップＳ２０７において、摩擦力トルク算出部４０１により算出された摩擦力トルクと、慣性力トルク算出ユニット４１３により算出された慣性力トルクと、重力トルク算出部４０３により算出された重力トルクとが加算部４０４によって加算されて、推定した駆動トルクとして算出される。ステップＳ２０８において駆動トルク推定処理が終了する。
【００４９】
以上説明したように、本実施形態によれば、それぞれのリンクへ作用する外力を推定することが可能となり、推定した外力に基づいて設定したコンプライアンスモデルにより柔軟な動作を行うことで、ロボットへの簡便な直接教示を実現することができる。
【００５０】
（変形例）
本実施形態の変形例によるロボット制御装置を図７に示す。この変形例のロボット制御装置は、コンプライアンスモデルのパラメータ変更を行うことが可能な制御装置である。この変形例のロボット制御装置は、図１に示す本実施形態のロボット制御装置において、コンプライアンスパラメータ修正部１１６を新たに設けた構成を有している。
【００５１】
直接教示のために操作者によって加えられる外力に対するコンプライアンスモデルと、衝突時のコンプライアンスモデルとは異なっており、通常、コンプライアンスモデルのパラメータを変更することで対応している。しかし付加的なセンサを用いない場合、意図された外力と衝突による外力とを明確に区別することは困難であり、またそれぞれのパラメータセットを連続的に変化させなければ、パラメータの切り替え時に安定して動作することができない。
【００５２】
そこで図７に示す変形例のように、コンプライアンスパラメータ修正部１１６を設けることにより衝突時においても安定して動作することを可能にする。このコンプライアンスパラメータ修正部１１６は、コンプライアンス修正量算出部１１０より算出されたコンプライアンス修正量の履歴から、コンプライアンスモデルのパラメータを変更し、これをコンプライアンスモデル記憶部２０５に書き込んでいく。動作開始時においては衝突時用のコンプライアンスモデルのパラメータであり、修正量は直接教示により発生しているため、発生した外力成分のみパラメータが変更され、より柔軟性を増して操作性を向上させることができる。
【００５３】
また、コンプライアンスモデルのパラメータの修正は、定期的な周期で行ってもよい。このパラメータを修正する周期は、制御周期の数倍程度を取ることもある。これによりパラメータの修正によりロボットの動作が振動的にならない効果がある。
【００５４】
次に、この変形例のコンプライアンスパラメータ修正部の動作を図８に示すフローチャートを参照しながら説明する。
【００５５】
ステップＳ３０１において、コンプライアンスパラメータ修正処理を開始する。ステップＳ３０２において、本制御周期（パラメータを修正する周期）においてコンプライアンスモデルのパラメータを修正するかどうかを確認する。修正しない場合はステップＳ３０４へ進み、終了する。修正する場合はステップＳ３０３へ進み、コンプライアンスパラメータ修正部１１６によってコンプライアンスモデルのパラメータが修正され、コンプライアンスモデル記憶部２０５に修正結果が書き込まれ、ステップＳ３０４にて終了する。
【００５６】
上記のように、本発明の実施形態を説明したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【００５７】
例えば、本発明の実施形態において、慣性力トルクの算出の際に、速度算出ユニット４１０及び加速度算出ユニット４１１による関節軸角度の時間に関する二回差分で算出された関節角加速度を用いているが、制御周期によっては時間遅れが大きくなりトルク誤差が大きくなりやすくなる。その場合は、図９に示すように、リンク３０１に搭載した加速度センサ３１１からリンク３０１の加速度を検出し、検出した加速度を加速度算出ユニット４１１が関節角加速度へ変換して、この関節角加速度を基に慣性力トルクを算出してもよい。
【００５８】
また、駆動トルク推定処理としては、摩擦力トルクと、慣性力トルクと、重力トルクと用いて駆動トルクを推定する一例を示したが、これに限定されるものではない。例えば、遠心力やコリオリの力等のパラメータを更に考慮しても良い。
【００５９】
また、ＣＰＵ１、位置データ記憶部２００、リンクパラメータ記憶部２０１、摩擦係数記憶部２０２、ヤコビ行列記憶部２０３、力／モーメントデータ記憶部２０４及びコンプライアンスモデル記憶部２０５等が制御対象であるロボットの内部に埋め込まれて一体化されていても良い。また、ＣＰＵ１、位置データ記憶部２００、リンクパラメータ記憶部２０１、摩擦係数記憶部２０２、ヤコビ行列記憶部２０３、力／モーメントデータ記憶部２０４及びコンプライアンスモデル記憶部２０５等が制御対象であるロボットの外部にあり、ロボットを有線或いは無線で遠隔制御することも可能である。
【００６０】
このように、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【符号の説明】
【００６１】
１  中央演算処理装置（ＣＰＵ）
１００  アクチュエータ
１０１  駆動部
１０２  駆動軸角度検出部
１０３  関節軸角度算出部
１０４  先端位置算出部
１０５  ヤコビ行列算出部
１０６  駆動トルク推定部
１０７  外部トルク算出部
１０８  外力算出部
１０９  算出外力制限部
１１０  コンプライアンス修正量算出部
１１１  関節角差分修正量算出部
１１２  位置指令値生成部
１１３  位置誤差算出部
１１４  関節角差分算出部
１１５  トルク指令値算出部
１１５  コンプライアンスパラメータ修正量算出部
２００  位置データ記憶部
２０１  リンクパラメータ記憶部
２０２  摩擦係数記憶部
２０３  ヤコビ行列記憶部
２０４  力／モーメントデータ記憶部
２０５  コンプライアンスモデル記憶部
３００  本体
３０１、３０２  リンク
３０３  駆動プーリ
３０４  従動プーリ
３０５  関節軸角度検出部
３０６  駆動軸（関節）
３０７  関節軸（関節）
３０８  伝達機構
３０９  減速機
３１０  可動部
３１１  加速度センサ
４００  駆動軸速度算出部
４０１  摩擦力トルク算出部
４０２  慣性力トルク算出部
４０３  重力トルク算出部
４０４  加算部
４１０  速度算出ユニット
４１１  加速度算出ユニット
４１２  慣性モーメント算出ユニット
４１３  慣性力トルク算出ユニット
【図１】
0005383911.tif 000003
【図２】
0005383911.tif 000004
【図３】
0005383911.tif 000005
【図４】
0005383911.tif 000006
【図５】
0005383911.tif 000007
【図６】
0005383911.tif 000008
【図７】
0005383911.tif 000009
【図８】
0005383911.tif 000010
【図９】
0005383911.tif 000011