(57)【要約】 【課題】ロボットアームの関節で他軸干渉により生じたセンサの検出誤差を補正し、当該の関節の駆動軸周りに働く力を正確に検出する。【解決手段】ロボットアームのリンク２１０、２２０を連結する関節構造において、リンク間に作用する力を求めるためのセンサ２５０を備える。関節の駆動力を発生する駆動装置２３０は、第１および第２の駆動部２３１、２３２を有する。関節の駆動方向には運動可能に、かつ他方向には運動不可能に拘束する拘束部２４１は、関節の駆動方向に対して相対変位可能な第１および第２の支持部２４２、２４３を有する。駆動装置２３０の駆動部２３１はリンク２１０に固定され、拘束部２４１の支持部２４３はリンク２１０に固定される。また、拘束部２４１の支持部２４２は駆動装置の駆動部２３２に固定される。センサ２５０は、支持部２４２およびリンク２２０の間を結合するよう固定される。【選択図】図２
2017080841.tif 000002
【特許請求の範囲】
【請求項１】
第１および第２のリンクを相対変位可能に連結する関節を構成するロボットアームの関節構造であって、前記第１および第２のリンクに作用する力を求めるセンサを備えたロボットアームの関節構造において、
前記関節の駆動方向に相対変位する第１駆動部および第２駆動部を有し、これらの駆動部を介して前記第１および第２のリンクを相対変位させる駆動力を発生する駆動装置と、
前記関節の駆動方向に対して相対変位可能な第１支持部および第２支持部を有し、これらの支持部を介して前記第１および第２のリンクの相対変位方向を、前記関節の駆動方向には運動可能に、かつ他方向には運動不可能に拘束する拘束部と、
を備え、
前記駆動装置の第１駆動部は前記の第１のリンクに固定され、
前記拘束部の前記の第１支持部は前記第１のリンクに固定され、
前記拘束部の前記の第２支持部は前記駆動装置の第２駆動部に固定され、
前記センサは、前記拘束部の前記第２支持部、および前記第２のリンクの間を結合するよう固定される、
ロボットアームの関節構造。
【請求項２】
請求項１に記載のロボットアームの関節構造において、前記センサ、前記拘束部の前記第２支持部、および前記第２のリンクの間を固定的に結合する接続部材を備えたロボットアームの関節構造。
【請求項３】
請求項１または２に記載のロボットアームの関節構造において、前記拘束部が軸受により構成されるロボットアームの関節構造。
【請求項４】
請求項１から３のいずれか１項に記載のロボットアームの関節構造において、前記駆動装置がモータおよび前記モータの出力を減速する減速機から構成されるロボットアームの関節構造。
【請求項５】
請求項１から４のいずれか１項に記載のロボットアームの関節構造をそれぞれ有する複数の関節を備えた多関節ロボットアームを備え、前記関節にそれぞれ設けられた当該関節が連結するリンクに作用する力を求めるセンサの検出値を補正するロボット装置の測定方法において、
制御装置が、前記関節に設けられたセンサによって検出された検出値と、前記多関節ロボットアームにおいて前記関節よりも手先側に隣接する関節において、下記補正工程によって補正されたセンサの検出値と、を用いて、当該関節の前記センサに作用する、当該関節の駆動方向を除く方向の他軸力を計算する他軸力計算工程と、
前記制御装置が、前記他軸力と前記センサの検出値に生じる誤差との関係を格納した当該センサに係る感度行列を用いて、前記他軸力計算工程で計算された他軸力に基づき前記センサの検出値に生じる誤差を計算する他軸干渉計算工程と、
前記制御装置が、前記センサの検出値から、前記他軸干渉計算工程で計算した前記誤差を差し引き、前記センサの検出値を補正する補正工程と、
を備えたロボット装置の測定方法。
【請求項６】
２つのリンクを相対変位可能に連結する複数の関節を備えた多関節ロボットアームであって、前記関節にそれぞれ設けられた当該関節が連結するリンクに作用する力を求めるセンサの検出値を補正するロボット装置の測定方法において、
制御装置が、前記関節に設けられたセンサによって検出された検出値と、前記多関節ロボットアームにおいて前記関節よりも手先側に隣接する関節において、下記補正工程によって補正されたセンサの検出値と、を用いて、当該関節の前記センサに作用する、当該関節の駆動方向を除く方向の他軸力を計算する他軸力計算工程と、
前記制御装置が、前記他軸力と前記センサの検出値に生じる誤差との関係を格納した当該センサに係る感度行列を用いて、前記他軸力計算工程で計算された他軸力に基づき前記センサの検出値に生じる誤差を計算する他軸干渉計算工程と、
前記制御装置が、前記センサの検出値から、前記他軸干渉計算工程で計算した前記誤差を差し引き、前記センサの検出値を補正する補正工程と、
を備えたロボット装置の測定方法。
【請求項７】
請求項５または６に記載のロボット装置の測定方法において、前記制御装置は、前記多関節ロボットアームの手先側の関節から順に前記の各工程を実行するロボット装置の測定方法。
【請求項８】
請求項５から７のいずれか１項に記載のロボット装置の測定方法において、前記他軸力計算工程で前記他軸力を計算する際に、前記の手先側に隣接する関節に加わる力の値として、前記の手先側に隣接する関節の前記センサの出力値を用いるロボット装置の測定方法。
【請求項９】
請求項５から７のいずれか１項に記載のロボット装置の測定方法において、前記駆動方向を除く方向の力を計算する際に、前記の手先側に隣接する関節に加わる力の値として、前記の手先側に隣接する関節の前記センサに作用する力の計算値を使用するロボット装置の測定方法。
【請求項１０】
請求項５から９のいずれか１項に記載のロボット装置の測定方法によって、多関節ロボットアームの前記複数の関節に設けられた前記センサの検出値を補正し、補正された前記センサの出力値を用いて前記複数の関節の駆動力を制御するロボット装置の制御方法。
【請求項１１】
請求項５から１０のいずれか１項に記載の各工程を前記制御装置に実行させるロボット装置の制御プログラム。
【請求項１２】
請求項１１に記載のロボット装置の制御プログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連結するリンクに作用する力を測定する力センサを備えたロボットアームの関節構造、ロボット装置の測定方法、およびロボット装置の制御方法に関する。
【背景技術】
【０００２】
近年、様々な工業製品の生産ラインで、多関節ロボットが利用されるようになってきた。しかしながら、多関節ロボットでは実現が困難な工程も数多く存在する。例えば、自動車部品などを組み立てる生産ラインにおいて、特に数百グラムから数キログラムの荷重が部品に加わるような工程には、多関節ロボットが広く用いられている。これに対して、柔軟物、軽量物、あるいは低強度部材などから成るワークの組付けなど、部品に与える荷重が数グラム程度であることを要求されるような工程や、精密嵌合を行う工程を多関節ロボットで実現するには種々の困難がある。
【０００３】
このように多関節ロボットで実現が困難な工程では、今のところ、多関節ロボットの代りにその工程に特有の専用装置や専用治具が用られている。しかし、このような専用装置や専用治具は、特定の工程、あるいは取り扱うワークのために専用に設計、製造されるものであり、実際にこの種の装置や治具が用意され、例えば生産ラインが稼働するまでに、多大な時間とコストがかかる問題がある。
【０００４】
そこで、専用装置や専用治具を用いることなく、汎用的な多関節ロボットを用いて、上述のような柔軟物、軽量物、あるいは低強度部材などから成るデリケートなワークを取り扱う工程を実現することが望まれている。
【０００５】
上述のような柔軟物、軽量物、あるいは低強度部材といったワークを取り扱う場合、例えば、ワークの破損や変形を防ぐため、これらのワークには大きな力を作用させることができない。そこで、もしこの種のワークを多関節ロボットで操作する場合には、高精度に関節やリンクを介してワークに作用する力を制御する必要がある。
【０００６】
例えば、従来から多関節ロボットの先端に搭載するハンドやグリッパのようなエンドエフェクタとともに力覚センサを配置する構成が知られている。この力覚センサの出力値をエンドエフェクタの駆動制御にフィードバックすることにより、ワークに作用する力を制御することができる。また、手先のエンドエフェクタのみならず、例えば、多関節ロボットのアームを構成する各リンクに作用する力を測定して、多関節ロボットの駆動制御にフィードバックすることが考えられる。特に、ロボットアームのリンクに作用する力のうち、多関節ロボットの高精度な駆動制御のために測定する必要がある力は、駆動軸周りに作用するトルクである。
【０００７】
このようなアームのリンクに作用するトルクを検出する手段としては、ロボットアームの関節にトルクセンサを搭載する構成が提案されている（例えば下記の特許文献１）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１１−７２１８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
多関節ロボットアームの関節には、当該アームの動作に応じて、リンク自身に作用する重力、慣性力、コリオリ力や、隣接するリンクからの力が作用する。例えば、この関節に作用する力は、その関節の駆動軸をz軸としたときの直交座標系において、３方向の座標軸方向並進力、３方向の座標軸周りの回転力の合計で６方向の力、の各成分を含む。そして、この６方向の力のうち、関節の駆動軸周りを除く５方向に作用する力を、以下では他軸力という。
【００１０】
一方、多関節ロボットアームの駆動制御では、例えばリンクに作用する関節の駆動軸周りの力を検出し、それを当該関節の駆動にフィードバックさせる。このため、関節に搭載された力センサは連結しているリンクに作用する関節の駆動軸周りに作用している力を正確に検出できるのが望ましい。
【００１１】
しかしながら、力センサに上記のような他軸力が作用すると、力センサは駆動軸周りの力を正確に検出できなくなる。例えば、変形部を備え、変形部に生じた変形量を検出することで力を求める方式の力センサに他軸力が作用すると、力センサは他軸力の影響で関節の駆動軸周りに対しても変形する。
【００１２】
以下、この力センサが受ける他軸力の影響は「他軸干渉」という。即ち、力センサに他軸力が働き、力センサに何らかの変形が生じると、この変形は当該関節の駆動軸周りの力を検出する力センサの検出誤差として現れる。即ち、このように、特定の関節の駆動軸に設けられた力センサに他軸力に起因して生じる測定誤差を他軸干渉という。このような他軸干渉が発生している場合、当該の関節の駆動軸周りの力を力センサで正確に検出できなくなる。
【００１３】
そこで、関節の駆動軸周りの力を正確に検出するためには、例えば何らかの方法により他軸干渉で生じたセンサ検出値の誤差を補正する必要がある。このためには、例えば力センサに作用する他軸力を検出し、力センサの検出値を補正することが考えられる。
【００１４】
しかしながら、特許文献１に記載されるような従来の関節構造では、力センサとリンクの間に軸受が配置されており、他軸力の値を検出するのはそれほど容易ではない。
【００１５】
多関節ロボットアームの関節において、特許文献１の従来構成のように軸受のような機械要素が介在する場合、他軸力の値を検出するのが困難になるのは、以下に示すような理由による。
【００１６】
例えば、この種の関節構造では、関節の運動を所望の１方向のみ運動可能とし、他方向の運動を拘束する拘束手段（拘束部）として、クロスローラベアリングのような軸受が用いられる。このような構造により、他軸力の伝達経路が複雑なものとなる場合がある。
【００１７】
例えば、関節構造によっては、２つのリンクを接続する関節軸以外にも、関節駆動力が伝達される経路が存在する場合がある。例えば、特許文献１に示されるような構造では、駆動側のリンクに作用する他軸力は、関節の拘束手段としての軸受と力センサの双方を介して伝達される。このような構成では、力センサに伝わる他軸力の値を正確に捉えるのは難しい。
【００１８】
特に、力センサには、リンクの駆動力が、関節の拘束部である軸受の摩擦力分だけ損失されて伝わる。このため、力センサに作用する他軸力を正確に把握するためには、関節に配置された軸受の摩擦力の把握が必要である。しかしながら、関節の軸受の摩擦力は、軸受に作用する力や関節の駆動速度、軸受の個体差などの様々な要因に対して非線形な特性を示すため、正確に軸受の摩擦力を把握することは困難である。
【００１９】
本発明の課題は、以上の諸問題に鑑み、ロボットアームの関節に作用する他軸力を正確に検出でき、他軸干渉で生じた力センサの検出誤差を補正し、当該の関節が連結しているリンクに作用する力を正確に検出できるようにすることにある。
【課題を解決するための手段】
【００２０】
上記課題を解決するため、本発明においては、第１および第２のリンクを相対変位可能に連結する関節を構成するロボットアームの関節構造であって、前記第１および第２のリンクに作用する力を測定する力センサを備えたロボットアームの関節構造において、前記関節の駆動方向に相対変位する第１駆動部および第２駆動部を有し、これらの駆動部を介して前記第１および第２のリンクを相対変位させる駆動力を発生する駆動装置と、前記関節の駆動方向に対して相対変位可能な第１支持部および第２支持部を有し、これらの支持部を介して前記第１および第２のリンクの相対変位方向を、前記関節の駆動方向には運動可能に、かつ他方向には運動不可能に拘束する拘束部と、を備え、前記駆動装置の第１駆動部は前記の第１のリンクに固定され、前記拘束部の前記の第１支持部は前記第１のリンクに固定され、前記拘束部の前記の第２支持部は前記駆動装置の第２駆動部に固定され、前記力センサは、前記拘束部の前記第２支持部、および前記第２のリンクの間を結合するよう固定される構成を採用した。
【発明の効果】
【００２１】
本発明によれば、力センサに加わる他軸力の伝達経路を単純化することができる。このため、力センサに加わる他軸力の値を高精度に把握できるようになり、これにより他軸干渉で生じたセンサ検出値の誤差を高精度に修正できるようになるので、センサ検出値を高精度に補正できる。補正されたセンサ検出値を多関節ロボットの駆動制御に使用することで、高精度な駆動制御が可能となり、従来では多関節ロボットで実現が困難だった工程が、多関節ロボットで実現できるようになる。
【００２２】
具体的には、補正されたセンサ検出値を多関節ロボットの駆動制御に使用することで、多関節ロボット先端に搭載するエンドエフェクタが部品に与える力を高精度に制御できる。これにより、柔軟物や低強度部材の組付け工程のような、部品に与える荷重が数グラム程度であることを要求されるような工程の自動化を多関節ロボットにより実現できるようになる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施例に係るロボットシステムの構成を示した説明図である。
【図２】図１のロボットアームの関節の構造を模式的に示した説明図である。
【図３】図１のロボットシステムの制御系の構成を示したブロック図である。
【図４】図３の制御系における関節の駆動力に係る測定および駆動制御の流れを示したフローチャート図である。
【図５】図３の制御系における関節の駆動力に係る異なる測定および駆動制御の流れを示したフローチャート図である。
【図６】ロボットアームの関節に働く他軸力を示した説明図である。
【図７】図１のロボットアームの異なる関節の構造を模式的に示した説明図である。
【図８】図２ないし図７の関節と同等な構成を有する直動式関節を示した説明図である。
【図９】図１のロボットアームの手先部分の関節の配置とその各部に働く力を示した説明図である。
【発明を実施するための形態】
【００２４】
以下、添付図面に示す実施例を参照して本発明を実施するための形態につき説明する。なお、以下に示す実施例はあくまでも一例であり、例えば細部の構成については本発明の趣旨を逸脱しない範囲において当業者が適宜変更することができる。また、本実施形態で取り上げる数値は、参考数値であって、本発明を限定するものではない。
【００２５】
以下に示す実施例では、関節の駆動軸周りに作用している力を求める機能を有するセンサを、力センサと称する。
＜実施例１＞
（多関節ロボットシステムの基本構成）
図１は本実施例を適用可能な多関節ロボットシステムの基本構成を示している。図１のロボットシステムは、例えば多関節ロボットアームとして構成されたロボットアーム１と、ロボットアーム１を制御するロボット制御装置２を含む。
【００２６】
ロボットアーム１は、垂直６軸構成の多関節ロボットアームである。ロボットアーム１は、ベース１１０上に、第１〜第６の関節１２１〜１２６を介して連結された、第１〜第６のリンク１１１〜１１６を有する。このロボットアーム１のベース１１０と第１のリンク１１１とは、Ｚ軸方向の回転軸の周りで回転する関節１２１で接続されている。また、ロボットアーム１の第１のリンク１１１と第２のリンク１１２とは、Ｙ軸方向の回転軸の周りで回転する関節１２２で接続されている。また、ロボットアーム１の第２のリンク１１２と第３のリンク１１３とは、Ｙ軸方向の回転軸の周りで回転する関節１２３で接続されている。また、ロボットアーム１の第３のリンク１１３と第４のリンク１１４とは、Ｘ軸方向の回転軸の周りで回転する関節１２４で接続されている。また、ロボットアーム１の第４のリンク１１４と第５のリンク１１５とは、Ｙ軸方向の回転軸の周りで回転する関節１２５で接続されている。また、ロボットアーム１の第５のリンク１１５と第６のリンク１１６とは、Ｘ軸方向の回転軸の周りで回転する関節１２６で接続されている。
【００２７】
ロボットアーム１の第６のリンク１１６の先には、生産ラインにおいて部品の組み立て作業や移動作業を行うための電動ハンドやエアハンドなどのエンドエフェクタ１１７が接続されている。
【００２８】
ロボットアーム１の動作は、ロボット制御装置２によって制御される。例えば、ロボット制御装置２は、予めプログラムされたロボット制御プログラムに応じてロボットアーム１の各関節の姿勢を制御することにより、ロボットアーム１の姿勢、ないしはエンドエフェクタ１１７付近に設定された基準部位の位置姿勢を制御する。また、これに同期してロボット制御装置２は、エンドエフェクタ１１７の動作、例えばハンドの開閉などの動作を制御することにより、ロボットアーム１でワークを操作することができる。
【００２９】
図１では、ロボットアーム１の全体に係る３次元座標軸を左下欄に示してある。そして、図１のロボットアーム１は、第１の関節１２１は、隣接するリンクをZ軸方向の回転軸で回転させ、第２の関節１２２、第３の関節１２３、第５の関節１２５は、隣接するリンクをY軸方向の回転軸で回転させるような姿勢で図示されている。また、第４の関節１２４、第６の関節１２６は、隣接するリンクをX軸方向の回転軸で回転させるよう構成されている。ただし、上記の各関節の回転軸と座標軸の関係は、図１に示すロボットアーム１の姿勢において適用されるものである。従って、例えばロボットアーム１がロボット制御装置２により図１とは別の姿勢に制御された場合には別の座標系の適用が必要になる場合がある。
【００３０】
（多関節ロボットの関節の基本構造）
図２は、図１のロボットアーム１における関節の基本構造例を模式的に示している。
【００３１】
以下、図２を参照して、図１のロボットアーム１の構成をより一般的に示すべく、第１〜第６の関節１２１〜１２６のうち、任意の関節を第ｎの関節と記載する場合がある。また、より簡便な表記として、この「ｎ番目（の関節、ないしリンクについても同様）」を示すために、図中の参照符号に「ｎ」の添字を前置した表記も用いる。また、「ｎ番目」からアームの手先側に隣りあう関節を「ｎ＋１」、ベース側に隣りあう関節を「ｎ−１」のように表記する場合がある。図１のアーム構成では、ｎはロボットアーム１の関節（ないしリンク）の番号に該当し、１から６までの数字を取り得る。また、煩雑さを避けるため、図中では文字ｎの表記は省略する場合がある。
【００３２】
図２は、第１および第２のリンク（２１０、２２０）を相対変位可能に連結する関節を構成するロボットアームの関節構造を示している。図２のロボットアームの関節構造は、第１および第２のリンク（２１０、２２０）に作用する力を測定する力センサを備える。
【００３３】
図２において、第ｎの関節は、第ｎ−１のリンク２１０、第ｎのリンク２２０を連結する。この第ｎの関節は、第ｎの関節を駆動する駆動手段ｎ２３０と、この第ｎの関節の動きを規制する拘束部ｎ２４０と、を備える。また、この第ｎの関節は、第ｎの関節で連結されるリンクに働く力を検出する力センサｎ２５０を備える。
【００３４】
第ｎ−１のリンク２１０および第ｎのリンク２２０は、この関節によって相対変位可能に連結され、駆動手段ｎ２３０で発生された駆動力により姿勢制御される。
【００３５】
関節の駆動力を発生する駆動手段ｎ２３０は、それぞれ第１駆動部、および第２駆動部として固定部２３１、および被駆動部２３２を備えている。図２では、駆動手段ｎ２３０の内部構成の詳細図示は省略されているが、この種のロボット関節の駆動手段は、例えば電動モータと減速機により構成される。電動モータの出力軸の回転が減速機に入力され、電動モータの出力軸の回転が所定の減速比だけ減速されて被駆動部２３２に伝達される。駆動手段ｎ２３０の減速機には、例えば波動歯車機構などが用いられる。
【００３６】
拘束部ｎ２４０は、第１および第２のリンクの相対変位方向を、関節の駆動方向には運動可能に、かつ他方向には運動不可能に拘束する機能を有する。即ち、拘束部ｎ２４０は、関節の運動を第ｎの関節の駆動軸ｎ２００周りのみ運動可能とし、かつ他方向には運動不可能に拘束する。拘束部ｎ２４０は、例えばクロスローラベアリング２４１とクロスローラベアリング２４１の内輪２４２に固定される接続部材２４４で構成することができる。クロスローラベアリング２４１の内輪２４２と外輪２４３は、駆動軸ｎ２００周りに回転可能な位置に配置される。拘束部ｎ２４０を構成するクロスローラベアリング２４１の内輪２４２と外輪２４３は、拘束部ｎ２４０の第１支持部および第２支持部に相当する。
【００３７】
力センサｎ２５０は、例えば、自身に加わる関節の駆動軸ｎ２００周りの力を検出するトルクセンサなどから構成される。その場合、力センサｎ２５０は、例えば内輪部２５１、外輪部２５２と、これらを結合するバネ部２５３で構成される。このような構成では、力センサｎ２５０に駆動軸ｎ２００周りの力が作用したとき、バネ部２５３が変形するため、力センサｎ２５０はバネ部２５３の変形量を介してリンクに作用する関節の駆動力を測定できる。
【００３８】
例えば、力センサｎ２５０の変形量を力に換算する感度行列（ｎ３３０：後述）をあらかじめテーブルメモリなどの形式で用意しておき、測定した変形量を力の測定量に換算することができる。力センサｎ２５０の変形量を測定する力センサの変位検出方式には、ひずみゲージ方式、静電容量方式、磁気方式、光学エンコーダ方式などがある。例えば光学エンコーダ方式の場合には、光学ロータリーエンコーダのスケールと光センサ（不図示）を、それぞれ接続部材２４４と外輪部２５２に対向して配置する構成が考えられる。
【００３９】
さて、図２のｎ番目の関節において、力学的な結合（連結）関係は以下のように構成されている。
【００４０】
（ア）図２の駆動手段ｎ２３０の固定部２３１（第１駆動部）は第ｎ−１のリンク２１０（仮に第１のリンクとする）に固定され、被駆動部２３２（第２駆動部）は接続部材２４４に固定される。この接続部材２４４は、力センサｎ２５０の内輪、拘束部ｎ２４０の内輪２４２（第２支持部）、および第ｎのリンク２２０（仮に第２のリンクとする）の間を固定的に結合する。
【００４１】
（イ）クロスローラベアリング２４１（拘束部）の外輪２４３（第１支持部）は第ｎ−１のリンク２１０（第１のリンク）に固定される。
【００４２】
（ウ）また、接続部材２４４は力センサｎ２５０の内輪部２５１に固定される。
【００４３】
（エ）力センサｎ２５０の外輪部２５２（第２支持部）は第ｎのリンク２２０（第２のリンク）に固定される。
【００４４】
なお、図２に記載した関節と等価な構造として、図７に示すような関節構造も考えられる。図７では、図２と対応する配置（結合、ないし連結）関係を有する部材に同一符号を付してある。
【００４５】
図７の関節構造では、異なる位置に力センサｎ２５０を配置されているが、関節構造の各部の結合（連結）関係は図２の関節と同等である。ただし、図７では、上記の（ア）〜（エ）に示した結合（連結）関係における第１および第２のリンクにそれぞれ対応するよう、リンク２１０、２２０の図示が入れ換えられている。同様に、図７では駆動手段ｎ２３０の固定部２３１（第１駆動部）と被駆動部２３２（第２駆動部）の位置関係も図２とは逆になっている。
【００４６】
さらに、図７ではクロスローラベアリング２４１（拘束部）の外輪２４３は上記（ア）〜（エ）における拘束部の第２支持部に対応し、内輪２４２は上記（ア）〜（エ）における拘束部の第１支持部に対応することになる。また、上記（ア）〜（エ）における接続部材２４４は、図７では駆動手段ｎ２３０を覆う例えば円筒状のハウジングの部分に相当する。力センサｎ２５０の内輪部２５１は、この接続部材２４４に固定され、力センサｎ２５０の外輪部２５１はリンク２２０（第２のリンク）に固定されている。
【００４７】
図７のような関節構造は、図２のものと同様、上記の（ア）〜（エ）に示した結合（連結）関係を満たす。このため、図７の構造であっても、後述の関節駆動力測定や関節駆動制御が同様に可能であり、同様の作用効果（後述）を期待できる。
【００４８】
また、図２では、相対的にリンクが回転変位する構造を示しているが、リンクを直線的に相対変位させる直動式関節では、図８のような構造が考えられる。図８でも、図２（ないし図７）と対応する配置関係を有する部材に同一の参照符号を付してある。図８と、図２における参照符号の対応関係は、上記図７の場合と同等であるから重複して記述しないが、この図８の関節構造は、直動関節ではあるものの、各部材の結合（連結）関係は、上記（ア）〜（エ）に示した図２（図７）と等価である。
【００４９】
図７、図８のように、上記（ア）〜（エ）のような結合（連結）関係を満たす構成は種々考えられ、以上に例示したような本実施例の関節構造は当業者において種々の設計変更が可能であるのはいうまでもない。
【００５０】
（ロボットアームの制御）
図２のように構成されたロボットアーム１の複数の関節は、ロボット制御装置２によって制御される。ロボット制御装置２が、第ｎの関節（第１〜第６の関節１２１〜１２６）の角度をそれぞれ制御することにより、ロボットアーム１に所望の姿勢を取らせることができる。
【００５１】
その際、ロボット制御装置２は、例えばエンドエフェクタ１１７を介して操作されるワーク（不図示）に対して加えられる力を制御することができる。例えば、ロボット制御装置２が、ロボットアーム１の各関節（ｎ）にそれぞれ配置された力センサの測定値を入力し、各関節の駆動手段ｎ２３０にフィードバックすることができる。これにより、例えばワークに対して印加される力を所望の大きさに制御する、あるいはワークに対して所定以上の大きな力が加わらないよう制御する、といったフィードバック制御が可能となる。
【００５２】
図３に、ロボット制御装置２のロボットアーム１の第ｎの関節に係る制御系の構成を機能ブロック図として示す。この制御系の機能ブロックにおいて、要部は、演算部３２０と記憶装置３００により構成されている。
【００５３】
このうち、演算部３２０は、コンピュータ、例えば汎用マイクロプロセッサなどから成るＣＰＵにより構成できる。記憶装置３００に用いられる記憶デバイスとしては、ＲＯＭ、ＲＡＭのような半導体メモリや、ＨＤＤやＳＳＤのような固定（外部）記憶装置が挙げられる。また、記憶装置３００に用いられる記憶デバイスには、各種フラッシュメモリや光（磁気）ディスクのような書き換え可能な記録メディアを用いる構成が考えられる。記憶装置３００はこれらの記憶デバイスを任意に組合せて構成することができる。
【００５４】
記憶装置３００を構成する上記の記憶デバイスは演算部３２０（コンピュータ）が読み取り可能な記録媒体を構成する。例えば、記憶装置３００には、ロボットアーム１の制御装置を構成する演算部３２０（コンピュータ）が実行する後述の制御手順を記述したプログラム３０１を格納しておくことができる。
【００５５】
また、記憶装置３００には、ロボットアーム１にワークを操作させ、例えば特定の工業製品を組み立て、製造するために必要な情報を、例えばロボット制御プログラムの形式で格納しておくことができる。このロボット制御プログラムは、例えば、ロボットアーム１の手先の基準部位の位置姿勢を定義した、いわゆる教示点リストのような形式や、任意のロボットプログラム言語の形式で記述される。特に図２の第ｎの関節について言えば、このロボット制御プログラムには、当該関節の駆動手段ｎ２３０の動作が記憶されることになる。
【００５６】
また、記憶装置３００には、後述の力センサｎ２５０に関する感度行列ｎ３３０をテーブルメモリのような形式で格納しておくことができる。感度行列ｎ３３０は、例えば、記憶装置３００を構成するＨＤＤにファイル形式で格納しておくことができ、後述のプログラムの実行時ないしはシステム初期化時などにＲＡＭの特定領域にロードされる。このようにして、演算部３２０が当該関節の力センサｎ２５０に関する感度行列ｎ３３０を参照することができる。
【００５７】
さらに、図３において、動作指令器３１０は、例えばロボットアーム１の近傍に配置された制御用のＰＣ端末や、いわゆるティーチングペンダント（ＴＰ）のような制御端末から構成される。作業者（ユーザ）は、例えばロボットアーム１の状態を確認しながら、リアルタイムで動作指令器３１０を操作することにより、ロボットアーム１に任意の動作を行わせることができる。また、上記のロボット制御プログラムをトレース実行させ、ロボットアーム１の動作を確認する、あるいはロボット制御プログラムの一部を修正することもできる。
【００５８】
また、図３において、当該関節の駆動手段ｎ２３０の駆動制御（例えば後述の関節の駆動力制御）は、詳細不図示のドライバ回路（例えばサーボ制御回路）を介して演算部３２０により行われる。これにより、ロボットアーム１が、特定の作業に必要な姿勢に制御される。この時、演算部３２０は、図２のように配置された力センサｎ２５０から、システムクロックなどに同期して刻々と当該関節の駆動力に係る測定値を取得することができる。
【００５９】
図３において、その他の「〜部」、「〜器」のような名称で示された機能ブロックは、図中ではあたかもハードウェアブロックのように図示されているが、実際には例えば演算部３２０（ＣＰＵ）がプログラム３０１を実行することにより実現される。ただし、これらの「〜部」、「〜器」のような名称で示された機能ブロック（３３０、３４０、３５０、３２１、３２２、３２３など）を、実際にハードウェアブロックとして実現することも可能であり、本実施例はそのような実装を妨げるものではない。
【００６０】
以下、図３の各機能ブロックの動作の概略を説明する。
【００６１】
制御装置たる演算部３２０は、例えば、動作指令器３１０からの動作指令に基づき、あるいは記憶装置３００に格納された教示データやロボット制御プログラムに基づき、駆動手段ｎ２３０の動作指令を生成し、駆動手段ｎ２３０の動作を制御する。
【００６２】
その際、演算部３２０は、第ｎの関節の関節駆動力を決定するために、第ｎの関節の力センサｎ２５０の検出値を用いたフィードバック制御を行う。力センサｎ２５０は、駆動手段ｎ２３０の動作を入力として、この第ｎの関節により駆動されるアーム手先側の第ｎのリンクに作用する、駆動軸ｎ２００周りの力の検出値を出力する。
【００６３】
その場合、他軸力計算部３２１（他軸力計算工程）がこの第ｎの関節に作用している他軸力を計算する。他軸力計算部３２１の入力の１つは第ｎの関節に関して計算部３４０により計算される（この関節により駆動される）第ｎのリンクに作用する動的な力である。また、他軸力計算部３２１の入力の他の１つは（既に計算済みの）第ｎ＋１の関節の力センサｎ＋１３５０の検出値である。この他軸力計算部３２１の演算過程は、この関節の力センサｎ２５０に作用する、この関節の駆動方向を除く方向の他軸力を計算する他軸力計算工程に相当する。
【００６４】
さらに、他軸干渉計算部３２２（他軸干渉計算工程）によって、上記の他軸力計算部３２１（他軸力計算工程）で計算された関節の駆動方向を除く方向の他軸力と、この関節の力センサｎ２５０の感度行列ｎ３３０を用いて、他軸干渉を計算する。ここで、他軸干渉とは、前述の通り、この関節の力センサｎ２５０の検出値に含まれているこの関節の駆動方向を除く方向の他軸力に起因して生じる誤差分である。
【００６５】
この感度行列ｎ３３０には、例えば、当該の力センサｎ２５０に対して、少なくとも関節の駆動軸に直交する２つの３次元座標軸廻りに加えられた力（トルク）と、力センサｎ２５０の出力値の関係を含むものとする。なお、感度行列ｎ３３０は、当該の力センサｎ２５０が、検出を目的とするこの関節の駆動軸廻りに加えられた力（トルク）と、力センサｎ２５０の出力値の関係を含んでいてもよい。
【００６６】
このように感度行列ｎ３３０を構成することにより、例えば、他軸干渉計算部３２２は、他軸力計算部３２１で求めた他軸力と、感度行列ｎ３３０を用いて、力センサｎ２５０の出力値に表われる他軸力の誤差、他軸干渉の大きさを計算できる。感度行列ｎ３３０は、例えば、テーブルメモリなどの形式で記憶装置３００に配置しておくことができる。
【００６７】
さらに、補正器３２３（補正工程）は、力センサｎ２５０の検出値から、他軸干渉計算部３２２が計算した前記の誤差である他軸干渉を差し引くことにより、この第ｎの関節に配置された力センサｎ２５０の検出値を補正する。
【００６８】
制御器３２４は、補正器３２３（補正工程）で補正された（他軸干渉を除いた）この第ｎの関節の駆動力の現在値を用いて、駆動手段ｎ２３０の駆動力を制御することができる。
【００６９】
上述の通り、関節の駆動軸ｎ２００周りには、図６に示されるような他軸力が働く。図６において、１０が力センサｎ２５０によって検出される駆動軸ｎ２００廻りに働く力である。この力センサｎ２５０によって検出される力（１０）は、他軸力４０を含んでいる。他軸力４０は、モーメント成分（２０）、並進力成分（３０）を含んでおり、上記の通り本実施例では、力センサｎ２５０の検出値（１０）から他軸力４０の影響を除去する制御を行う。
【００７０】
以上に示した図３の機能ブロックの情報処理を、入出力関係に重点を置いて整理すると次のようになる。
【００７１】
演算部３２０は、他軸力計算部３２１と、他軸干渉計算部３２２と、補正器３２３と、制御器３２４とを備えている。他軸力計算部３２１は、第ｎのリンクに作用する動的な力の計算部３４０により計算される第ｎのリンクに作用する動的な力の計算値と、第ｎ＋１の関節の力センサｎ＋１３５０の検出値とを入力とし、第ｎの関節の力センサｎ２５０に作用する他軸力を出力する。
【００７２】
他軸干渉計算部３２２は、他軸力計算部３２１で出力される力センサｎ２５０に作用する他軸力と、力センサｎ２５０の感度行列ｎ３３０とを入力として、他軸干渉で生じた力センサｎ２５０の検出値の誤差を出力する。
【００７３】
補正器３２３は、他軸干渉計算部３２２から出力される力センサｎ２５０の検出値の誤差と、力センサｎ２５０の検出値とを入力として、力センサｎ２５０の検出値が補正された値を出力する。
【００７４】
制御器３２４は、動作指令器３１０から出力される駆動手段ｎ２３０の動作指令と、補正器３２３から出力される力センサｎ２５０の検出値が補正された値とを入力として、駆動手段ｎ２３０の動作指令を出力する。
【００７５】
上記の説明において、ｎ、ｎ＋１のような添字で表現した通り、図３に示した制御構成では、第ｎの関節の関節駆動力を処理する場合、第ｎ＋１の関節の関節駆動力が処理済みになっている必要がある。このため、多関節構成のロボットアーム１の手先側の関節から順に上記の各工程を実行することになる。このような関節駆動力の測定処理は、図４のフローチャートのような形式で表現できる。
【００７６】
以下に、図４のフローチャートを参照して、図３の演算部３２０の他軸力計算部３２１、他軸干渉計算部３２２、補正器３２３、および制御器３２４の処理の詳細について説明する。
【００７７】
図４のフローチャートは、第１〜第６関節に関して、それぞれの関節の力センサｎ２５０で検出した力から他軸干渉を補正し、各関節の駆動手段ｎ２３０にフィードバックさせる制御手順を示している。図４の制御は、例えば、ロボットアーム１によってワークなどを取り扱う作業中にリアルタイムで実行する場合に実行できるよう構成したものである。
【００７８】
このため、図４の制御では、関節制御の最大時間（時刻Ｓ〜Ｅ）を定めておき（Ｓ４００）、この最大時間内に関節制御が終了しなかった場合（Ｓ４０３）は図４の関節制御を中止するようにしてある。ただし、この１セットの関節制御の所要時間に関する制限は、本実施例において必須のものではない。しかしながら、ロボットアーム１の全関節で１セットの関節制御の時間を制限することにより、例えば演算部３２０を構成するＣＰＵの計算資源を有効利用でき、本来の位置姿勢制御などが停滞したり誤動作したりする可能性を低減できる。
【００７９】
ステップＳ４００では、最初の処理対象の関節番号（ｎ）および全関節の制御を１セットとして、１ないし数セットの制御を行う所要時間ｔの変数を初期値Ｓ（開始時刻）に初期化する。このうち、関節番号（ｎ）のインデックスは、演算手段を構成するＣＰＵの内部レジスタやＲＡＭ上のスタックや特定アドレス上に割り当てられる変数領域を用いて実装できる。また、全関節で１セットの所要時間ｔは、不図示のＲＴＣ（リアルタイムクロック）などを用いて計時することができる。
【００８０】
本実施例の場合、ステップＳ４００では、ロボットアーム１の関節とリンクの番号を示すｎに６を代入しており、最初に図１における第６の関節１２６について制御が行われる。その後、ｎの値を５、４、３…と減じ（Ｓ４０２）ながら、図４に示した全体のループが実行され、手先側からベース側に近い関節に関する制御が順に実行される。
【００８１】
図４では、他軸力計算処理（ステップＳ４１０）は、図３の他軸力計算部３２１の処理に相当する。この他軸力計算処理（Ｓ４１０）では、第ｎの関節が駆動する第ｎのリンクに作用する力のつり合い式（下記の式（１））を解いて第ｎの関節の力センサｎ２５０に作用する力を計算する。
【００８２】
【数１】
2017080841.tif 000003
【００８３】
ここで、上記式（１）において、左辺の第１項が第ｎの関節の力センサｎ２５０に作用する力、右辺の第１項が第ｎのリンクに作用する動的な力である。また、右辺の第２項は、この第ｎの関節にロボットアーム１の手先側において隣接する第ｎ＋１の関節の力センサｎ＋１３５０に作用する力である（ステップＳ４０５）。図４の処理において、右辺の第２項の第ｎ＋１の関節の力センサｎ＋１３５０に作用する力は、後述の再定義処理（Ｓ４６０）を経て既に計算済みとなっている。
【００８４】
他軸力計算処理（Ｓ４１０）では、上式（１）を左辺の第１項について解き、力センサｎ２５０に作用する各方向の力を求めることにより、力センサｎ２５０に作用する他軸力を求めることができる。
【００８５】
なお、ｎ＝６の場合、ロボットアーム１には第７の関節が存在しないため、式（１）の右辺の第２項は、ゼロであり、ｎ＝５以下においては、力センサｎ＋１３５０に作用する力を使用する。
【００８６】
例えば、図９は、図１のロボット装置のロボットアーム１の手先部分、即ち２つの関節１２５（Ｊ５）、１２６（Ｊ６）によって連結されたリンクを示している。これら関節１２５（Ｊ５）、１２６（Ｊ６）に働く力Ｆｊ５、Ｆｊ６は次式（２）のように示される。
【００８７】
【数２】
2017080841.tif 000004
【００８８】
この式（２）は、式（１）において、特にｎ＝５である特別な場合である。左辺の第１項が関節１２５（Ｊ５）の力センサｎ２５０に作用する力で、図９に示した同関節の３軸廻りの力Ｍｘｊ５、Ｍｙｊ５、Ｍｚｊ５から成る。また、右辺の第２項が１２６（Ｊ６）の力センサｎ＋１３５０に作用する力で、図９に示した同関節の３軸廻りの力Ｍｚｊ５、Ｍｙｊ５、Ｍｘｊ５から成る。これらの力は、図９のような関節軸の位置関係に相当する行列中の位置に置かれている。
【００８９】
また、式（１）、（２）の右辺の第１項、第ｎのリンクに作用する動的な力は、図４の動的な力の計算処理（ステップＳ４２０）により計算される。この動的な力の計算処理（Ｓ４２０）は、図３の計算部３４０に相当し、第ｎのリンクに関する静的な情報と動的な情報を用いて、当該のリンクに作用する動的な力を計算する。動的な力の計算処理（ステップＳ４２０）の演算に用いられる静的な情報は、当該のリンクの形状、慣性、弾性や、姿勢に関する情報を含み、動的な情報は、リンクの速度、加速度に関する情報を含む。当然ながら、これらのうち、当該のリンクの形状、慣性、弾性などの静的な条件は、ロボットアーム１の設計情報から既知であって、予め記憶装置３００に格納しておくことができる。また、図４の処理は、特定のロボットアーム１の位置ないし姿勢制御中に実行されるものであるから、演算部３２０（ＣＰＵ）は、実行中のロボット制御プログラムから現時点における関節の姿勢、リンクの速度、加速度などの動的な条件を特定することができる。
【００９０】
なお、本実施例においては、他軸力計算処理（Ｓ４１０）では、特に第ｎ＋１の関節に作用している力に関しては、後述のステップＳ４６０、Ｓ４７０で再定義および座標変換された既に補正済みの力センサｎ＋１３５０の検出値を用いている（Ｓ４０５）。ただし、後述の実施例２で示すように、他軸力計算処理（Ｓ４１０）では、第ｎのリンクに作用する動的な力の計算部３４０により計算される、第ｎのリンクに作用する動的な力の計算値のみを用いるようにしてもよい。この場合には、現時点におけるロボットアームの姿勢、リンクの速度、加速度などの動的な条件に基づき、当該の第ｎの関節に働く他軸力が計算される。
【００９１】
ここで動的な力の計算処理（Ｓ４２０）により計算される関節ｎに働く力は、例えば次式（３）のように整理して示すことができる。
【００９２】
【数３】
2017080841.tif 000005
【００９３】
上式（３）において、右辺の第１項は、同関節が支持するリンクの長さ、質量などにより定まる加速度比例項、右辺の第２項は同関節を回転駆動する速度などにより定まる速度比例項である。また、右辺の第３項は同関節が支持するリンクの弾性などにより定まる位置比例項である。
【００９４】
上記の他軸力計算処理（Ｓ４１０）に続き、他軸干渉計算処理（ステップＳ４３０）では、上記のように計算した他軸力によって生じる力センサｎ２５０の検出値の誤差分、即ち他軸干渉を計算する。この他軸干渉計算処理（ステップＳ４３０）は、図３の他軸干渉計算部３２２の処理に相当する。
【００９５】
この他軸干渉計算処理（ステップＳ４３０）では、他軸力計算処理（Ｓ４１０）で算出した力センサｎ２５０に作用する他軸力と、力センサｎ２５０の感度行列ｎ３３０とを掛け合わせることで、他軸干渉で生じたセンサ検出値の誤差を求める。感度行列ｎ３３０は、上述の通り例えば記憶装置３００に配置され、力センサｎ２５０に作用する他軸力と、他軸干渉で生じるセンサ検出値の誤差との関係を格納している。
【００９６】
続いて、検出値補正処理（ステップＳ４４０）では、他軸干渉計算処理（ステップＳ４３０）で求めた他軸干渉値を用いて力センサｎ２５０の検出値を補正する。この検出値補正処理（ステップＳ４４０）は、図３の補正器３２３の処理に相当する。この検出値補正処理（Ｓ４４０）では、他軸干渉計算処理４３０で求めた力センサｎ２５０に生じるセンサ検出値の誤差を力センサｎ２５０の検出値から差し引くことにより、力センサｎ２５０の検出値を補正する。
【００９７】
次に、動作指令決定処理（ステップＳ４５０）において、補正後の力センサｎ２５０の検出値に基づき、この第ｎの関節の駆動手段ｎ２３０の駆動制御を行う。この動作指令決定処理（ステップＳ４５０）は、図３の制御器３２４の処理に相当し、例えば、次のような駆動力制御を行う。例えば、動作指令決定処理（ステップＳ４５０）において、動作指令器３１０から出力される動作指令に応じて、駆動手段ｎ２３０が第ｎのリンクに与える駆動軸ｎ２００周りの力（目標値）を計算する。また、この目標値と、検出値補正処理（ステップＳ４４０）で求めた補正後の力センサｎ２５０の検出値（実際値）の偏差を計算する。そして例えば、動作指令に基づく第ｎのリンクに与える駆動軸ｎ２００周りの力の目標値と、実際値の偏差を低減するように、駆動手段ｎ２３０の動作指令を決定する。
【００９８】
図４の制御ループは最後に２つの分岐ステップ、Ｓ４０１と、Ｓ４０３を有する。まず、ステップＳ４０１では、ｎの値が１になっているか否かを判定する。ｎ＝１、即ち、第６の関節から開始した処理を、順次、第１の関節まで実行した場合には、ステップＳ４０３に移行し、そうでない場合には、ステップＳ４６０に移行し、次のｎ−１番目の関節の処理に進む。ステップＳ４０１からＳ４０３に進む場合は、第６〜第１までの関節の制御が１セット終了したタイミングである。ステップＳ４０３では、Ｓ４００で初期化した所要時間ｔの変数が、予め定めた終了時間Ｅ（時刻）以上となっているか否かを判定する。このステップＳ４０３が肯定された場合には、所定の最大処理時間（Ｓ〜Ｅ）を超えているため、図４の測定および関節の駆動力制御に係る処理を終了する。
【００９９】
一方、ステップＳ４０３が否定された場合は、次の第６〜第１の関節の１セットの制御を実行する時間的余裕がある、との認識と等価で、この場合はステップＳ４０４を経由してステップＳ４００に復帰する。ここでステップＳ４０４は、所要時間ｔの変数をインクリメントする。図中のステップＳ４０４では、「ｔ＋１」のような簡略表記を採用しているが、ステップＳ４０４ではＲＴＣなどにより計時した実時間を加算する処理を行ってもよい。あるいは、予め計算しておいた第６〜第１関節の制御の１セットに要する所要時間を加算する処理を行ってもよい。また、これらのインクリメントの単位は、必ずしもｍｓ、μｓのような時間単位である必要はなく、別の単位を適宜採用してよい。その場合、終了時間Ｅの定義は、ステップＳ４０４におけるインクリメントの単位に整合するよう定めておくのはいうまでもない。
【０１００】
一方、ステップＳ４０１が否定された場合には、第１の関節までの１セットの処理が終了していないため、ステップＳ４６０、Ｓ４７０、Ｓ４０２、Ｓ４０５を経由して上記のステップＳ４１０に復帰する。
【０１０１】
まず、ステップＳ４６０の力センサｎに加わる力の再定義処理では、他軸力計算処理（Ｓ４１０）において式（１）を解いて得られた力センサｎ２５０に作用する力の計算値を検出値補正処理（Ｓ４４０）で補正された力センサｎ２５０の検出値に置き換える。この置き換え処理は、当然ながら力センサｎ２５０の検出する関節駆動軸廻りの成分のみ行う。
【０１０２】
ステップＳ４７０の座標変換処理では、力センサｎ２５０に作用する力の計算値を、第ｎの関節の基準座標軸による表現から、次のベース１１０側で隣接する第ｎ−１の関節の基準座標軸による表現に変換する座標変換処理を行う。この座標系変換では、力センサに加わる力の再定義処理（Ｓ４６０）で修正した力センサｎ２５０に作用する力（ベクタないし行列で表現される）の座標表現を変換する。この時、演算部３２０は、動作指令器３１０による指示、あるいはロボット制御プログラムから、例えば第ｎの関節と、次の処理対象である第ｎ＋１の関節の関節軸の位置ないし姿勢を計算できる。ここでは、第ｎの関節の関節軸を（例えば）Ｚ軸に取った座標系から第ｎ＋１の関節の関節軸を（例えば）Ｚ軸に取った座標系へ変換する、といった座標系変換を行えばよい。
【０１０３】
ステップＳ４０２では、ベース側で隣接する次の関節を指すよう、関節のインデックスであるｎを１だけデクリメント（ｎ＝ｎ−１）する。これにより、今終了した第ｎの関節が、次の関節の処理時には第ｎ＋１の関節として参照されるようになる。
【０１０４】
即ち、ステップＳ４０５では、式（１）の右辺の第２項、第ｎの関節に手先側において隣接する第ｎ＋１の関節の力センサｎ＋１３５０に作用する力として、直前のＳ４６０、Ｓ４７０、Ｓ４０２で座標変換、再定義された力が用いられることになる。
【０１０５】
その後、次の第ｎの関節について、ステップＳ４１０以降の処理が繰り返される。図４の測定および関節の駆動力制御に関する処理は、第６〜第１関節までの処理を１セットの処理単位として実行される。また、図４の測定および関節の駆動力制御に関する処理は、最大時間（Ｅ）まで１ないし数セット実行される。
【０１０６】
（実施例１の効果）
図１および図２のようにロボットアーム１の関節を構成することにより、ロボットアームの関節に接続される２つのリンクにおいて、２つのリンク間を伝達する力の経路が力センサを通過する経路の１経路のみとなる。このため、第ｎのリンク２２０に作用する他軸力を第ｎの関節の力センサｎ２５０が直接受けるようになり、第ｎのリンク２２０に作用する他軸力が力センサｎ２５０に伝わるまでの伝達経路を単純化できる。従来の関節構成では、関節を伝達する力がクロスローラベアリングやオイルシールなどの機械要素を介して伝達するため、関節に接続される２つのリンク間を伝達する力の経路は力センサを通過する経路以外にも存在していた。これに対して本実施例では、関節が連結する２つのリンク間を伝達する経路は力センサを通過する経路のみである。このため、力センサｎ２５０に作用する他軸力の値の把握が容易になる。これにより、他軸力計算部３２１をロボット制御装置２に設けることで、力センサｎ２５０に生じる他軸力を高精度に求めることができ、下記の測定制御もより正確に実施することができる。
【０１０７】
さらに、本実施例では、他軸干渉計算部３２２をロボット制御装置２に設けている。これにより、他軸干渉で生じた力センサｎ２５０の検出値の誤差を高精度に修正できる。これにより、駆動軸周りの力を正確に測定でき、測定した駆動軸周りの力をロボットアーム１の駆動制御に用いることにより、正確かつ確実にロボットアーム１の駆動力を制御することができる。従って、ロボットアーム１の先端のエンドエフェクタ１１７が部品（ワーク）に与える力を高精度に制御することができるようになる。このため、柔軟物や低強度部材の組付け工程のような、部品に与える荷重が数グラム程度であることを要求されるような工程でも、適切な関節駆動力の制御が可能となる。これにより、従来、困難であった柔軟物や低強度部材の組付け工程を自動化をロボット装置により実現する可能性が高まる。
【０１０８】
なお、図４の制御では、ロボットアーム１を構成する全関節の処理を１セットとして、それを１ないし数セット実行する処理が最大処理時間（Ｓ〜Ｅ）を超えないよう制御している。このため、例えば演算部３２０を構成するＣＰＵの計算資源を有効利用でき、本来の位置姿勢制御などが停滞したり誤動作したりする可能性を低減できる。
【０１０９】
＜実施例２＞
本実施例２では、図４に示した関節の駆動力測定およびそれに基づく制御の変形例を示す。ロボットシステムおよびその制御系のハードウェア構成は、上記実施例１と同じで良い。
【０１１０】
図５は、図４に示した関節の駆動力測定およびそれに基づく制御の変形例を示したフローチャート図である。図５では、図４と同等のステップには同一のステップ番号を用いており、以下ではその詳細については重複した説明を省略するものとする。なお、図５では、図３の機能ブロックとの関係は図４の場合と同等であるから、その図示も省略されている。
【０１１１】
図５の制御で、図４と異なるのは、ロボットアーム１の第ｎの関節の駆動制御では、他軸力計算処理（図５のＳ４１０）において、第ｎ＋１の関節の力センサｎ＋１３５０の検出値を使用していない点にある。図５の他軸力計算処理（Ｓ４１０）では、動的な力の計算部（３４０：図３）により計算される、第ｎのリンクに作用する動的な力の計算値のみを使用して第ｎの関節の力センサｎ２５０に作用する他軸力を計算する。本実施例では、他軸力計算処理（図５のＳ４１０）では、第ｎ＋１の関節に働く力も含めて、その時点におけるロボットアームの姿勢、リンクの速度、加速度などの動的な条件に基づき、当該の第ｎの関節に働く他軸力が計算される。
【０１１２】
このため、図５の制御では、次の関節の処理に移行する経路では、座標変換処理（Ｓ４７０）と関節を指すインデックスであるｎのデクリメント（Ｓ４０２）のみが行われ、再定義処理（図４のＳ４６０）は行わない。なお、図５の座標変換処理（Ｓ４７０）では、少なくとも、演算で扱う力の表現に用いる座標系を、ロボットアーム１の現在の姿勢を第ｎの関節を基準とした座標系から第ｎ−１の関節を基準とした座標系に変更する処理を行えばよい。
【０１１３】
また、図５の制御では、図４のステップＳ４００における処理時間ｔの初期化、Ｓ４０３の所要時間判定および、Ｓ４０４の処理時間ｔの歩進は省略されている。これは、例えば上記の再定義処理（図４のＳ４６０）の省略などにより処理の高速化が期待できるためであるが、図４の制御と同様に全関節を１セットとした処理の最大時間を制限する処理を行うようにしてもよい。
【０１１４】
（実施例２の効果）
本実施例２の制御によれば、基本的には上記実施例１と同等の効果を期待できる。即ち、他軸力計算部３２１（図３）設けることにより、力センサｎ２５０の検出軸廻りに働いている他軸力を高精度に求めることができる。そして、予め用意した感度行列ｎ３３０を用いて他軸力に起因する力センサｎ２５０の検出誤差（他軸干渉）を高精度に修正できる。このため、ロボットアーム１の先端のエンドエフェクタ１１７などを介してワークに作用する力を高精度に制御することができるようになる。これにより、柔軟物や低強度部材の組付け工程のような、部品に与える荷重が数グラム程度であることを要求されるような工程の自動化を多関節ロボットアームにより実現できる可能性が高まる。
【０１１５】
また、本実施例２によれば、処理済みの関節の力センサｎ２５０の検出値の再定義処理（図４のＳ４６０）を省略し、第ｎのリンクに作用する動的な力の計算値のみを使用して、第ｎの関節の力センサｎ２５０に作用する他軸力を計算するようにしている。このため、例えば演算部３２０を構成するＣＰＵの計算資源を有効利用でき、本来の位置姿勢制御などが停滞したり誤動作したりする可能性を低減することができる。
【０１１６】
（変形例など）
上記の説明では、ロボットアーム１の構成として垂直６軸多関節の構成を例示した。しかしながら、本発明は関節数や関節構成によって限定されるものではない。例えば、ロボットアームの関節数は２以上であれば上述と同等の測定および関節制御を実施でき、その関節のいずれかにおいて、図１や図２に示した関節構成を実施できる。また、ロボットアームが水平多関節構成やパラレルリンク構成を取る場合でも、上述の関節構成や上述と同等の測定および関節制御を実施でき、同様の効果を期待できる。
【０１１７】
また、以上ではロボットアーム１の関節として主に回転関節を示したが、図８に示したような直動関節においても上述と同等の測定および関節制御を実施でき、同様の効果を期待できる。また、ロボットアーム１の関節の駆動手段ｎ２３０としては、電動モータと減速機を例示したが、液圧駆動のアクチュエータなどにより駆動手段が構成される場合でも上述と同等の測定および関節制御を実施でき、同様の効果を期待できる。また、拘束部ｎ２４０をクロスローラベアリング２４１を用いて構成したが、その変形例として各種転がり軸受や、直動駆動する軸受を用いて拘束部を構成しても、上述と同等の測定および関節制御を実施でき、同様の効果を期待できる。
【０１１８】
図３〜図５に示したロボット制御装置２による制御は、例えばＣＰＵ（中央演算処理装置）によって実行することができる。従って、上述した機能を実現するプログラムを記録した記録媒体をロボット制御装置２に供給し、ロボット制御装置２を構成するコンピュータ（ＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施例の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【０１１９】
また、本発明を実現するプログラムを記録したコンピュータ読み取り可能な記録媒体としては、例えばＨＤＤのような記憶装置３００を例示した。しかしながら、本発明を実現するプログラムを記録したコンピュータ読み取り可能な記録媒体としては、記憶（記録）メディアが固定式であるか着脱式であるかを問わず、任意の記録媒体を用いることができる。本発明を実現するプログラムは、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。この種の記録媒体としては、ＲＯＭ（ＥＥＰＲＯＭやフラッシュメモリなどを含む）や、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカードなどを用いることができる。また、本実施例におけるプログラムを、ネットワークを介してダウンロードしてＲＡＭ上に展開する、あるいはＥＥＰＲＯＭなどに書き込むなどして、コンピュータにより実行するようにしてもよい。
【０１２０】
また、コンピュータが読み出したプログラムコードを実行することにより、本実施例の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれる。
【０１２１】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって本実施例の機能が実現される場合も含まれる。本発明は、上述の実施例の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、本発明の制御は、１以上の機能を実現するハードウェア回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１２２】
１…ロボットアーム、２…ロボット制御装置、２１０…第ｎ−１のリンク、２２０…第ｎのリンク、２３０…第ｎの関節の駆動手段、２４０…第ｎの関節の拘束部、２５０…第ｎの関節の力センサ。
【図１】
2017080841.tif 000006
【図２】
2017080841.tif 000007
【図３】
2017080841.tif 000008
【図４】
2017080841.tif 000009
【図５】
2017080841.tif 000010
【図６】
2017080841.tif 000011
【図７】
2017080841.tif 000012
【図８】
2017080841.tif 000013
【図９】
2017080841.tif 000014