(57)【要約】［課題］ロボット制御において安全性の高い力制御を実現する。［解決手段］本発明のロボット制御装置は、ロボットの先端位置と前記先端位置に対する位置指令値との誤差である位置誤差を算出する位置誤差算出部と、前記先端位置に作用する外力を算出する外力算出部と、前記先端位置の力指令値を生成する力指令値生成部と、前記外力と前記力指令値との誤差である力誤差を算出する力誤差算出部と、前記先端位置におけるコンプライアンスモデルを記憶するコンプライアンスモデル記憶部と、前記コンプライアンスモデルを用いて、前記力誤差に応じて前記位置指令値に対する第1の修正量を算出する第1の修正量算出部と、前記第1の修正量に対する一次遅れ補償に基づき前記位置指令値に対する第２の修正量を算出する第２の修正量算出部と、を備え、前記位置誤差算出部は、前記第２の修正量を用いて前記位置誤差を算出する。
2011036750.tif 000002
【特許請求の範囲】
【請求項１】
関節軸に駆動力を伝達する駆動軸を駆動するアクチュエータと、
前記駆動軸の角度を検出する駆動軸角度検出部と、
前記駆動軸の角度から前記関節軸の角度を算出する関節軸角度算出部と、
前記関節軸の角度からロボットの先端位置を算出する先端位置算出部と、
前記先端位置の位置指令値を生成する位置指令値生成部と、
前記先端位置と前記位置指令値との誤差である位置誤差を算出する位置誤差算出部と、
前記関節軸の角度に基づいて前記ロボットの作業座標系と関節座標系との間のヤコビ行列を算出するヤコビ行列算出部と、
前記位置誤差と前記ヤコビ行列から逆運動学計算により関節角差分を算出する関節角差分算出部と、
前記関節角差分を積分することによりトルク指令値を算出するトルク指令値算出部と、
前記トルク指令値に基づいて前記アクチュエータを駆動させる駆動部と、
前記先端位置に作用する外力を算出する外力算出部と、
前記先端位置の力指令値を生成する力指令値生成部と、
前記外力と前記力指令値との誤差である力誤差を算出する力誤差算出部と、
前記先端位置におけるコンプライアンスモデルを記憶するコンプライアンスモデル記憶部と、
前記コンプライアンスモデルを用いて、前記力誤差に応じて前記位置指令値に対する第1の修正量を算出する第1の修正量算出部と、
前記第1の修正量に対する一次遅れ補償に基づき前記位置指令値に対する第２の修正量を算出する第２の修正量算出部と、を備え、
前記位置誤差算出部は、前記第２の修正量を用いて前記位置誤差を算出する
ことを特徴とするロボット制御装置。
【請求項２】
前記第２の修正量算出部は、前記第１の修正量の絶対値が第1の閾値以上のとき前記一次遅れ補償の時定数を増加させることを特徴とする請求項１に記載のロボット制御装置。
【請求項３】
前記位置誤差算出部により算出された前記位置誤差を記憶する位置誤差記憶部と、
前記位置誤差記憶部に記憶された前記位置誤差を積分する位置誤差積分算出部と、をさらに備え、
前記第２の修正量算出部は、前記位置誤差の積分値が第２の閾値以上のとき前記一次遅れ補償の時定数を増加させることを特徴とする請求項２に記載のロボット制御装置。
【請求項４】
前記関節軸に作用する外部トルクを算出する外部トルク算出部をさらに備え、
前記外力算出部は、前記ヤコビ行列及び前記外部トルクから、前記先端位置に作用する外力を算出する
ことを特徴とする請求項３に記載のロボット制御装置。
【請求項５】
前記関節軸の角度から前記アクチュエータを駆動させるための駆動トルクを推定する駆動トルク推定部と、
前記先端位置における摩擦係数を記憶する摩擦係数記憶部をさらに備え、
前記外部トルク算出部は、推定された駆動トルク及び前記トルク指令値との差を外部トルクとし、
前記駆動トルク推定部は、
前記駆動軸の角度から前記駆動軸の速度を算出する駆動軸速度算出部と、
前記駆動軸の速度及び前記摩擦係数から摩擦トルクを算出する摩擦力トルク算出部と、
前記関節軸の角度から重力トルクを算出する重力トルク算出部と、
前記関節軸の角度から慣性力トルクを算出する慣性力トルク算出部と、
前記摩擦力トルク、前記重力トルク及び前記慣性力トルクを加算して前記駆動トルクとする加算部とを備え、
前記慣性力トルク算出部は、
前記関節軸の角度から関節角速度を算出する速度算出ユニットと、
前記関節角速度から関節角加速度を算出する加速度算出ユニットと、
前記関節軸の角度から前記ロボットのリンクの慣性モーメントを算出する慣性モーメント算出ユニットと、
前記関節角加速度と前記慣性モーメントから慣性力トルクを算出する慣性力トルク算出ユニットとを備えることを特徴とする請求項４に記載のロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの力制御を行うロボット制御装置に関する。
【背景技術】
【０００２】
ロボットのアーム先端部などの先端（以下、単に「先端」という。）が対象物と接触しながら、作業座標系での位置及び接触力を制御する、いわゆる力制御がある。力制御では、先端において作用している外力を推定し、外力に応じた動作の修正を柔軟に行うことが重要である。【０００３】
接触時の力・モーメントへ素早く確実に追従するために、先端と作業対象物との間に積分補償器を加える。積分補償は、バネーマスーダンパモデルのようなコンプライアンスモデルからの出力に対して行う（特許文献１）。【０００４】
ところが、例えば、作業対象物が正確に位置決めされておらず、想定していた位置において先端が接触しなかった場合、接触力が発生していないため先端が動作し続ける可能性がある。また逆に先端が目標位置へ到達する前に作業対象物に接触してしまうことにより、過大な接触力が発生してしまう可能性もある。一般的に位置制御よりも力制御の方が応答性は悪い。力制御の方が、目標接触力への追従速度は遅くなる。作業効率を上げるためには、エラーを早期に発見し、すぐにリトライ動作へと移行する必要がある。目標値との偏差を監視しているだけでは、応答性の向上は困難であった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平第１０−１９３２９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、安全性の高い力制御を実現できるロボット制御装置を提供することである。
【課題を解決するための手段】
【０００７】
本発明のロボット制御装置は、関節軸に駆動力を伝達する駆動軸を駆動するアクチュエータと、前記駆動軸の角度を検出する駆動軸角度検出部と、前記駆動軸の角度から前記関節軸の角度を算出する関節軸角度算出部と、前記関節軸の角度からロボットの先端位置を算出する先端位置算出部と、前記先端位置の位置指令値を生成する位置指令値生成部と、  前記先端位置と前記位置指令値との誤差である位置誤差を算出する位置誤差算出部と、前記関節軸の角度に基づいて前記ロボットの作業座標系と関節座標系との間のヤコビ行列を算出するヤコビ行列算出部と、前記位置誤差と前記ヤコビ行列から逆運動学計算により関節角差分を算出する関節角差分算出部と、前記関節角差分を積分することによりトルク指令値を算出するトルク指令値算出部と、前記トルク指令値に基づいて前記アクチュエータを駆動させる駆動部と、前記先端位置に作用する外力を算出する外力算出部と、前記先端位置の力指令値を生成する力指令値生成部と、前記外力と前記力指令値との誤差である力誤差を算出する力誤差算出部と、前記先端位置におけるコンプライアンスモデルを記憶するコンプライアンスモデル記憶部と、前記コンプライアンスモデルを用いて、前記力誤差に応じて前記位置指令値に対する第1の修正量を算出する第1の修正量算出部と、前記第1の修正量に対する一次遅れ補償に基づき前記位置指令値に対する第２の修正量を算出する第２の修正量算出部と、を備え、前記位置誤差算出部は、前記第２の修正量を用いて前記位置誤差を算出することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ロボット制御において安全性の高い力制御を実現できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態に係るロボット制御装置。
【図２】本発明の実施の形態に係る制御対象を示す概略図。
【図３】本発明の実施の形態に係る制御対象を示す他の概略図。
【図４】本発明の実施の形態に係る駆動トルク推定部を示すブロック図。
【図５】本発明の実施の形態に係る力順応制御修正量算出部を示すブロック図。
【図６】本発明の実施の形態に係るロボット制御方法。
【図７】本発明の実施の形態に係る駆動トルク推定処理。
【図８】本発明の実施の形態に係る力順応制御修正量算出処理。
【図９】本発明のその他の実施の形態に係る制御対象を示す概略図。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一または類似の部分には同一の符号を付している。ただし、図面は模式的なものであり、具体的な寸法は当業者が以下の説明を参酌して判断すべきものである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【００１１】
また、以下に示す実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１２】
図１に示すように、本発明の実施の形態に係るロボット制御装置は、中央演算処理装置（ＣＰＵ）１、アクチュエータ１００、駆動部（アンプ）１０１、駆動軸角度検出部１０２、位置データ記憶部２００、リンクパラメータ記憶部２０１、摩擦係数記憶部２０２、ヤコビ行列記憶部２０３、力・モーメントデータ記憶部２０４、コンプライアンスモデル記憶部２０５、力順応制御閾値記憶部２０６及び位置誤差記憶部２０７を備える。
【００１３】
図２は本発明の実施の形態において制御対象の一例とするロボットを示す。このロボットは、本体３００と、本体３００に設けられた可動部３１０を備える。可動部３１０は、複数のリンク３０１、３０２と、駆動プーリ３０３及び従動プーリ３０４を備える複数の関節３０６、３０７と、駆動プーリ３０３及び従動プーリ３０４に巻きつけた伝達機構３０８を有する。
【００１４】
図３に模式的に示すように、駆動プーリ３０３、減速機３０９、アクチュエータ１００及び駆動軸角度検出部１０２が、駆動軸（関節）３０６に取り付けられている。アクチュエータ１００が回転駆動し、減速機３０９が回転数を落としトルクを上げる。一方、従動プーリ３０４及び関節軸角度検出部３０５が関節軸（関節）３０７に取り付けられている。駆動軸３０６の回転により、駆動プーリ３０３、伝達機構３０８及び従動プーリ３０４を介して関節軸３０７が回転駆動する。本発明の実施の形態では、簡単のために、駆動軸３０６及び関節軸３０７に対して制御する場合について述べる。
【００１５】
駆動軸角度検出部１０２及び関節軸角度検出部３０５のそれぞれは、エンコーダ等の位置センサが使用可能である。また位置センサは、所定の周波数成分を除去するフィルタを備えていても良い。駆動軸角度検出部１０２は、駆動軸３０６の位置の変位量（駆動軸角度）を検出する。関節軸角度検出部３０５は、関節軸３０７の位置の変位量（関節軸角度）を検出する。また関節軸角度は駆動軸角度から減速機３０９の減速比や伝達機構３０８の伝達比から算出しても良い。
【００１６】
図１に示したＣＰＵ１は、関節軸角度算出部１０３、先端位置算出部１０４、ヤコビ行列算出部１０５、駆動トルク推定部１０６、外部トルク算出部１０７、外力算出部１０８、力指令値生成部１０９、力誤差算出部１１０、コンプライアンス修正量算出部（第1の修正量算出部）１１１、力順応制御修正量算出部（第２の修正量算出部）１１２、位置指令値生成部１１３、位置誤差算出部１１４、関節角差分算出部１１５、トルク指令値算出部１１６及び位置誤差積分算出部１１７をハードウェア資源であるモジュール（論理回路）として論理的に備える。
【００１７】
関節軸角度算出部１０３は、駆動軸角度検出部１０２により算出された駆動軸角度から、減速機３０９の減速比など、伝達機構３０８のもつ駆動軸３０６と関節軸３０７の比に応じて関節軸角度を算出する。なお、関節軸３０７に取り付けた関節軸角度検出部３０５（図２参照）により関節軸角度を直接算出してもよい。
【００１８】
先端位置算出部１０４は、リンクパラメータ記憶部２０１からリンクパラメータを読み出す。先端位置算出部１０４は、関節軸角度算出部１０３により算出された関節軸角度から、リンクパラメータを用いて順運動学計算によりロボットの作業座標系における先端位置を算出する。
【００１９】
ヤコビ行列算出部１０５は、関節軸角度算出部１０３により算出された関節軸角度から、ヤコビ行列を算出し、ヤコビ行列記憶部２０３に格納する。ヤコビ行列とは、ロボットの作業座標系と関節座標系との間の微小変位関係を表現した行列である。ヤコビ行列をＪとして、先端位置の誤差Δｘと、関節角差分Δθには式（１）の関係が成立している。
【数１】
2011036750.tif 000003
【００２０】
駆動トルク推定部１０６は、駆動軸角度検出１０２により算出された駆動軸角度及び関節軸角度算出部１０３により算出された関節軸角度から、ロボットの関節軸３０７を駆動するのに必要な駆動トルクを推定する。
【００２１】
図４は駆動トルク推定部１０６の構成の一例を示す。
【００２２】
駆動トルク推定部１０６は、駆動軸速度算出部４００、摩擦力トルク算出部４０１、慣性力トルク算出部４０２、重力トルク算出部４０３及び加算部４０４を備える。
【００２３】
駆動軸速度算出部４００は、駆動軸角度検出１０２により算出された駆動軸角度から例えば時間差分を取ることにより駆動軸速度を算出する。摩擦力トルク算出部４０１は、摩擦係数記憶部２０２に格納された先端における摩擦係数を読み出す。摩擦力トルク算出部４０１は、駆動軸速度算出部４００により算出された駆動軸速度と摩擦係数からクーロン摩擦、粘性摩擦等に相当する摩擦力トルクを算出する。なお駆動軸角度検出部１０２は、関節軸角度の時間差分と、前述した減速比あるいは伝達比とに基づき駆動軸速度を検出してもよい。
【００２４】
慣性力トルク算出部４０２は、速度算出ユニット４１０、加速度算出ユニット４１１、慣性モーメント算出ユニット４１２及び慣性力トルク算出ユニット４１３を備える。速度算出ユニット４１０は、関節軸角度算出部１０３により算出された関節軸角度から関節角速度を算出する。加速度算出ユニット４１１は、速度算出ユニット４１０により算出された関節角速度から関節角加速度を算出する。慣性モーメント算出ユニット４１２は、リンクパラメータ記憶部２０１からリンクパラメータを読み出す。慣性モーメント算出ユニット４１２は、当該リンクパラメータ及び関節軸角度算出部１０３により算出された関節軸角度から各リンク３０１、３０２の慣性モーメントを算出する。慣性力トルク算出ユニット４１３は、加速度算出ユニット４１１により算出された関節角加速度、及び慣性モーメント算出ユニット４１２により算出された慣性モーメントから慣性力トルクを算出する。
【００２５】
重力トルク算出部４０３は、リンクパラメータ記憶部２０１からリンクパラメータを読み出す。重力トルク算出部４０３は、リンクパラメータ及び関節軸角度算出部１０３により算出された関節軸角度から各リンク３０１、３０２に作用する重力を算出する。重力トルク算出部４０３は、各リンク３０１、３０２に作用する重力を補償する重力トルクを算出する。
【００２６】
加算部４０４は、摩擦力トルク算出部４０１により算出された摩擦力トルク、慣性力トルク算出ユニット４１３により算出された慣性力トルク及び重力トルク算出部４０３により算出された重力トルクを加算することにより駆動トルクを推定する。
【００２７】
図１に示した外部トルク算出部１０７は、駆動トルク推定部１０６により推定された駆動トルクと、トルク指令値算出部１１６により算出されたトルク指令値との差を計算することにより外部トルクを算出する。
【００２８】
外力算出部１０８は、外部トルク算出部１０７により算出された外部トルクからヤコビ行列算出部１０５により算出されたヤコビ行列を用いて作業座標系における外力を算出する。仮想仕事の原理より、式（２）のように外部トルクτdにヤコビ行列Ｊの転置行列ＪTの逆行列を乗じることにより外力ｆdを算出する。この式（２）の外力ｆdは先端で作用していると想定したときの外力である。
【数２】
2011036750.tif 000004
【００２９】
力指令値生成部１０９は、力・モーメントデータ記憶部２０４に記憶された目標先端力・モーメントデータ（すなわち目標となる先端の力およびモーメントのデータ）を読み出す。力指令値生成部１０９は、目標先端力・モーメントデータから各制御周期における補間された先端力指令値を算出する。
【００３０】
力誤差算出部１１０は、力指令値生成部１０９により生成した先端力指令値fR、外力算出部１０８により算出された外力fdから、式（３）のように力誤差Δfを算出する。
【数３】
2011036750.tif 000005
【００３１】
コンプライアンス修正量算出部（第1の修正量算出部）１１１は、コンプライアンスモデル記憶部２０５からコンプライアンスモデルを読み出す。コンプライアンス修正量算出部１１１は、コンプライアンスモデルを用いて、力誤差算出部１１０により算出された力誤差に応じた先端位置の修正量（第1の修正量）を算出する。ここで、コンプライアンスモデルとは、例えば式（４）のように先端と接触対象との間において仮想的に慣性、粘性、剛性を想定したものである。
【数４】
2011036750.tif 000006
【００３２】
【数５】
2011036750.tif 000007
【数６】
2011036750.tif 000008
【００３３】
力順応制御修正量算出部（第２の修正量算出部）１１２は、コンプライアンス修正量Δｘcomp（第1の修正量）に対する一次遅れ演算に基づき、先端位置の指令値に対する修正量（第２の修正量）を算出する。
【００３４】
図５は力順応制御修正量算出部１１２の構成の一例を示す。
【００３５】
力順応制御修正量算出部１１２は、一次遅れ補償ユニット５００、加算部５０１及び時定数変更ユニット５０２を備える。
【００３６】
一次遅れ補償ユニット５００はコンプライアンス修正量Δｘcompに式（６）で表現される一次遅れ補償を施す（一次遅れ演算を実行する）。
【数７】
2011036750.tif 000009
【００３７】
加算部５０１は、一次遅れ補償ユニット５００の算出結果（ＫＡ／（Ｔｓ＋１））Δｘcompと、コンプライアンス修正量Δｘcompを加算することにより力順応制御修正量Δｘforce-comp（第２の修正量）を式（７）のように算出する。
【数８】
2011036750.tif 000010
【００３８】
時定数変更ユニット５０２は、力順応制御閾値記憶部２０６から力順応制御閾値Ｔｈ１（第1の閾値）、力順応制御閾値Ｔｈ２（第２の閾値）を読み出す。時定数変更ユニット５０２は、読み出した力順制御閾値Ｔｈ１、Ｔｈ２と、後述する位置誤差積分算出部１１７より算出された位置誤差積分（これまでの位置誤差の積分）と、加算部５０１により算出された修正量Δｘforce-compを用いて、一時遅れ補償ユニット５００における一次遅れ補償の時定数Ｔの変更処理（第1処理、第２処理）を行う。
【００３９】
第1処理：加算部５０１により算出された力順応制御修正量が、力順応制御閾値記憶部２０６より読み取った閾値Ｔｈ１より小さいか判定する。閾値Ｔｈ１以上である場合、一次遅れ補償ユニット５００にて使用している時定数を修正する。たとえば現在の時定数Ｔに所定値ΔＴ１を加算することにより時定数を大きくする。修正量が閾値Ｔｈ１より小さければ何も行わない。本第1処理により、目標位置へ到達する前に先端が作業対象物に接触してしまい過大な接触力が発生してしまうことを阻止する。
【００４０】
第２処理：後述の位置誤差積分算出部１１７により算出された位置誤差積分値が、力順応制御閾値記憶部２０６より読み取った閾値Ｔｈ２より小さいか判定する。位置誤差積分値がＴｈ２以上である場合、一次遅れ補償ユニット５００にて使用している一時遅れ補償の時定数Ｔを修正する。たとえば第1処理後の時定数Ｔから所定値ΔＴ２を加算することにより時定数を大きくする。本第２処理は、想定していた位置において先端が接触しなかった場合に、接触力が発生していないことにより先端が動作し続けることを阻止する。
【００４１】
時定数変更ユニット５０２は、変更処理（第1処理、第２処理）を行った後、時定数Ｔを一時遅れ補償ユニット５００にフィードバックする。時定数変更ユニット５０２は、加算部５０１により算出された修正量Δｘforce-compを位置誤差算出部１１４に出力する。フィードバックを受けた一時遅れ補償ユニット５００はフィードバックされた時定数を用いる。
【００４２】
位置指令値生成部１１３は、位置データ記憶部２００に記憶された目標先端位置データを読み出す。位置指令値生成部１１３は、目標先端位置データから各制御周期における補間された先端位置指令値ｘRを算出する。
【００４３】
位置誤差算出部１１４は、位置指令値生成部１１３により生成した先端位置指令値ｘR、先端位置算出部１０４により算出された現在の先端位置ｘ、及び力順応制御修正量算出部１１２により算出された修正量Δｘforce-compから、式（８）の計算を行う。式（８）の計算により、修正量Δｘforce-compを考慮した位置誤差Δｘを算出する。位置誤差算出部１１４は、算出した位置誤差Δｘを位置誤差記憶部２０７に格納するとともに関節角差分算出部１１５に出力する。
【数９】
2011036750.tif 000011
【００４４】
位置誤差積分算出部１１７は、位置誤差記憶部２０７から前回の制御周期と今回の制御周期の位置誤差を読み取る。位置誤差積分算出部１１７は、位置誤差を積分することで位置誤差積分値を算出する。
【００４５】
関節角差分算出部１１５は、位置誤差算出部１１４により算出された誤差Δｘからヤコビ行列Ｊの逆行列を用いて関節角差分Δθを式（９）のように算出する。
【数１０】
2011036750.tif 000012
【００４６】
トルク指令値算出部１１６は、関節角差分算出部１１５により算出された関節角差分を積分することによりトルク指令値（制御目標値）を生成する。
【００４７】
駆動部１０１は、トルク指令値算出部１１６により算出されたトルク指令値にしたがってアクチュエータ１００を駆動する。
【００４８】
位置データ記憶部２００、リンクパラメータ記憶部２０１、摩擦係数記憶部２０２、ヤコビ行列記憶部２０３、力・モーメントデータ記憶部２０４、コンプライアンスモデル記憶部２０５、力順応制御閾値記憶部２０６及び位置誤差記憶部２０７としては、例えば半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクや磁気テープ等が採用可能である。
【００４９】
位置データ記憶部２００は、位置指令値生成部１１３が先端位置指令値を生成するために使用する目標先端位置データ列を記憶している。リンクパラメータ記憶部２０１は、ロボットのリンク３０１、３０２に関するリンクパラメータを記憶している。摩擦係数記憶部２０２は、摩擦力トルク算出部４０１が摩擦力トルクを算出するために使用する、予め定速運転において速度−トルク関係から求めておいた摩擦係数データを記憶している。ヤコビ行列記憶部２０３は、ヤコビ行列算出部１０５により算出されるヤコビ行列を記憶している。力・モーメントデータ記憶部２０４は、力指令値生成部１０９が先端位置力指令値を生成するために使用する目標先端力データ列を記憶している。コンプライアンスモデル記憶部２０５は、予め設定されたコンプライアンスモデルを記憶している。力順応制御閾値記憶部２０６は、力順応制御修正量算出部１１２にて使用する力順応制御修正量に対する閾値Ｔｈ１、Ｔｈ２を記憶している。位置誤差記憶部２０７は、位置誤差算出部１１４により算出される位置誤差を記憶している。
【００５０】
＜ロボット制御方法＞
図６は、本発明の実施の形態に係るロボット制御方法を説明するためのフローチャートである。
【００５１】
（Ａ）ステップＳ１００において制御演算を開始する。ステップＳ１０１において、位置指令値生成部１１３が、位置データ記憶部２００から目標先端位置データ列を読み出す。位置指令値生成部１１３が、目標先端位置データ列に基づいて各制御周期における先端位置指令値を生成する。ステップＳ１０２において、位置誤差算出部１１４が、位置指令値生成部１１１により生成された先端位置指令値と、先端位置算出部１０４により算出された先端位置との誤差に、先端位置の修正量（力順応制御修正量Δｘforce-comp）を考慮した誤差を算出する。ステップＳ１０３において、関節角差分算出部１１５が、位置誤差算出部１１４により算出された誤差に対して、ヤコビ行列記憶部から読み出したヤコビ行列を用いて式（９）にあるような逆運動学計算を行って関節角差分を算出する。ステップＳ１０４において、トルク指令値算出部１１６が、関節角差分算出部１１５により算出された関節角差分を積分することによりトルク指令値を算出する。ステップＳ１０５において、駆動部１０１が、トルク指令値算出部１１６により算出されたトルク指令値を制御目標値としてアクチュエータ１００を駆動する。具体的には、駆動軸３０６を駆動させ、先端位置を制御する。ステップＳ１０６において、制御演算の終了を確認し、ステップＳ１０７で処理を終了する。ステップS１０６において制御演算が終了でなければステップＳ１０８に進む。
【００５２】
（Ｂ）ステップＳ１０８において、駆動軸角度検出部１０２が、駆動軸角度を検出する。ステップＳ１０９において、関節軸角度算出部１０３が、駆動軸角度検出部１０２により算出された駆動軸角度から、減速機の減速比などに基づいて関節軸角度を算出する。ステップＳ１１０において、先端位置算出部１０４が、リンクパラメータ記憶部２０１からリンクパラメータを読み出す。先端位置算出部１０４が、リンクパラメータを用いて、関節軸角度算出部１０３により算出された関節軸角度から順運動学計算により先端位置を算出する。ステップＳ１１１において、ヤコビ行列算出部１０５が、関節軸角度算出部１０３により算出された関節軸角度からヤコビ行列を算出する。
【００５３】
（Ｃ）ステップＳ１１２において、駆動トルク推定部１０６が、駆動軸角度検出部１０２により算出された駆動軸角度、及び関節軸角度算出部１０３により算出された関節軸角度から駆動トルクを推定する。ステップＳ１１３において、外部トルク算出部１０７が、駆動トルク推定部１０６により推定された駆動トルクと、トルク指令値算出部１１６により算出された実際のトルク指令値との差から外部トルクを算出する。ステップＳ１１４において、外力算出部１０８は、外部トルク算出部１０７により算出された外部トルクからヤコビ行列算出部１０５により算出されたヤコビ行列を用いて式（２）のように外力を算出する。
【００５４】
（Ｄ）ステップＳ１１５において、力指令値生成部１０９が、力・モーメントデータ記憶部２０４から目標先端力・モーメントデータ列を読み出す。力指令値生成部１０９が、目標先端力・モーメントデータ列に基づいて各制御周期における先端力指令値を生成する。ステップＳ１１６において、力誤差算出部１１０が、力指令値生成部１０９により生成された先端力指令値と、外力算出部１０８により算出された先端外力との誤差である力誤差を算出する。ステップＳ１１７において、コンプライアンス修正量算出部１１１が、コンプライアンスモデル記憶部２０５からコンプライアンスモデルを読み出す。コンプライアンス修正量算出部１１１、コンプライアンスモデルを用いて式（４）のように、力誤差算出部１１０により算出された力誤差に応じた先端位置の修正量を算出する。ステップＳ１１８において、力順応制御修正量算出部１１２が、式（７）のように、コンプライアンス修正量算出部１１１により生成されたコンプライアンス修正量に対して一次遅れ補償を行う。力順応制御修正量算出部１１２が、先端位置に対する力順応制御修正量を算出する。ステップＳ１０２に戻り、位置誤差算出部１１４が、式（８）のように、位置指令値生成部１１１により生成された先端位置指令値と、先端位置算出部１０４により算出された先端位置との誤差に、力順応制御修正量算出部１１２により算出された修正量を考慮した誤差を算出する。
【００５５】
＜駆動トルク推定処理＞
図7は、図６に示したステップＳ１１２の駆動トルク推定処理を説明するためのフローチャートである。
【００５６】
（Ａ）ステップＳ２００において、駆動トルク推定処理を開始する。ステップＳ２０１において、駆動軸速度算出部４００が、駆動軸角度検出部１０２により検出された駆動軸角度から時間差分を取る。駆動軸速度算出部４００が時間差分を取ることにより駆動軸速度を算出する。摩擦力トルク算出部４０１が、摩擦係数記憶部２０２から摩擦係数を読み出す。摩擦力トルク算出部４０１が、摩擦係数及び駆動軸速度算出部４００により算出された駆動軸速度から摩擦力トルクを算出する。
【００５７】
（Ｂ）ステップＳ２０２において、速度算出ユニット４１０が、関節軸角度算出部１０３により算出された関節軸角度の時間差分を取る。速度算出ユニット４１０が時間差分を取ることにより関節角速度を算出する。ステップＳ２０３において、加速度算出ユニット４１１が、速度算出ユニット４１０により関節角速度の時間差分を取る。加速度算出ユニット４１１が時間差分を取ることにより関節角加速度を算出する。ステップＳ２０４において、慣性モーメント算出ユニット４１２が、リンクパラメータ記憶部２０１からリンクパラメータを読み出す。慣性モーメント算出ユニット４１２が、関節軸角度算出部１０３により算出された関節軸角度とリンクパラメータから各関節におけるリンクの慣性モーメントを算出する。ステップＳ２０５において、慣性力トルク算出ユニット４１３が、加速度算出ユニット４１１により算出された関節角加速度及び慣性モーメント算出ユニット４１２により算出された慣性モーメントから慣性力トルクを算出する。
【００５８】
（Ｃ）ステップＳ２０６において、重力トルク算出部４０３が、リンクパラメータ記憶部２０１からリンクパラメータを読み出す。重力トルク算出部４０３が、関節軸角度算出部１０３により算出された関節軸角度関節軸角度とリンクパラメータから各リンク３０１、３０２に作用する重力を算出する。重力トルク算出部４０３が、各リンク３０１、３０２に作用する重力を補償する重力トルクを算出する。
【００５９】
（Ｄ）ステップＳ２０７において、加算部４０４が、摩擦力トルク算出部４０１により算出された摩擦力トルク、慣性力トルク算出ユニット４１３により算出された慣性力トルク及び重力トルク算出部４０３により算出された重力トルクを加算する。加算部４０４が、慣性力トルクおよび重力トルクを加算することにより駆動トルクを推定する。ステップＳ２０８において駆動トルク推定処理を終了する。
【００６０】
＜力順応制御修正量算出処理＞
図８は、図６に示したステップＳ１１８の力順応制御修正量算出処理を説明するためのフローチャートである。
【００６１】
（Ａ）ステップＳ３００において、力順応制御修正量算出処理を開始する。ステップＳ３０１において、一次遅れ補償ユニット５００が、コンプライアンス修正量に対して式（６）のような一次遅れ補償を施す。ステップＳ３０２において、加算部５０１がコンプライアンス修正量の一時遅れ補償と、当該コンプライアンス修正量とを加算することにより、式（７）のように力順応制御修正量Δｘforce-compを算出する。
【００６２】
（Ｂ）ステップＳ３０３において、加算部５０１により算出された力順応制御修正量Δｘforce-compが、力順応制御閾値記憶部２０６より読み取った閾値Ｔｈ１より小さいか判定する。修正量が閾値Ｔｈ１より小さければＳ３０５に進み、閾値Ｔｈ１以上である場合、ステップＳ３０４に進む。ステップＳ３０４において、一次遅れ補償ユニット５００にて使用している一時遅れ補償の時定数を修正する。たとえば現在の時定数Ｔに所定値ΔＴ１を加算することにより時定数を大きくする。
【００６３】
（Ｃ）一方、ステップＳ３０８において位置誤差積分算出部１１７が位置誤差記憶部２０７から読み取った位置誤差から位置誤差積分を算出する。ステップＳ３０５において、位置誤差積分値が、力順応制御閾値記憶部２０６より読み取った閾値Ｔｈ２より小さいか判定する。位置誤差積分値が閾値Ｔｈ２より小さければＳ３０７に進み、力順応制御修正量算出処理を終了する。閾値以上であれば、ステップＳ３０６に進み、一次遅れ補償ユニット５００にて使用している一時遅れ補償の時定数を修正する。たとえばステップＳ３０３，Ｓ３０４の処理後の時定数Ｔから所定値ΔＴ２を加算することにより時定数を大きくする。この後、ステップＳ３０７にて力順応制御修正量算出処理を終了する。
【００６４】
なお（Ｂ）、（Ｃ）の時定数の変更処理は、例えば所定の更新周期ごとに行うようにしてもよい。
【００６５】
以上、本発明の実施の形態によれば、ロボットの先端での目標接触力へ高速に追従させるとともに、接触失敗や接触力過大などのエラーを素早く検出し、安定した力制御を実現できる。
【００６６】
なお、図６〜図８に示した一連の手順、例えば：駆動軸角度検出部１０２が、駆動軸角度を検出するステップ；関節軸角度算出部１０３が、駆動軸角度から関節軸角度を算出するステップ；先端位置算出部１０４が、関節軸の角度からロボットの先端位置を算出するステップ；位置指令値生成部１１３が、先端位置の位置指令値を生成するステップ；位置誤差算出部１１４が、先端位置と位置指令値との誤差を算出するステップ；関節角差分算出部１１５が、誤差から逆運動学計算により関節角差分を算出するステップ；トルク指令値算出部１１６が、関節角差分を積分することによりトルク指令値を算出するステップ；駆動部１０１が、トルク指令値に基づいてアクチュエータ１００を駆動させるステップ；駆動トルク推定部１０６が、駆動軸角度および関節軸角度からアクチュエータ１００を駆動させるための駆動トルクを推定するステップ；外部トルク算出部１０７が、推定された駆動トルクと、トルク指令値との差を外部トルクとして算出するステップ；ヤコビ行列算出部１０５が、関節軸の角度に基づいてロボットの作業座標系と関節座標系との間のヤコビ行列を算出するステップ；外力算出部１０８が、ヤコビ行列及び外部トルクから、先端位置に作用する外力を算出するステップ；力指令値生成部１０９が、先端での力指令値を生成するステップ；力誤差算出部１１０が、推定した外力と、力指令値との誤差を算出するステップ；コンプライアンス修正量算出部１１１が、コンプライアンスモデル記憶部２０５に記憶されている先端位置におけるコンプライアンスモデルを用いて、力誤差に応じて位置指令値に対する修正量を算出するステップ；力順応制御修正量算出部１１２が当該修正量と一時遅れ補償とに基づき、位置指令値に対する修正量である力順応制御修正量を算出するとともに、力順応制御閾値記憶部２０６に記憶されている閾値と、位置誤差積分算出部１１７により算出された位置誤差積分値とを用いて当該一次遅れ補償の時定数の変更処理を行うステップ；位置誤差積分算出部１１７が、位置誤差算出部１１４で算出され、位置誤差記憶部２０７に記憶されている位置誤差から位置誤差積分を行うステップ等は、図６〜図８と等価なアルゴリズムのプログラムにより、図１に示したロボット制御装置を制御して実行できる。このプログラムは、例えば位置データ記憶部２００等の記憶装置に記憶させればよい。又、このプログラムは、コンピュータ読取り可能な記録媒体に保存し、この記録媒体を位置データ記憶部２００等に読み込ませることにより、本発明の実施の形態の一連の手順を実行することができる。更に、インターネット等の情報処理ネットワークを介して、位置データ記憶部２００等に格納することが可能である。
【００６７】
（第１の変形例）
本発明の実施の形態の第１の変形例として、外力算出部１０８は、先端に取り付けた力覚センサなどで外力を検出することにより、外力を取得してもよい。また先端でなくても、力覚センサを取り付けた箇所と先端までを変換する同次変換行列が既知であれば、先端での等価力として算出することができる。
【００６８】
（第２の変形例）
本発明の実施の形態の第２の変形例として、駆動トルク推定部１０６は、関節軸３０７に取り付けたトルクセンサなどでトルクを検出し、これを駆動トルクとして取得してもよい。
【００６９】
（第３の変形例）
本発明の実施の形態の第３の変形例として、式（９）のようにヤコビ行列を用いずに、先端位置から関節角を直接算出できる逆変換を用いる場合を説明する。この場合、関節角差分算出部１１５は、位置指令値生成部１１３により生成した先端位置指令値ｘRに、力順応制御修正量算出部１１２により算出した先端位置の修正量Δｘforce-compを加算した新たな先端位置ｘを式（１０）のように算出する。
【数１１】
2011036750.tif 000013
【００７０】
トルク指令値算出部１１６は、新たな先端位置ｘに逆変換Λ-1を乗じてトルク指令値θRを式（１１）のように算出する。
【数１２】
2011036750.tif 000014
【００７１】
（その他の実施の形態）
上記のように、本発明は実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【００７２】
例えば、本発明の実施の形態において、慣性力トルクの算出の際に、速度算出ユニット４１０及び加速度算出ユニット４１１による関節軸角度の時間二回差分で算出された関節角加速度を用いている。制御周期によっては時間遅れが大きくなりトルク誤差が大きくなりやすくなる。その場合は、図９に示すようにリンク３０１に搭載した加速度センサ３１１からリンク３０１の加速度を検出する。検出した加速度を加速度算出ユニット４１１が関節角加速度へ変換する。変換した関節角加速度を基に慣性力トルクを算出してもよい。
【００７３】
又、駆動トルク推定処理としては、摩擦力トルク、慣性力トルク及び重力トルクから駆動トルクを推定する一例を示したが、本発明はこれに限定されるものではない。例えば、遠心力やコリオリの力等のパラメータを更に考慮しても良い。
【００７４】
又、ＣＰＵ１、位置データ記憶部２００、リンクパラメータ記憶部２０１、摩擦係数記憶部２０２、ヤコビ行列記憶部２０３、力・モーメントデータ記憶部２０４、コンプライアンスモデル記憶部２０５、力順応制御閾値記憶部２０６及び位置誤差記憶部２０７等が制御対象であるロボットの内部に埋め込まれて一体化されていても良い。又、ＣＰＵ１、位置データ記憶部２００、リンクパラメータ記憶部２０１、摩擦係数記憶部２０２、ヤコビ行列記憶部２０３、力・モーメントデータ記憶部２０４、コンプライアンスモデル記憶部２０５、力順応制御閾値記憶部２０６及び位置誤差記憶部２０７等が制御対象であるロボットの外部にあり、ロボットを有線或いは無線で遠隔制御することも可能である。
【００７５】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【符号の説明】
【００７６】
１………中央演算処理装置（ＣＰＵ）
１００…アクチュエータ
１０１…駆動部
１０２…駆動軸角度検出部
１０３…関節軸角度算出部
１０４…先端位置算出部
１０５…ヤコビ行列算出部
１０６…駆動トルク推定部
１０７…外部トルク算出部
１０８…外力算出部
１０９…力指令値生成部
１１０…力誤差算出部
１１１…コンプライアンス修正量算出部（第1の修正量算出部）
１１２…力順応制御修正量算出部（第２の修正量算出部）
１１３…位置指令値生成部
１１４…位置誤差算出部
１１５…関節角差分算出部
１１６…トルク指令値算出部
１１７…位置誤差積分算出部
２００…位置データ記憶部
２０１…リンクパラメータ記憶部
２０２…摩擦係数記憶部
２０３…ヤコビ行列記憶部
２０４…力・モーメントデータ記憶部
２０５…コンプライアンスモデル記憶部
２０６…力順応制御閾値記憶部
２０７…位置誤差記憶部
３００…本体
３０１、３０２…リンク
３０３…駆動プーリ
３０４…従動プーリ
３０５…関節軸角度検出部
３０６…駆動軸
３０７…関節軸
３０８…伝達機構
３０９…減速機
３１０…可動部
３１１…加速度センサ
４００…駆動軸速度算出部
４０１…摩擦力トルク算出部
４０２…慣性力トルク算出部
４０３…重力トルク算出部
４０４…加算部
４１０…速度算出ユニット
４１１…加速度算出ユニット
４１２…慣性モーメント算出ユニット
４１３…慣性力トルク算出ユニット
５００…一次遅れ補償ユニット
５０１…加算部
５０２…時定数変更ユニット
【図１】
2011036750.tif 000015
【図２】
2011036750.tif 000016
【図３】
2011036750.tif 000017
【図４】
2011036750.tif 000018
【図５】
2011036750.tif 000019
【図６】
2011036750.tif 000020
【図７】
2011036750.tif 000021
【図８】
2011036750.tif 000022
【図９】
2011036750.tif 000023
【国際調査報告】
2011036750.tif 000024
2011036750.tif 000025
2011036750.tif 000026
2011036750.tif 000027