(57)【要約】【課題】負荷イナーシャや外乱がモータに作用しても、高応答かつ高精度にモータの回転位置を位置指令値に追従させて、フィードバック系のロバスト性を保証する。【解決手段】ＰＷＭ生成器３５は、入力した駆動指令値Ｄ＊の信号に基づきモータ１４に電流値Ｉの電流を供給してモータ１４を駆動する。制御部は、モータ位置θが位置指令値θ＊に近づくように速度指令値を求め、モータ速度が速度指令値に近づくように電流指令値を求める。制御部は、電流値Ｉが電流指令値に近づくように駆動指令値Ｄ＊を求め、ＰＷＭ生成器３５に信号として出力する。制御部は、速度指令値及び電流指令値を、仮想モータ位置とモータ位置との差分値に基づいて求めた速度補正値ωｃ及び電流補正値Ｉｃで補正する。【選択図】図２
2016032326.tif 000002
【特許請求の範囲】
【請求項１】
入力した駆動指令値の信号に基づきモータに電流を供給して前記モータを動作させる駆動部と、
前記モータの回転位置の値、前記モータに供給する電流の電流値、及び前記モータの回転位置の指令値を示す位置指令値を用いて前記駆動指令値を求め、求めた前記駆動指令値を示す信号を前記駆動部に出力することで、前記モータの回転を制御する制御部と、を備え、
前記制御部は、
前記回転位置の値が前記位置指令値に近づくように、前記モータの回転速度の指令値を示す速度指令値を求める第１フィードバック演算処理を行い、
前記モータの回転速度の値が前記速度指令値に近づくように、前記モータの回転加速度の指令値に対応する電流指令値を求める第２フィードバック演算処理を行い、
前記電流値が前記電流指令値に近づくように前記駆動指令値を求める第３フィードバック演算処理を行い、
前記モータをモデル化した仮想モータを定義して前記仮想モータを仮想的に制御し、
前記第２フィードバック演算処理に用いる前記速度指令値、及び前記第３フィードバック演算処理に用いる前記電流指令値のうち、少なくとも一方の指令値を、前記仮想モータの仮想回転位置の値と前記回転位置の値との差分値に基づいて求めた補正値で補正することを特徴とするモータ制御装置。
【請求項２】
前記制御部は、前記補正値を演算するに際し、前記仮想回転位置の値と前記回転位置の値との差分値に、加重係数を乗算することで、前記仮想回転位置の値と前記回転位置の値との差分値を補正することを特徴とする請求項１に記載のモータ制御装置。
【請求項３】
前記制御部は、補正前の前記仮想回転位置の値と前記回転位置の値との差分値が大きいほど、前記加重係数の値を大きい値に設定することを特徴とする請求項２に記載のモータ制御装置。
【請求項４】
前記制御部は、補正前の前記仮想回転位置の値と前記回転位置の値との差分値に対して比例演算及び積分演算を施すＰＩ制御演算を行い、該演算結果の絶対値に対して所定値オフセットさせた値を、前記加重係数の値とすることを特徴とする請求項２又は３に記載のモータ制御装置。
【請求項５】
前記加重係数は、一定値であることを特徴とする請求項２に記載のモータ制御装置。
【請求項６】
前記制御部は、前記位置指令値を、前記仮想回転位置の値に設定することを特徴とする請求項１乃至５のいずれか１項に記載のモータ制御装置。
【請求項７】
前記少なくとも一方の指令値が前記速度指令値であり、
前記制御部は、前記補正値として、前記速度指令値に加算することで前記速度指令値を補正する速度補正値を演算することを特徴とする請求項１乃至６のいずれか１項に記載のモータ制御装置。
【請求項８】
前記制御部は、前記仮想回転位置の値と前記回転位置の値との差分値を時間で一階微分した演算結果を用いて、前記速度補正値を求めることを特徴とする請求項７に記載のモータ制御装置。
【請求項９】
前記少なくとも一方の指令値が前記電流指令値であり、
前記制御部は、前記補正値として、前記電流指令値に加算することで前記電流指令値を補正する電流補正値を演算することを特徴とする請求項１乃至６のいずれか１項に記載のモータ制御装置。
【請求項１０】
前記制御部は、前記仮想回転位置の値と前記回転位置の値との差分値を時間で二階微分した演算結果を用いて、前記電流補正値を求めることを特徴とする請求項９に記載のモータ制御装置。
【請求項１１】
前記少なくとも一方の指令値が前記速度指令値及び前記電流指令値であり、
前記制御部は、前記補正値として、前記速度指令値に加算することで前記速度指令値を補正する速度補正値を演算し、かつ前記電流指令値に加算することで前記電流指令値を補正する電流補正値を演算することを特徴とする請求項１乃至６のいずれか１項に記載のモータ制御装置。
【請求項１２】
前記制御部は、
前記仮想回転位置の値と前記回転位置の値との差分値を時間で一階微分した演算結果を用いて、前記速度補正値を求め、
前記速度補正値を時間で一階微分した演算結果を用いて、前記電流補正値を求めることを特徴とする請求項１１に記載のモータ制御装置。
【請求項１３】
前記制御部は、
前記仮想回転位置の値と前記回転位置の値との差分値を時間で一階微分した演算結果を用いて、前記速度補正値を求め、
前記仮想回転位置の値と前記回転位置の値との差分値を時間で二階微分した演算結果を用いて、前記電流補正値を求めることを特徴とする請求項１１に記載のモータ制御装置。
【請求項１４】
前記制御部は、更に、前記第１フィードバック演算処理に用いる前記位置指令値を、前記仮想回転位置の値と前記回転位置の値との差分値に基づいて求めた位置補正値で補正することを特徴とする請求項１乃至１３のいずれか１項に記載のモータ制御装置。
【請求項１５】
第１リンクと、
前記第１リンクに対して関節で連結された第２リンクと、
前記関節を駆動するモータと、
前記モータの回転位置を検出する回転位置検出部と、
前記モータに供給される電流を検出する電流検出部と、
請求項１乃至１４のいずれか１項に記載のモータ制御装置と、を備えたことを特徴とするロボット装置。
【請求項１６】
制御部が、モータの回転位置の値、前記モータに供給する電流の電流値、及び前記モータの回転位置の指令を示す位置指令値を用いて駆動指令値を求め、求めた前記駆動指令値を示す信号を、前記モータに電流を供給して前記モータを動作させる駆動部に出力することで、前記モータの回転を制御するモータ制御方法であって、
前記制御部が、前記回転位置の値が前記位置指令値に近づくように、前記モータの回転速度の指令値を示す速度指令値を求める第１フィードバック演算処理を行う工程と、
前記制御部が、前記モータの回転速度の値が前記速度指令値に近づくように、前記モータの回転加速度の指令値に対応する電流指令値を求める第２フィードバック演算処理を行う工程と、
前記制御部が、前記電流値が前記電流指令値に近づくように前記駆動指令値を求める第３フィードバック演算処理を行う工程と、
前記制御部が、前記モータをモデル化した仮想モータを定義して前記仮想モータを仮想的に制御する工程と、
前記制御部が、前記第２フィードバック演算処理に用いる前記速度指令値、及び前記第３フィードバック演算処理に用いる前記電流指令値のうち、少なくとも一方の指令値を、前記仮想モータの仮想回転位置の値と前記回転位置の値との差分値に基づいて求めた補正値で補正する工程と、を備えたことを特徴とするモータ制御方法。
【請求項１７】
コンピュータに、請求項１６に記載のモータ制御方法の各工程を実行させるためのプログラム。
【請求項１８】
請求項１７に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータ制御装置、ロボット装置、モータ制御方法、プログラム及び記録媒体に関し、特に、モータに負荷イナーシャや外乱が作用した際にも、モータの回転位置をモータの位置指令値に追従させるものに関する。
【背景技術】
【０００２】
従来、工作機械や産業用ロボットなどの制御装置において、軸駆動に用いられるモータの回転軸にかかる負荷イナーシャや外乱の影響を抑制する種々の制御手法が考えられてきた。
【０００３】
モータの回転軸にかかる負荷イナーシャや外乱を効果的に抑制する制御手法の一つとして、一般的に適応制御とよばれる制御方式がある。適応制御方式として、種々のパラメータを同定するセルフチューニングレギュレータ方式と、仮想モータと所望の応答が得られるように調整された仮想モータ制御器とからなる規範モデルブロックを備えた、モデル規範型適応制御方式が知られている。
【０００４】
セルフチューニングレギュレータ方式は、化学プラントなどの適用例が多く、モデル規範型適応制御方式は、モータ制御などの適用例が多い。モデル規範型適応制御方式は、モータを制御するモータ制御器を備えたモータ制御ブロックと、仮想モータと仮想モータを制御する仮想モータ制御器とを備えた規範モデルブロックとから構成される。さらに、モータ制御ブロックの出力と規範モデルブロックの出力より、何らかの補正量を演算する適応制御機構を備えており、適応制御機構よりモータ制御ブロックに補正量を入力し、モータ制御ブロックと規範モデルブロックの出力の差分を低減する。
【０００５】
この種のモデル規範型適応制御として、特許文献１が知られている。特許文献１では、モータ制御ブロックと規範モデルブロックとの出力の差分から、モータ制御器のパラメータを変更する適応制御機構を備え、モータ制御ブロックと規範モデルブロックとの出力の差分を低減するように制御している。
【０００６】
また、モータの回転軸にかかる負荷イナーシャや外乱を抑制する別の制御手法として、特許文献２が知られている。特許文献２は、モータとＰＩＤ制御といった一般的なフィードバック制御器とを有し、位置指令値とモータ位置との差分（位置補正値）を、位置指令値に加算する構成をとっている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭６２−２２９４０３号公報
【特許文献２】特開２０１１−１７０６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１のようなモータ制御ブロックの出力と規範モデルブロックの出力の差分からモータ制御器のパラメータを変更する制御手法の場合、垂直多関節ロボットのような他軸干渉が大きい系であると制御系のロバスト性が損なわれる可能性がある。垂直多関節ロボットは、モータの回転軸にかかる負荷イナーシャがロボットの姿勢により大きく変わる構造であるため、ロボットが取りうる全ての姿勢で、モータ制御器のパラメータを変更したときのロバスト性を保証することは難しい。また、モータ制御器のパラメータの変更範囲を予め制限しフィードバック系のロバスト性を確保する方法も考えられる。しかし、全ての姿勢においてロバスト性を保証するためには、パラメータの変更範囲を狭める等の対策が必要であり、制御の効果は小さくなる。
【０００９】
一方、特許文献２のように、位置補正値を位置指令値に加算する構成の場合、モータ制御器のパラメータ値を固定にしておくため、フィードバック系のロバスト性が低下することはない。しかし、位置指令値とモータ位置との差分を位置補正値とするため、位置補正値の補正効果を得るために、位置補正値の周波数帯域よりも位置指令値の周波数帯域が相対的に低くなるようにフィルタリングしている。一般的に位置制御器の周波数帯域は周波数が低く、制御遅れにより生じた位置指令値とモータ位置との差分を抑制するためには、応答の遅い系に指令値と同等の周波数帯域の位置補正値を入力しても、位置補正の効果は少ない。そのため、相対的に位置補正値の周波数帯域を位置指令値の周波数帯域よりも高くすることで、位置補正の効果を得ている。ただし、高速な応答が求められる産業用ロボットのような制御系においては、位置指令値の周波数帯域が抑え込まれてしまうため、この制御手法は適していない。
【００１０】
そこで、本発明は、負荷イナーシャや外乱がモータに作用しても、高応答かつ高精度にモータの回転位置を位置指令値に追従させて、フィードバック系のロバスト性を保証することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のモータ制御装置は、入力した駆動指令値の信号に基づきモータに電流を供給して前記モータを動作させる駆動部と、前記モータの回転位置の値、前記モータに供給する電流の電流値、及び前記モータの回転位置の指令値を示す位置指令値を用いて前記駆動指令値を求め、求めた前記駆動指令値を示す信号を前記駆動部に出力することで、前記モータの回転を制御する制御部と、を備え、前記制御部は、前記回転位置の値が前記位置指令値に近づくように、前記モータの回転速度の指令値を示す速度指令値を求める第１フィードバック演算処理を行い、前記モータの回転速度の値が前記速度指令値に近づくように、前記モータの回転加速度の指令値に対応する電流指令値を求める第２フィードバック演算処理を行い、前記電流値が前記電流指令値に近づくように前記駆動指令値を求める第３フィードバック演算処理を行い、前記モータをモデル化した仮想モータを定義して前記仮想モータを仮想的に制御し、前記第２フィードバック演算処理に用いる前記速度指令値、及び前記第３フィードバック演算処理に用いる前記電流指令値のうち、少なくとも一方の指令値を、前記仮想モータの仮想回転位置の値と前記回転位置の値との差分値に基づいて求めた補正値で補正することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、モータの回転位置の値と仮想モータの仮想回転位置の値との差分値から、速度指令値及び電流指令値のうち少なくとも一方の指令値を補正する補正値を求める。そして、該補正値を用いて、位置指令値よりも高次である速度指令値及び電流指令値（加速度）のうち少なくとも一方の指令値を補正する。そのため、モータの応答性が高くなり、高速な応答を求められる制御系においても、位置指令値に対してモータの回転位置を高応答かつ高精度に追従させることができ、フィードバック系のロバスト性が保証される。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１実施形態に係るモータ制御装置を有するモータシステムの概略構成を説明するためのブロック図である。
【図２】モータ制御装置の制御部を機能でブロック化したモータ駆動装置の機能ブロック図である。
【図３】規範モデルブロックの構成を示すブロック図である。
【図４】モータ制御ブロックの構成を示すブロック図である。
【図５】適応補正値演算ブロックの構成を示すブロック図である。
【図６】加重係数演算部の構成を示すブロック図である。
【図７】本発明の第１実施形態に係るモータ制御方法のフローチャートである。
【図８】位置指令値を与えたときの位置指令値とモータ位置との差分値の実験結果を示すグラフである。
【図９】補正値生成部の別の構成を示すブロック図である。
【図１０】本発明の第２実施形態に係るロボット装置を示す斜視図である。
【図１１】ロボットの一関節を示す部分断面図である。
【図１２】ロボットの直進動作を説明するための図である。
【図１３】ロボットの手先を直進動作させたときの手先の位置を測定した結果を示すグラフである。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。
【００１５】
［第１実施形態］
図１は、本発明の第１実施形態に係るモータ制御装置を有するモータシステムの概略構成を説明するためのブロック図である。
【００１６】
モータシステム１０は、上位コントローラ１１と、モータ駆動装置であるモータ駆動ユニット１２とを備えている。モータ駆動ユニット１２は、モータ制御装置であるモータ制御基板１３と、モータ１４とを有している。また、モータ駆動ユニット１２は、モータ１４の回転軸の回転位置（回転角度）を検出する回転位置検出部（エンコーダ）１５と、モータ１４に供給される電流を検出する電流検出部１６と、を有している。
【００１７】
モータ１４は、例えばブラシレスＤＣモータやＡＣモータ等のサーボモータである。エンコーダ１５は、インクリメンタル型またはアブソリュート型のロータリエンコーダであり、モータ１４の回転位置に応じたパルス信号を出力する。電流検出部１６は、ＰＷＭ生成器３５が出力する電流つまりモータ１４に供給される電流を検出するものであり、電流検出結果として、電流検出値（電流値）を示すアナログ信号を出力する。
【００１８】
上位コントローラ１１は、コンピュータにより構成されている。上位コントローラ１１は、ＣＰＵ（Central  Processing  Unit）２１を備えている。また、上位コントローラ１１は、記憶部として、ＲＯＭ（Read  Only  Memory）２２及びＲＡＭ（Random  Access  Memory）２３を備えている。また、上位コントローラ１１は、通信制御部（Ｉ／Ｆ）２４を備えている。
【００１９】
ＣＰＵ２１には、ＲＯＭ２２、ＲＡＭ２３及びＩ／Ｆ２４が、バス２０を介して接続されている。ＣＰＵ２１は、目標回転位置（目標回転角度）を演算し、該演算結果を後述する仮想モータ位置指令値としてＩ／Ｆ２４を介してモータ制御基板１３に出力する。ＲＯＭ２２は、ＣＰＵ２１が読み出して各種演算を実行するプログラムを記憶する。ＲＡＭ２３は、演算結果や外部から取得したデータを一時的に記憶する。
【００２０】
モータ制御基板１３は、コンピュータにより構成されている。モータ制御基板１３は、制御部（演算部）としてのＣＰＵ３１、記憶部としてのＲＯＭ３２及びＲＡＭ３３、並びに通信制御部（Ｉ／Ｆ）３４を有している。更に、モータ制御基板１３は、駆動部であるＰＷＭ生成器３５、及び検出回路３６，３７を有している。ＣＰＵ３１には、ＲＯＭ３２、ＲＡＭ３３、Ｉ／Ｆ３４、ＰＷＭ生成器３５及び検出回路３６，３７が、バス３０を介して接続されている。
【００２１】
ＰＷＭ生成器３５は、例えば半導体スイッチング素子を有するモータドライバであり、入力した駆動指令値に応じて、パルス幅変調された３相交流のＰＷＭ波形の電圧をモータ１４に出力することで、モータ１４に電流を供給してモータ１４を回転動作させる。
【００２２】
検出回路３６は、電流検出部１６から電流値を示すアナログ信号を取得し、ＣＰＵ３１にて取得可能な信号に変換してＣＰＵ３１に出力する。
【００２３】
検出回路３７は、エンコーダ１５からモータ１４の回転位置の値を示すパルス信号を取得し、ＣＰＵ３１にて取得可能な信号に変換してＣＰＵ３１に出力する。
【００２４】
ＣＰＵ３１は、後述する仮想モータ位置指令値、エンコーダ１５による検出結果を示すモータ１４の回転位置の値、及び電流検出部１６による検出結果を示す電流値を取得して、ＰＷＭ生成器３５に出力する駆動指令値を求める。そして、ＣＰＵ３１は、駆動指令値をＰＷＭ生成器３５に出力することで、モータ１４の回転を制御する。
【００２５】
ＲＯＭ３２は、ＣＰＵ３１が読み出して各種演算を実行するプログラム３８を記憶する。そして、ＣＰＵ３１がプログラム３８を読み出して実行することにより、後述する各演算ブロックとして機能する。ＲＡＭ３３は、演算結果や外部から取得したデータを一時的に記憶する。
【００２６】
上位コントローラ１１のＩ／Ｆ２４とモータ制御基板１３のＩ／Ｆ３４とは、シリアル通信線１７により接続されている。これにより、上位コントローラ１１のＣＰＵ２１は、シリアル通信線１７及びＩ／Ｆ２４，３４を介して、後述する仮想モータ位置指令値を、モータ制御基板１３のＣＰＵ３１へ出力する。
【００２７】
図２は、ＣＰＵ３１を機能でブロック化したモータ駆動ユニット１２の機能ブロック図である。ＣＰＵ３１は、プログラム３８を実行することにより、図２に示す規範モデルブロック１００、モータ制御ブロック２００及び適応補正値演算ブロック３００からなる３つの演算ブロックとして機能する。モータ１４には、被制御対象である機械負荷１８が接続されている。
【００２８】
規範モデルブロック１００は、仮想モータよりモータ制御ブロック２００への位置指令値等の指令値を生成する。モータ制御ブロック２００は、規範モデルブロック１００により生成された指令値に基づきモータ１４の回転を制御する。適応補正値演算ブロック３００は、モータ位置及び仮想モータ位置に基づき補正値を生成する。
【００２９】
まず、規範モデルブロック１００の構成について説明する。図３は、規範モデルブロック１００の構成を示すブロック図である。規範モデルブロック１００は、仮想モータ１０１と、仮想モータ１０１の制御を司る仮想モータ制御部１１０とを有する。
【００３０】
仮想モータ１０１は、モータ１４をトルク定数及びイナーシャ値等よりモデル化することにより定義されている。
【００３１】
仮想モータ制御部１１０は、一般にカスケード制御と呼ばれている制御方式をとっている。仮想モータ制御部１１０は、差分演算部１１１、仮想モータ位置制御部１１２、差分演算部１１３、仮想モータ速度制御部１１４及び仮想モータ速度変換部１１５を有している。差分演算部１１１、仮想モータ位置制御部１１２、差分演算部１１３及び仮想モータ速度制御部１１４は、直列に接続してなる。
【００３２】
差分演算部１１１は、仮想モータ位置指令値θ＊＊と仮想モータ１０１の仮想回転位置の値（以下、「仮想モータ位置」という）θ＊との差分を演算する。仮想モータ位置指令値θ＊＊は、仮想モータ１０１の回転位置の指令値であり、上位コントローラ１１から取得する。仮想モータ位置θ＊は、仮想的に回転駆動させた仮想モータ１０１の回転位置（回転角度）を演算した演算値である。
【００３３】
仮想モータ位置制御部１１２は、差分演算部１１１の差分演算結果（θ＊＊−θ＊）に対し、比例や積分や微分演算を行うＰＩＤ制御などの一般的なフィードバック制御系を構成している。つまり、仮想モータ位置制御部１１２は、仮想モータ位置θ＊を仮想モータ位置指令値θ＊＊に近づける（差分値を小さくする）仮想モータ速度指令値ωｉ＊を求める。仮想モータ速度指令値ωｉ＊は、仮想モータ１０１の回転速度の指令値である。第１実施形態では、仮想モータ位置制御部１１２は、比例演算のみを行うＰ制御とし、仮想モータ速度指令値ωｉ＊を算出する。
【００３４】
差分演算部１１３は、仮想モータ速度指令値ωｉ＊と、仮想モータ速度変換部１１５により演算された、仮想モータ１０１の仮想回転速度の値（以下、「仮想モータ速度」という）ωｉとの差分を演算する。
【００３５】
仮想モータ速度変換部１１５は、仮想モータ位置θ＊に基づいて仮想モータ速度ωｉを演算する。具体的には、仮想モータ速度変換部１１５は、仮想モータ位置θ＊を時間で一階微分することにより仮想モータ速度ωｉを算出する。
【００３６】
仮想モータ速度制御部１１４は、差分演算部１１１の差分演算結果（ωｉ＊−ωｉ）に対し、ＰＩＤ制御などを行う一般的なフィードバック制御系を構成している。つまり、仮想モータ速度制御部１１４は、仮想モータ速度ωｉを仮想モータ速度指令値ωｉ＊に近づける（差分値を小さくする）仮想モータ電流指令値Ｉｉ＊を求める。第１実施形態では、仮想モータ速度制御部１１４は、比例と積分演算を行うＰＩ制御とし、仮想モータ電流指令値Ｉｉ＊を算出する。ＣＰＵ３１は、仮想モータ速度制御部１１４で算出した仮想モータ電流指令値Ｉｉ＊により、仮想モータ１０１を仮想的に駆動し、仮想モータ１０１の仮想回転位置の値を示す仮想モータ位置θ＊を算出する。
【００３７】
仮想モータ位置θ＊、仮想モータ速度ωｉ、及び仮想モータ電流指令値Ｉｉ＊は、図２に示すモータ制御ブロック２００の指令値もしくはフィードフォワード指令値とされる。
【００３８】
モータ制御ブロック２００は、モータ１４の位置指令値として、規範モデルブロック１００の演算結果である仮想モータ位置θ＊を入力する。つまり、第１実施形態では、仮想モータ位置θ＊がモータ１４の回転位置の指令値を示す位置指令値であり、以下、同一符号を用いて位置指令値θ＊とする。
【００３９】
次に、モータ制御ブロック２００の構成について説明する。図４は、モータ制御ブロック２００の構成を示すブロック図である。モータ制御ブロック２００は、一般にカスケード制御と呼ばれている制御方式をとっている。モータ制御ブロック２００は、加減算部２１１、位置制御部２１２、加減算部２１３、速度制御部２１４、加減算部２１５、電流制御部２１６及び速度変換部２１７を有する。加減算部２１１、位置制御部２１２、加減算部２１３、速度制御部２１４、加減算部２１５及び電流制御部２１６は、直列に接続してなる。
【００４０】
カスケード制御方式の特徴として、各制御部２１２，２１４，２１６の制御周期を個別の設定できるという特徴がある。第１実施形態では、各制御部２１２，２１４，２１６の制御周期は、電流制御部２１６＜速度制御部２１４＜位置制御部２１２となるように設定されている。
【００４１】
加減算部２１１は、位置指令値と、エンコーダ１５より検出されたモータ１４の回転位置（回転角度）の値（以下、「モータ位置」という）θとの差分を演算する。第１実施形態では、位置指令値θ＊は、後述する位置補正値θｃを加算することにより補正されるので、加減算部２１１は、補正した位置指令値（θ＊＋θｃ）とモータ位置θとの差分（θ＊＋θｃ−θ）を演算することとなる。
【００４２】
位置制御部２１２は、加減算部２１１の演算結果（θ＊＋θｃ−θ）に対し、比例や積分や微分演算を行うＰＩＤ制御などの一般的なフィードバック制御系を構成している。つまり、補正後の位置指令値（θ＊＋θｃ）とモータ位置θとの差分が小さくなるように（モータ位置θが位置指令値（θ＊＋θｃ）に近づくように）、モータ１４の回転速度の指令値を示す速度指令値ω＊を求める第１フィードバック演算処理を行う。第１実施形態では、位置制御部２１２は、比例演算のみを行うＰ制御とし、速度指令値ω＊を算出する。
【００４３】
加減算部２１３は、速度指令値と、速度変換部２１７により演算されたモータ１４の回転速度の値（以下、「モータ速度」という）ωとの差分を演算する。第１実施形態では、速度指令値ω＊は、後述するが仮想モータ速度ωｉ及び速度補正値ωｃを加算することにより補正される。したがって、加減算部２１３は、補正した速度指令値（ω＊＋ωｉ＋ωｃ）とモータ速度ωとの差分（ω＊＋ωｉ＋ωｃ−ω）を演算することとなる。
【００４４】
速度変換部２１７は、モータ位置θに基づいてモータ速度ωを演算する。具体的には、速度変換部２１７は、モータ位置θを時間で一階微分することによりモータ速度ωを算出する。
【００４５】
速度制御部２１４は、加減算部２１３の演算結果（ω＊＋ωｉ＋ωｃ−ω）に対し、ＰＩＤ制御などを行う一般的なフィードバック制御系を構成している。つまり、速度制御部２１４は、補正後の速度指令値（ω＊＋ωｉ＋ωｃ）とモータ速度ωとの差分が小さくなるように（モータ速度が速度指令値に近づくように）、電流指令値Ｉ＊を求める第２フィードバック演算処理を行う。第１実施形態では、速度制御部２１４は、比例と積分演算を行うＰＩ制御とし、電流指令値Ｉ＊を算出する。ここで、電流指令値Ｉ＊は、モータ１４の回転加速度の指令値に対応する値であり、例えば比例係数等を回転加速度の指令値に乗算することで算出される。
【００４６】
加減算部２１５は、電流指令値と、電流検出部１６により検出された電流値Ｉとの差分を演算する。第１実施形態では、電流指令値Ｉ＊は、後述するが仮想モータ電流指令値Ｉｉ＊及び電流補正値Ｉｃを加算することにより補正される。したがって、加減算部２１５は、補正した電流指令値（Ｉ＊＋Ｉｉ＊＋Ｉｃ）と電流値Ｉとの差分（Ｉ＊＋Ｉｉ＊＋Ｉｃ−Ｉ）を演算することとなる。
【００４７】
電流制御部２１６は、加減算部２１５の演算結果（Ｉ＊＋Ｉｉ＊＋Ｉｃ−Ｉ）に対し、ＰＩＤ制御などを行う一般的なフィードバック制御系を構成している。つまり、電流制御部２１６は、補正後の電流指令値（Ｉ＊＋Ｉｉ＊＋Ｉｃ）と電流値Ｉとの差分（Ｉ＊＋Ｉｉ＊＋Ｉｃ−Ｉ）が小さくなるように（電流値が電流指令値に近づくように）駆動指令値Ｄ＊を求める第３フィードバック演算処理を行う。第１実施形態では、電流制御部２１６は、比例、積分、微分演算を行うＰＩＤ制御とし、駆動指令値Ｄ＊を算出する。
【００４８】
電流制御部２１６は、算出した駆動指令値Ｄ＊を示す信号を、ＰＷＭ生成器３５に出力する。ＰＷＭ生成器３５は、駆動指令値Ｄ＊を示す信号に応じたＰＷＭ波形の電圧を生成して、モータ１４に出力する。これにより、モータ１４には電流が供給されて、モータ１４の回転軸が回転する。このように、モータ制御ブロック２００は、モータ位置θ、電流値Ｉ、及び位置指令値θ＊を用いて駆動指令値Ｄ＊を求め、求めた駆動指令値Ｄ＊を示す信号をＰＷＭ生成器３５に出力することで、モータ１４の回転を制御する。
【００４９】
なお、位置制御部２１２、速度制御部２１４、電流制御部２１６のＰＩＤ制御などの演算に用いられる各制御定数は、制御帯域や制御安定性、図２に示すモータ１４の回転軸に接続される機械負荷１８の固有振動等を考慮した値に個別に設定される。
【００５０】
第１実施形態では、モータ制御ブロック２００の速度指令値ω＊には、仮想モータ速度ωｉを速度フィードフォワード指令値として加算する。フィードフォワード指令値を加算することで、フィードバック特性を変更することなく、指令値に対する応答性を向上させることができる。
【００５１】
また、モータ制御ブロック２００の電流指令値Ｉ＊には、仮想モータ電流指令値Ｉｉ＊を電流フィードフォワード指令値として加算する。同様に、フィードフォワード指令値を加算することで、フィードバック特性を変更することなく、指令値に対する応答性を向上させることができる。
【００５２】
なお、第１実施形態では、モータ制御ブロック２００の速度指令値ω＊、電流指令値Ｉ＊共にフィードフォワード指令値を加算したが、一方に加算して他方に加算しなくてもよいし、もしくは共に加算しなくてもよい。
【００５３】
次に、適応補正値演算ブロック３００の構成について説明する。図５は、適応補正値演算ブロック３００の構成を示すブロック図である。適応補正値演算ブロック３００は、速度指令値ω＊及び電流指令値Ｉ＊のうち、少なくとも一方の指令値を、仮想モータ位置とモータ位置との差分値（θ＊−θ）に基づいて求めた補正値Ｐｃで補正するものである。補正値Ｐｃは、速度補正値ωｃ及び電流補正値Ｉｃのうち少なくとも一方で構成される。第１実施形態では、少なくとも一方の指令値とは、速度指令値ω＊及び電流指令値Ｉ＊である。よって、補正値Ｐｃは、速度補正値ωｃ及び電流補正値Ｉｃで構成される。
【００５４】
適応補正値演算ブロック３００は、差分演算部３０１、加重係数演算部３０２及び補正値生成部３０３を有する。
【００５５】
差分演算部３０１は、仮想モータ位置θ＊とモータ位置θとの差分値（θ＊−θ）＝Δθを演算する。
【００５６】
加重係数演算部３０２は、差分値Δθに対して、重み付けを行う係数である加重係数ｆを演算する。この加重係数ｆは、０よりも大きい値である。
【００５７】
補正値生成部３０３は、モータ制御ブロック２００への補正値Ｐｃ及び位置補正値θｃを演算する。
【００５８】
補正値生成部３０３は、乗算部３２０と、モータ制御ブロック２００への補正値Ｐｃを生成する、速度補正値生成部３２２及び電流補正値生成部３２３と、モータ制御ブロック２００への位置補正値θｃを生成する位置補正値生成部３２１とを有する。
【００５９】
乗算部３２０は、差分値Δθに加重係数ｆを乗算することで差分値を補正する。つまり、乗算部３２０は、補正した差分値ｆ×Δθを求める。
【００６０】
速度補正値生成部３２２は、差分値ｆ×Δθにより、図４に示すモータ制御ブロック２００の速度指令値ω＊へ加算する速度補正値ωｃを演算により生成する。第１実施形態では、速度補正値生成部３２２は、差分値ｆ×Δθを時間で一階微分した演算結果を用いて、速度補正値ωｃを求める。具体的には、速度補正値生成部３２２は、差分値ｆ×Δθを時間で一階微分演算するＤ制御を行う。更に、速度補正値生成部３２２は、その微分演算結果に対して、速度制御部２１４の帯域や被制御対象である機械負荷１８の固有振動を考慮したローパスフィルタ処理を行う。これにより、速度補正値生成部３２２は、速度補正値ωｃを生成する。速度補正値生成部３２２が、補正した差分値ｆ×Δθに基づいて求めた速度補正値ωｃをモータ制御ブロック２００へ出力することで、加減算部２１３が第２フィードバック演算処理に用いる速度指令値ω＊に速度補正値ωｃを加算補正する。
【００６１】
電流補正値生成部３２３は、差分値ｆ×Δθより、図４に示すモータ制御ブロック２００の電流指令値Ｉ＊へ加算する電流補正値Ｉｃを演算により生成する。第１実施形態では、電流補正値生成部３２３は、速度補正値ωｃを時間で一階微分した演算結果を用いて、電流補正値Ｉｃを求める。具体的には、電流補正値生成部３２３は、電流補正値生成部３２３は、速度補正値ωｃを時間で一階微分演算する。更に、電流補正値生成部３２３は、その微分演算結果に対して、電流制御部２１６の帯域や被制御対象である機械負荷１８の固有振動を考慮したローパスフィルタ処理を行う。これにより、電流補正値生成部３２３は、電流補正値Ｉｃを生成する。電流補正値生成部３２３が、補正した差分値ｆ×Δθに基づいて求めた電流補正値Ｉｃをモータ制御ブロック２００へ出力することで、加減算部２１５が第３フィードバック演算処理に用いる電流指令値Ｉ＊に電流補正値Ｉｃを加算補正する。
【００６２】
位置補正値生成部３２１は、差分値ｆ×Δθより、図４に示すモータ制御ブロック２００の位置指令値θ＊へ加算する位置補正値θｃを演算により生成する。第１実施形態では、位置補正値生成部３２１は、速度補正値ωｃを時間で積分演算することで位置補正値θｃを生成する。位置補正値生成部３２１が、補正した差分値ｆ×Δθに基づいて求めた位置補正値θｃをモータ制御ブロック２００へ出力することで、加減算部２１１が第１フィードバック演算処理に用いる位置指令値θ＊に位置補正値θｃを加算補正する。
【００６３】
以上、適応補正値演算ブロック３００は、モータ制御ブロック２００に差分値ｆ×Δθに基づいて求めた補正値Ｐｃを出力することで、速度指令値ω＊及び電流指令値Ｉ＊を速度補正値ωｃ及び電流補正値Ｉｃで補正する。
【００６４】
ここで、第１実施形態では、補正前の差分値Δθが大きくなるほど、加重係数ｆの値が大きくなるように加重係数ｆの値を設定している。
【００６５】
この加重係数ｆの算出方法について具体的に説明する。図６は、加重係数演算部３０２の構成を示すブロック図である。加重係数演算部３０２は、比例演算部３３１と、積分演算部３３２と、絶対値演算部３３３と、オフセット部３３４と、加算部３３５とを有する。比例演算部３３１及び積分演算部３３２により補正前の差分値Δθに対して比例演算及び積分演算を施すＰＩ制御演算を行う。絶対値演算部３３３は、該演算結果に対して絶対値を演算する。加算部３３５は、絶対値演算部３３３により演算された絶対値に対して、オフセット部３３４により所定値オフセットさせた値を加算することで、加重係数ｆを算出する。オフセット部３３４にてオフセットさせるオフセット値（所定値）は、０よりも大きい値、例えば１である。
【００６６】
なお、加重係数演算部３０２は、ＰＩ制御演算に代わってＰ制御演算やＰＩＤ制御演算により加重係数ｆの値を算出してもよく、また差分値Δθによらず一定値（例えば１．５）を加重係数ｆの値として設定する構成としてもよい。
【００６７】
以上、ＣＰＵ３１の各ブロック１００，２００，３００の動作について詳細に説明したが、これらの動作について要約して説明する。図７は、ＣＰＵ３１によるモータ制御方法のフローチャートである。
【００６８】
ＣＰＵ３１は、モータ１４をモデル化した仮想モータ１０１を定義して、仮想モータ位置指令値θ＊＊に基づき、仮想モータ１０１を仮想的に制御する（Ｓ１）。
【００６９】
ＣＰＵ３１は、仮想モータ位置θ＊を位置指令値θ＊とする（Ｓ２）。
【００７０】
ＣＰＵ３１は、仮想モータ位置θ＊とモータ位置θとの差分値を加重係数ｆで補正し、補正した差分値ｆ×Δθに基づいて補正値θｃ，ωｃ，Ｉｃを求め、位置指令値θ＊、速度指令値ω＊及び電流指令値Ｉ＊を各補正値θｃ，ωｃ，Ｉｃで補正する（Ｓ３）。
【００７１】
ＣＰＵ３１は、モータ位置θが補正した位置指令値（θ＊＋θｃ）に近づくように速度指令値ω＊を求める第１フィードバック演算処理を行う（Ｓ４）。
【００７２】
ＣＰＵ３１は、モータ速度ωが補正した速度指令値（ω＊＋ωｉ＋ωｃ）に近づくように電流指令値Ｉ＊を求める第２フィードバック演算処理を行う（Ｓ５）。
【００７３】
ＣＰＵ３１は、電流値Ｉが補正した電流指令値（Ｉ＊＋Ｉｉ＋Ｉｃ）に近づくように駆動指令値Ｄ＊を求める第３フィードバック演算処理を行う（Ｓ６）。
【００７４】
ＣＰＵ３１は、駆動指令値Ｄ＊を示す信号をＰＷＭ生成器３５に出力してモータ１４の回転を制御する（Ｓ７）。ＣＰＵ３１は、ステップＳ７の処理後、ステップＳ１の処理に戻る。
【００７５】
次に、ステップＳ３の動作による作用、即ち適応補正値演算ブロック３００の動作による作用について説明する。
【００７６】
仮想モータ位置θ＊とモータ位置θとの差分値Δθがゼロである場合、モータ１４は位置指令値θ＊（仮想モータ位置θ＊）の通りに動作している状態である。よって、適応補正値演算ブロック３００は、補正値Ｐｃ及び位置補正値θｃを生成しない。つまり、位置補正値θｃ＝０、速度補正値ωｃ＝０、電流補正値Ｉｃ＝０である。
【００７７】
一方、モータ１４に接続された機械負荷１８の慣性負荷等の影響により、図５に示す差分値Δθがゼロとならない場合、適応補正値演算ブロック３００では、ゼロではない位置補正値θｃ、速度補正値ωｃ及び電流補正値Ｉｃが生成される。
【００７８】
補正値Ｐｃとして、差分値Δθに対して次数が高く、図４に示すモータ制御ブロック２００の制御帯域が高い速度制御部２１４や電流制御部２１６へ、それぞれ速度補正値ωｃ及び電流補正値Ｉｃを加算する。そのため、差分値Δθがゼロになるようにモータ１４が応答性よく制御される。
【００７９】
つまり、速度補正値ωｃ又は電流補正値Ｉｃにより速度指令値ω＊又は電流指令値Ｉ＊を補正することは、位置補正値θｃにより位置指令値θ＊を補正する場合に比べ、モータ１４の回転位置を位置指令値に高応答かつ高精度に追従させることができる。したがって、速度指令値ω＊のみ又は電流指令値Ｉ＊のみ補正してもよいが、第１実施形態では、両方の指令値ω＊，Ｉ＊を補正しているので、モータ１４の回転位置を位置指令値に、より高応答かつ高精度に追従させることができる。
【００８０】
更に、第１実施形態では、位置指令値θ＊を位置補正値θｃで加算補正しているので、モータ位置θを位置指令値θ＊に、より高応答かつ高精度に追従させることができる。
【００８１】
このように、第１実施形態では、位置補正値θｃ、速度補正値ωｃ及び電流補正値Ｉｃを付加することで応答性が格段によくなり、差分値Δθを効果的に低減することができる。差分値Δθを効果的に低減することができるので、補正値生成部３０３は、位置補正値生成部３２１、速度補正値生成部３２２及び電流補正値生成部３２３を有する構成が特によい。
【００８２】
次に、第１実施形態において実験を行った結果について説明する。図８は、位置指令値θ＊を与えたときの位置指令値θ＊とモータ位置θとの差分値Δθの実験結果を示すグラフである。補正値生成部３０３の構成は、位置補正値生成部３２１、速度補正値生成部３２２及び電流補正値生成部３２３を有するものとした。加重係数演算部３０２は、図６の構成とした。機械負荷１８は、負荷イナーシャがモータ１４のロータイナーシャよりも十分大きい値となるようにした。また、仮想モータ位置指令値θ＊＊は、モータ１４を９０度動作させる位置指令値とした。
【００８３】
図８（ａ）は、第１実施形態の構成において、加重係数ｆを差分値Δθに乗算して補正し、各補正値θｃ，ωｃ，Ｉｃで各指令値θ＊，ω＊，Ｉ＊を補正した場合の実験結果である。図８（ｂ）は、第１実施形態の構成において、加重係数ｆをゼロ、つまり補正値θｃ，ωｃ，Ｉｃをゼロとした場合（補正値を生成しなかった場合）の実験結果である。それぞれ、実線が位置指令値θ＊、点線が位置指令値θ＊とモータ位置θの差分値Δθを表している。
【００８４】
図８（ｂ）では、モータ制御ブロック２００のフィードバック制御により、位置指令値θ＊とモータ位置θとの差分値（モータ位置差分）を抑制するように制御しているが、フィードバック制御のみでは差分を十分に低減できていない。
【００８５】
一方、図８（ａ）では、モータ制御ブロック２００のフィードバック制御に加え、更に適応補正値演算ブロック３００により生成された各補正値θｃ，ωｃ，Ｉｃを各指令値θ＊，ω＊，Ｉ＊に加算している。そのため、位置指令値θ＊とモータ位置θの差分値（モータ位置差分）を低減する効果が図８（ｂ）に比べて大きい。つまり、位置指令値θ＊に対するモータ１４の回転位置の追従性が向上していることがわかる。
【００８６】
以上、第１実施形態によれば、規範モデルブロック１００により求められた仮想モータ位置θ＊と、モータ制御ブロック２００のフィードバック制御によるモータ位置θとの差分値Δθから、補正値θｃ，ωｃ，Ｉｃを生成している。補正値ωｃ，Ｉｃは位置よりも高次である速度、加速度の補正値であるため、モータ制御ブロック２００での応答性が高い。よって、高速な応答を求められる例えば産業用ロボットのような制御系においても、モータ１４の位置指令値θ＊に対してモータ位置θを高応答かつ高精度に追従させることができる。そのため、負荷イナーシャや外乱がモータ１４に作用してもモータ１４のロバスト性は保証される。
【００８７】
また、差分値Δθに１よりも大きい値の加重係数ｆを乗算することにより加重係数ｆに比例して差分値Δθが大となるように補正されるので、算出される補正値θｃ，ωｃ，Ｉｃが加重係数ｆに比例して大きくなる。したがって、各補正値θｃ，ωｃ，Ｉｃによる各指令値θ＊，ω＊，Ｉ＊の補正の効果が高くなり、モータ１４のモータ位置θを位置指令値θ＊に、より高応答かつ高精度に追従させることができる。よって、モータ１４のロバスト性が更に効果的に保証される。
【００８８】
以上の説明では、補正値生成部３０３は、図５に示すように、差分値ｆ×Δθを微分演算して速度補正値ωｃを求め、速度補正値ωｃを微分して電流補正値Ｉｃを求め、速度補正値ωｃを積分して位置指令値θｃを求めたがこれに限定するものではない。
【００８９】
図９は、補正値生成部の別の構成を示すブロック図である。図９に示す補正値生成部３０３Ａは、モータ制御ブロック２００への補正値Ｐｃを生成する、速度補正値生成部３２２及び電流補正値生成部３２３Ａと、モータ制御ブロック２００への位置補正値θｃを生成する位置補正値生成部３２１Ａとを有する。なお、位置補正値生成部３２１Ａ及び電流補正値生成部３２３Ａ以外の構成は、図５と同じであるため、説明を省略する。
【００９０】
電流補正値生成部３２３Ａは、差分値ｆ×Δθを時間で一階微分演算するＤ制御を２回行う。つまり、電流補正値生成部３２３Ａは、差分値ｆ×Δθを時間で二階微分する。更に、電流補正値生成部３２３Ａは、その微分演算結果に対して、電流制御部２１６の帯域や被制御対象である機械負荷１８の固有振動を考慮したローパスフィルタ処理を行う。位置補正値生成部３２１Ａは、差分値ｆ×Δθを位置補正値θｃとする。以上の構成であっても、補正値生成部３０３Ａは、補正値生成部３０３と同じように補正値θｃ，ωｃ，Ｉｃを生成することができる。
【００９１】
また、以上の説明では、位置補正値θｃ、速度補正値ωｃ及び電流補正値Ｉｃを求めて、各補正値で各指令値を補正するものとした。しかし、本発明はこれに限定するものではない。速度補正値ωｃ及び／又は電流補正値Ｉｃを、速度指令値ω＊及び／又は電流指令値Ｉ＊に加算することは、位置補正値θｃを位置指令値θ＊へ加算する場合よりも差分値Δθを低減する効果が大きい。そのため、指令値θ＊，ω＊，Ｉ＊を全て補正する場合よりも応答性が向上する効果は低減するが、位置補正値θｃを位置指令値θ＊へ加算しない場合であっても、本発明は適用可能である。
【００９２】
更に、速度指令値ω＊及び電流指令値Ｉ＊の両方を各補正値ωｃ，Ｉｃで補正する場合について説明したが、本発明はこれに限定するものではない。速度指令値ω＊及び電流指令値Ｉ＊のうちいずれか一方の指令値を補正値で補正する場合であってもよい。この場合であっても、位置指令値θ＊を位置補正値θｃで補正する場合よりも応答性が向上する。
【００９３】
速度指令値ω＊及び電流指令値Ｉ＊のうち速度指令値ω＊のみ補正する場合、図５又は図９において、電流補正値生成部３２３，３２３Ａは省略できる。また、速度指令値ω＊及び電流指令値Ｉ＊のうち電流指令値Ｉ＊のみ補正する場合、補正値生成部は、図９の構成とする。その際、速度補正値生成部３２２は省略できる。
【００９４】
また、位置補正値θｃ、速度補正値ωｃ及び電流補正値Ｉｃを算出するに際して、差分値Δθを加重係数ｆで補正する方が、モータ１４の回転位置を位置指令値に、より高応答かつ高精度に追従させることができるので好ましい。しかし、補正する場合に比して効果は低下するが、差分値Δθについて、加重係数ｆを乗算する補正をしなくても、モータ１４の回転位置を位置指令値に高応答かつ高精度に追従させることができる。つまり、図５又は図９において、加重係数演算部３０２及び乗算部３２０を省略してもよい。この場合、位置補正値生成部３２１（３２１Ａ）、速度補正値生成部３２２、電流補正値生成部３２３（３２３Ａ）は、補正していない差分値Δθに基づいて補正値θｃ，ωｃ，Ｉｃを算出することとなる。
【００９５】
また、モータ制御基板１３のＣＰＵ３１が、仮想モータ位置指令値θ＊＊から仮想モータ位置θ＊を求め、該仮想モータ位置θ＊を位置指令値θ＊とする場合について説明したが、これに限定するものではない。例えば、仮想モータ位置指令値θ＊＊及び仮想モータ位置θ＊に重み係数を乗算して足し合わせた結果を位置指令値としてもよいし、仮想モータ位置指令値θ＊＊をモータの位置指令値としてもよい。
【００９６】
［第２実施形態］
次に、本発明の第２実施形態について説明する。第２実施形態では、第１実施形態で説明したモータ制御装置を、ロボット装置に適用した場合について説明する。なお、第２実施形態の説明をするにあたり、第１実施形態と実質的に同一の機能を有する構成部に関しては、同一の記号を付与し、説明を省略する。
【００９７】
図１０は、本発明の第２実施形態に係るロボット装置を示す斜視図である。図１０に示すロボット装置４００は、産業用ロボットである。ロボット装置４００は、把持したワークＷを他のワークに組付ける組立作業を行うロボット５００と、ロボット５００を制御する上位コントローラ１１と、上位コントローラ１１に接続されたティーチングペンダント６００と、を備えている。
【００９８】
ロボット５００は、多関節のロボットであり、６軸の垂直多関節型のロボットアーム５０１と、ロボットアーム５０１の先端に接続されたエンドエフェクタであるロボットハンド５０２と、を備えている。
【００９９】
ロボットアーム５０１は、作業台に固定されるベース部（基端リンク）５０３と、変位や力を伝達する複数のリンク５２１〜５２６と、を有している。ベース部５０３及び複数のリンク５２１〜５２６は、複数の関節Ｊ１〜Ｊ６で旋回又は回転可能に互いに連結されている。また、ロボットアーム５０１は、各関節Ｊ１〜Ｊ６に設けられた、関節を駆動するモータを有するモータ駆動ユニット１２を備えている。各関節Ｊ１〜Ｊ６に配置されたモータ駆動ユニット１２は、必要なトルクの大きさに合わせて適切な出力のものが用いられる。
【０１００】
ロボットハンド５０２は、ワークＷを把持する複数の把持爪（フィンガ）５０４と、複数の把持爪５０４を駆動する不図示の駆動部と、駆動部の回転角度を検出する不図示のエンコーダと、回転を把持動作に変換する不図示の機構とを有している。この不図示の機構は、カム機構やリンク機構などで必要な把持動作に合わせて設計される。なお、ロボットハンド５０２に用いる駆動部に必要なトルクは、ロボットアーム５０１の関節用と異なるが、基本構成は同じである。また、ロボットハンド５０２は、把持爪５０４等に作用する応力（反力）を検出可能な不図示の力覚センサを有している。
【０１０１】
ティーチングペンダント６００は、上位コントローラ１１に接続可能に構成され、上位コントローラ１１に接続された際に、ロボットアーム５０１やロボットハンド５０２を駆動制御する指令を上位コントローラ１１に送信可能に構成されている。
【０１０２】
以下、関節Ｊ２におけるモータ駆動ユニット１２を例に代表して説明し、他の関節Ｊ１，Ｊ３〜Ｊ６のモータ駆動ユニット１２については、サイズや性能が異なる場合もあるが、同様の構成であるため、説明を省略する。
【０１０３】
図１１は、ロボット５００の関節Ｊ２を示す部分断面図である。図１１において、第１リンクがリンク５２１であり、第２リンクがリンク５２２である。モータ駆動ユニット１２は、モータ１４と、モータ１４の回転軸４２の回転を減速して出力する減速機５１と、を有している。
【０１０４】
また、モータ駆動ユニット１２は、モータ１４の回転軸４２の回転位置（回転角度）を検出するモータ側回転位置検出部（回転位置検出部）であるエンコーダ１５を有している。また、モータ駆動ユニット１２は、減速機５１の出力軸の回転角度（出力角度）を検出する減速機側回転位置検出部であるエンコーダ５６を有している。図１１では図示を省略しているが、図１に示す電流検出部１６が、モータ１４の近傍に配置されている。
【０１０５】
モータ１４は、例えばブラシレスＤＣモータやＡＣモータ等のサーボモータであり、関節Ｊ２を駆動する駆動源である。モータ１４は、回転軸４２とロータマグネット４３とで構成された回転部４４と、モータハウジング４５と、回転軸４２を回転自在に支持する軸受４６，４７と、回転部４４を回転させるステータコイル４８と、を備えている。軸受４６，４７はモータハウジング４５に設けられ、ステータコイル４８はモータハウジング４５に取り付けられている。また、モータ１４はモータカバー４９で囲われている。モータカバー４９の内部には、モータ制御装置であるモータ制御基板１３が設けられている。
【０１０６】
エンコーダ１５は、光学式或いは磁気式のロータリエンコーダであり、モータ１４の回転軸４２の一端側に設けられ、モータ１４の回転軸４２の回転に伴ってパルス信号を生成し、上位コントローラ１１に生成したパルス信号を出力する。なお、エンコーダ１５は、回転軸４２に取り付けられているが、減速機５１の入力軸に取り付けてもよい。
【０１０７】
リンク５２１とリンク５２２とは、クロスローラベアリング５５を介して回転自在に結合されている。モータ１４とエンコーダ１５との間には、必要に応じて、電源オフ時にロボットアーム５０１の姿勢を保持するためのブレーキユニットを設けてもよい。
【０１０８】
減速機５１は、第２実施形態では、小型軽量で減速比の大きい波動歯車減速機である。減速機５１は、モータ１４の回転軸４２に結合された、入力軸を有するウェブジェネレータ５２と、リンク５２２に固定された、出力軸を有するサーキュラスプライン５３と、を備えている。なお、サーキュラスプライン５３は、リンク５２２に直結されているが、リンク５２２に一体に形成されていてもよい。
【０１０９】
また、減速機５１は、ウェブジェネレータ５２とサーキュラスプライン５３との間に配置され、リンク５２１に固定されたフレクスプライン５４を備えている。フレクスプライン５４は、ウェブジェネレータ５２の回転に対して減速比Ｎで減速され、サーキュラスプライン５３に対して相対的に回転する。従って、モータ１４の回転軸４２の回転数が減速機５１で１／Ｎに減速され、フレクスプライン５４が固定されたリンク５２１に対してサーキュラスプライン５３が固定されたリンク５２２を相対的に回転運動させ、関節Ｊ２を屈曲（回転）させる。このときの減速機５１の出力側の回転角度が、実出力角度、即ち関節Ｊ２の角度（関節角度）となる。
【０１１０】
ここで、上位コントローラ１１は、ロボットプログラムに基づいてロボット５００の軌道計算を行い、各関節Ｊ１〜Ｊ６のモータ１４の位置指令値（仮想モータ位置指令値θ＊＊）を計算する。そして、上位コントローラ１１は、所定の時間間隔で各関節Ｊ１〜Ｊ６に設けられたモータ駆動ユニット１２に、それぞれ制御信号として仮想モータ位置指令値θ＊＊を出力することで、ロボット５００の動作を制御する。
【０１１１】
ロボット５００は、各関節軸がシリアルに構成されているため、ロボット５００の姿勢により各関節軸のモータ１４にかかる負荷イナーシャの変動が大きい。また、ロボット５００の各関節軸が動作することにより発生する動作軸以外への外乱である他軸干渉が生じやすい構成である。
【０１１２】
また、各関節軸に減速機５１を具備した構成をとっているので、ロボット５００を構成する部品の中では、減速機５１の剛性は高くはない。そのため、ロボット５００の手先位置を高速に直進動作させるような位置指令値を各モータ１４へ与えたとしても、負荷イナーシャ、他軸干渉や減速機５１の剛性の影響により、ロボット５００の手先位置は振動を伴いながら動作することになる。
【０１１３】
本第２実施形態では、各関節軸にモータ１４と共に設けられたモータ制御基板１３のＣＰＵ３１（図１参照）は、規範モデルブロック１００、モータ制御ブロック２００及び適応補正値演算ブロック３００として機能する。
【０１１４】
モータ制御ブロック２００においては、各関節軸間の制御帯域が同等になるように、モータ制御ブロック２００内の制御部のパラメータが調整されている。
【０１１５】
規範モデルブロック１００は、同様に各関節軸間の制御帯域が同等になるように、仮想モータ制御部２１０内の制御部のパラメータが調整されている。
【０１１６】
適応補正値演算ブロック３００は、位置補正値θｃ、速度補正値ωｃ、電流補正値Ｉｃを生成し、各々位置指令値θ＊、速度指令値ω＊、電流指令値Ｉ＊へ加算させる。
【０１１７】
なお、速度補正値生成部３２２は、微分演算を行うＤ制御と、速度制御部２１４の帯域や減速機５１の剛性を考慮して、ローパスフィルタを用いた構成とし、速度補正値ωｃを生成する。
【０１１８】
電流補正値生成部３２３は、速度補正値ωｃと微分演算を行うＤ制御との構成とし、電流制御部２１６の帯域を考慮して、ローパスフィルタを用いた構成とし、電流補正値Ｉｃを生成する。
【０１１９】
位置補正値生成部３２１は、速度補正値ωｃを積分し、位置制御部２１２の帯域や減速機５１の剛性を考慮して、ローパスフィルタを用いた構成とし、位置補正値θｃを生成する。
【０１２０】
次に、適応補正値演算ブロック３００の作用について説明する。各関節軸のモータ位置θと仮想モータ位置θ＊から補正値θｃ，ωｃ，Ｉｃを生成し、モータ制御ブロック２００の所定のブロックへ補正値θｃ，ωｃ，Ｉｃを加算する。
【０１２１】
補正値θｃ，ωｃ，Ｉｃは、各関節軸の減速機５１を加振させない帯域の指令値であり、規範モデルブロック１００では各関節軸間での制御帯域が同等になるように調整されている。そのため、減速機５１を加振しないような補正値を制御帯域が高い、速度制御部２１４や電流制御部２１６の指令値に加算するため、高応答でモータ１４を制御することが可能となる。
【０１２２】
各関節軸のモータ１４にかかる負荷イナーシャが大きくなるような動作であっても、仮想モータ位置θ＊にモータ位置θが追従するように各軸のモータ１４が動作するため、ロボット５００の手先動作精度を向上させることができる。
【０１２３】
次に、第２実施形態における実験結果について説明する。本実験では、ロボット５００に、水平方向に直進動作をさせた。各関節軸の仮想モータ位置指令値θ＊＊は、上位コントローラ１１から生成される。
【０１２４】
次に、ロボット５００の手先を直進動作させたときの実験結果について説明する。図１２は、第２実施形態に係るロボット装置４００のロボット５００の動作を説明するための図である。図１２（ａ）はロボット５００の動作開始時の姿勢、図１２（ｂ）はロボット５００の動作終了時の姿勢を表している。
【０１２５】
図１３は、ロボット５００の手先を直進動作させたときの手先の位置を測定した結果を示すグラフである。図１３（ａ）は、第２実施形態の構成において、加重係数ｆを差分値Δθに乗算して補正し、各補正値θｃ，ωｃ，Ｉｃで各指令値θ＊，ω＊，Ｉ＊を補正した場合の実験結果である。図１３（ｂ）は、第２実施形態の構成において、加重係数ｆをゼロ、つまり補正値θｃ，ωｃ，Ｉｃをゼロとした場合（補正値を生成しなかった場合）の実験結果である。それぞれ、実線がロボット５００の手先の位置、点線がロボット５００の手先の目標位置を表している。
【０１２６】
本実験では、図１２中、ロボット５００の手先をＸ軸方向に５０ｍｍ直進動作をさせた。なお、本実験においては、手先位置を測定するにあたりレーザー変位計を使用した。
【０１２７】
図１３（ｂ）では、モータ制御ブロック２００のフィードバック制御により、位置指令値θ＊とモータ位置θの差分を低減するように制御しているが、フィードバック制御のみでは差分を十分に低減できていない。そのため、各関節軸の位置差分が蓄積されることにより、手先位置は、図１３（ｂ）に示すように、振動的になってしまう。
【０１２８】
一方、図１３（ａ）では、モータ制御ブロック２００のフィードバック制御において、適応補正値演算ブロック３００により生成された補正値θｃ，ωｃ，Ｉｃを各指令値θ＊，ω＊，Ｉ＊に加算している。その結果、モータ位置θと位置指令値θ＊との差分値Δθを低減する効果が大きい。そのため、各関節軸のモータ１４の位置指令値θ＊への追従性が向上し、ロボット５００の手先位置の動作精度も向上していることがわかる。
【０１２９】
以上、第２実施形態によれば、ロボット５００の各関節Ｊ１〜Ｊ６に負荷イナーシャや外乱が作用しても、各関節Ｊ１〜Ｊ６におけるモータ１４において、回転位置を位置指令値に高応答かつ高精度に追従させることができる。よって、ロボット５００の手先の振動を低減することができ、ロボット５００のロバスト性が保証される。
【０１３０】
なお、本発明は、以上説明した実施形態に限定されるものではなく、本発明の技術的思想内で多くの変形が可能である。
【０１３１】
上記実施形態の各演算処理は、具体的にはモータ制御基板１３のＣＰＵ３１により実行されるものであるが、これに限定するものではなく、上位コントローラ１１のＣＰＵ２１と協働して実行してもよい。この場合、モータ制御基板１３及び上位コントローラ１１でモータ制御装置が構成され、上位コントローラ１１のＣＰＵ２１とモータ制御基板１３のＣＰＵ３１で制御部が構成される。
【０１３２】
また、上述した機能を実現するプログラムを記録した記録媒体をモータ制御装置に供給し、モータ制御装置のコンピュータ（ＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムを読み出し実行することによって達成されるようにしてもよい。この場合、記録媒体から読み出されたプログラム自体が上述した実施形態の機能を実現することになり、プログラム自体及びそのプログラムを記録した記録媒体は本発明を構成することになる。
【０１３３】
また、上記実施形態では、コンピュータ読み取り可能な記録媒体がＲＯＭ３２であり、ＲＯＭ３２にプログラム３８が格納される場合について説明したが、これに限定するものではない。プログラム３８は、コンピュータ読み取り可能な記録媒体であれば、いかなる記録媒体に記録されていてもよい。例えば、プログラムを供給するための記録媒体としては、図１に示すＲＯＭ２２や不図示の外部記憶装置、記録ディスク等を用いてもよい。具体例を挙げて説明すると、記録媒体として、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。また、上記実施形態におけるプログラムを、ネットワークを介してダウンロードしてコンピュータにより実行するようにしてもよい。
【０１３４】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施形態の機能が実現されるだけに限定するものではない。そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１３５】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上記実施形態の機能が実現される場合も含まれる。
【０１３６】
また、上記実施形態では、コンピュータが記録媒体や記憶装置に記録されたプログラムを実行することにより、処理を行う場合について説明したが、これに限定するものではない。プログラムに基づいて動作する演算部の一部又は全部の機能をＡＳＩＣやＦＰＧＡ等の専用ＬＳＩで構成してもよい。なお、ＡＳＩＣはApplication  Specific  Integrated  Circuit、ＦＰＧＡはField-Programmable  Gate  Arrayの頭字語である。
【符号の説明】
【０１３７】
１３…モータ制御基板（モータ制御装置）、１４…モータ、１５…エンコーダ（回転位置検出部）、１６…電流検出部、３１…ＣＰＵ（制御部）、３５…ＰＷＭ生成器（駆動部）、３８…プログラム、１０１…仮想モータ、４００…ロボット装置
【図１】
2016032326.tif 000003
【図２】
2016032326.tif 000004
【図３】
2016032326.tif 000005
【図４】
2016032326.tif 000006
【図５】
2016032326.tif 000007
【図６】
2016032326.tif 000008
【図７】
2016032326.tif 000009
【図８】
2016032326.tif 000010
【図９】
2016032326.tif 000011
【図１０】
2016032326.tif 000012
【図１１】
2016032326.tif 000013
【図１２】
2016032326.tif 000014
【図１３】
2016032326.tif 000015