(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
以下、本発明による制御装置について、実施の形態を用いて説明する。なお、以下の実施の形態において、同じ符号を付した構成要素及びステップは同一または相当するものであり、再度の説明を省略することがある。
【0014】
(実施の形態1)
本発明の実施の形態1による制御装置について、図面を参照しながら説明する。本実施の形態による制御装置は、外界センサを用いずに角度伝達誤差をモデル化し、そのモデルを用いて角度伝達誤差を補償するものである。
【0015】
図1は、本実施の形態による産業用ロボット100の構成を示すブロック図である。本実施の形態による産業用ロボット100は、制御装置1と、サーボコントローラ2と、マニピュレータ3とを備える。制御装置1は、モータにより駆動される関節によって連結された複数のアームを有するマニピュレータ3を、サーボコントローラ2を介して制御する。そのマニピュレータ3において、各モータとアームとは減速機を介して接続されている。また、直列に接続されたアームの先端に、手先効果器(エンドエフェクタ)が設けられていてもよい。マニピュレータ3は、例えば、垂直多関節ロボットのマニピュレータであってもよく、水平多関節ロボットのマニピュレータであってもよい。また、そのマニピュレータ3の軸数は問わない。また、制御装置1は、ティーチングプレイバック方式によりマニピュレータ3を制御してもよく、または、自律方式によりマニピュレータ3を制御してもよい。本実施の形態による産業用ロボット100は、例えば、搬送ロボットであってもよく、溶接ロボットであってもよく、組立ロボットであってもよく、塗装ロボットであってもよく、または、その他の用途のロボットであってもよい。
図1では、説明の便宜上、1個のサーボコントローラ2のみを示しているが、通常、産業用ロボット100は、マニピュレータ3の軸数と同数のサーボコントローラを備えている。したがって、サーボコントローラ2は、各軸に対応するサーボコントローラの集合であると考えてもよい。サーボコントローラ2の詳細な構成については、
図2を用いて後述する。
【0016】
図1で示されるように、制御装置1は、位置指令生成部11と、指令値受付部12と、フィードバック受付部13と、単軸動作制御部14と、フーリエ変換部15と、記憶部16と、振幅取得部17と、位相取得部18と、補償量算出部19と、補償部20とを備える。
【0017】
位置指令生成部11は、モータの位置指令値を生成し、指令値受付部12と補償量算出部19と補償部20とに渡す。位置指令生成部11は、例えば、教示情報等を用いることによって、モータの位置を算出し、その位置を示す位置指令値を指令値受付部12と補償量算出部19と補償部20とに渡してもよい。なお、モータの位置は、厳密にはモータの角度であってもよい。また、位置指令生成部11は、単軸動作制御部14による制御に応じて、位置指令値を生成し、出力してもよい。
【0018】
指令値受付部12は、モータの位置指令値を受け付ける。指令値受付部12は、受け付けた位置指令値のうち、後段の処理で必要になる期間に応じた位置指令値を図示しない記録媒体で一時的に記憶してもよい。
【0019】
フィードバック受付部13は、モータのフィードバックを受け付ける。そのモータは、指令値受付部12が受け付けた位置指令値に対応するモータと同じである。そのモータのフィードバックは、通常、指令値受付部12が受け付けたモータの位置指令値に応じた位置フィードバックである。なお、フィードバック受付部13は、速度フィードバックをも受け付けてもよい。モータの位置フィードバックは、モータの現在位置であり、モータの速度フィードバックは、モータの現在速度である。フィードバック受付部13は、受け付けたフィードバックのうち、後段の処理で必要になる期間に応じたフィードバックを図示しない記録媒体で一時的に記憶してもよい。
【0020】
単軸動作制御部14は、モータを単軸動作させる。単軸動作とは、マニピュレータ3を駆動する複数軸のうち、ある軸のみを動作させることである。したがって、単軸動作時には、単軸動作制御部14は、あるモータのみを動作させてもよい。その単軸動作時に、単軸動作制御部14は、モータを一定速度で単軸動作させてもよく、または、そうでなくてもよい。本実施の形態では、前者の場合について主に説明する。なお、ある軸について単軸動作を行う場合には、単軸動作制御部14は、その軸から手先までのロボットアームが水平となるように単軸動作を行うことが好適である。単軸動作を行う軸に対する重力トルクが略一定となるからである。
【0021】
フーリエ変換部15は、単軸動作制御部14がモータを単軸動作させている際に受け付けられたフィードバックをフーリエ変換する。なお、厳密に言えば、フーリエ変換部15は、位置(角度)に応じて変化する位置フィードバックをフーリエ変換する。ここで、フィードバック受付部13が受け付けるのは、位置フィードバックの時間変化である。したがって、フーリエ変換部15は、モータの位置と、位置フィードバックとの関係(例えば、後述する
図5の実線のグラフで示される関係)を取得し、それに対してフーリエ変換を行ってもよい。そのフーリエ変換の結果、フーリエ変換部15は、位置フィードバックの周波数と、その周波数に応じた振幅との関係を取得することができる。位置フィードバックには、通常、角度伝達誤差に起因するうねり成分が含まれている。したがって、フーリエ変換をすることによって、後段の処理において、そのうねり成分の振幅を特定できるようになる。なお、周波数は、時間の周波数(sec
−1)ではなく、位置(角度)の周波数である。したがって、その周波数の単位は、例えば、角度がラジアン(rad)である場合には、rad
−1となり、角度が度(deg)である場合には、deg
−1となる。
【0022】
ここで、モータの位置と、位置フィードバックとの関係を取得する方法について簡単に説明する。フーリエ変換部15は、位置フィードバックの時間変化(時間と位置フィードバックとの対応関係)と、位置指令値の時間変化(時間と位置指令値との対応関係)とを用い、媒介変数である時間を消去することによって、位置と位置フィードバックとの関係を取得できる。なお、フーリエ変換部15が上述したのと同様のフーリエ変換結果を得る方法は問わない。例えば、フーリエ変換部15は、上述した位置フィードバックの時間変化に対して、時間領域におけるフーリエ変換を行い、その結果と、位置指令値の時間変化とを用いることによって、上述したのと同様のフーリエ変換結果を取得してもよい。ただし、そのようなフーリエ変換結果の取得を行う場合には、単軸動作中の速度が一定である必要がある。また、単軸動作時の位置指令値は通常、あらかじめ分かっているため、フーリエ変換部15は、指令値受付部12が受け付けた位置指令値を用いるのではなく、あらかじめ図示しない記録媒体で記憶されている位置指令値を用いてフーリエ変換を行ってもよい。また、単軸動作時にモータを一定速度で動作させる場合には、位置指令値に代えて、その速度を図示しない記録媒体で記憶しておき、フーリエ変換部15は、その速度を用いてフーリエ変換を行ってもよい。なお、ここでは、フーリエ変換部15が、位置フィードバックをフーリエ変換する場合について説明したが、前述のように、フィードバック受付部13によって速度フィードバックをも受け付けられる場合には、その速度フィードバックをフーリエ変換してもよい。その場合には、例えば、フーリエ変換部15は、モータの位置と、速度フィードバックとの関係を取得し、その取得した関係についてフーリエ変換を行ってもよい。なお、単軸動作が一定速度で行われる場合には、フーリエ変換部15は、例えば、速度フィードバックを時間領域においてフーリエ変換し、その結果と、位置指令値の時間変化とを用いることによって、フーリエ変換結果を取得してもよい。また、フーリエ変換部15は、フーリエ変換の結果を図示しない記録媒体で記憶してもよい。
【0023】
記憶部16では、減速機の角度伝達誤差の周波数が記憶される。その周波数は、前述のように通常、位置(角度)における周波数である。減速機の角度伝達誤差の周波数は、その減速機の機械構造に応じて一意に決定されるため、その機械構造に応じた周波数が記憶部16に蓄積される。また、その周波数は、減速機の機械構造の種類、すなわち減速機の型式(種類)ごとに異なるため、記憶部16では、例えば、減速機の型式を示す情報と、その型式の減速機の周波数とが対応付けられて記憶されていてもよい。また、記憶部16で記憶されている周波数は、結果として周波数を知ることができる情報であれば、周波数以外の情報、例えば周期や角周波数であってもよい。したがって、周波数以外の周期等が記憶部16で記憶されている場合であっても、周波数が記憶されていると考えることができる。また、記憶部16では、その記憶部16で記憶されている周波数に応じた減速機の標準的な補償振幅である標準振幅も記憶されていてもよい。補償振幅については後述する。記憶部16での記憶は、RAM等における一時的な記憶でもよく、あるいは、長期的な記憶でもよい。記憶部16は、所定の記録媒体(例えば、半導体メモリや磁気ディスク、光ディスクなど)によって実現されうる。
【0024】
振幅取得部17は、フーリエ変換部15によってフーリエ変換された周波数領域におけるフィードバックにおいて、記憶部16で記憶されている周波数に応じた振幅である誤差振幅が小さくなるように、角度伝達誤差の補償で用いられる振幅である補償振幅を取得する。記憶部16で複数の周波数が記憶されている場合には、振幅取得部17は、誤差振幅の取得対象の減速機の型式に対応する周波数を読み出してもよい。そして、振幅取得部17は、フーリエ変換後の周波数領域におけるフィードバックにおいて、読み出した周波数に対応する誤差振幅を特定する。なお、振幅取得部17は、後述する補償が行われた補償後のフィードバックに応じた誤差振幅が小さくなるように、補償振幅を取得するものとする。補償後のフィードバックに応じた誤差振幅は、その補償によっても打ち消すことができなかった角度伝達誤差成分の値である。したがって、その誤差振幅が小さくなるようにすることによって、角度伝達誤差を適切に打ち消すことができるようになる。振幅取得部17は、例えば、その誤差振幅があらかじめ決められたしきい値よりも小さくなるように、補償振幅を取得してもよい。その補償振幅の取得は、例えば、次のように行われる。まず、振幅取得部17が、補償振幅を取得する。振幅取得部17は、補償振幅の初期値として、記憶部16で記憶されている標準振幅を取得してもよい。減速機の型式に応じて補償振幅は似たような値になると考えられるため、減速機の型式ごとの標準振幅を用いることによって、補償振幅が適切な値により早く収束するようになると考えられる。一方、標準振幅が記憶部16で記憶されていない場合には、振幅取得部17は、補償振幅の初期値として、ランダムな補償振幅を取得してもよい。そして、その補償振幅を用いて算出された補償量を用いた角度伝達誤差の補償を行いながら単軸動作が行われ、それに応じた誤差振幅が特定される。その誤差振幅がしきい値より小さければ、その時点の補償振幅が最終的な補償振幅となる。一方、その誤差振幅がしきい値より小さくなければ、振幅取得部17は、新たな補償振幅を取得し、上述の処理を繰り返す。その新たな補償振幅は、例えば、標準振幅が、補償後のフィードバックに応じた誤差振幅が小さくなるように変更された補償振幅であってもよい。具体的には、振幅取得部17は、補償振幅「α・A」や、補償振幅「A+β」を取得してもよい。ここで、Aは、標準振幅であり、α、βは、標準振幅の変更のために用いられる実数のパラメータである。産業用ロボット100の個体差によって補償振幅の値は変わりうるが、通常、あまり大きくは変わらないと考えられる。したがって、そのパラメータαやβに、ロボットの個体差に応じた範囲をあらかじめ決めておき、振幅取得部17は、その範囲内でαやβを変化させることによって、補償振幅を取得してもよい。このようにすることで、より容易に適切な補償振幅を取得することができるようになる。なお、誤差振幅を取得するために用いられるフィードバックは、指令値受付部12が受け付ける位置指令値に応じたフィードバックである位置フィードバックでなくてもよい。具体的には、速度フィードバックに応じた誤差振幅が特定されてもよい。誤差振幅は、角度伝達誤差成分が残っているかどうかを確認するために用いられるものだからである。なお、位置フィードバックに応じた誤差振幅のしきい値と、速度フィードバックに応じた誤差振幅のしきい値とは異なっていてもよい。また、振幅取得部17は、位置フィードバックと速度フィードバックとの両方を用いて補償振幅を取得してもよい。その場合には、振幅取得部17は、例えば、両フィードバックの誤差振幅がそれぞれしきい値より小さくなるように、補償振幅を取得してもよい。
【0025】
位相取得部18は、指令値受付部12が受け付けた位置指令値と、その位置指令値に応じてフィードバック受付部13が受け付けた位置フィードバックとを用いて、減速機の角度伝達誤差の位相を取得する。角度伝達誤差が存在しない場合、すなわち、角度伝達誤差が存在しない場合の理想的な位置指令値θ
cmdと、位置フィードバックθ
actとの関係は、
図5のグラフにおける一点鎖線のようになる。一方、角度伝達誤差が存在する場合には、位置フィードバックが
図5のグラフにおける実線のように、理想的な位置フィードバックに対してうねりの成分を有することになる。そのうねりの成分のずれを示すものが位相である。したがって、位相取得部18は、
図5のグラフで示されるように、位置指令値が入力されてから、位置フィードバックθ
actが、理想的な位置フィードバックと交わるまでの位置(角度)の変化である位相φを取得してもよい。または、位相取得部18は、例えば、位置指令値θ
cmdがサーボコントローラ2に入力されてから、その位置指令値に応じた位置フィードバックθ
actが位置指令値θ
cmdと一致するまでの時間を測定し、その時間を、それに応じた位置(角度)に変換することによって、減速機の角度伝達誤差の位相φを取得してもよい。なお、一定速度の単軸動作が行われる場合には、その測定した時間に速度を掛けることによって位相φを算出できる。一方、一定速度でない単軸動作が行われる場合には、その測定した時間にわたって速度を積分することによって位相φを算出できる。
【0026】
補償量算出部19は、記憶部16で記憶されている周波数と、振幅取得部17が取得した振幅と、位相取得部18が取得した位相とを用いて、位置指令値における減速機の角度伝達誤差成分を補償するための補償量を算出する。具体的には、補償量算出部19は、次式のように補償量を算出してもよい。このように、本実施の形態では、外界センサを用いることなく、内部センサから得られる値を用いて数式モデルを構築することができる。
補償量=−B・sin(ω・θ
cmd+φ)
【0027】
ここで、Bは、振幅取得部17が取得した補償振幅であり、位置(角度)の次元を有している。また、ω(=2πf)は、角周波数である。ただし、fは、記憶部16で記憶されている周波数である。また、θ
cmdは、位置指令値であり、φは、位相取得部18が取得した位相である。したがって、補償量算出部19は、図示しない記録媒体で記憶されている上記式を読み出し、補償振幅B等に値を代入することによって、補償量を算出してもよい。その算出された補償量は、図示しない記録媒体で記憶されてもよい。
【0028】
補償部20は、補償量算出部19が算出した補償量を用いて、位置指令値の角度伝達誤差成分の補償を行う。その補償は、位置指令生成部11が生成した位置指令値に、角度伝達誤差を打ち消すように補償量を加算または減算することによって行われてもよい。加算または減算は、例えば、補償量の全体に−1を掛けるどうかによって異なるため、角度伝達誤差が低減するように適宜、決定されるものである。補償部20による補償後の位置指令値は、サーボコントローラ2に入力される。
【0029】
図2は、サーボコントローラ2の詳細な構成を示すブロック図である。本実施の形態によるサーボコントローラ2は、速度指令生成器21と、電流指令生成器22と、トルク指令生成器23とを備える。
【0030】
速度指令生成器21は、モータの位置フィードバック(現在位置)と、位置指令生成部11から受け取った位置指令値とに応じて速度指令値を生成する。速度指令生成器21は、モータの位置フィードバックが位置指令値に近づくようにフィードバック制御をするための速度指令値を生成する。
【0031】
電流指令生成器22は、モータの速度フィードバック(現在速度)と、速度指令生成器21が生成した速度指令値とに応じて電流指令値を生成する。電流指令生成器22は、モータの現在速度が速度指令値に近づくようにフィードバック制御をするための電流指令値を生成する。
【0032】
トルク指令生成器23は、モータの電流フィードバック(現在電流)と、電流指令生成器22が生成した電流指令値とに応じてトルク指令値を生成し、モータに出力する。トルク指令生成器23は、モータの現在電流が電流指令値に近づくようにフィードバック制御をするためのトルク指令値を生成する。モータは、このトルク指令値によって動作する。
【0033】
なお、これらのフィードバック制御はすでに公知であり、その詳細な説明を省略する。また、モータの電流フィードバックは、トルク指令生成器23に入力される。また、モータの速度フィードバックは、電流指令生成器22に入力される。また、モータの位置フィードバックは、速度指令生成器21に入力される。なお、モータの速度フィードバックは、モータの位置フィードバックが時間微分されたものであってもよい。また、マニピュレータ3が複数のモータを有する場合には、そのモータごとに
図2で示されるサーボコントローラ2が存在すると考えてもよい。
【0034】
なお、
図1では、サーボコントローラ2に一の位置指令値を出力し、サーボコントローラ2から一のフィードバックを受け取る場合について示しているが、これは説明の便宜のためであり、制御装置1は、マニピュレータ3が有する軸数、すなわちモータの数だけ位置指令値を出力し、その数だけフィードバックを受け取ってもよい。すなわち、制御装置1の処理は、モータごとに行われてもよい。
【0035】
次に、制御装置1の動作について
図3,
図4のフローチャートを用いて説明する。
図3のフローチャートは、補償量の算出のために用いる振幅や位相を取得する制御装置1の動作を示すフローチャートである。この処理は、例えば、産業用ロボット100の製造後に工場等において一度だけ行われてもよく、その産業用ロボット100の減速機が交換されるなどのように、ロボットの構成が変更された際にも行われてもよい。
【0036】
(ステップS101)単軸動作制御部14は、単軸動作を行うための制御を行う。例えば、単軸動作制御部14は、単軸動作を行うモータが一定速度で動作するための位置指令値を出力するように、位置指令生成部11を制御してもよい。その結果、単軸動作を行うための位置指令値が位置指令生成部11によって生成され、その位置指令値に応じて、あるモータが単軸動作を行う。なお、この場合には、補償部20による補償は行われないものとする。
【0037】
(ステップS102)指令値受付部12は、位置指令値を受け付け、図示しない記録媒体に蓄積する。また、フィードバック受付部13は、位置フィードバックを受け付け、図示しない記録媒体に蓄積する。
【0038】
(ステップS103)単軸動作制御部14は、単軸動作の制御を終了するかどうか判断する。そして、終了する場合には、ステップS104に進み、単軸動作の制御を継続する場合には、ステップS101に戻る。なお、単軸動作制御部14は、例えば、あらかじめ決められた時間だけ単軸動作を行った場合に、単軸動作の制御を終了すると判断してもよく、その他のイベントの発生に応じて単軸動作の制御を終了すると判断してもよい。
【0039】
(ステップS104)位相取得部18は、指令値受付部12がステップS102で受け付けた位置指令値と、フィードバック受付部13がステップS102で受け付けた位置フィードバックとを用いて、角度伝達誤差の位相を取得する。
なお、ステップS101〜S104では、角度伝達誤差の補償を行わない単軸動作において、補償量を算出するために必要な位相が算出される。
【0040】
(ステップS105)振幅取得部17は、記憶部16で記憶されている標準振幅を取得する。その標準振幅は、補償振幅の初期値である。
【0041】
(ステップS106)単軸動作制御部14は、単軸動作を行うための制御を行う。その結果、単軸動作を行うための位置指令値が位置指令生成部11によって生成され、その位置指令値に応じて、あるモータが単軸動作を行う。なお、そのモータは、ステップS101で単軸動作を行ったモータである。また、この場合には、後述するように、補償部20による補償が行われるものとする。
【0042】
(ステップS107)指令値受付部12は、位置指令値を受け付け、図示しない記録媒体に蓄積する。
【0043】
(ステップS108)補償量算出部19は、ステップS104で取得された位相と、ステップS105またはステップS115で取得された最新の補償振幅と、記憶部16で記憶されている周波数と、位置指令生成部11が生成した位置指令値とを用いて、上述の式で示されるように、補償量を算出する。
【0044】
(ステップS109)補償部20は、位置指令生成部11が生成した位置指令値を、補償量算出部19が算出した補償量を用いて補正し、サーボコントローラ2に渡す。
【0045】
(ステップS110)フィードバック受付部13は、サーボコントローラ2から位置フィードバックを受け付け、図示しない記録媒体に蓄積する。
【0046】
(ステップS111)単軸動作制御部14は、単軸動作の制御を終了するかどうか判断する。そして、終了する場合には、ステップS112に進み、単軸動作の制御を継続する場合には、ステップS106に戻る。なお、単軸動作制御部14は、例えば、あらかじめ決められた時間だけ単軸動作を行った場合に、単軸動作の制御を終了すると判断してもよく、その他のイベントの発生に応じて単軸動作の制御を終了すると判断してもよい。
【0047】
(ステップS112)フーリエ変換部15は、フィードバック受付部13が受け付けた位置フィードバックをフーリエ変換する。この処理において、フーリエ変換部15は、前述のように、指令値受付部12が受け付けた位置指令値を用いてもよい。
【0048】
(ステップS113)振幅取得部17は、フーリエ変換後の周波数領域におけるフィードバックにおいて、記憶部16で記憶されている周波数に応じた誤差振幅を取得する。
【0049】
(ステップS114)振幅取得部17は、取得した誤差振幅が、あらかじめ決められているしきい値よりも小さいかどうか判断する。そして、誤差振幅がしきい値よりも小さい場合には、補償振幅や位相を取得する一連の処理は終了となり、小さくない場合には、ステップS115に進む。
【0050】
(ステップS115)振幅取得部17は、誤差振幅が小さくなるようにするための補償振幅を取得する。そして、ステップS106に戻る。なお、誤差振幅を小さくするために、補償振幅を増加させればよいのか、または減少させればよいのかが分かっている場合には、振幅取得部17は、そのように変化させた補償振幅を取得するものとする。一方、そうでない場合には、振幅取得部17は、例えば、ランダムに補償振幅を変更してもよい。
【0051】
なお、ステップS105〜S115では、角度伝達誤差に応じた位置フィードバックの変化が小さくなるように、補償量を算出するために用いられる補償振幅が調整される。したがって、この調整後の補償振幅を用いることによって、角度伝達誤差の影響を低減した制御を実現できることになる。
【0052】
また、
図3のフローチャートでは、位相の取得を1回だけ行う場合について示しているが、そうでなくてもよい。例えば、ステップS101からステップS104までの位相の取得の処理を2回以上行い、その処理によって取得された2以上の位相の平均値としての位相を補償量の算出で用いてもよい。そのようにすることで、モデル精度を高めることができると考えられる。なお、位相を取得するタイミングは問わない。例えば、ステップS114でYesと判断された後に、位相の取得を行い、それまでに取得した位相との平均値を求め、その位相の平均値を用いた補償量によって、それ以降の補償を行ってもよい。
【0053】
図4のフローチャートは、産業用ロボット100の動作時における制御装置1の動作を示すフローチャートである。
(ステップS201)位置指令生成部11は、位置指令値を生成するタイミングであるかどうか判断する。そして、位置指令値を生成するタイミングである場合には、ステップS202に進み、そうでない場合には、位置指令値を生成するタイミングとなるまでステップS201の処理を繰り返す。なお、位置指令生成部11は、例えば、あらかじめ決められた時間間隔ごとに、位置指令値を生成すると判断してもよく、その他のタイミングで位置指令値を生成すると判断してもよい。
【0054】
(ステップS202)位置指令生成部11は、位置指令値を生成する。その位置指令値の生成は、例えば、教示情報に応じた位置指令値の生成であってもよい。
【0055】
(ステップS203)補償量算出部19は、ステップS104で取得された位相と、ステップS105またはステップS115で取得された最新の補償振幅と、記憶部16で記憶されている周波数と、位置指令生成部11が生成した位置指令値とを用いて、上述の式で示されるように、補償量を算出する。
【0056】
(ステップS204)補償部20は、位置指令生成部11が生成した位置指令値における角度伝達誤差成分を、補償量算出部19が算出した補償量で補償した位置指令値をサーボコントローラ2に渡す。そして、ステップS201に戻る。
なお、
図4のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。また、
図4のフローチャートには、サーボコントローラ2に関する処理は含まれていないが、それらの処理は公知であり、その詳細な説明を省略する。
【0057】
以上のように、本実施の形態による制御装置1によれば、外界センサを用いることなく角度伝達誤差を低減するための数式モデルを構築することができ、その数式モデルを用いて、角度伝達誤差の影響を低減することができる。その結果、軌跡精度の高い産業用ロボット100を実現することが可能となる。なお、減速機の出力側の運動は、内部センサで観測することはできない。しかしながら、その減速機の出力側の運動は、減速機を経由して減速機の入力軸に結合されているサーボモータに伝達される。したがって、本実施の形態のように、サーボモータのフィードバックを観測することによって、減速機の角度伝達誤差に起因する出力軸の運動を間接的に観測することができ、その結果、外界センサを用いることなく角度伝達誤差に応じた数式モデルを構築することができる。また、角度伝達誤差の影響が小さくなるように補償振幅を調整し、その調整後の補償振幅を用いて角度伝達誤差の補償を行うため、時間軸でのずれのない数学モデルを構築することができ、より適切に角度伝達誤差の影響を低減できることになる。また、単軸動作時にモータを一定速度で動作させることによって、誤差振幅や位相の取得の処理が簡単になりうる。
【0058】
また、本実施の形態では、フーリエ変換結果が、位置(角度)の周波数領域におけるフィードバックである場合について説明したが、そうでなくてもよい。一定速度の単軸動作が行われる場合には、フーリエ変換結果は、時間の周波数領域におけるフィードバックであってもよい。その場合には、振幅取得部17は、記憶部16で記憶されている周波数(rad
−1)等に、単軸動作時の速度(rad/sec)を掛けることによって、時間の周波数(sec
−1)を算出し、フーリエ変換結果において、その時間の周波数に対応する誤差振幅を取得してもよい。したがって、そのような場合には、フーリエ変換部15は、フィードバック受付部13が受け付けたフィードバックをそのままフーリエ変換してもよい。また、このようなフーリエ変換を行う場合には、ステップS107における位置指令値の受け付けの処理を行わなくてもよい。
【0059】
また、上記実施の形態において、各処理または各機能は、単一の装置または単一のシステムによって集中処理されることによって実現されてもよく、あるいは、複数の装置または複数のシステムによって分散処理されることによって実現されてもよい。
【0060】
また、上記実施の形態において、各構成要素間で行われる情報の受け渡しは、例えば、その情報の受け渡しを行う2個の構成要素が物理的に異なるものである場合には、一方の構成要素による情報の出力と、他方の構成要素による情報の受け付けとによって行われてもよく、あるいは、その情報の受け渡しを行う2個の構成要素が物理的に同じものである場合には、一方の構成要素に対応する処理のフェーズから、他方の構成要素に対応する処理のフェーズに移ることによって行われてもよい。
【0061】
また、上記実施の形態において、各構成要素が実行する処理に関係する情報、例えば、各構成要素が受け付けたり、取得したり、選択したり、生成したり、送信したり、受信したりした情報や、各構成要素が処理で用いるしきい値や数式、アドレス等の情報等は、上記説明で明記していなくても、図示しない記録媒体において、一時的に、あるいは長期にわたって保持されていてもよい。また、その図示しない記録媒体への情報の蓄積を、各構成要素、あるいは、図示しない蓄積部が行ってもよい。また、その図示しない記録媒体からの情報の読み出しを、各構成要素、あるいは、図示しない読み出し部が行ってもよい。
【0062】
また、上記実施の形態において、各構成要素等で用いられる情報、例えば、各構成要素が処理で用いるしきい値やアドレス、各種の設定値等の情報がユーザによって変更されてもよい場合には、上記説明で明記していなくても、ユーザが適宜、それらの情報を変更できるようにしてもよく、あるいは、そうでなくてもよい。それらの情報をユーザが変更可能な場合には、その変更は、例えば、ユーザからの変更指示を受け付ける図示しない受付部と、その変更指示に応じて情報を変更する図示しない変更部とによって実現されてもよい。その図示しない受付部による変更指示の受け付けは、例えば、入力デバイスからの受け付けでもよく、通信回線を介して送信された情報の受信でもよく、所定の記録媒体から読み出された情報の受け付けでもよい。
【0063】
また、上記実施の形態において、制御装置に含まれる2以上の構成要素が通信デバイスや入力デバイス等を有する場合に、2以上の構成要素が物理的に単一のデバイスを有してもよく、あるいは、別々のデバイスを有してもよい。
【0064】
また、上記実施の形態において、各構成要素は専用のハードウェアにより構成されてもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラムを実行することによって実現されてもよい。例えば、ハードディスクや半導体メモリ等の記録媒体に記録されたソフトウェア・プログラムをCPU等のプログラム実行部が読み出して実行することによって、各構成要素が実現され得る。その実行時に、プログラム実行部は、記憶部や記録媒体にアクセスしながらプログラムを実行してもよい。また、そのプログラムは、サーバなどからダウンロードされることによって実行されてもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されたプログラムが読み出されることによって実行されてもよい。また、このプログラムは、プログラムプロダクトを構成するプログラムとして用いられてもよい。また、そのプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【0065】
また、本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。