説明

ロボット制御装置

【課題】摩擦力トルクを高精度に推定し、力覚センサを使用しない場合においても、より高精度にロボットに作用する外力を推定することができ、安定した力制御を実現することを可能にする。
【解決手段】一実施形態では、ロボットに作用する外力により発生した外乱トルクをより高精度に算出するため、作業形態や動作速度などに基づいて摩擦係数や不感帯閾値などのアルゴリズムに含まれる摩擦パラメータを動的に変更させて、駆動トルクを高精度で推定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、モータなどのアクチュエータを用いてロボットを駆動するロボット制御装置に関する。
【背景技術】
【0002】
ロボットの先端部(例えば、アーム先端部など)が対象物と接触しながら、作業座標系での位置および接触力を制御する、いわゆる力制御では、先端部において作用している外力を推定し、これに応じた動作の修正を柔軟に行うことが重要である。先端部に力覚センサを取り付けた場合、外力を高精度に測定できるが、力覚センサが高価である上に衝撃に対して脆弱であるため、センサの使用が敬遠されることが多い。センサを使用しない場合においては、ロボットに作用している外力の影響で発生するアクチュエータの外乱トルクを推定する必要がある。外乱トルクは、実際の駆動トルク指令値から、アクチュエータの運動に必要な推定駆動トルクを引くことで算出される。そのため算出に使用する動力学モデルのパラメータを高精度に同定する必要がある。
【0003】
特に摩擦力は、アクチュエータ速度、その動作方向、動作履歴、また先端に取り付けられた負荷の違いといった短期的な要因や、季節や昼夜による温度変化、使用状況による経年劣化などの長期的な要因で、複雑に変化することが知られている。摩擦力の近似モデルに含まれるパラメータは上記要因によって変化していくため、適切なパラメータをリアルタイムで同定することが求められる。クーロン摩擦係数と、粘性摩擦係数と、一定外乱トルクとをリアルタイムで同定する技術が知られている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−20487号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
クーロン摩擦係数と、粘性摩擦係数と、一定外乱トルクとをリアルタイムで同定する技術は、粘性摩擦を折れ線で近似しているが、実際には駆動速度が上がるにつれて摩擦力トルクは飽和していくことが知られている。より広い範囲の速度において高精度な近似を行うためには逆正接関数や、複数の指数関数の線形和のようなモデルが提案されており、こうしたモデルに対してもリアルタイムで同定することが求められる。
【0006】
そこで、本発明の一実施形態では、摩擦力トルクを高精度に推定し、力覚センサを使用しない場合においても、より高精度にロボットに作用する外力を推定することができ、安定した力制御を実現することができるロボット制御装置を提供する。
【課題を解決するための手段】
【0007】
本実施形態によれば、関節軸および前記関節軸に駆動力を伝達する駆動軸を有するロボットを制御するロボット制御装置であって、前記関節軸を制御周期毎に駆動するアクチュエータと、前記駆動軸の角度を検出する駆動軸角度検出部と、前記駆動軸の角度から前記関節軸の角度を算出する関節軸角度算出部と、前記関節軸の角度から前記ロボットの先端位置を算出する先端位置算出部と、前記先端位置の位置指令値と、前記先端位置との位置誤差を算出する位置誤差算出部と、前記関節軸の角度に基づいて前記先端位置での作業座標系と関節座標系との間のヤコビ行列を算出するヤコビ行列算出部と、関節角差分を算出する関節角差分算出部と、前記関節角差分に基づいて関節のトルク指令値を算出するトルク指令値算出部と、前記トルク指令値に基づいて前記アクチュエータを駆動する駆動部と、前記関節軸の角度から前記アクチュエータを駆動するための駆動トルクを推定する駆動トルク推定部と、推定された前記駆動トルクと前記トルク指令値との差を外部トルクとして算出する外部トルク算出部と、前記外部トルクと前記ヤコビ行列から、前記先端位置に作用する外力を算出する外力算出部と、前記先端位置におけるコンプライアンスモデルを記憶するコンプライアンスモデル記憶部と、前記コンプライアンスモデルを用いて、前記外力に応じて前記先端位置での作業座標系位置に対するコンプライアンス修正量を算出し、前記コンプライアンス修正量を用いて前記位置誤差を修正するコンプライアンス修正量算出部と、摩擦力トルクを近似するモデルの、少なくとも1つのパラメータを有する摩擦パラメータを記憶する摩擦パラメータ記憶部と、摩擦力トルク評価部と、を備え、前記駆動トルク推定部は、前記駆動軸の角度から前記駆動軸の速度を算出する駆動軸速度算出部と、前記関節軸に作用する慣性力トルクを算出する慣性力トルク算出部と、前記関節軸に作用する重力を算出する重力トルク算出部と、算出された前記駆動軸の速度と、前記摩擦パラメータ記憶部に記憶された前記摩擦パラメータとを用いて第1の摩擦力トルクを推定する第1の摩擦力トルク算出部と、前記摩擦パラメータを変化させて複数個の第2の摩擦力トルクを算出する第2の摩擦力トルク算出部と、を有し、前記摩擦力トルク評価部は、算出された第1の摩擦力トルクと、複数個の第2の摩擦力トルクから選択された一つの第2の摩擦力トルクと、算出された慣性力トルクと、算出された重力トルクとの和を算出し、この和と前記トルク指令値算出部に算出された前記トルク指令値との差の演算を、前記複数個の第2の摩擦力トルクのそれぞれに対して行い、前記差の絶対値が最小となる摩擦パラメータを選択し、この選択結果に基づいて、前記摩擦パラメータが更新されることを特徴とするロボット制御装置が提供される。
【図面の簡単な説明】
【0008】
【図1】一実施形態によるロボット制御装置の制御ブロック図。
【図2】一実施形態に係る駆動トルク推定部の一具体例を示す制御ブロック図。
【図3】摩擦力τと、駆動軸速度ωとの関係を示すグラフ。
【図4】摩擦パラメータの集合を説明する図。
【図5】一実施形態によるロボット制御装置の動作を示すフローチャート。
【図6】摩擦パラメータ更新処理の動作を示すフローチャート。
【図7】第2変形例の制御ブロック図。
【発明を実施するための形態】
【0009】
実施形態を以下に図面を参照して説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであり、具体的な寸法は以下の説明を参酌して判断すべきものである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【0010】
一実施形態によるロボット制御装置は、関節軸および前記関節軸に駆動力を伝達する駆動軸を有するロボットを制御するロボット制御装置であって、前記関節軸を制御周期毎に駆動するアクチュエータと、前記駆動軸の角度を検出する駆動軸角度検出部と、前記駆動軸の角度から前記関節軸の角度を算出する関節軸角度算出部と、前記関節軸の角度から前記ロボットの先端位置を算出する先端位置算出部と、前記先端位置の位置指令値と、前記先端位置との位置誤差を算出する位置誤差算出部と、前記関節軸の角度に基づいて前記先端位置での作業座標系と関節座標系との間のヤコビ行列を算出するヤコビ行列算出部と、関節角差分を算出する関節角差分算出部と、前記関節角差分に基づいて関節のトルク指令値を算出するトルク指令値算出部と、前記トルク指令値に基づいて前記アクチュエータを駆動する駆動部と、前記関節軸の角度から前記アクチュエータを駆動するための駆動トルクを推定する駆動トルク推定部と、推定された前記駆動トルクと前記トルク指令値との差を外部トルクとして算出する外部トルク算出部と、前記外部トルクと前記ヤコビ行列から、前記先端位置に作用する外力を算出する外力算出部と、前記先端位置におけるコンプライアンスモデルを記憶するコンプライアンスモデル記憶部と、前記コンプライアンスモデルを用いて、前記外力に応じて前記先端位置での作業座標系位置に対するコンプライアンス修正量を算出し、前記コンプライアンス修正量を用いて前記位置誤差を修正するコンプライアンス修正量算出部と、摩擦力トルクを近似するモデルの、少なくとも1つのパラメータを有する摩擦パラメータを記憶する摩擦パラメータ記憶部と、摩擦力トルク評価部と、を備え、前記駆動トルク推定部は、前記駆動軸の角度から前記駆動軸の速度を算出する駆動軸速度算出部と、前記関節軸に作用する慣性力トルクを算出する慣性力トルク算出部と、前記関節軸に作用する重力を算出する重力トルク算出部と、算出された前記駆動軸の速度と、前記摩擦パラメータ記憶部に記憶された前記摩擦パラメータとを用いて第1の摩擦力トルクを推定する第1の摩擦力トルク算出部と、前記摩擦パラメータを変化させて複数個の第2の摩擦力トルクを算出する第2の摩擦力トルク算出部と、を有し、前記摩擦力トルク評価部は、算出された第1の摩擦力トルクと、複数個の第2の摩擦力トルクから選択された一つの第2の摩擦力トルクと、算出された慣性力トルクと、算出された重力トルクとの和を算出し、この和と前記トルク指令値算出部に算出された前記トルク指令値との差の演算を、前記複数個の第2の摩擦力トルクのそれぞれに対して行い、前記差の絶対値が最小となる摩擦パラメータを選択し、この選択結果に基づいて、前記摩擦パラメータが更新されることを特徴とする。
【0011】
一実施形態によるロボット制御装置は、図1に示すように、中央演算処理装置(CPU)1と、アクチュエータ100と、駆動部(アンプ)101と、駆動軸角度検出部102と、位置データ記憶部200と、リンクパラメータ記憶部201と、摩擦パラメータ記憶部202と、ヤコビ行列記憶部203と、力/モーメントデータ記憶部204と、コンプライアンスモデル記憶部205と、を備えている。
【0012】
駆動軸角度検出部102は、エンコーダ等の位置センサが使用可能であり、所定の周波数成分を除去するフィルタを備えていても良い。駆動軸角度検出部102は、駆動軸の位置の変位量(駆動軸の角度)を検出する。
【0013】
図1に示したCPU1は、関節軸角度算出部103と、先端位置算出部104と、ヤコビ行列算出部105と、駆動トルク推定部106と、外部トルク算出部107と、外力算出部108と、力指令値生成部109と、力誤差算出部110と、コンプライアンス修正量算出部111と、位置指令値生成部112と、位置誤差算出部113と、関節角差分算出部114と、トルク指令値算出部115と、をハードウェア資源であるモジュール(論理回路)として論理的に備えている。
【0014】
関節軸角度算出部103は、駆動軸角度検出部102により算出された駆動軸角度に基づいて、減速機の減速比と、伝達機構のもつ駆動軸と関節軸の比とに応じた関節軸角度を算出する。なお、関節軸に取り付けられる関節軸角度検出部(図示せず)により関節軸角度を直接求めてもよい。
【0015】
先端位置算出部104は、リンクパラメータ記憶部201からリンクパラメータを読み出し、関節軸角度算出部103により算出された関節軸角度と、読み出されたリンクパラメータとを用いて、順運動学計算によりロボットの作業座標系における先端部の位置、すなわち先端位置を算出する。
【0016】
ヤコビ行列算出部105は、関節軸角度算出部103により算出された関節軸角度から、ヤコビ行列を算出し、算出されたヤコビ行列をヤコビ行列記憶部203に格納する。ヤコビ行列とは、ロボットの作業座標系と関節座標系との間の微小変位関係を表現した行列である。ヤコビ行列をJとすると、ロボットの先端位置の誤差Δxと、関節角差分Δθは式(1)の関係を満たしている。

Δx=JΔθ … (1)
【0017】
駆動トルク推定部106は、駆動軸角度検出部102により検出された駆動軸角度と、関節軸角度算出部103により算出された関節軸角度とを用いて、ロボットの関節軸を駆動するのに必要な駆動トルクを推定する。この駆動トルク推定部106の一具体例を図2に示す。この具体例の駆動トルク推定部106は、図2に示すように、駆動軸速度算出部300と、第1の摩擦力トルク算出部301と、慣性力トルク算出部302と、重力トルク算出部303と、加算部304と、第2の摩擦力トルク算出部305と、を備えている。
【0018】
図2に示すように、駆動軸速度算出部300は、駆動軸角度算出部102により算出された駆動軸角度に基づいて、例えば駆動軸角度の所定時間毎の差分を取ることにより駆動軸速度を算出する。第1の摩擦力トルク算出部301は、摩擦パラメータ記憶部202に格納された摩擦パラメータを読み出して、この読み出された摩擦パラメータと、駆動軸速度算出部300により算出された駆動軸速度と、を用いてクーロン摩擦、粘性摩擦等に相当する第1の摩擦力トルクを算出する。
【0019】
第2の摩擦力トルク算出部305について説明する。摩擦パラメータ記憶部202に格納された摩擦パラメータと、微小変化パラメータ記憶部306に格納された微小変化分とから、複数の摩擦パラメータの集合を用意する。例えば摩擦力τが駆動軸速度ω(=dθ/dt)に対して、次の式(2)で表される関数

τf=A×arctan(B×ω)+ C …(2)

で定義されているとすると、摩擦パラメータは3種類のパラメータA、B、Cの組(A、B、C)である。式(2)に示す関数をグラフで表すと図3に示すようになる。それぞれのパラメータに対して微小変化分ΔA、ΔB、ΔCからA+ΔA、A―ΔA、B+ΔB、B―ΔB、C+ΔC、C―ΔCを算出し、それらを組み合わせた摩擦パラメータの集合に対して第2の摩擦力トルクを算出する。この場合、摩擦パラメータの集合は、図4からわかるように、微小変化しないパラメータを含めると、27個となる。この27個の摩擦パラメータの集合のうち、パラメータA、B、Cが全く変化しない摩擦パラメータ(A、B、C)に対する摩擦力は第1の摩擦力トルク算出部301により算出されたものである。そして、残りの26通りの摩擦パラメータに対して、例えば式(2)を用いて、第2の摩擦力トルク算出部305によって第2の摩擦力トルクを算出する。したがって、第2の摩擦力トルクは、26個の値を有する。
【0020】
慣性力トルク算出部302は、関節軸角度算出部103により算出された関節軸角度を用いて関節角加速度を算出し、リンクパラメータ記憶部201からリンクパラメータを読み出し、この読み出されたリンクパラメータと、関節軸角度算出部103により算出された関節軸角度とを用いて各リンクの慣性モーメントを算出し、算出された関節角加速度と、算出された慣性モーメントとを用いて慣性力トルクを算出する。
【0021】
重力トルク算出部303は、リンクパラメータ記憶部201からリンクパラメータを読み出し、この読み出されたリンクパラメータと、関節軸角度算出部103により算出された関節軸角度とを用いて、各リンクに作用する重力を算出し、この算出された重力を補償する重力トルクを算出する。
【0022】
加算部304は、第1の摩擦力トルク算出部301により算出された第1の摩擦力トルクと、慣性力トルク算出ユニット302により算出された慣性力トルクと、重力トルク算出部303により算出された重力トルクとを加算し、それらの和を、推定した駆動トルクとして出力する。
【0023】
このようにして駆動トルク推定部106により推定された駆動トルクと、トルク指令値算出部115により算出されたトルク指令値との差が、外部トルクとして図1に示した外部トルク算出部107によって算出される。
【0024】
摩擦力トルク評価部307は、算出された第1の摩擦力トルクと、26個の第2の摩擦力トルクから選択された一つの第2の摩擦力トルクと、算出された慣性力トルクと、算出された重力トルクとを加算し、これらの和とトルク指令値との差を演算する。この差の演算を、26個の第2の摩擦力トルクに対して行う。そして、その差の絶対値が最小となる摩擦パラメータを摩擦パラメータの集合から選択して投票する。
【0025】
パラメータ更新部308は、摩擦力トルク評価部307によって投票結果を摩擦パラメータ推定期間において集計し、予め定められた更新周期において最多票を集めた摩擦パラメータを摩擦パラメータ記憶部202へ格納することで、摩擦パラメータを更新させる。
【0026】
図1に示す外力算出部108は、外部トルク算出部107により算出された外部トルクと、ヤコビ行列算出部105により算出されたヤコビ行列と、を用いて外力を算出する。仮想仕事の原理より、次の式(3)に示すように外部トルクτにヤコビ行列Jの転置行列Jの逆行列を乗じることにより外力fが算出される。

=(J−1τ …(3)
【0027】
図1に示す力指令値生成部109は、力/モーメントデータ記憶部204に記憶された力/モーメントデータを読み出して、各制御周期における力/モーメント指令値を出力する。
【0028】
力誤差算出部110は、力指令値生成部109で算出された力/モーメント指令値と、外力算出部108で算出された外力とに基づいて力誤差Δfを算出する。
【0029】
コンプライアンス修正量算出部111は、コンプライアンスモデル記憶部205からコンプライアンスモデルを読み出して、読み出されたコンプライアンスモデルを用いて、力誤差算出部110の出力Δfに応じた位置修正量を算出する。ここで、コンプライアンスモデルとは、例えば式(4)に示すように接触対象との間において仮想的に慣性、粘性、剛性を想定したものである。

MdΔx/dt+DdΔx/dt+KΔx=KΔf …(4)

ここで、Δxは先端部に設定された作業座標系での誤差、dΔx/dtは作業座標系での速度、dΔx/dtは作業座標系での加速度ベクトル、Mは慣性行列、Dは粘性係数行列、Kは剛性係数行列、Kは力フィードバックゲイン行列である。力と位置の作用させる軸を切り替えるコンプライアンス選択行列は力フィードバックゲイン行列Kに含まれた形になっている。誤差の速度dΔx/dt及び加速度ベクトルdΔx/dtは、それぞれ位置誤差ベクトルΔxの時間に関する一回差分、二回差分で近似できることから、コンプライアンス修正量Δxcompは、次の式(5)を用いて算出することができる。

Δxcomp=1/K(KΔf−MdΔx/dt−DdΔx/dt) …(5)
【0030】
位置指令値生成部112は、位置データ記憶部200に記憶された目標先端位置データを読み出して、この目標先端位置データから各制御周期における補間された先端位置指令値を算出する。
【0031】
位置誤差算出部113は、位置指令値生成部112により生成した先端位置指令値xと、先端位置算出部104により算出された現在の先端位置xと、コンプライアンス修正量算出部111により算出されたコンプライアンス修正量Δxcompに基づいて、次の式(6)を用いて位置誤差Δxを算出する。

Δx=x−x+Δxcomp …(6)
【0032】
関節角差分算出部114は、位置誤差算出部113から算出された位置誤差Δxと、ヤコビ行列Jの逆行列J−1を用いて関節角差分Δθを、次の式(7)を用いて算出する。

Δθ=J−1Δx …(7)
【0033】
トルク指令値算出部115は、関節角差分算出部114により算出された関節角差分を積分することによりトルク指令値(制御目標値)を生成する。
【0034】
駆動部101は、トルク指令値算出部115により算出されたトルク指令値にしたがってアクチュエータ100を制御周期毎に駆動する。
【0035】
位置データ記憶部200、リンクパラメータ記憶部201、摩擦パラメータ記憶部202、ヤコビ行列記憶部203、力/モーメントデータ記憶部204、及びコンプライアンスモデル記憶部205としては、例えば半導体メモリ、磁気ディスク、光ディスク、光磁気ディスクや磁気テープ等が採用可能である。
【0036】
位置データ記憶部200は、位置指令値生成部111が先端位置指令値を生成するために使用する目標先端位置データ列を記憶している。リンクパラメータ記憶部201は、ロボットのリンクに関するリンクパラメータを記憶している。摩擦パラメータ記憶部202は、第1の摩擦力トルク算出部301が第1の摩擦力トルクを算出するために使用する、予め定速運転において速度−トルク関係から求めておいた摩擦パラメータのデータを記憶している。ヤコビ行列記憶部203は、ヤコビ行列算出部105により算出されるヤコビ行列を記憶している。力/モーメントデータ記憶部204は、力指令値生成部109が先端位置力指令値を生成するために使用する目標先端力データ列を記憶している。コンプライアンスモデル記憶部205は、予め設定されたコンプライアンスモデルを記憶している。
【0037】
(ロボット制御方法)
次に、本実施形態によるロボット制御装置の動作を、図5に示すフローチャートを参照しながら説明する。
【0038】
(a)まず、制御演算を開始し、位置指令値生成部112によって、位置データ記憶部200から目標先端位置データ列が読み出されて、目標先端位置データ列に基づいて各制御周期における先端位置指令値が生成される(ステップ、S100、S101)。
【0039】
次に、ステップS102において、位置指令値生成部112により生成された先端位置指令値と、先端位置算出部104により算出された先端位置から、後述するコンプライアンス修正量を考慮した位置誤差が位置誤差算出部113によって算出される。続いて、ステップS103において、位置誤差算出部113により算出された位置誤差に対して、ヤコビ行列記憶部203から読み出したヤコビ行列を用いて式(7)に示すように、逆運動学計算を行って関節角差分が算出される。
【0040】
その後、ステップS104において、関節角差分算出部114により算出された関節角差分を積分することによりトルク指令値がトルク指令値算出部115によって算出される。
【0041】
次に、ステップS105において、トルク指令値算出部115により算出されたトルク指令値を制御目標値として駆動部101によってアクチュエータ100が駆動されることにより、駆動軸306が駆動され、先端位置が制御される。
【0042】
続いて、ステップS106において、制御演算の終了を確認し、ステップS107でサーボ処理を終了する。ステップS106において制御演算が終了でなければ後述するステップS108に進む。
【0043】
(b)次に、ステップS108において、駆動軸角度検出部102によって駆動軸角度を検出する。
【0044】
続いて、ステップS109において、駆動軸角度検出部102により算出された駆動軸角度から、減速機の減速比などに基づいて関節軸角度算出部103によって関節軸角度が算出される。
【0045】
ステップS110において、先端位置算出部104によって、リンクパラメータ記憶部201からリンクパラメータが読み出され、この読み出されたリンクパラメータと、関節軸角度算出部103により算出された関節軸角度とを用いて、順運動学計算により、先端位置が算出される。
【0046】
ステップS111において、関節軸角度算出部103により算出された関節軸角度を用いて、ヤコビ行列算出部105によってヤコビ行列が算出される。
【0047】
(c)次に、ステップS112において、駆動軸角度検出部102により算出された駆動軸角度と、関節軸角度算出部103により算出された関節軸角度とを用いて駆動トルク推定部106によって駆動トルクが推定される。
【0048】
ステップS113において、駆動トルク推定部106により推定された駆動トルクと、トルク指令値算出部115により算出された実際のトルク指令値との差から外部トルク算出部107によって外部トルクが算出される。
【0049】
ステップS114において、外部トルク算出部107により算出された外部トルクと、ヤコビ行列算出部105により算出されたヤコビ行列とを用いて、外力算出部108によって式(3)に示す外力が算出される。
【0050】
(d)次に、ステップS115において、力指令値生成部109により力/モーメントデータ記憶部204から許容力/モーメントデータ列が読み出されて、この読み出された力/モーメントデータから力/モーメント指令値が算出される。
【0051】
ステップS116において、力指令値生成部109により算出された力/モーメント指令値と、外力算出部108で算出された外力とを用いて力誤差算出部110によって力誤差が算出される。
【0052】
(e)次に、ステップS117において、コンプライアンス修正量算出部111によってコンプライアンスモデル記憶部205からコンプライアンスモデルが読み出され、コンプライアンスモデルを用いて式(5)に示すコンプライアンス修正量Δxcompが算出され、このコンプライアンス修正量Δxcompを用いて、力誤差算出部110により算出された力誤差に応じた先端位置修正量がコンプライアンス修正量算出部111によって算出される。
【0053】
ステップS102に戻り、式(6)に示すように、位置指令値生成部112により生成された先端位置指令値と、先端位置算出部104により算出された先端位置との誤差に対して、コンプライアンス修正量算出部111から算出された修正量を考慮した位置誤差が位置誤差算出部113によって算出される。
【0054】
駆動トルク推定処理としては、第1および第2の摩擦力トルクと、慣性力トルクと、重力トルクと用いて駆動トルクを推定する一例を示したが、これに限定されるものではない。例えば、遠心力やコリオリの力等のパラメータを更に考慮しても良い。
【0055】
次に、本実施形態による摩擦パラメータ更新処理の動作を、図6に示すフローチャートを参照しながら説明する。なお本処理は先のロボット制御装置の制御周期と同じかもしくは数倍程度の頻度で行うことを想定するものである。
【0056】
(a)摩擦パラメータ推定処理の開始するタイミング(ステップS200)はステップS112における駆動トルク算出時である。ステップS201において、駆動軸角度検出部102により算出された駆動軸角度と、摩擦パラメータとから第1の摩擦力トルクが第1の摩擦力トルク算出部301によって算出される。ステップS202において、同じく駆動軸角度と、微小変化させたパラメータによる第2の摩擦力トルクが第2の摩擦力トルク算出部305によって算出される。
【0057】
(b)ステップS203において、外部トルク算出部107によって外部トルクを算出しこれを誤差とする。またステップS204において、摩擦力トルク評価部307によりトルク指令値および駆動トルクから誤差を算出する。
【0058】
(c)ステップS205において、それぞれの第1および第2の摩擦力トルクにおける誤差を比較し、誤差の絶対値が最小となる摩擦パラメータの集合に対して投票を行う。
【0059】
(d)ステップS206において、摩擦パラメータの更新周期であるかどうかを判定し、更新周期であればステップS207へ進んで、投票結果から最多票を得た摩擦パラメータを摩擦パラメータ記憶部202へ格納することで、摩擦パラメータを更新させる。摩擦パラメータの更新周期でなければステップS208へ進み、処理を終了する。
【0060】
以上説明したように、本実施形態によれば、摩擦力トルクを高精度に推定し、力覚センサを使用しない場合においても、より高精度にロボットに作用する外力を推定することが可能となり、安定した力制御を実現することができる。
【0061】
(第1変形例)
本実施形態の第1変形例として、摩擦力トルクの誤差の評価方法を説明する。上記実施形態では、誤差の絶対値が最小となる摩擦パラメータに投票したが、閾値を設けてトルク誤差の絶対値の最小値が上記閾値を超えない場合には、現在の摩擦パラメータに投票し、上記閾値以上となった場合には、誤差の絶対値が最小となる摩擦パラメータに投票するようにすると、摩擦パラメータの更新頻度が低くなるため、急激な変化が起こらず安定する。
【0062】
また投票の結果、ほぼ同数の票を得た摩擦パラメータが複数存在した場合、最多得票の摩擦パラメータへと変更するのではなく、得票数に応じて微小変化分を線形補間させてもよい。例えば、
(A+ΔA、B―ΔB、C)の組がN1
(A+ΔA、B、C+ΔC)の組がN2
であった場合
(A+ΔA、B―ΔB×N1/(N1+N2)、C+ΔC×N2/(N1+N2))
とするのである。全てのケースにおいてこのような線形補間処理を行うと計算量が増加するため、得票数が同程度であった場合のみ実施する。
【0063】
得票数が同じようになってしまう原因の一つは微小変化パラメータがやや大きいことが考えられる。したがって線形補間処理が続く場合、微小変化パラメータ記憶部306に格納された微小変化パラメータを変更する。
【0064】
また、トルク指令値から慣性力トルク、重力トルク、そして摩擦パラメータにより算出した摩擦力トルクを引いた誤差には、摩擦パラメータの推定誤差に起因する誤差の他にも、ロボットに作用する外力に起因する外部トルクや、その他のパラメータの推定誤差に起因する誤差、あるいは上記実施形態において考慮していない力学的要因に起因したモデル化誤差などが含まれている。こうした外部要因を除き、摩擦パラメータの推定誤差のみに注目できるようにするために、実際にロボットを動作させて、摩擦パラメータを推定するための摩擦パラメータ推定試験を実施することも可能である。この場合は、ロボットに外力が作用しておらず、また決まった動作においてはモデル化誤差も一定となるため、誤差はパラメータ推定誤差に最も依存する。
【0065】
一方、通常運転時においても誤差を評価することは可能であるが、上記外部要因が入り込む可能性を否定できない。そのため、誤差の評価の基準を下げてより安定した推定が行えるように配慮する。例えば第1変形例で述べたような、誤差の絶対値に対して設けた閾値を上げるとパラメータの更新頻度は低くなり、安定する。また更新周期を大きくすれば、より多くのデータが集まってからパラメータを更新するので信頼度が上がる。
【0066】
(第2変形例)
本実施形態の第2変形例として、パラメータ変更履歴を利用したパラメータ変更について説明する。図7に示すように、摩擦パラメータ記憶部202内部に摩擦パラメータ変更履歴記憶部309と、パラメータ変更履歴データベース部310とを設ける。パラメータ更新部308によって更新された摩擦パラメータは摩擦パラメータ変更履歴記憶部309に格納され、摩擦力トルクを算出する際に摩擦パラメータとして利用される。摩擦パラメータの変更履歴をデータベース化したものがパラメータ変更履歴データベース部310へ格納される。パラメータ変更履歴データベース部310には同機種のロボットで計測した典型的な摩擦パラメータの変更履歴が格納されていて、微小変化パラメータ変更部311が両者を比較し、この比較結果に基づいて摩擦パラメータの微小変化分を修正し、微小変化パラメータ記憶部306へ格納する。
【0067】
また、変更履歴には温度測定部312により計測された動作時の温度や、時間測定部313により計測された動作時刻も合わせて付加してもよい。通常、高温時や稼働時間経過とともに摩擦力は小さくなる傾向にある。温度や時刻をも合わせて記録しておくことで、もしパラメータの変更履歴がこうした一般的傾向から反している場合、故障などの異常診断にも利用できる。
【0068】
(その他の実施形態)
上記のように、実施形態を説明したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【0069】
例えば、上記実施形態において、慣性力トルクの算出の際に、関節軸角度の時間に関する二回差分で算出された関節角加速度を用いているが、制御周期によっては時間遅れが大きくなりトルク誤差が大きくなりやすくなる。その場合は、リンクに搭載した加速度センサからリンクの加速度を検出し、検出した加速度を関節角加速度へ変換して、この関節角加速度を基に慣性力トルクを算出してもよい。また摩擦力のモデルとして複数の指数関数の線形和などを採用してもよく、いくつかのパラメータで特徴付けられるようなモデルに対しても本発明は適用できる。
【0070】
また、CPU1、位置データ記憶部200、リンクパラメータ記憶部201、摩擦パラメータ記憶部202、ヤコビ行列記憶部203、力/モーメントデータ記憶部204、およびコンプライアンスモデル記憶部205等が制御対象であるロボットの内部に埋め込まれて一体化されていても良い。また、CPU1、位置データ記憶部200、リンクパラメータ記憶部201、摩擦パラメータ記憶部202、ヤコビ行列記憶部203、力/モーメントデータ記憶部204、およびコンプライアンスモデル記憶部205等が制御対象であるロボットの外部にあり、ロボットを有線或いは無線で遠隔制御することも可能である。
【0071】
また、上記実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、発明の範囲はそれらに限定されない。
【符号の説明】
【0072】
1 中央演算処理装置(CPU)
100 アクチュエータ
101 駆動部
102 駆動軸角度検出部
103 関節軸角度算出部
104 先端位置算出部
105 ヤコビ行列算出部
106 駆動トルク推定部
107 外部トルク算出部
108 外力算出部
109 力指令値生成部
110 力誤差算出部
111 コンプライアンス修正量算出部
112 位置指令値生成部
113 位置誤差算出部
114 関節角差分算出部
115 トルク指令値算出部
200 位置データ記憶部
201 リンクパラメータ記憶部
202 摩擦パラメータ記憶部
203 ヤコビ行列記憶部
204 力/モーメントデータ記憶部
205 コンプライアンスモデル記憶部
300 駆動軸速度算出部
301 第1の摩擦力トルク算出部
302 慣性力トルク算出部
303 重力トルク算出部
304 加算部
305 第2の摩擦力トルク算出部
306 微小変化パラメータ記憶部
307 摩擦力トルク評価部
308 パラメータ更新部
309 パラメータ変更履歴記憶部
310 パラメータ変更履歴データベース部
311 微小変化パラメータ変更部
312 温度測定部
313 時間測定部

【特許請求の範囲】
【請求項1】
関節軸および前記関節軸に駆動力を伝達する駆動軸を有するロボットを制御するロボット制御装置であって、
前記関節軸を制御周期毎に駆動するアクチュエータと、
前記駆動軸の角度を検出する駆動軸角度検出部と、
前記駆動軸の角度から前記関節軸の角度を算出する関節軸角度算出部と、
前記関節軸の角度から前記ロボットの先端位置を算出する先端位置算出部と、
前記先端位置の位置指令値と、前記先端位置との位置誤差を算出する位置誤差算出部と、
前記関節軸の角度に基づいて前記先端位置での作業座標系と関節座標系との間のヤコビ行列を算出するヤコビ行列算出部と、
関節角差分を算出する関節角差分算出部と、
前記関節角差分に基づいて関節のトルク指令値を算出するトルク指令値算出部と、
前記トルク指令値に基づいて前記アクチュエータを駆動する駆動部と、
前記関節軸の角度から前記アクチュエータを駆動するための駆動トルクを推定する駆動トルク推定部と、
推定された前記駆動トルクと前記トルク指令値との差を外部トルクとして算出する外部トルク算出部と、
前記外部トルクと前記ヤコビ行列から、前記先端位置に作用する外力を算出する外力算出部と、
前記先端位置におけるコンプライアンスモデルを記憶するコンプライアンスモデル記憶部と、
前記コンプライアンスモデルを用いて、前記外力に応じて前記先端位置での作業座標系位置に対するコンプライアンス修正量を算出し、前記コンプライアンス修正量を用いて前記位置誤差を修正するコンプライアンス修正量算出部と、
摩擦力トルクを近似するモデルの、少なくとも1つのパラメータを有する摩擦パラメータを記憶する摩擦パラメータ記憶部と、
摩擦力トルク評価部と、
を備え、
前記駆動トルク推定部は、前記駆動軸の角度から前記駆動軸の速度を算出する駆動軸速度算出部と、前記関節軸に作用する慣性力トルクを算出する慣性力トルク算出部と、前記関節軸に作用する重力を算出する重力トルク算出部と、算出された前記駆動軸の速度と、前記摩擦パラメータ記憶部に記憶された前記摩擦パラメータとを用いて第1の摩擦力トルクを推定する第1の摩擦力トルク算出部と、前記摩擦パラメータを変化させて複数個の第2の摩擦力トルクを算出する第2の摩擦力トルク算出部と、を有し、
前記摩擦力トルク評価部は、算出された第1の摩擦力トルクと、複数個の第2の摩擦力トルクから選択された一つの第2の摩擦力トルクと、算出された慣性力トルクと、算出された重力トルクとの和を算出し、この和と前記トルク指令値算出部に算出された前記トルク指令値とのトルク誤差の演算を、前記複数個の第2の摩擦力トルクのそれぞれに対して行い、前記トルク誤差に基づいて摩擦パラメータを選択し、
この選択結果に基づいて、前記摩擦パラメータが更新されることを特徴とするロボット制御装置。
【請求項2】
前記摩擦力トルク評価部は、前記トルク誤差の絶対値が最小となる摩擦パラメータを選択することを特徴とする請求項1記載のロボット制御装置。
【請求項3】
前記摩擦力トルク評価部は、前記トルク誤差の絶対値の最小値が所定の閾値を超えない場合には、現在の摩擦パラメータを選択し、前記閾値以上となった場合には、前記トルク誤差の絶対値が最小となる摩擦パラメータを選択することを特徴とする請求項1記載のロボット制御装置。
【請求項4】
前記摩擦力トルク評価部によって選択された前記摩擦パラメータを、摩擦パラメータ推定期間において集計し、予め定められた更新周期において最も多く選択された摩擦パラメータを前記摩擦パラメータ記憶部へ格納し、前記摩擦パラメータを更新するパラメータ更新部部を更に備えていることを特徴とする請求項1乃至3のいずれかに記載のロボット制御装置。
【請求項5】
前記パラメータ記憶部は、
変更された前記摩擦パラメータを記憶するとともに前記摩擦パラメータの変更の履歴を記憶するパラメータ変更履歴記憶部と、
前記摩擦パラメータの変更履歴をデータベース化した第1変更履歴として記憶するとともに、同機種のロボットで計測した摩擦パラメータの変更履歴をデータベース化した第2変更履歴として記憶するパラメータ変更履歴データベース部と、
を備え、前記ロボット制御装置は、
前記第1変更履歴と前記第2変更履歴と比較し、この比較結果に基づいて前記摩擦パラメータの微小変化分を変更する微小変化パラメータ変更部を更に
を備えていることを特徴とする請求項1乃至4のいずれかに記載のロボット制御装置。
【請求項6】
ロボットの動作時の温度を測定する温度測定部と、
前記ロボットの通算動作時間を測定する時間測定部と、
を更に備え、
前記第1および第2変更履歴に前記温度データや前記通算動作時間を付加することを特徴とする請求項5記載のロボット制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate