(57)【要約】【課題】複数のサーボ制御系の全体の追従性能を向上させる。【解決手段】コントローラ（１０）は、補正後軌道（ＳＰｆ）に対応する第一サーボ制御系（２０）の応答を予測し、予測した応答を用いて、第一指令値（Ｐｃ）の補正、または、第二逆運動学軌道（ＩＫｔ）の生成を実行する。【選択図】図１
2019021087.tif 000002
【特許請求の範囲】
【請求項１】
第一サーボ制御系についての指令軌道として、基準軌道からローパスフィルタ処理により高周波成分を除去した第一指令軌道を生成し、第二サーボ制御系についての指令軌道として、前記高周波成分に対応する軌道を含む第二指令軌道を生成する制御装置であって、
前記第一サーボ制御系の動特性モデルを用いて、前記第一指令軌道に対応する前記第一サーボ制御系の応答を予測する予測部と、
前記予測部によって予測された前記第一サーボ制御系の応答を用いて、
（１）前記第一指令軌道から生成する第一指令値の補正、
または、
（２）前記第二指令軌道の生成を実行する生成部と、を備えることを特徴とする制御装置。
【請求項２】
前記予測部は、前記第一サーボ制御系の動特性モデルを用いて、前記第一指令値に対する前記第一サーボ制御系の出力である制御量を予測し、
前記生成部は、前記予測部によって予測された制御量と、前記第一サーボ制御系からフィードバック情報として取得する前記第一サーボ制御系の制御量の実測値と、を用いたモデル予測制御によって、前記第一指令値を補正することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記生成部は、前記予測部によって予測された前記第一サーボ制御系の応答を用いて生成する中間軌道と、前記基準軌道と、の誤差に対応する軌道を含む前記第二指令軌道を生成することを特徴とする請求項１に記載の制御装置。
【請求項４】
前記基準軌道に対し、時間軸の順方向と逆方向との両方向に前記ローパスフィルタ処理を行なって前記第一指令軌道を生成するフィルタ部をさらに備えることを特徴とする請求項１から３のいずれか１項に記載の制御装置。
【請求項５】
前記フィルタ部は、前記基準軌道に対し、時間軸の逆方向から順方向の順に前記ローパスフィルタ処理を行なって前記第一指令軌道を生成することを特徴とする請求項４に記載の制御装置。
【請求項６】
第一サーボ制御系についての指令軌道として、基準軌道からローパスフィルタ処理により高周波成分を除去した第一指令軌道を生成し、第二サーボ制御系についての指令軌道として、前記高周波成分に対応する軌道を含む第二指令軌道を生成する制御装置の制御方法であって、
前記第一サーボ制御系の動特性モデルを用いて、前記第一指令軌道に対応する前記第一サーボ制御系の応答を予測する予測ステップと、
前記予測ステップにて予測した前記第一サーボ制御系の応答を用いて、
（１）前記第一指令軌道から生成する第一指令値の補正、
または、
（２）前記第二指令軌道の生成を実行する生成ステップと、を含むことを特徴とする制御方法。
【請求項７】
請求項１から５のいずれか１項に記載の制御装置としてコンピュータを機能させるための情報処理プログラムであって、前記各部としてコンピュータを機能させるための情報処理プログラム。
【請求項８】
請求項７に記載の情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーボドライバ等のフィードバック制御系に指令値を出力する制御装置等に関する。
【背景技術】
【０００２】
複数のサーボ制御系の各々について、目標軌道から前記サーボ制御系ごとの指令軌道を生成し、前記指令軌道から生成した指令値を前記複数のサーボ制御系の各々に対する制御周期ごとに出力して、前記複数のサーボ制御系を協調制御する制装置等が知られている。
【０００３】
例えば、下掲の特許文献１には、（１）目標軌道に対する逆運動学演算の結果にローパスフィルタ処理を行なって生成した第一軌道を第一サーボ制御系についての指令軌道とし、（２）前記第一軌道に対する順運動学演算の結果と目標軌道との誤差から、第二サーボ制御系についての指令軌道を生成する制御装置が開示されている。なお、以下の説明においては逆運動学を「インバースキネマティクス」と称し、順運動学を「フォワードキネマティクス」と称することがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１２／００９５５９９号（２０１２年４月１９日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述のような従来技術は、前記第一サーボ制御系がローパスフィルタ処理後の軌道に十分に追従できない場合、前記複数のサーボ制御系の全体の追従性能（追従精度）が低下することがあるという問題がある。具体的には、上述のような従来技術は、前記第一サーボ制御系がローパスフィルタ処理後の軌道に十分に追従できることを前提にしている。上述のような従来技術について、前記第一サーボ制御系がローパスフィルタ処理後の軌道に十分に追従できるとの前提を満足しない場合、前記第一サーボ制御系および前記第二サーボ制御系の全体の追従性能においても、十分な性能が得られないという問題がある。
【０００６】
本発明の一態様は、複数のサーボ制御系を協調させて制御する制御装置等において、前記複数のサーボ制御系の全体の追従性能を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明の一態様に係る制御装置は、第一サーボ制御系についての指令軌道として、基準軌道からローパスフィルタ処理により高周波成分を除去した第一指令軌道を生成し、第二サーボ制御系についての指令軌道として、前記高周波成分に対応する軌道を含む第二指令軌道を生成する制御装置であって、前記第一サーボ制御系の動特性モデルを用いて、前記第一指令軌道に対応する前記第一サーボ制御系の応答を予測する予測部と、前記予測部によって予測された前記第一サーボ制御系の応答を用いて、（１）前記第一指令軌道から生成する第一指令値の補正、または、（２）前記第二指令軌道の生成を実行する生成部と、を備えることを特徴としている。
【０００８】
前記の構成によれば、前記制御装置は、前記ローパスフィルタ処理後の値である前記第一指令軌道に対応する、前記第一サーボ制御系の応答を、前記第一サーボ制御系の動特性モデルを用いて予測する。そして、前記制御装置は、予測した前記第一サーボ制御系の応答を用いて、（１）前記第一指令値の補正、または、（２）前記第二指令軌道の生成を実行する。
【０００９】
ここで、前記第一サーボ制御系がローパスフィルタ処理後の軌道に十分に追従できない場合、結果として、前記第一サーボ制御系および前記第二サーボ制御系の全体の追従性能が低下することになる。
【００１０】
これに対して、前記制御装置は、前記第一指令軌道に対応する前記第一サーボ制御系の応答を予測し、予測した前記第一サーボ制御系の応答を用いて、（１）前記第一指令値の補正、または、（２）前記第二指令軌道の生成を実行する。
【００１１】
例えば、前記制御装置は、予測した前記第一サーボ制御系の応答を用いて補正した前記第一指令値を前記第一サーボ制御系に出力することにより、前記第一サーボ制御系の前記第一指令軌道への追従性能を向上させる。
【００１２】
また例えば、前記制御装置は、予測した前記第一サーボ制御系の応答を用いて生成した前記第二指令軌道から生成する第二指令値を前記第二サーボ制御系に出力することにより、前記第一サーボ制御系の追従遅れを前記第二サーボ制御系に補償させる。
【００１３】
したがって、前記制御装置は、前記第一サーボ制御系および前記第二サーボ制御系の全体の追従性能を向上させることができるとの効果を奏する。例えば、前記制御装置は、予測した前記第一サーボ制御系の応答を用いて補正した前記第一指令値を前記第一サーボ制御系に出力することで、前記第一サーボ制御系の追従性能を向上させることができる。また例えば、前記制御装置は、予測した前記第一サーボ制御系の応答を用いて生成した前記第二指令軌道から生成する第二指令値を前記第二サーボ制御系に出力することで、前記第一サーボ制御系が前記第一指令軌道に追従できない場合にも、前記第一サーボ制御系が追従できない分を前記第二サーボ制御系に補償させることができる。したがって、前記制御装置は、前記第一サーボ制御系および前記第二サーボ制御系の全体の追従性能を向上させることができるとの効果を奏する。
【００１４】
本発明に係る制御装置において、前記予測部は、前記第一サーボ制御系の動特性モデルを用いて、前記第一指令値に対する前記第一サーボ制御系の出力である制御量を予測し、前記生成部は、前記予測部によって予測された制御量と、前記第一サーボ制御系からフィードバック情報として取得する前記第一サーボ制御系の制御量の実測値と、を用いたモデル予測制御によって、前記第一指令値を補正してもよい。
【００１５】
前記の構成によれば、前記制御装置は、前記第一サーボ制御系の動特性モデルを用いて予測した前記第一サーボ制御系の制御量と、前記第一サーボ制御系の制御量の実測値と、を用いた前記モデル予測制御によって、第一指令値を補正する。
【００１６】
したがって、前記制御装置は、前記モデル予測制御を用いて補正した前記第一指令値を前記第一サーボ制御系に出力することで、前記第一サーボ制御系の、前記ローパスフィルタ処理後の前記第一指令軌道への追従性能を向上させることができる。つまり、前記制御装置は、前記第一サーボ制御系および前記第二サーボ制御系の全体の追従性能を向上させることができるとの効果を奏する。
【００１７】
本発明に係る制御装置において、前記生成部は、前記予測部によって予測された前記第一サーボ制御系の応答を用いて生成する中間軌道と、前記基準軌道と、の誤差に対応する軌道を含む前記第二指令軌道を生成してもよい。
【００１８】
前記の構成によれば、前記制御装置は、前記第一サーボ制御系の、前記第一指令軌道に対応する応答について予測し、予測した応答を用いて生成する中間軌道と、前記基準軌道と、の誤差に対応する軌道を含む前記第二指令軌道を生成する。そして、前記制御装置は、前記第二指令軌道から生成した指令値（前記第二指令値）を、第二サーボ制御系に出力する。
【００１９】
したがって、前記制御装置は、予測した前記第一サーボ制御系の応答を用いて生成した前記第二指令軌道から生成する第二指令値を前記第二サーボ制御系に出力することにより、前記第一サーボ制御系の追従遅れを前記第二サーボ制御系に補償させることができる。つまり、前記制御装置は、前記第一サーボ制御系および前記第二サーボ制御系の全体の追従性能を向上させることができるとの効果を奏する。
【００２０】
本発明に係る制御装置は、前記基準軌道に対し、時間軸の順方向と逆方向との両方向に前記ローパスフィルタ処理を行なって前記第一指令軌道を生成するフィルタ部をさらに備えてもよい。
【００２１】
前記の構成によれば、前記制御装置は、前記基準軌道に対し、時間軸の順方向と逆方向との両方向に前記ローパスフィルタ処理を行なって前記第一指令軌道を生成する。例えば、前記制御装置は、前記基準軌道に対し、時間軸の逆方向から順方向の順に前記ローパスフィルタ処理を行なって前記第一指令軌道を生成する。
【００２２】
ここで、フィルタリング処理（例えば、ローパスフィルタ処理）について、「時間軸の順方向と逆方向とに１回ずつ実行する」ことにより、フィルタリング処理による位相遅れを除去することができることが知られている。つまり、ゼロ位相フィルタ処理によって位相遅れを除去することができることが知られている。
【００２３】
そこで、前記制御装置は、前記基準軌道に対し、時間軸の順方向と逆方向との両方向にローパスフィルタ処理を行なって、つまり、ゼロ位相フィルタ処理を行なって、前記第一指令軌道から位相遅れを除去する。前記制御装置は、前記ローパスフィルタに起因して従来発生していた「前記基準軌道からの位相遅れ」を発生させずに、前記第一指令軌道を生成する。
【００２４】
従来、前記第一サーボ制御系の追従性を向上させるためのローパスフィルタ処理の際に、前記ローパスフィルタ処理に起因して前記第一軌道に位相遅れ（位相遅延）が発生し、発生した位相遅延を前記第二サーボ制御系に補償させていた。したがって、従来、前記第一サーボ制御系の追従性を向上させる代わりに、本来は前記第一サーボ制御系が実現すべき軌道の一部を前記第二サーボ制御系に実現させることになり、前記第二サーボ制御系の可動範囲を有効に利用することができなかった。
【００２５】
これに対し、前記制御装置は、前記高周波成分の除去に伴って従来発生していた「前記基準軌道からの位相遅れ」の発生を防ぐことにより、前記第一サーボ制御系が本来実現すべき軌道の一部を前記第二サーボ制御系に補償させる必要がない。つまり、前記制御装置は、高周波成分の除去によって前記第一サーボ制御系の追従性を維持しつつ、位相遅延の発生を防ぐことで前記第二サーボ制御系の可動範囲を有効に利用することができる。前記制御装置は、前記第一サーボ制御系の追従性を維持しつつ、前記第一サーボ制御系および前記第二サーボ制御系の各々について、その可動範囲を有効に利用することができるという効果を奏する。
【００２６】
本発明に係る制御装置において、前記フィルタ部は、前記基準軌道に対し、時間軸の逆方向から順方向の順に前記ローパスフィルタ処理を行なって前記第一指令軌道を生成してもよい。
【００２７】
前記の構成によれば、前記制御装置は、前記基準軌道に対し、時間軸の逆方向から順方向の順に前記ローパスフィルタ処理を行なって前記第一指令軌道を生成する。
【００２８】
ここで、前記基準軌道に対し、時間軸の順方向から逆方向の順に前記ローパスフィルタ処理（前記ゼロ位相フィルタ処理）を行なった場合、前記第一指令軌道について、スタート時点（ｔ＝０の時点）において、前記基準軌道に対するデータ飛びが発生する。
【００２９】
これに対して、前記制御装置は、前記基準軌道に対し、時間軸の逆方向から順方向の順に前記ローパスフィルタ処理を行なって前記第一指令軌道を生成する。したがって、前記制御装置は、前記第一指令軌道について、スタート時点（ｔ＝０の時点）において、前記基準軌道に対するデータ飛びが発生することを防ぐことができるとの効果を奏する。
【００３０】
上記の課題を解決するために、本発明の一態様に係る制御方法は、第一サーボ制御系についての指令軌道として、基準軌道からローパスフィルタ処理により高周波成分を除去した第一指令軌道を生成し、第二サーボ制御系についての指令軌道として、前記高周波成分に対応する軌道を含む第二指令軌道を生成する制御装置の制御方法であって、前記第一サーボ制御系の動特性モデルを用いて、前記第一指令軌道に対応する前記第一サーボ制御系の応答を予測する予測ステップと、前記予測ステップにて予測した前記第一サーボ制御系の応答を用いて、（１）前記第一指令軌道から生成する第一指令値の補正、または、（２）前記第二指令軌道の生成を実行する生成ステップと、を含むことを特徴としている。
【００３１】
前記の方法によれば、前記制御方法は、前記ローパスフィルタ処理後の値である前記第一指令軌道に対応する、前記第一サーボ制御系の応答を、前記第一サーボ制御系の動特性モデルを用いて予測する。そして、前記制御方法は、予測した前記第一サーボ制御系の応答を用いて、（１）前記第一指令値の補正、または、（２）前記第二指令軌道の生成を実行する。
【００３２】
ここで、前記第一サーボ制御系がローパスフィルタ処理後の軌道に十分に追従できない場合、結果として、前記第一サーボ制御系および前記第二サーボ制御系の全体の追従性能が低下することになる。
【００３３】
これに対して、前記制御方法は、前記第一指令軌道に対応する前記第一サーボ制御系の応答を予測し、予測した前記第一サーボ制御系の応答を用いて、（１）前記第一指令値の補正、または、（２）前記第二指令軌道の生成を実行する。
【００３４】
例えば、前記制御方法は、予測した前記第一サーボ制御系の応答を用いて補正した前記第一指令値を前記第一サーボ制御系に出力することにより、前記第一サーボ制御系の前記第一指令軌道への追従性能を向上させる。
【００３５】
また例えば、前記制御方法は、予測した前記第一サーボ制御系の応答を用いて生成した前記第二指令軌道から生成する第二指令値を前記第二サーボ制御系に出力することにより、前記第一サーボ制御系の追従遅れを前記第二サーボ制御系に補償させる。
【００３６】
したがって、前記制御方法は、前記第一サーボ制御系および前記第二サーボ制御系の全体の追従性能を向上させることができるとの効果を奏する。例えば、前記制御方法は、予測した前記第一サーボ制御系の応答を用いて補正した前記第一指令値を前記第一サーボ制御系に出力することで、前記第一サーボ制御系の追従性能を向上させることができる。また例えば、前記制御方法は、予測した前記第一サーボ制御系の応答を用いて生成した前記第二指令軌道から生成する第二指令値を前記第二サーボ制御系に出力することで、前記第一サーボ制御系が前記第一指令軌道に追従できない場合にも、前記第一サーボ制御系が追従できない分を前記第二サーボ制御系に補償させることができる。したがって、前記制御方法は、前記第一サーボ制御系および前記第二サーボ制御系の全体の追従性能を向上させることができるとの効果を奏する。
【発明の効果】
【００３７】
本発明の一態様によれば、複数のサーボ制御系を協調させて制御する制御装置等において、前記複数のサーボ制御系の全体の追従性能を向上させることができるという効果を奏する。
【図面の簡単な説明】
【００３８】
【図１】本発明の実施形態１に係るコントローラ等の要部構成等を示すブロック図である。
【図２】図１のコントローラを含む制御システムの全体概要を示す図である。
【図３】図１のコントローラが実行する処理の概要を示すフロー図である。
【図４】図２の制御システム等を用いて実施する制御テストの内容を示す図である。
【図５】図４に示す制御テストについて、図１のコントローラによって制御された第一アクチュエータおよび第二アクチュエータの各々の位置、位置偏差、およびトルクの変化を示す図である。
【図６】図４に示す制御テストについて、図１のコントローラによって制御された第一アクチュエータおよび第二アクチュエータの合計の位置および位置偏差の変化を示す図である。
【図７】本発明の実施形態２に係るコントローラ等の要部構成等を示すブロック図である。
【図８】図７のコントローラを含む制御システムの全体概要を示す図である。
【図９】図７のコントローラが実行する処理の概要を示すフロー図である。
【図１０】図４に示す制御テストについて、図７のコントローラによって制御された第一アクチュエータおよび第二アクチュエータの各々の位置、位置偏差、およびトルクの変化を示す図である。
【図１１】図４に示す制御テストについて、図７のコントローラによって制御された第一アクチュエータおよび第二アクチュエータの合計の位置および位置偏差の変化を示す図である。
【図１２】本発明の実施形態３に係るコントローラ等の要部構成等を示すブロック図である。
【図１３】図１２のコントローラを含む制御システムの全体概要を示す図である。
【図１４】図１２のコントローラが実行する処理の概要を示すフロー図である。
【図１５】図４に示す制御テストについて、図１２のコントローラによって制御された第一アクチュエータおよび第二アクチュエータの各々の位置、位置偏差、モデル予測誤差、およびトルクの変化を示す図である。
【図１６】図４に示す制御テストについて、図１２のコントローラによって制御された第一アクチュエータおよび第二アクチュエータの合計の位置および位置偏差の変化を示す図である。
【図１７】本発明の実施形態４に係るコントローラ等の要部構成等を示すブロック図である。
【図１８】図１７のコントローラを含む制御システムの全体概要を示す図である。
【図１９】図１７のコントローラが実行する処理の概要を示すフロー図である。
【図２０】高周波成分の除去方法に応じて発生する位相遅延およびデータ飛びについて説明する図である。
【図２１】図４に示す制御テストについて、図１７のコントローラによって制御された第一アクチュエータおよび第二アクチュエータの各々の位置、位置偏差、モデル予測誤差、およびトルクの変化を示す図である。
【図２２】図４に示す制御テストについて、図１７のコントローラによって制御された第一アクチュエータおよび第二アクチュエータの合計の位置および位置偏差の変化を示す図である。
【図２３】図４に示す制御テストについて、従来の協調制御コントローラによって制御された第一アクチュエータおよび第二アクチュエータの各々の位置、位置偏差、およびトルクの変化を示す図である。
【図２４】図４に示す制御テストについて、従来の協調制御コントローラによって制御された第一アクチュエータおよび第二アクチュエータの合計の位置および位置偏差の変化を示す図である。
【発明を実施するための形態】
【００３９】
〔実施形態１〕
以下、本発明の実施形態１について、図１から図６、図２３、および図２４に基づいて詳細に説明する。図中同一または相当部分には同一符号を付してその説明は繰返さない。本発明の一態様に係るコントローラ１０（制御装置）についての理解を容易にするため、先ず、コントローラ１０を含む制御システム１の概要を、図２を用いて説明する。
【００４０】
（制御システムの概要）
図２は、コントローラ１０を含む制御システム１の概要を示す図である。図２に例示する制御システム１は、上位コントローラであるコントローラ１０と、コントローラ１０により協調制御される第一サーボ制御系２０および第二サーボ制御系３０と、を含む。第一サーボ制御系２０は、第一サーボドライバ２１と、第一サーボドライバ２１によって駆動を制御される第一アクチュエータ２２と、を含むフィードバック制御系である。同様に、第二サーボ制御系３０は、第二サーボドライバ３１と、第二サーボドライバ３１によって駆動を制御される第二アクチュエータ３２と、を含むフィードバック制御系である。
【００４１】
コントローラ１０と、第一サーボドライバ２１および第二サーボドライバ３１の各々とは通信可能に接続されており、その接続方式は、任意の有線接続方式または無線接続方式である。
【００４２】
第一サーボドライバ２１は、軸ごとの指令値Ｐｃ（ｉ）をコントローラ１０から受信し、制御対象である第一アクチュエータ２２の軸ごとの出力（つまり、軸ごとの制御量）が軸ごとの指令値Ｐｃ（ｉ）に追従するように、フィードバック制御を行う。第一サーボドライバ２１の制御周期は、例えば１／１２ｍｓである。
【００４３】
第一アクチュエータ２２は、第二アクチュエータ３２よりも可動範囲は広いが、第二アクチュエータ３２の動作速度よりも動作速度が低速なアクチュエータであり、例えば、サーボモータまたはステッピングモータである。第一サーボドライバ２１は、コントローラ１０からの指令値Ｐｃに従って第一アクチュエータ２２を駆動する。第一サーボドライバ２１は、コントローラ１０からの指令値Ｐｃを目標値に設定し、実測値をフィードバック値として、第一アクチュエータ２２に対しフィードバック制御を行う。すなわち、第一サーボドライバ２１は、実測値が目標値に近づくように第一アクチュエータ２２を駆動するための電流を調整する。なお、第一サーボドライバ２１は、サーボモータアンプと称されることもある。
【００４４】
第二サーボドライバ３１は、軸ごとの指令値Ｓｃ（ｉ）をコントローラ１０から受信し、制御対象である第二アクチュエータ３２の軸ごとの出力（つまり、軸ごとの制御量）が軸ごとの指令値Ｓｃ（ｉ）に追従するように、フィードバック制御を行う。第二サーボドライバ３１の制御周期は、例えば１／１２ｍｓである。ただし、１／１２ｍｓという制御周期は単なる例示に過ぎず、第二サーボドライバ３１の制御周期はより短く（速く）てもよく、例えば、１０μｓであってもよい。
【００４５】
第二アクチュエータ３２は、第一アクチュエータ２２よりも高速な動作が可能だが、第一アクチュエータ２２よりも可動範囲が狭いアクチュエータであり、例えば、ピエゾアクチュエータまたはガルバノスキャナである。第二サーボドライバ３１と第二アクチュエータ３２とは通信可能に接続されており、その接続方式は、任意の有線接続方式または無線接続方式であり、第二サーボドライバ３１と第二アクチュエータ３２とは、例えば、専用ケーブルによって接続されていてもよい。第二サーボドライバ３１は、コントローラ１０からの指令値Ｓｃに従って第二アクチュエータ３２を駆動する。第二サーボドライバ３１は、コントローラ１０からの指令値Ｓｃを目標値に設定し、実測値をフィードバック値として、第二アクチュエータ３２に対しフィードバック制御を行う。すなわち、第二サーボドライバ３１は、実測値が目標値に近づくように第二アクチュエータ３２を駆動するための電流を調整する。なお、第二サーボドライバ３１は、サーボモータアンプと称されることもある。
【００４６】
なお、上述の通り、第二アクチュエータ３２は、第一アクチュエータ２２よりも高速な動作が可能であり、以下の説明においては、第二アクチュエータ３２を「高速アクチュエータ」と称し、第一アクチュエータ２２を「低速アクチュエータ」と称することがある。
【００４７】
コントローラ１０は、第一サーボ制御系２０および第二サーボ制御系３０を含む制御システム１の全体を制御し、例えば、プログラマブルコントローラ（ＰＬＣ、Programmable Logic Controller）である。コントローラ１０は、以下の（処理１）および（処理２）を実行することにより、第一サーボ制御系２０と第二サーボ制御系３０とを協調させて制御する。
【００４８】
（処理１）コントローラ１０は、第一サーボ制御系２０および第二サーボ制御系３０の各々について、目標軌道Ｔｔを用いて指令軌道を生成する。具体的には、コントローラ１０は、逆運動学演算および順運動学演算を用いて、目標軌道Ｔｔから「第一サーボ制御系２０についての指令軌道」と「第二サーボ制御系３０についての指令軌道」とを生成する。すなわち、コントローラ１０は、目標軌道Ｔｔに逆運動学演算を行なって第一サーボ制御系２０の軸ごとに生成した第一逆運動学軌道ＳＰ（ｉ）（不図示）から高周波成分を除去して、「第一サーボ制御系２０についての指令軌道」として補正後軌道ＳＰｆ（ｉ）（不図示）を生成する。具体的には、コントローラ１０は、第一逆運動学軌道ＳＰ（ｉ）に対してローパスフィルタ処理を行なって補正後軌道ＳＰｆ（ｉ）を生成する。なお、図２において図示していない第一逆運動学軌道ＳＰ（ｉ）および補正後軌道ＳＰｆ（ｉ）について、詳細は図１等を用いて後述する。
【００４９】
また、コントローラ１０は、「第一サーボ制御系２０についての指令軌道」に対する順運動学演算の演算結果と目標軌道Ｔｔとの誤差に逆運動学演算を行なって生成した第二逆運動学軌道ＩＫｔ（ｉ）（不図示）を、「第二サーボ制御系３０についての指令軌道」とする。なお、図２において図示していない第二逆運動学軌道ＩＫｔ（ｉ）について、第一逆運動学軌道ＳＰ（ｉ）および補正後軌道ＳＰｆ（ｉ）と同様に、詳細は図１等を用いて後述する。
【００５０】
（処理２）コントローラ１０は、第一サーボ制御系２０および第二サーボ制御系３０の各々についての指令軌道から、第一サーボ制御系２０および第二サーボ制御系３０の各々に出力する指令値（第一指令値Ｐｃ（ｉ）および第二指令値Ｓｃ（ｉ））を生成する。具体的には、コントローラ１０は、補正後軌道ＳＰｆ（ｉ）から第一指令値Ｐｃ（ｉ）を生成し、第二逆運動学軌道ＩＫｔ（ｉ）から第二指令値Ｓｃ（ｉ）を生成する。
【００５１】
ここで、コントローラ１０は、第一サーボ制御系２０の動特性モデルを用いて、第一サーボ制御系２０についてモデル予測制御（ＭＰＣ、Model Predictive Control）を行なう。具体的には、コントローラ１０は、補正後軌道ＳＰｆ（ｉ）から第一サーボ制御系２０に対する制御周期ごとに生成する第一指令値Ｐｃ（ｉ）を、第一サーボ制御系２０の動特性モデルを用いたＭＰＣによって補正する。そして、コントローラ１０は、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。
【００５２】
また、コントローラ１０は、第二指令値Ｓｃ（ｉ）を、第二サーボ制御系３０に対する制御周期ごとに、第二サーボ制御系３０の各々に出力する。
【００５３】
コントローラ１０の第二サーボ制御系３０に対する制御周期は、コントローラ１０の第一サーボ制御系２０に対する制御周期よりも短い（速い）。具体的には、コントローラ１０の第一サーボ制御系２０に対する制御周期、すなわち、コントローラ１０が第一サーボドライバ２１に出力する第一指令値Ｐｃ（ｉ）の更新周期は、例えば１ｍｓである。また、コントローラ１０の第二サーボ制御系３０に対する制御周期、すなわち、コントローラ１０が第二サーボドライバ３１に出力する第二指令値Ｓｃ（ｉ）の更新周期は、例えば１／１２ｍｓである。
【００５４】
例えば、コントローラ１０は、補正後軌道ＳＰｆ（ｉ）から１ｍｓごとに生成した第一指令値Ｐｃ（ｉ）を、第一サーボ制御系２０の動特性モデルを用いたＭＰＣによって補正し、補正後の第一指令値Ｐｃ（ｉ）を、第一サーボドライバ２１に出力する。また、例えば、コントローラ１０は、第二逆運動学軌道ＩＫｔ（ｉ）から１／１２ｍｓごとに生成した第二指令値Ｓｃ（ｉ）を第二サーボドライバ３１に出力する。ここで、前述の通り、第一サーボドライバ２１と第二サーボドライバ３１との制御周期は、例えば、共に１／１２ｍｓである。したがって、第一サーボドライバ２１は、コントローラ１０によって１ｍｓごとに更新される第一指令値Ｐｃ（ｉ）を用いて、１／１２ｍｓの制御周期で、第一アクチュエータ２２をフィードバック制御する。第二サーボドライバ３１は、コントローラ１０によって１／１２ｍｓごとに更新される第二指令値Ｓｃ（ｉ）を用いて、１／１２ｍｓの制御周期で、第二アクチュエータ３２をフィードバック制御する。
【００５５】
なお、上述の通り、コントローラ１０の第二サーボ制御系３０に対する制御周期は、コントローラ１０の第一サーボ制御系２０に対する制御周期よりも短い（速い）。そこで、以下の説明においては、第一サーボ制御系２０を「低速サーボ制御系（低速サーボシステム）」と称し、第二サーボ制御系３０を「高速サーボ制御系（高速サーボシステム）」と称することがある。
【００５６】
また、以下の説明においては、「逆運動学演算」は「インバースキネマティクス処理」と称することがあり、「順運動学演算」は「フォワードキネマティクス処理」と称することがある。さらに、第一逆運動学軌道ＳＰ、補正後軌道ＳＰｆ、および指令値Ｐｃの各々について、第一アクチュエータ２２の「軸」ごとの値である場合、第一逆運動学軌道ＳＰ（ｉ）、補正後軌道ＳＰｆ（ｉ）、および指令値Ｐｃ（ｉ）と記すことがある。第一アクチュエータ２２の軸数は「１〜ｎ」であり、つまり、指令軌道ＳＰ（ｉ）および指令値Ｐｃ（ｉ）について、「ｉ＝１〜ｎ」である。同様に、第二逆運動学軌道ＩＫｔおよび指令値Ｓｃの各々について、第二アクチュエータ３２の「軸」ごとの値である場合、第二逆運動学軌道ＩＫｔ（ｉ）および指令値Ｓｃ（ｉ）と記すことがある。第二アクチュエータ３２の軸数は「１〜ｍ」であり、つまり、第二逆運動学軌道ＩＫｔ（ｉ）および指令値Ｓｃ（ｉ）について、「ｉ＝１〜ｍ」である。第一逆運動学軌道ＳＰ（ｉ）、補正後軌道ＳＰｆ（ｉ）、指令値Ｐｃ（ｉ）、第二逆運動学軌道ＩＫｔ（ｉ）、および指令値Ｓｃ（ｉ）について、軸ごとの値であることを特に説明する必要がない場合、「（ｉ）」を略記することがある。
【００５７】
（制御装置の概要）
これまで図２を用いて概要を説明してきた制御システム１に含まれるコントローラ１０について、次に、その構成および処理の内容等を、図１等を用いて説明していく。図１を参照して詳細を説明する前に、コントローラ１０についての理解を容易にするため、その概要について以下のように整理しておく。
【００５８】
コントローラ１０（制御装置）は、第一サーボ制御系２０についての指令軌道として、第一逆運動学軌道ＳＰ（基準軌道）からローパスフィルタ処理により高周波成分を除去した補正後軌道ＳＰｆ（第一指令軌道）を生成し、第二サーボ制御系３０についての指令軌道として、前記高周波成分に対応する軌道を含む第二逆運動学軌道ＩＫｔ（第二指令軌道）を生成する制御装置であって、第一サーボ制御系２０の動特性モデルを用いて、補正後軌道ＳＰｆに対応する第一サーボ制御系２０の応答を予測する第一応答予測部１７２（予測部）と、第一応答予測部１７２によって予測された第一サーボ制御系２０の応答を用いて、（１）補正後軌道ＳＰｆから生成する第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する第一ＭＰＣ位置指令部１７１（生成部）と、を備えている。
【００５９】
前記の構成によれば、コントローラ１０は、前記ローパスフィルタ処理後の値である補正後軌道ＳＰｆに対応する、第一サーボ制御系２０の応答を、第一サーボ制御系２０の動特性モデルを用いて予測する。そして、コントローラ１０は、予測した第一サーボ制御系２０の応答を用いて、（１）第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する。具体的には、コントローラ１０は、予測した第一サーボ制御系２０の応答を用いて第一指令値Ｐｃの補正を実行し、言い換えれば、予測した第一サーボ制御系２０の応答を用いたＭＰＣにより第一指令値Ｐｃを生成する。
【００６０】
ここで、従来のコントローラを用いた場合、第一サーボ制御系２０がローパスフィルタ処理後の軌道（つまり、補正後軌道ＳＰｆ）に十分に追従できないことがあり、その場合、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能が低下することになる。
【００６１】
これに対して、コントローラ１０は、補正後軌道ＳＰｆに対応する第一サーボ制御系２０の応答を予測し、予測した第一サーボ制御系２０の応答を用いて、第一指令値Ｐｃの補正を実行する。具体的には、コントローラ１０は、予測した第一サーボ制御系２０の応答を用いて、第一指令値Ｐｃの補正（生成）を実行する。
【００６２】
例えば、コントローラ１０は、予測した第一サーボ制御系２０の応答を用いて補正した第一指令値Ｐｃを第一サーボ制御系２０に出力することにより、第一サーボ制御系２０の補正後軌道ＳＰｆへの追従性能を向上させる。
【００６３】
したがって、コントローラ１０は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。例えば、コントローラ１０は、予測した第一サーボ制御系２０の応答を用いて補正した第一指令値Ｐｃを第一サーボ制御系２０に出力することで、第一サーボ制御系２０の追従性能を向上させることができる。したがって、コントローラ１０は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。
【００６４】
コントローラ１０において、第一応答予測部１７２は、第一サーボ制御系２０の動特性モデルを用いて、第一指令値Ｐｃに対する第一サーボ制御系２０の出力である制御量を予測し、第一ＭＰＣ位置指令部１７１は、第一応答予測部１７２によって予測された制御量と、第一サーボ制御系２０からフィードバック情報として取得する第一サーボ制御系２０の制御量の実測値と、を用いたモデル予測制御によって、第一指令値Ｐｃを補正する。
【００６５】
前記の構成によれば、コントローラ１０は、第一サーボ制御系２０の動特性モデルを用いて予測した第一サーボ制御系２０の制御量と、第一サーボ制御系２０の制御量の実測値と、を用いた前記モデル予測制御によって、第一指令値Ｐｃを補正する。
【００６６】
したがって、コントローラ１０は、前記モデル予測制御を用いて補正した第一指令値Ｐｃを第一サーボ制御系２０に出力することで、第一サーボ制御系２０の、前記ローパスフィルタ処理後の補正後軌道ＳＰｆへの追従性能を向上させることができる。つまり、コントローラ１０は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。
【００６７】
コントローラ１０は、第一サーボ制御系２０の動特性モデル（第一サーボドライバ２１および第一アクチュエータ２２の動特性モデル）を使用して、第一アクチュエータ２２（第一サーボ制御系２０）の応答を予測する。そして、コントローラ１０は、補正後軌道ＳＰｆ（ｉ）に対する応答遅れ分を計算し、計算した応答遅れ分を、第一サーボ制御系２０において補償する。具体的には、コントローラ１０は、第一サーボ制御系２０の動特性モデルを用いたモデル予測制御による位置補正制御によって、第一サーボ制御系２０について発生する応答遅れを、第一サーボ制御系２０において補償する。コントローラ１０は、第一サーボ制御系２０について発生する応答遅れの補償を、第一サーボ制御系２０において完結することができる。コントローラ１０は、モデル予測制御による位置補正制御によって第一サーボ制御系２０の追従性能を向上させることにより、トータル（第一サーボ制御系２０および第二サーボ制御系３０の全体）の追従性能を向上させることができる。
【００６８】
（制御装置の詳細）
図１は、本発明の実施形態１に係るコントローラ１０等の要部構成を示すブロック図である。図１に示すように、コントローラ１０は、機能ブロックとして、目標軌道取得部１１０、第一逆運動学演算部１２０、ローパスフィルタ部１３０、順運動学演算部１４０、第二逆運動学演算部１５０、ＭＰＣ指令部１７０、および、位置指令部１７３を備えている。
【００６９】
なお、記載の簡潔性を担保するため、本実施の形態に直接関係のない構成は、説明およびブロック図から省略している。ただし、実施の実情に則して、コントローラ１０は、当該省略された構成を備えてもよい。図１に例示した各機能ブロックは、例えば、ＣＰＵ（central processing unit）などが、ＲＯＭ（read only memory）、ＮＶＲＡＭ（non-Volatile random access memory）等で実現された記憶装置（不図示の記憶部）に記憶されているプログラムを不図示のＲＡＭ（random access memory）等に読み出して実行することで実現できる。以下、コントローラ１０における各機能ブロックについて説明する。
【００７０】
（記憶部以外の機能ブロックの詳細）
目標軌道取得部１１０は、外部（例えばユーザ）から目標軌道データ（目標軌道Ｔｔ）を受け付け、受け付けた目標軌道Ｔｔを、第一逆運動学演算部１２０および第二逆運動学演算部１５０に出力する。
【００７１】
第一逆運動学演算部１２０は、目標軌道取得部１１０から取得した目標軌道Ｔｔに逆運動学演算を行なって、第一サーボ制御系２０の軸ごとの第一逆運動学軌道ＳＰ（ｉ）を生成する。第一逆運動学演算部１２０は、生成した第一逆運動学軌道ＳＰ（ｉ）をローパスフィルタ部１３０に出力する。
【００７２】
ローパスフィルタ部１３０は、第一逆運動学演算部１２０から取得した第一逆運動学軌道ＳＰ（ｉ）から高周波成分を除去して、第一サーボ制御系２０の軸ごとの補正後軌道ＳＰｆ（ｉ）を生成する。具体的には、ローパスフィルタ部１３０は、第一逆運動学軌道ＳＰ（ｉ）にローパスフィルタ処理を行なって補正後軌道ＳＰｆ（ｉ）を生成する。ローパスフィルタ部１３０が用いるローパスフィルタのフィルタ特性は、例えば、カットオフ周波数１０Ｈｚの４次バターワース（Butterworth）型である。
【００７３】
ローパスフィルタ部１３０は、生成した補正後軌道ＳＰｆ（ｉ）を、「第一サーボ制御系２０についての指令軌道」として、ＭＰＣ指令部１７０（特に、第一ＭＰＣ位置指令部１７１）に通知する。ローパスフィルタ部１３０は、生成した補正後軌道ＳＰｆ（ｉ）を、不図示の記憶部に格納してもよい。また、ローパスフィルタ部１３０は、生成した補正後軌道ＳＰｆ（ｉ）を、順運動学演算部１４０に出力する。
【００７４】
順運動学演算部１４０は、ローパスフィルタ部１３０から取得する「ｉ＝１〜ｎ」である補正後軌道ＳＰｆ（ｉ）の全てに対する順運動学演算から、順運動学軌道ＦＫｔ（中間軌道）を生成する。順運動学演算部１４０は、生成した順運動学軌道ＦＫｔを第二逆運動学演算部１５０に出力する。
【００７５】
第二逆運動学演算部１５０は、「第二サーボ制御系３０についての指令軌道」として、ローパスフィルタ部１３０により第一逆運動学軌道ＳＰ（ｉ）から除去された高周波成分に対応する軌道を含む第二逆運動学軌道ＩＫｔ（第二指令軌道）を生成する。
【００７６】
具体的には、第二逆運動学演算部１５０は、「補正後軌道ＳＰｆと、第二逆運動学軌道ＩＫｔとの合成軌道が、目標軌道Ｔｔに一致する」ようにして、第一逆運動学軌道ＳＰと補正後軌道ＳＰｆとの誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成する。第二逆運動学演算部１５０は、「第二サーボ制御系３０についての指令軌道」として、ローパスフィルタ部１３０により第一逆運動学軌道ＳＰ（ｉ）から除去された高周波成分に対応する軌道を含む第二逆運動学軌道ＩＫｔ（第二指令軌道）を生成する。例えば、第二逆運動学演算部１５０は、「順運動学演算部１４０から取得する順運動学軌道ＦＫｔと、目標軌道Ｔｔと、の誤差」に逆運動学演算を行なって、第二サーボ制御系３０の軸ごとの指令軌道である第二逆運動学軌道ＩＫｔ（ｉ）を生成する。
【００７７】
第二サーボ制御系３０の指令軌道である第二逆運動学軌道ＩＫｔ（第二指令軌道）は、ローパスフィルタ部１３０により第一逆運動学軌道ＳＰ（ｉ）から除去された高周波成分を含んでいる。また、第二逆運動学軌道ＩＫｔ（第二指令軌道）は、「第一サーボ制御系２０の指令軌道（補正後軌道ＳＰｆ）と、第二サーボ制御系３０の指令軌道（第二逆運動学軌道ＩＫｔ）との合成軌道が、目標軌道Ｔｔに一致する」との条件を満たしている。すなわち、第二逆運動学演算部１５０は、「補正後軌道ＳＰｆと、第二逆運動学軌道ＩＫｔとの合成軌道が、目標軌道Ｔｔに一致する」ようにして、第一逆運動学軌道ＳＰと補正後軌道ＳＰｆとの誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成すればよい。
【００７８】
第二逆運動学演算部１５０は、生成した第二逆運動学軌道ＩＫｔ（ｉ）を、位置指令部１７３に通知する。第二逆運動学演算部１５０は、生成した第二逆運動学軌道ＩＫｔ（ｉ）を、「第二サーボ制御系３０についての指令軌道」として、不図示の記憶部に格納してもよい。
【００７９】
ＭＰＣ指令部１７０は、第一サーボ制御系２０に第一指令値Ｐｃ（ｉ）（特に、補正後の第一指令値Ｐｃ（ｉ））を出力する第一ＭＰＣ位置指令部１７１を含んでいる。
【００８０】
第一ＭＰＣ位置指令部１７１は、第一応答予測部１７２を含み、第一応答予測部１７２には、予め作成された第一サーボ制御系２０の動特性モデルが設定されている。第一応答予測部１７２は、第一サーボ制御系２０の動特性モデルを予め作成しておき、作成した第一サーボ制御系２０の動特性モデルを自身に設定しておいてもよい。
【００８１】
第一ＭＰＣ位置指令部１７１は、以下の２つの処理を実行する。第一に、第一ＭＰＣ位置指令部１７１は、第一サーボ制御系２０に対する制御周期ごとに、「第一サーボ制御系２０についての指令軌道」から第一サーボ制御系２０の軸ごとの第一指令値Ｐｃ（ｉ）を生成する。例えば、第一ＭＰＣ位置指令部１７１は、「第一サーボ制御系２０についての指令軌道」として、ローパスフィルタ部１３０から補正後軌道ＳＰｆ（ｉ）を取得する。そして、第一ＭＰＣ位置指令部１７１は、例えば１ｍｓごとに、補正後軌道ＳＰｆ（ｉ）から第一サーボ制御系２０の軸ごとの第一指令値Ｐｃ（ｉ）を生成する。
【００８２】
第二に、第一ＭＰＣ位置指令部１７１は、補正後軌道ＳＰｆ（ｉ）から第一サーボ制御系２０に対する制御周期ごとに生成する第一指令値Ｐｃ（ｉ）を、モデル予測制御によって補正し、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。
【００８３】
具体的には、第一応答予測部１７２が、設定されている第一サーボ制御系２０の動特性モデルを用いて、第一指令値Ｐｃ（ｉ）に対する第一サーボ制御系２０の出力である制御量を予測する。そして、第一ＭＰＣ位置指令部１７１は、第一応答予測部１７２の予測した制御量と、第一サーボ制御系２０からフィードバック情報として取得する第一サーボ制御系２０の制御量の実測値と、を用いたモデル予測制御を実行する。すなわち、第一ＭＰＣ位置指令部１７１は、第一応答予測部１７２が第一サーボ制御系２０の動特性モデルを用いて予測した「第一サーボ制御系２０の出力である制御量」と、第一サーボ制御系２０の制御量の実測値と、を用いて第一指令値Ｐｃ（ｉ）を補正する。そして、第一ＭＰＣ位置指令部１７１は、モデル予測制御を用いて補正した第一指令値Ｐｃ（ｉ）を、第一サーボ制御系２０に対する制御周期ごとに、第一サーボ制御系２０に出力する。第一ＭＰＣ位置指令部１７１は、例えば１ｍｓごとに、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。
【００８４】
なお、モデル予測制御（ＭＰＣ）による位置補正制御を適用しない場合にも、第一指令値Ｐｃ（ｉ）は、補正後軌道ＳＰｆ（ｉ）から第一サーボ制御系２０に対する制御周期ごとに生成され、つまり、第一指令値Ｐｃ（ｉ）と補正後軌道ＳＰｆ（ｉ）とは異なる。第一ＭＰＣ位置指令部１７１は、第一応答予測部１７２が予測した「第一サーボ制御系２０の出力である制御量」と、第一サーボ制御系２０の制御量の実測値と、を用いたモデル予測制御によって、第一指令値Ｐｃ（ｉ）を生成する。言い換えれば、第一ＭＰＣ位置指令部１７１は、「ＭＰＣによる位置補正制御を適用しなかった場合に補正後軌道ＳＰｆ（ｉ）から生成されるであろう第一指令値Ｐｃ（ｉ）」を、ＭＰＣによる位置補正制御を適用することによって、補正する。本実施の形態において、第一ＭＰＣ位置指令部１７１が「第一指令値Ｐｃ（ｉ）を補正する」とは、以下の事態を指している。すなわち、「ＭＰＣによる位置補正制御を適用しなかった場合に補正後軌道ＳＰｆ（ｉ）から生成されるであろう第一指令値Ｐｃ（ｉ）」を、第一ＭＰＣ位置指令部１７１が、ＭＰＣによる位置補正制御を適用することによって、補正することを指している。以下では、第一応答予測部１７２の予測した「第一サーボ制御系２０の出力である制御量」と、第一サーボ制御系２０の制御量の実測値と、を用いたＭＰＣにより第一指令値Ｐｃ（ｉ）を生成することを、「第一指令値Ｐｃ（ｉ）を補正する」と表現することがある。
【００８５】
位置指令部１７３は、第二サーボ制御系３０に対する制御周期ごとに、「第二サーボ制御系３０についての指令軌道」から、第二サーボ制御系３０の軸ごとの第二指令値Ｓｃ（ｉ）を生成し、生成した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。具体的には、位置指令部１７３は、「第二サーボ制御系３０についての指令軌道」として、第二逆運動学演算部１５０から第二逆運動学軌道ＩＫｔ（ｉ）を取得する。そして、位置指令部１７３は、例えば１／１２ｍｓごとに、第二逆運動学軌道ＩＫｔ（ｉ）から第二サーボ制御系３０の軸ごとの第二指令値Ｓｃ（ｉ）を生成し、生成した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。
【００８６】
（記憶部の詳細）
コントローラ１０は、不図示の記憶部を備えている。記憶部は、コントローラ１０が使用する各種データを格納する記憶装置である。なお、記憶部は、コントローラ１０が実行する（１）制御プログラム、（２）ＯＳプログラム、（３）コントローラ１０が有する各種機能を実行するためのアプリケーションプログラム、および、（４）該アプリケーションプログラムを実行するときに読み出す各種データを非一時的に記憶してもよい。上記の（１）〜（４）のデータは、例えば、ＲＯＭ（read only memory）、フラッシュメモリ、ＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（登録商標）（Electrically EPROM）、ＨＤＤ（Hard Disc Drive）等の不揮発性記憶装置に記憶される。コントローラ１０は、図示しない一時記憶部を備えていてもよい。一時記憶部は、コントローラ１０が実行する各種処理の過程で、演算に使用するデータおよび演算結果等を一時的に記憶するいわゆるワーキングメモリであり、ＲＡＭ（Random Access Memory）などの揮発性記憶装置で構成される。どのデータをどの記憶装置に記憶するのかについては、コントローラ１０の使用目的、利便性、コスト、または、物理的な制約などから適宜決定される。
【００８７】
（動特性モデルについて）
第一サーボ制御系２０の動特性モデルは、例えば、次の（式１）に示す離散時間伝達関数のように表される。（式１）において、ｕは入力を表し、ｙは出力（制御量の予測、つまり、制御量についての予測値）を表し、ｄ、ａ１〜ａｎおよびｂ１〜ｂｍは特性パラメータを表し、ｚ−１は遅延演算子を表している。
【００８８】
【数１】
2019021087.tif 000003
【００８９】
コントローラ１０において、（式１）に例示するような第一サーボ制御系２０の動特性モデルが予め作成され、作成された動特性モデルは第一応答予測部１７２に設定される。
【００９０】
（コントローラが実行する処理について）
図３は、コントローラ１０が実行する処理の概要を示すフロー図である。コントローラ１０は、第一サーボ制御系２０の動特性モデルを予め作成しておき、作成しておいた第一サーボ制御系２０の動特性モデルを用いて、低速アクチュエータ（第一アクチュエータ２２）側のＭＰＣ位置補正制御を実行する。具体的には、コントローラ１０は、第一サーボ制御系２０の動特性モデルを用いたＭＰＣによって第一指令値Ｐｃ（ｉ）を補正し、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。以下、コントローラ１０が実行する処理の詳細について、図３を用いて説明していく。
【００９１】
コントローラ１０は、低速サーボシステム（第一サーボ制御系２０）について、動特性モデルを予め作成しておき、第一応答予測部１７２に設定しておく（Ｓ１１０）。第一逆運動学演算部１２０は、目標軌道Ｔｔから第一アクチュエータ２２の軸毎の指令値を生成し、つまり、目標軌道Ｔｔに逆運動学演算を行なって第一逆運動学軌道ＳＰ（ｉ）を生成する（Ｓ１２０）。ローパスフィルタ部１３０は、軸毎の軌道（つまり、第一逆運動学軌道ＳＰ（ｉ））に対して、ローパスフィルタリングを実行し（Ｓ１３０）、補正後軌道ＳＰｆ（ｉ）を生成する。ローパスフィルタ部１３０は、生成した補正後軌道ＳＰｆ（ｉ）を、ＭＰＣ指令部１７０（特に、第一ＭＰＣ位置指令部１７１）に通知する。
【００９２】
コントローラ１０は、「ローパスフィルタリング後の指令軌道から生成される指令値と、目標軌道の指令値と、の差分」を計算し、計算した差分から高速アクチュエータ（第二アクチュエータ３２）の軸毎の指令値を生成する。
【００９３】
例えば、順運動学演算部１４０は、順運動学演算により、ローパスフィルタリング後の軌道（つまり、補正後軌道ＳＰｆ（ｉ））から中間軌道（つまり、順運動学軌道ＦＫｔ）を生成する（Ｓ１４０）。そして、第二逆運動学演算部１５０は、中間軌道と目標軌道Ｔｔとの差分（誤差）を計算する（Ｓ１５０）。そして、第二逆運動学演算部１５０は、Ｓ１５０で計算した誤差（差分）を用いて、第二アクチュエータ３２の軸毎の軌道を生成する（Ｓ１６０）。具体的には、第二逆運動学演算部１５０は、「中間軌道（つまり、順運動学軌道ＦＫｔ）と、目標軌道Ｔｔと、の誤差」に逆運動学演算を行なって、第二サーボ制御系３０の軸ごとの指令軌道である第二逆運動学軌道ＩＫｔ（ｉ）を生成する。第二逆運動学演算部１５０は、生成した第二逆運動学軌道ＩＫｔ（ｉ）を、位置指令部１７３に通知する。
【００９４】
なお、前述の通り、第二逆運動学演算部１５０は、第一逆運動学軌道ＳＰと補正後軌道ＳＰｆとの誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成する。具体的には、第二逆運動学演算部１５０は、「補正後軌道ＳＰｆと、第二逆運動学軌道ＩＫｔとの合成軌道が、目標軌道Ｔｔに一致する」ようにして、第一逆運動学軌道ＳＰと補正後軌道ＳＰｆとの誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成すればよい。第二逆運動学演算部１５０は、「第二サーボ制御系３０についての指令軌道」として、ローパスフィルタ部１３０により第一逆運動学軌道ＳＰ（ｉ）から除去された高周波成分に対応する軌道を含む第二逆運動学軌道ＩＫｔ（第二指令軌道）を生成する。
【００９５】
コントローラ１０は、第一サーボ制御系２０の動特性モデルを用いたＭＰＣ位置補正制御により、低速サーボシステム（第一サーボ制御系２０）への補正後指令値を計算し、計算した補正後指令値を低速サーボシステムに出力する。また、コントローラ１０は、高速サーボシステム（第二サーボ制御系３０）への指令値を計算し、計算した指令値を高速サーボシステムに出力する（Ｓ１７０）。
【００９６】
具体的には、第一ＭＰＣ位置指令部１７１は、補正後軌道ＳＰｆ（ｉ）から第一サーボ制御系２０に対する制御周期ごとに生成される第一指令値Ｐｃ（ｉ）を、第一サーボ制御系２０の動特性モデルを用いたＭＰＣにより補正する。すなわち、第一ＭＰＣ位置指令部１７１は、第一応答予測部１７２が第一サーボ制御系２０の動特性モデルを用いて予測した「第一サーボ制御系２０の出力である制御量」と、第一サーボ制御系２０の制御量の実測値と、を用いて、第一指令値Ｐｃ（ｉ）を補正する。そして、第一ＭＰＣ位置指令部１７１は、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。
【００９７】
位置指令部１７３は、第二サーボ制御系３０に対する制御周期ごとに、「第二サーボ制御系３０についての指令軌道」である第二逆運動学軌道ＩＫｔ（ｉ）から第二指令値Ｓｃ（ｉ）を生成し、生成した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。
【００９８】
そして、コントローラ１０は、軌道終点に到達したかを判定しながら（Ｓ１８０）、制御周期ごとに、Ｓ１２０〜Ｓ１７０の処理を繰り返す。具体的には、コントローラ１０は、Ｓ１２０〜Ｓ１７０の処理のうち、「第一サーボ制御系２０のみに係る処理」を、軌道終点に到達したかを判定しながら（Ｓ１８０）、第一サーボ制御系２０に対する制御周期で繰り返し実行する。また、コントローラ１０は、Ｓ１２０〜Ｓ１７０の処理のうち、「第一サーボ制御系２０のみに係る処理」以外の処理（例えば、第二サーボ制御系３０に係る処理）を、軌道終点に到達したかを判定しながら（Ｓ１８０）、第二サーボ制御系３０に対する制御周期で繰り返し実行する。
【００９９】
これまで図３を用いて説明してきた、コントローラ１０の実行する制御方法は、以下のように整理することができる。すなわち、コントローラ１０の実行する制御方法は、第一サーボ制御系２０についての指令軌道として、第一逆運動学軌道ＳＰ（基準軌道）からローパスフィルタ処理により高周波成分を除去した補正後軌道ＳＰｆ（第一指令軌道）を生成し、第二サーボ制御系３０についての指令軌道として、前記高周波成分に対応する軌道を含む第二逆運動学軌道ＩＫｔ（第二指令軌道）を生成する制御装置の制御方法であって、第一サーボ制御系２０の動特性モデルを用いて、補正後軌道ＳＰｆに対応する第一サーボ制御系２０の応答を予測する予測ステップ（Ｓ１７０における、第一サーボ制御系２０の動特性モデルを用いた、第一応答予測部１７２による「第一サーボ制御系２０の出力である制御量」の予測）と、前記予測ステップにて予測した第一サーボ制御系２０の応答を用いて、（１）補正後軌道ＳＰｆから生成する第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する生成ステップ（Ｓ１７０における、第一ＭＰＣ位置指令部１７１によるＭＰＣを用いた第一指令値Ｐｃ（ｉ）の補正）と、を含んでいる。
【０１００】
前記の方法によれば、前記制御方法は、前記ローパスフィルタ処理後の値である補正後軌道ＳＰｆに対応する、第一サーボ制御系２０の応答を、第一サーボ制御系２０の動特性モデルを用いて予測する。そして、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて、（１）第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する。
【０１０１】
ここで、第一サーボ制御系２０がローパスフィルタ処理後の軌道に十分に追従できない場合、結果として、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能が低下することになる。
【０１０２】
これに対して、前記制御方法は、補正後軌道ＳＰｆに対応する第一サーボ制御系２０の応答を予測し、予測した第一サーボ制御系２０の応答を用いて、（１）第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する。
【０１０３】
例えば、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて補正した第一指令値Ｐｃを第一サーボ制御系２０に出力することにより、第一サーボ制御系２０の補正後軌道ＳＰｆへの追従性能を向上させる。
【０１０４】
また例えば、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて生成した第二逆運動学軌道ＩＫｔから生成する第二指令値Ｓｃを第二サーボ制御系３０に出力することにより、第一サーボ制御系２０の追従遅れを第二サーボ制御系３０に補償させる。
【０１０５】
したがって、前記制御方法は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。例えば、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて補正した第一指令値Ｐｃを第一サーボ制御系２０に出力することで、第一サーボ制御系２０の追従性能を向上させることができる。また例えば、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて生成した第二逆運動学軌道ＩＫｔから生成する第二指令値Ｓｃを第二サーボ制御系３０に出力することで、第一サーボ制御系２０が補正後軌道ＳＰｆに追従できない場合にも、第一サーボ制御系２０が追従できない分を第二サーボ制御系３０に補償させることができる。したがって、前記制御方法は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。
【０１０６】
（コントローラが奏する効果について）
コントローラ１０が、第一サーボドライバ２１および第二サーボドライバ３１を介して、第一アクチュエータ２２および第二アクチュエータ３２を実際にどのように制御するかを、図４等を用いて説明していく。
【０１０７】
図４は、制御システム１においてコントローラ１０を用いて実施する制御テスト（制御シミュレーション）の内容を示す図である。コントローラ１０と従来までのコントローラとについて、複雑な２次元軌跡のＸ軸成分について、制御性能（位置偏差）を比較する。
【０１０８】
なお、「従来までのコントローラ」とは、サーボ制御系の動特性モデルを用いたＭＰＣを行なわない協調制御コントローラである。すなわち、コントローラ１０は、補正後軌道ＳＰｆ（ｉ）から生成する第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０の動特性モデルを用いたＭＰＣによって補正し、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。これに対し、「従来までのコントローラ」は、補正後軌道ＳＰｆ（ｉ）から第一サーボ制御系２０に対する制御周期ごとに生成する第一指令値Ｐｃ（ｉ）を、ＭＰＣによって補正せずにそのまま第一サーボ制御系２０に出力する。その他の点については、コントローラ１０と従来までのコントローラとに違いはないものとする。
【０１０９】
制御テストに用いた２次元軌跡は以下の２つの曲線１および曲線２を合成したものであり、すなわち、「曲線１：円、１秒で１周、半径１０ｍｍ」であり、「曲線２：正葉線、０．１秒で１周、葉数９、葉の長さ２ｍｍ」とする。図４の（Ａ）には、曲線１＋曲線２のＸＹ軌跡が示されている。図４の（Ａ）において、縦軸はＹ軸位置、横軸はＸ軸位置である。図４の（Ｂ）には、図４の（Ａ）のＸＹ軌跡のＸ軸指令値が示されており、図４の（Ｂ）において、縦軸はＸ軸指令値（位置）、横軸は時間（ｔ）である。なお、開始直後の０．０２ｓ間は一定加速度で滑らかに加速するものとする。
【０１１０】
第一アクチュエータ２２および第二アクチュエータ３２は共にＸＹ２軸の構成とする。第一サーボドライバ２１および第二サーボドライバ３１の各々の制御周期は共に１／１２ｍｓとする。つまり、第一サーボドライバ２１の第一アクチュエータ２２に対する制御周期は１／１２ｍｓであり、第二サーボドライバ３１の第二アクチュエータ３２に対する制御周期は１／１２ｍｓである。また、コントローラ１０の制御周期、つまり、コントローラ１０の第一サーボドライバ２１（低速サーボ制御系）および第二サーボドライバ３１（高速サーボ制御系）の各々に対する指令値の更新周期は、低速側：１ｍｓ、高速側：１／１２ｍｓとする。
【０１１１】
（従来のコントローラによる位置等の制御）
図２３は、図４に示す制御テストについて、従来の協調制御コントローラによって制御された第一アクチュエータ２２および第二アクチュエータ３２の各々の位置、位置偏差、およびトルクの変化を示す図である。図２３の（Ａ）には、上から順に、従来のコントローラによって制御された第一アクチュエータ２２の位置、位置偏差、およびトルクの変化が示されている。図２３の（Ｂ）には、上から順に、従来のコントローラによって制御された第二アクチュエータ３２の位置、位置偏差、およびトルクの変化が示されている。図２３に示す各図において、横軸はいずれも時間（ｔ）である。
【０１１２】
図２４は、図４に示す制御テストについて、従来の協調制御コントローラによって制御された第一アクチュエータ２２および第二アクチュエータ３２の合計の位置（図２４の（Ａ））および位置偏差（図２４の（Ｂ））の変化を示す図である。図２４に示す各図において、横軸はいずれも時間（ｔ）である。なお、図２４の（Ａ）において、指令値と低速高速合成制御量（第一アクチュエータ２２の制御量の実測値と第二アクチュエータ３２の制御量の実測値とを合計（合成）した値）とは、ほぼ重なっている。
【０１１３】
図２３および図２４に制御テスト（制御シミュレーション）の結果を示した「従来の協調制御コントローラ」について、ローパスフィルタ特性は、カットオフ周波数１０Ｈｚの４次バターワース型である。前述の通り、「従来までの協調制御コントローラ」は、「補正後軌道ＳＰｆ（ｉ）から生成する第一指令値Ｐｃ（ｉ）を、ＭＰＣによって補正せずにそのまま第一サーボ制御系２０に出力する」点以外は、コントローラ１０と同様である。図２４の（Ｂ）に示されているように、「従来までのコントローラ」を用いた場合、ピーク偏差（第一アクチュエータ２２および第二アクチュエータ３２の合計（総合）の追従誤差のピーク）が約プラスマイナス０．５ｍｍである。
【０１１４】
（コントローラ１０による位置等の制御）
図５は、図４に示す制御テストについて、コントローラ１０によって制御された第一アクチュエータ２２および第二アクチュエータ３２の各々の位置、位置偏差、およびトルクの変化を示す図である。図５の（Ａ）には、上から順に、コントローラ１０によって制御された第一アクチュエータ２２の位置、位置偏差、モデル予測誤差、およびトルクの変化が示されている。図５の（Ｂ）には、上から順に、コントローラ１０によって制御された第二アクチュエータ３２の位置、位置偏差、モデル予測誤差、およびトルクの変化が示されている。図５に示す各図において、横軸はいずれも時間（ｔ）である。
【０１１５】
図６は、図４に示す制御テストについて、コントローラ１０によって制御された第一アクチュエータ２２および第二アクチュエータ３２の合計の位置（図６の（Ａ））および位置偏差（図６の（Ｂ））の変化を示す図である。図６に示す各図において、横軸はいずれも時間（ｔ）である。なお、図６の（Ａ）において、指令値と低速高速合成制御量（第一アクチュエータ２２の制御量の実測値と第二アクチュエータ３２の制御量の実測値とを合計（合成）した値）とは、ほぼ重なっている。
【０１１６】
前述の通り、コントローラ１０は、第一逆運動学軌道ＳＰ（ｉ）に対してローパスフィルタ処理を行なって補正後軌道ＳＰｆ（ｉ）を生成する。コントローラ１０の用いるローパスフィルタのフィルタ特性は、例えば、カットオフ周波数１０Ｈｚの４次バターワース型である。そして、コントローラ１０は、補正後軌道ＳＰｆ（ｉ）から生成する第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０の動特性モデルを用いたＭＰＣによって補正し、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。コントローラ１０は、第一サーボ制御系２０の動特性モデルを用いたＭＰＣを第一サーボ制御系２０の制御に適用することにより、第一サーボ制御系２０の追従性能を向上させている。
【０１１７】
したがって、図６の（Ｂ）に示すピーク偏差（第一アクチュエータ２２および第二アクチュエータ３２の合計（総合）の追従誤差のピーク）は、図２４の（Ｂ）に示すピーク偏差の１／２程度に低減している。具体的には、図２４の（Ｂ）においてピーク偏差は約プラスマイナス０．５ｍｍであるのに対し、図６の（Ｂ）においてピーク偏差は約プラスマイナス０．２５ｍｍである。また、図５の（Ａ）の２段目に示す低速側のピーク偏差（第一アクチュエータ２２の位置偏差のピーク）は、図２３の（Ａ）の２段目に示すピーク偏差の１／１００以下に低減している。
【０１１８】
〔実施形態２〕
本発明の実施形態２について、図７から図１１に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。本実施形態における制御システム２が、上述の実施形態１における制御システム１と異なるのは、本実施形態に係る制御装置であるコントローラ１１が、コントローラ１０の位置指令部１７３に代えて、第二ＭＰＣ位置指令部１７５を備えている点である。「位置指令部１７３に代えて第二ＭＰＣ位置指令部１７５を備える」点以外の点においては、コントローラ１１の構成は、コントローラ１０の構成と同様である。
【０１１９】
（制御システムの概要）
図８は、コントローラ１１を含む制御システム２の全体概要を示す図である。制御システム２のコントローラ１１は、低速アクチュエータ（第一サーボ制御系２０）側にＭＰＣ位置補正制御を適用するだけでなく、高速アクチュエータ（第二アクチュエータ３２）側にもＭＰＣ位置補正制御を適用する。コントローラ１１は、高速アクチュエータ側にＭＰＣ位置補正制御を適用することにより、高速アクチュエータの応答遅れに起因する追従誤差を低減する。
【０１２０】
具体的には、コントローラ１１には、予め作成されていた低速サーボシステム（第一サーボ制御系２０）の動特性モデルが設定される。コントローラ１１は、第一サーボ制御系２０の動特性モデルを用いて、第一サーボ制御系２０についてＭＰＣを行なう。
【０１２１】
また、コントローラ１１には、予め作成されていた高速サーボシステム（第二サーボ制御系３０）の動特性モデルが設定される。コントローラ１１は、第二サーボ制御系３０の動特性モデルを用いて、第二サーボ制御系３０についてＭＰＣを行なう。すなわち、コントローラ１１は、第二逆運動学軌道ＩＫｔ（ｉ）から第二サーボ制御系３０に対する制御周期ごとに生成する第二指令値Ｓｃ（ｉ）を、第二サーボ制御系３０の動特性モデルを用いたＭＰＣによって補正する。そして、コントローラ１１は、補正した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。
【０１２２】
コントローラ１１は、第一サーボ制御系２０の動特性モデルを用いて第一サーボ制御系２０の応答遅れを予測し、予測した応答遅れを第一サーボ制御系２０において取り戻す。すなわち、コントローラ１１は、第一サーボ制御系２０の動特性モデルを用いたＭＰＣによる位置補正制御によって、低速アクチュエータ（第一アクチュエータ２２）の軌道追従性を向上させる。
【０１２３】
また、コントローラ１１は、第二サーボ制御系３０の動特性モデルを用いて第二サーボ制御系３０の応答遅れを予測し、予測した応答遅れを第二サーボ制御系３０において取り戻す。すなわち、コントローラ１１は、第二サーボ制御系３０の動特性モデルを用いたＭＰＣによる位置補正制御によって、高速アクチュエータ（第二アクチュエータ３２）の軌道追従性を向上させる。
【０１２４】
（制御装置の詳細）
図７は、本発明の実施形態２に係るコントローラ１１等の要部構成等を示すブロック図である。上述の通り、「位置指令部１７３に代えて第二ＭＰＣ位置指令部１７５を備える」点以外は、コントローラ１１の構成は、コントローラ１０の構成と同様であるため、第二ＭＰＣ位置指令部１７５についてのみ、説明する。
【０１２５】
第二ＭＰＣ位置指令部１７５は第二応答予測部１７６を含み、第二応答予測部１７６には、予め作成された第二サーボ制御系３０の動特性モデルが設定されている。第二応答予測部１７６は、第二サーボ制御系３０の動特性モデルを予め作成しておき、作成した第二サーボ制御系３０の動特性モデルを自身に設定しておいてもよい。
【０１２６】
第二ＭＰＣ位置指令部１７５は、以下の２つの処理を実行する。第一に、第二ＭＰＣ位置指令部１７５は、第二サーボ制御系３０に対する制御周期ごとに、「第二サーボ制御系３０についての指令軌道」から第二サーボ制御系３０の軸ごとの第二指令値Ｓｃ（ｉ）を生成する。例えば、第二ＭＰＣ位置指令部１７５は、「第二サーボ制御系３０についての指令軌道」として、第二逆運動学演算部１５０から第二逆運動学軌道ＩＫｔ（ｉ）を取得する。そして、第二ＭＰＣ位置指令部１７５は、例えば１／１２ｍｓごとに、第二逆運動学軌道ＩＫｔ（ｉ）から第二サーボ制御系３０の軸ごとの第二指令値Ｓｃ（ｉ）を生成する。
【０１２７】
第二に、第二ＭＰＣ位置指令部１７５は、第二逆運動学軌道ＩＫｔ（ｉ）から第二サーボ制御系３０に対する制御周期ごとに生成する第二指令値Ｓｃ（ｉ）を、モデル予測制御によって補正し、補正した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。
【０１２８】
具体的には、第二応答予測部１７６は、設定されている第二サーボ制御系３０の動特性モデルを用いて、第二指令値Ｓｃ（ｉ）に対する第二サーボ制御系３０の出力である制御量を予測する。第二ＭＰＣ位置指令部１７５は、第二応答予測部１７６によって予測された制御量と、第二サーボ制御系３０からフィードバック情報として取得する第二サーボ制御系３０の制御量の実測値と、を用いたモデル予測制御を実行する。すなわち、第二ＭＰＣ位置指令部１７５は、第二応答予測部１７６が第二サーボ制御系３０の動特性モデルを用いて予測した「第二サーボ制御系３０の出力である制御量」と、第二サーボ制御系３０の制御量の実測値と、を用いて第二指令値Ｓｃ（ｉ）を補正する。そして、第二ＭＰＣ位置指令部１７５は、モデル予測制御を用いて補正した第二指令値Ｓｃ（ｉ）を、第二サーボ制御系３０に対する制御周期ごとに、第二サーボ制御系３０に出力する。第二ＭＰＣ位置指令部１７５は、例えば１／１２ｍｓごとに、補正した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。
【０１２９】
（動特性モデルについて）
第二サーボ制御系３０の動特性モデルは、上述の（式１）に示される離散時間伝達関数のように表される。コントローラ１１において、（式１）に例示するような第二サーボ制御系３０の動特性モデルが予め作成され、作成された動特性モデルは第二応答予測部１７６に設定される。
【０１３０】
（コントローラが実行する処理について）
図９は、コントローラ１１が実行する処理の概要を示すフロー図である。図９に例示するコントローラ１１の実行する処理について、Ｓ２２０からＳ２６０までの処理は、図３に例示したコントローラ１０の実行するＳ１２０からＳ１６０までの処理と同様であり、また、図９のＳ２８０の処理は図３のＳ１８０の処理と同様である。したがって、Ｓ２２０からＳ２６０までの処理、および、Ｓ２８０の処理についての説明は略記し、Ｓ２１０およびＳ２７０の処理について説明する。
【０１３１】
コントローラ１１は、低速サーボシステム（第一サーボ制御系２０）の動特性モデル、および高速サーボシステム（第二サーボ制御系３０）を予め作成しておき、各々を、第一応答予測部１７２および第二応答予測部１７６に設定しておく（Ｓ２１０）。
【０１３２】
コントローラ１１は、低速サーボシステム（第一サーボ制御系２０）の動特性モデルを用いたＭＰＣ位置補正制御により、低速サーボシステムへの補正後指令値を計算し、計算した補正後指令値を低速サーボシステムに出力する。また、コントローラ１１は、高速サーボシステム（第二サーボ制御系３０）の動特性モデルを用いたＭＰＣ位置補正制御により、高速サーボシステムへの補正後指令値を計算し、計算した補正後指令値を高速サーボシステムに出力する（Ｓ２７０）。
【０１３３】
具体的には、第一ＭＰＣ位置指令部１７１は、補正後軌道ＳＰｆ（ｉ）から第一サーボ制御系２０に対する制御周期ごとに生成される第一指令値Ｐｃ（ｉ）を、第一サーボ制御系２０の動特性モデルを用いたＭＰＣにより補正する。すなわち、第一ＭＰＣ位置指令部１７１は、第一応答予測部１７２が第一サーボ制御系２０の動特性モデルを用いて予測した「第一サーボ制御系２０の出力である制御量」と、第一サーボ制御系２０の制御量の実測値と、を用いて、第一指令値Ｐｃ（ｉ）を補正する。そして、第一ＭＰＣ位置指令部１７１は、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。
【０１３４】
また、第二ＭＰＣ位置指令部１７５は、第二逆運動学軌道ＩＫｔ（ｉ）から第二サーボ制御系３０に対する制御周期ごとに生成する第二指令値Ｓｃ（ｉ）を、第二サーボ制御系３０の動特性モデルを用いたＭＰＣにより補正する。すなわち、第二ＭＰＣ位置指令部１７５は、第二応答予測部１７６が第二サーボ制御系３０の動特性モデルを用いて予測した「第二サーボ制御系３０の出力である制御量」と、第二サーボ制御系３０の制御量の実測値と、を用いて第二指令値Ｓｃ（ｉ）を補正する。そして、第二ＭＰＣ位置指令部１７５は、モデル予測制御を用いて補正した第二指令値Ｓｃ（ｉ）を、補正した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。
【０１３５】
（コントローラが奏する効果について）
図１０は、図４に示す制御テストについて、コントローラ１１によって制御された第一アクチュエータ２２および第二アクチュエータ３２の各々の位置、位置偏差、およびトルクの変化を示す図である。図１０の（Ａ）には、上から順に、コントローラ１１によって制御された第一アクチュエータ２２の位置、位置偏差、およびトルクの変化が示されている。図１０の（Ｂ）には、上から順に、コントローラ１１によって制御された第二アクチュエータ３２の位置、位置偏差、およびトルクの変化が示されている。図１０に示す各図において、横軸はいずれも時間（ｔ）である。
【０１３６】
図１１は、図４に示す制御テストについて、コントローラ１１によって制御された第一アクチュエータ２２および第二アクチュエータ３２の合計の位置（図１１の（Ａ））および位置偏差（図１１の（Ｂ））の変化を示す図である。なお、図１１の（Ａ）において、指令値と低速高速合成制御量（第一アクチュエータ２２の制御量の実測値と第二アクチュエータ３２の制御量の実測値とを合計（合成）した値）とは、ほぼ重なっている。
【０１３７】
前述の通り、コントローラ１１は、第一逆運動学軌道ＳＰ（ｉ）に対してローパスフィルタ処理を行なって補正後軌道ＳＰｆ（ｉ）を生成する。コントローラ１１の用いるローパスフィルタのフィルタ特性は、例えば、カットオフ周波数１０Ｈｚの４次バターワース型である。そして、コントローラ１１は、補正後軌道ＳＰｆ（ｉ）から生成する第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０の動特性モデルを用いたＭＰＣによって補正し、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。また、コントローラ１１は、第二逆運動学軌道ＩＫｔ（ｉ）から生成する第二指令値Ｓｃ（ｉ）を、第二サーボ制御系３０の動特性モデルを用いたＭＰＣにより補正し、補正した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。
【０１３８】
コントローラ１１は、第一サーボ制御系２０の動特性モデルを用いたＭＰＣを第一サーボ制御系２０の制御に適用することにより、第一サーボ制御系２０の追従性能を向上させている。また、コントローラ１１は、第二サーボ制御系３０の動特性モデルを用いたＭＰＣを第二サーボ制御系３０の制御に適用することにより、第二サーボ制御系３０の追従性能を向上させている。
【０１３９】
図１０および図１１の各々を図５および図６の各々と比べると、コントローラ１１は高速サーボ制御システム（第二サーボ制御系３０）側の応答遅れ分も補償できるため、コントローラ１０と比べても制御性能を格段に向上させることができることが示されている。
【０１４０】
〔実施形態３〕
本発明の実施形態３について、図１２から図１６に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。本実施形態における制御システム３が、上述の実施形態１における制御システム１と異なるのは、本実施形態に係る制御装置であるコントローラ１２が、コントローラ１０のＭＰＣ指令部１７０および位置指令部１７３に代えて指示部１８０を備えている点である。コントローラ１２はさらに、コントローラ１０が備えていない応答予測部１９０を備えている。「ＭＰＣ指令部１７０および位置指令部１７３に代えて指示部１８０を備え、さらに応答予測部１９０を備える」点以外の点においては、コントローラ１２の構成は、コントローラ１０の構成と同様である。
【０１４１】
（制御システムの概要）
図１３は、コントローラ１２を含む制御システム３の全体概要を示す図である。制御システム３のコントローラ１２には、予め作成されていた低速サーボシステム（第一サーボ制御系２０）の動特性モデルが設定される。コントローラ１２は、ローパスフィルタ処理後の補正後軌道ＳＰｆ（ｉ）に対応する低速サーボ（つまり、第一サーボ制御系２０）の応答を、設定されている低速サーボシステムの動特性モデルを用いて、予測する。
【０１４２】
なお、コントローラ１２は、低速サーボシステム（第一サーボ制御系２０）の応答を予測する際、低速サーボシステムの動特性モデルに加えて、低速サーボシステムからのフィードバック制御量を用いることによって、低速サーボシステムの応答に係る予測の精度を改善してもよい。
【０１４３】
ここで、前述のコントローラ１０とコントローラ１２とは、第一サーボ制御系２０の動特性モデルを使用して応答遅れを予測する点において共通している。コントローラ１０とコントローラ１２とは、予測した応答遅れをどこで取り戻すかが異なっている。コントローラ１０が予測した応答遅れを第一サーボ制御系２０において取り戻すのに対して、コントローラ１２は、予測した応答遅れを第二サーボ制御系３０（第二アクチュエータ３２）において取り戻す。
【０１４４】
コントローラ１２は、第一アクチュエータ２２の応答を予測し、応答遅れ分を第二アクチュエータ３２についての指令軌道に反映することによって、応答遅れ分を第二サーボ制御系３０（第二アクチュエータ３２）において取り戻す。具体的には、コントローラ１２は、「予測した第一サーボ制御系２０の応答に順運動学演算を行なって生成した中間軌道と、目標軌道Ｔｔと、の誤差」に逆運動学演算を行なって、第二サーボ制御系３０についての指令軌道を生成する。
【０１４５】
上述の方法により、コントローラ１２は、「予測した第一サーボ制御系２０（第一アクチュエータ２２）の応答」を反映させた「第二サーボ制御系３０についての指令軌道」を生成する。そして、コントローラ１２は、「予測した第一サーボ制御系２０の応答」を反映させた「第二サーボ制御系３０についての指令軌道」から、「第二サーボ制御系３０に対する指令値」である第二指令値Ｓｃ（ｉ）を生成する。コントローラ１２は、生成した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力することにより、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上することができる。
【０１４６】
つまり、コントローラ１２は、第一アクチュエータ２２側の応答遅れ分を第二アクチュエータ３２側でカバーさせることにより、第一アクチュエータ２２と第二アクチュエータ３２との合計（総合）の追従性能を向上させる。ただし、コントローラ１２による制御は、コントローラ１０による制御に比べて、第二アクチュエータ３２の動作範囲を広くする傾向がある。
【０１４７】
（制御装置の概要）
これまで図１３を用いて概要を説明してきた制御システム３に含まれるコントローラ１２について、次に、その構成および処理の内容等を、図１２等を用いて説明していく。図１２を参照して詳細を説明する前に、コントローラ１２についての理解を容易にするため、その概要について以下のように整理しておく。
【０１４８】
コントローラ１２（制御装置）は、第一サーボ制御系２０についての指令軌道として、第一逆運動学軌道ＳＰ（基準軌道）からローパスフィルタ処理により高周波成分を除去した補正後軌道ＳＰｆ（第一指令軌道）を生成し、第二サーボ制御系３０についての指令軌道として、前記高周波成分に対応する軌道を含む第二逆運動学軌道ＩＫｔ（第二指令軌道）を生成する制御装置であって、第一サーボ制御系２０の動特性モデルを用いて、補正後軌道ＳＰｆに対応する第一サーボ制御系２０の応答を予測する応答予測部１９０（予測部）と、応答予測部１９０によって予測された第一サーボ制御系２０の応答を用いて、（１）補正後軌道ＳＰｆから生成する第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する第二逆運動学演算部１５０（生成部）と、を備えている。
【０１４９】
前記の構成によれば、コントローラ１２は、前記ローパスフィルタ処理後の値である補正後軌道ＳＰｆに対応する、第一サーボ制御系２０の応答を、第一サーボ制御系２０の動特性モデルを用いて予測する。そして、コントローラ１２は、予測した第一サーボ制御系２０の応答を用いて、（１）第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する。具体的には、コントローラ１２は、予測した第一サーボ制御系２０の応答を用いて第二逆運動学軌道ＩＫｔを生成する。
【０１５０】
ここで、従来のコントローラを用いた場合、第一サーボ制御系２０がローパスフィルタ処理後の軌道（つまり、補正後軌道ＳＰｆ）に十分に追従できないことがあり、その場合、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能が低下することになる。
【０１５１】
これに対して、コントローラ１２は、補正後軌道ＳＰｆに対応する第一サーボ制御系２０の応答を予測し、予測した第一サーボ制御系２０の応答を用いて、第二逆運動学軌道ＩＫｔの生成を実行する。具体的には、コントローラ１２は、予測した第一サーボ制御系２０の応答を用いて、第二逆運動学軌道ＩＫｔの生成を実行する。
【０１５２】
例えば、コントローラ１２は、予測した第一サーボ制御系２０の応答を用いて生成した第二逆運動学軌道ＩＫｔから生成する第二指令値Ｓｃを第二サーボ制御系３０に出力することにより、第一サーボ制御系２０の追従遅れを第二サーボ制御系３０に補償させる。
【０１５３】
したがって、コントローラ１２は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。例えば、コントローラ１２は、予測した第一サーボ制御系２０の応答を用いて生成した第二逆運動学軌道ＩＫｔから生成する第二指令値Ｓｃを第二サーボ制御系３０に出力することで、第一サーボ制御系２０が補正後軌道ＳＰｆに追従できない場合にも、第一サーボ制御系２０が追従できない分を第二サーボ制御系３０に補償させることができる。したがって、コントローラ１２は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。
【０１５４】
コントローラ１２において、第二逆運動学演算部１５０は、応答予測部１９０によって予測された第一サーボ制御系２０の応答を用いて生成する順運動学軌道ＦＫｔ（中間軌道）と、第一逆運動学軌道ＳＰと、の誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成する。
【０１５５】
前述の通り、第二逆運動学演算部１５０は、「第二サーボ制御系３０についての指令軌道」として、ローパスフィルタ部１３０により第一逆運動学軌道ＳＰ（ｉ）から除去された高周波成分に対応する軌道を含む第二逆運動学軌道ＩＫｔ（第二指令軌道）を生成する。コントローラ１２において第二逆運動学演算部１５０は、「応答予測部１９０の予測した第一サーボ制御系２０の応答」を用いて生成した順運動学軌道ＦＫｔと、第一逆運動学軌道ＳＰと、の誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成する。例えば、第二逆運動学演算部１５０は、順運動学演算部１４０が「応答予測部１９０の予測した第一サーボ制御系２０の応答」に順運動学演算を行なって生成した順運動学軌道ＦＫｔと、目標軌道Ｔｔと、の差分（誤差）から第二逆運動学軌道ＩＫｔを生成する。
【０１５６】
第二逆運動学演算部１５０は、「順運動学軌道ＦＫｔ（中間軌道）と、第二逆運動学軌道ＩＫｔとの合成軌道が、目標軌道Ｔｔに一致する」ようにして、目標軌道Ｔｔと順運動学軌道ＦＫｔ（中間軌道）との誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成してもよい。第二逆運動学演算部１５０は、「中間軌道と、第二逆運動学軌道ＩＫｔとの合成軌道が、目標軌道Ｔｔに一致する」ようにして、第一逆運動学軌道ＳＰと中間軌道との誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成する。
【０１５７】
前記の構成によれば、コントローラ１２は、第一サーボ制御系２０の、補正後軌道ＳＰｆに対応する応答について予測し、予測した応答を用いて生成する順運動学軌道ＦＫｔと、第一逆運動学軌道ＳＰと、の誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成する。そして、コントローラ１２は、第二逆運動学軌道ＩＫｔから生成した指令値（第二指令値Ｓｃ）を、第二サーボ制御系３０に出力する。
【０１５８】
したがって、コントローラ１２は、予測した第一サーボ制御系２０の応答を用いて生成した第二逆運動学軌道ＩＫｔから生成する第二指令値Ｓｃを第二サーボ制御系３０に出力することにより、第一サーボ制御系２０の追従遅れを第二サーボ制御系３０に補償させることができる。つまり、コントローラ１２は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。
【０１５９】
（制御装置の詳細）
図１２は、本発明の実施形態３に係るコントローラ１２等の要部構成等を示すブロック図である。上述の通り、「ＭＰＣ指令部１７０および位置指令部１７３に代えて指示部１８０を備え、さらに応答予測部１９０を備える」点以外は、コントローラ１２の構成は、コントローラ１０の構成と同様であるため、指示部１８０および応答予測部１９０についてのみ、説明する。
【０１６０】
指示部１８０は、第一サーボ制御系２０に第一指令値Ｐｃ（ｉ）を出力する第一指示部１８１と、第二サーボ制御系３０に第二指令値Ｓｃ（ｉ）を出力する第二指示部１８２と、を含んでいる。
【０１６１】
第一指示部１８１は、第一サーボ制御系２０に対する制御周期ごとに、「第一サーボ制御系２０についての指令軌道」から第一サーボ制御系２０の軸ごとの第一指令値Ｐｃ（ｉ）を生成し、生成した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。具体的には、第一指示部１８１は、「第一サーボ制御系２０についての指令軌道」として、ローパスフィルタ部１３０から補正後軌道ＳＰｆ（ｉ）を取得する。そして、第一指示部１８１は、例えば１ｍｓごとに、補正後軌道ＳＰｆ（ｉ）から第一サーボ制御系２０の軸ごとの第一指令値Ｐｃ（ｉ）を生成し、生成した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。
【０１６２】
第二指示部１８２は、第二サーボ制御系３０に対する制御周期ごとに、「第二サーボ制御系３０についての指令軌道」から、第二サーボ制御系３０の軸ごとの第二指令値Ｓｃ（ｉ）を生成し、生成した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。具体的には、第二指示部１８２は、「第二サーボ制御系３０についての指令軌道」として、第二逆運動学演算部１５０から第二逆運動学軌道ＩＫｔ（ｉ）を取得する。そして、第二指示部１８２は、例えば１／１２ｍｓごとに、第二逆運動学軌道ＩＫｔ（ｉ）から第二サーボ制御系３０の軸ごとの第二指令値Ｓｃ（ｉ）を生成し、生成した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。
【０１６３】
応答予測部１９０は、低速サーボシステム（つまり、第一サーボ制御系２０）の動特性モデルを予め作成し、作成しておいた動特性モデルを用いて、ローパスフィルタ部１３０が生成した補正後軌道ＳＰｆ（ｉ）に対応する第一サーボ制御系２０の応答を予測する。応答予測部１９０は、予測した第一サーボ制御系２０の応答を、順運動学演算部１４０に出力し、順運動学演算部１４０は、応答予測部１９０により予測された第一サーボ制御系２０の応答に対する順運動学演算から、順運動学軌道ＦＫｔ（中間軌道）を生成する。応答予測部１９０が用いる「第一サーボ制御系２０の動特性モデル」は、例えば、前述の（式１）に示す離散時間伝達関数のように表されてもよい。
【０１６４】
（コントローラが実行する処理について）
図１４は、コントローラ１２が実行する処理の概要を示すフロー図である。先ず、低速サーボシステム（第一サーボ制御系２０）の動特性モデルを作成して、低速サーボ応答予測部（つまり、応答予測部１９０）に設定しておく（Ｓ３１０）。
【０１６５】
第一逆運動学演算部１２０は、目標軌道Ｔｔから第一アクチュエータ２２の軸毎の指令値を生成し、つまり、目標軌道Ｔｔに逆運動学演算を行なって第一逆運動学軌道ＳＰ（ｉ）を生成する（Ｓ３２０）。
【０１６６】
ローパスフィルタ部１３０は、軸毎の軌道（つまり、第一逆運動学軌道ＳＰ（ｉ））に対してローパスフィルタリングを実行し（Ｓ３３０）、生成した補正後軌道ＳＰｆ（ｉ）を、「第一サーボ制御系２０についての指令軌道」として応答予測部１９０に通知する。
【０１６７】
応答予測部１９０は、第一サーボ制御系２０の動特性モデルを用いて、補正後軌道ＳＰｆ（ｉ）に対する低速サーボシステムの軸毎の応答を予測計算し、つまり、補正後軌道ＳＰｆ（ｉ）に対応する第一サーボ制御系２０の応答を予測する（Ｓ３４０）。
【０１６８】
コントローラ１２は、「予測応答（第一サーボ制御系２０の制御量についての予測値）と、目標軌道の指令値と、の差分」を計算し、計算した差分から高速アクチュエータ（第二アクチュエータ３２）の軸毎の指令値を生成する。
【０１６９】
例えば、順運動学演算部１４０は、応答予測部１９０によって予測された第一サーボ制御系２０の応答（第一サーボ制御系２０の制御量についての予測値）に、順運動学演算を行なって、中間軌道（つまり、順運動学軌道ＦＫｔ）を生成する（Ｓ３５０）。そして、第二逆運動学演算部１５０は、中間軌道と目標軌道Ｔｔとの差分（誤差）を計算する（Ｓ３６０）。そして、第二逆運動学演算部１５０は、Ｓ３６０で計算した誤差（差分）を用いて、第二アクチュエータ３２の軸毎の軌道を計算し（Ｓ３７０）、つまり、第二逆運動学軌道ＩＫｔ（ｉ）を生成する。具体的には、第二逆運動学演算部１５０は、「中間軌道（つまり、順運動学軌道ＦＫｔ）と、目標軌道Ｔｔと、の誤差」に逆運動学演算を行なって、第二サーボ制御系３０の軸ごとの指令軌道である第二逆運動学軌道ＩＫｔ（ｉ）を生成する。第二逆運動学演算部１５０は、「応答予測部１９０の予測した第一サーボ制御系２０の応答」から生成した順運動学軌道ＦＫｔと、第一逆運動学軌道ＳＰと、の誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成する。例えば、第二逆運動学演算部１５０は、順運動学軌道ＦＫｔ（中間軌道）と、第一逆運動学軌道ＳＰと、の誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを、「中間軌道と第二逆運動学軌道ＩＫｔとの合成軌道が目標軌道Ｔｔに一致する」ように、生成する。
【０１７０】
第二逆運動学演算部１５０は、生成した第二逆運動学軌道ＩＫｔ（ｉ）を、「第二サーボ制御系３０についての指令軌道」として、第二指示部１８２に通知する。
【０１７１】
指示部１８０は、軸毎の軌道（補正後軌道ＳＰｆ（ｉ）および第二逆運動学軌道ＩＫｔ（ｉ））から、現時刻の指令値を、低速サーボシステム（つまり、第一サーボ制御系２０）および高速サーボシステム（つまり、第二サーボ制御系３０）へ出力する（Ｓ３８０）。具体的には、第一指示部１８１は、ローパスフィルタ部１３０から通知された補正後軌道ＳＰｆ（ｉ）から、第一サーボ制御系２０に対する制御周期ごとに、第一指令値Ｐｃ（ｉ）を生成し、生成した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。
【０１７２】
また、第二指示部１８２は、第二逆運動学演算部１５０から通知された第二逆運動学軌道ＩＫｔ（ｉ）から、第二サーボ制御系３０に対する制御周期ごとに、第二指令値Ｓｃ（ｉ）を生成し、生成した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。
【０１７３】
コントローラ１２は、軌道終点に到達したかを判定しながら（Ｓ３９０）、制御周期ごとに、Ｓ３２０〜Ｓ３８０の処理を繰り返す。具体的には、コントローラ１２は、Ｓ３２０〜Ｓ３８０の処理のうち、「第一サーボ制御系２０のみに係る処理」を、軌道終点に到達したかを判定しながら（Ｓ３９０）、第一サーボ制御系２０に対する制御周期で繰り返し実行する。また、コントローラ１２は、Ｓ３２０〜Ｓ３８０の処理のうち、「第一サーボ制御系２０のみに係る処理」以外の処理（例えば、第二サーボ制御系３０に係る処理）を、軌道終点に到達したかを判定しながら（Ｓ３９０）、第二サーボ制御系３０に対する制御周期で繰り返し実行する。
【０１７４】
これまで図１４を用いて説明してきた、コントローラ１２の実行する制御方法は、以下のように整理することができる。すなわち、コントローラ１２の実行する制御方法は、第一サーボ制御系２０についての指令軌道として、第一逆運動学軌道ＳＰ（基準軌道）からローパスフィルタ処理により高周波成分を除去した補正後軌道ＳＰｆ（第一指令軌道）を生成し、第二サーボ制御系３０についての指令軌道として、前記高周波成分に対応する軌道を含む第二逆運動学軌道ＩＫｔ（第二指令軌道）を生成する制御装置の制御方法であって、第一サーボ制御系２０の動特性モデルを用いて、補正後軌道ＳＰｆに対応する第一サーボ制御系２０の応答を予測する予測ステップ（Ｓ３４０）と、前記予測ステップにて予測した第一サーボ制御系２０の応答を用いて、（１）補正後軌道ＳＰｆから生成する第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する生成ステップ（Ｓ３７０）と、を含んでいる。
【０１７５】
前記の方法によれば、前記制御方法は、前記ローパスフィルタ処理後の値である補正後軌道ＳＰｆに対応する、第一サーボ制御系２０の応答を、第一サーボ制御系２０の動特性モデルを用いて予測する。そして、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて、（１）第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する。
【０１７６】
ここで、第一サーボ制御系２０がローパスフィルタ処理後の軌道に十分に追従できない場合、結果として、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能が低下することになる。
【０１７７】
これに対して、前記制御方法は、補正後軌道ＳＰｆに対応する第一サーボ制御系２０の応答を予測し、予測した第一サーボ制御系２０の応答を用いて、（１）第一指令値Ｐｃの補正、または、（２）第二逆運動学軌道ＩＫｔの生成を実行する。
【０１７８】
例えば、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて補正した第一指令値Ｐｃを第一サーボ制御系２０に出力することにより、第一サーボ制御系２０の補正後軌道ＳＰｆへの追従性能を向上させる。
【０１７９】
また例えば、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて生成した第二逆運動学軌道ＩＫｔから生成する第二指令値Ｓｃを第二サーボ制御系３０に出力することにより、第一サーボ制御系２０の追従遅れを第二サーボ制御系３０に補償させる。
【０１８０】
したがって、前記制御方法は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。例えば、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて補正した第一指令値Ｐｃを第一サーボ制御系２０に出力することで、第一サーボ制御系２０の追従性能を向上させることができる。また例えば、前記制御方法は、予測した第一サーボ制御系２０の応答を用いて生成した第二逆運動学軌道ＩＫｔから生成する第二指令値Ｓｃを第二サーボ制御系３０に出力することで、第一サーボ制御系２０が補正後軌道ＳＰｆに追従できない場合にも、第一サーボ制御系２０が追従できない分を第二サーボ制御系３０に補償させることができる。したがって、前記制御方法は、第一サーボ制御系２０および第二サーボ制御系３０の全体の追従性能を向上させることができるとの効果を奏する。
【０１８１】
（コントローラが奏する効果について）
図１５は、図４に示す制御テストについて、コントローラ１２によって制御された第一アクチュエータ２２および第二アクチュエータ３２の各々の位置、位置偏差、モデル予測誤差、およびトルクの変化を示す図である。図１５の（Ａ）には、上から順に、コントローラ１２によって制御された第一アクチュエータ２２の位置、位置偏差、モデル予測誤差、およびトルクの変化が示されている。図１５の（Ｂ）には、上から順に、コントローラ１２によって制御された第二アクチュエータ３２の位置、位置偏差、モデル予測誤差、およびトルクの変化が示されている。図１５に示す各図において、横軸はいずれも時間（ｔ）である。
【０１８２】
図１６は、図４に示す制御テストについて、コントローラ１２によって制御された第一アクチュエータ２２および第二アクチュエータ３２の合計の位置（図１６の（Ａ））および位置偏差（図１６の（Ｂ））の変化を示す図である。図１６に示す各図において、横軸はいずれも時間（ｔ）である。なお、図１６の（Ａ）において、指令値と低速高速合成制御量（第一アクチュエータ２２の制御量の実測値と第二アクチュエータ３２の制御量の実測値とを合計（合成）した値）とは、ほぼ重なっている。
【０１８３】
前述の通り、コントローラ１２は、第一逆運動学軌道ＳＰ（ｉ）に対してローパスフィルタ処理を行なって補正後軌道ＳＰｆ（ｉ）を生成する。コントローラ１２の用いるローパスフィルタのフィルタ特性は、例えば、カットオフ周波数１０Ｈｚの４次バターワース型である。なお、応答予測の精度を優先して、低速サーボ制御系（第一サーボ制御系２０）側の速度ＦＦ（フィードフォワード）ゲイン＝０％とした。
【０１８４】
そして、コントローラ１２は、補正後軌道ＳＰｆ（ｉ）に対応する第一サーボ制御系２０の応答を、第一サーボ制御系２０の動特性モデルを用いて予測し、予測した第一サーボ制御系２０の応答を用いて、第二逆運動学軌道ＩＫｔ（ｉ）を生成する。コントローラ１２は、第一アクチュエータ２２側の応答遅れ分を反映した第二逆運動学軌道ＩＫｔ（ｉ）を、「第二アクチュエータ３２についての指令軌道」とすることにより、第一アクチュエータ２２側の応答遅れ分を第二アクチュエータ３２側でカバーさせる。
【０１８５】
したがって、図１６の（Ｂ）に示すピーク偏差（第一アクチュエータ２２および第二アクチュエータ３２の合計（総合）の追従誤差のピーク）は、図２４の（Ｂ）に示すピーク偏差の１／２程度に低減している。具体的には、図２４の（Ｂ）においてピーク偏差は約プラスマイナス０．５ｍｍであるのに対し、図１６の（Ｂ）においてピーク偏差は約プラスマイナス０．２５ｍｍである。
【０１８６】
〔実施形態４〕
本発明の実施形態４について、図１７から図２２に基づいて説明すれば、以下のとおりである。なお、説明の便宜上、前記実施形態にて説明した部材と同じ機能を有する部材については、同じ符号を付記し、その説明を省略する。本実施形態における制御システム４が、上述の実施形態２における制御システム２と異なるのは、本実施形態に係る制御装置であるコントローラ１３が、コントローラ１１のローパスフィルタ部１３０に代えて、ゼロ位相フィルタ部１３１を備えている点である。さらに、コントローラ１３は、記憶部１６０を備えている。「ローパスフィルタ部１３０に代えてゼロ位相フィルタ部１３１を備える」点、および、「記憶部１６０を備える」点以外の点においては、コントローラ１３の構成は、コントローラ１１の構成と同様である。
【０１８７】
（制御システムの概要）
図１８は、コントローラ１３を含む制御システム４の全体概要を示す図である。ここで、コントローラ１３は、第一逆運動学軌道ＳＰ（ｉ）から、位相遅延が発生しないようにして高周波成分を除去して、補正後軌道ＳＰｆ（ｉ）を生成する。具体的には、コントローラ１３は、第一逆運動学軌道ＳＰ（ｉ）に対し、時間軸の順方向と逆方向との両方向にローパスフィルタ処理を行なって、つまり、ゼロ位相フィルタ処理を行なって、補正後軌道ＳＰｆ（ｉ）を生成する。コントローラ１３は、生成した補正後軌道ＳＰｆ（ｉ）をメモリ（具体的には、後述する記憶部１６０の第一指示軌道テーブル１６１）に格納する。
【０１８８】
また、コントローラ１３は、第一サーボ制御系２０の動特性モデルを使用して第一サーボ制御系２０の応答遅れを予測し、予測した応答遅れを第一サーボ制御系２０において取り戻す協調制御コントローラである。すなわち、コントローラ１３は、第一サーボ制御系２０の動特性モデルを用いたモデル予測制御による位置補正制御によって、低速アクチュエータ（第一アクチュエータ２２）の軌道追従性を向上させる。
【０１８９】
さらに、コントローラ１３は、第二サーボ制御系３０の動特性モデルを用いたモデル予測制御による位置補正制御によって、高速アクチュエータ（第二アクチュエータ３２）の軌道追従性を向上させる。
【０１９０】
（制御装置の概要）
コントローラ１３は、第一逆運動学軌道ＳＰに対し、時間軸の順方向と逆方向との両方向に前記ローパスフィルタ処理を行なって補正後軌道ＳＰｆを生成するローパスフィルタ部１３０（フィルタ部）を備えている。
【０１９１】
前記の構成によれば、コントローラ１３は、第一逆運動学軌道ＳＰに対し、時間軸の順方向と逆方向との両方向に前記ローパスフィルタ処理を行なって補正後軌道ＳＰｆを生成する。例えば、コントローラ１３は、第一逆運動学軌道ＳＰに対し、時間軸の逆方向から順方向の順に前記ローパスフィルタ処理を行なって補正後軌道ＳＰｆを生成する。
【０１９２】
ここで、フィルタリング処理（例えば、ローパスフィルタ処理）について、「時間軸の順方向と逆方向とに１回ずつ実行する」ことにより、フィルタリング処理による位相遅れを除去することができることが知られている。つまり、ゼロ位相フィルタ処理によって位相遅れを除去することができることが知られている。
【０１９３】
そこで、コントローラ１３は、第一逆運動学軌道ＳＰに対し、時間軸の順方向と逆方向との両方向にローパスフィルタ処理を行なって、つまり、ゼロ位相フィルタ処理を行なって、補正後軌道ＳＰｆから位相遅れを除去する。コントローラ１３は、前記ローパスフィルタに起因して従来発生していた「第一逆運動学軌道ＳＰからの位相遅れ」を発生させずに、補正後軌道ＳＰｆを生成する。
【０１９４】
従来、第一サーボ制御系２０の追従性を向上させるためのローパスフィルタ処理の際に、前記ローパスフィルタ処理に起因して補正後軌道ＳＰｆに位相遅れ（位相遅延）が発生し、発生した位相遅延を第二サーボ制御系３０に補償させていた。したがって、従来、第一サーボ制御系２０の追従性を向上させる代わりに、本来は第一サーボ制御系２０が実現すべき軌道の一部を第二サーボ制御系３０に実現させることになり、第二サーボ制御系３０の可動範囲を有効に利用することができなかった。
【０１９５】
これに対し、コントローラ１３は、前記高周波成分の除去に伴って従来発生していた「第一逆運動学軌道ＳＰからの位相遅れ」の発生を防ぐことにより、第一サーボ制御系２０が本来実現すべき軌道の一部を第二サーボ制御系３０に補償させる必要がない。つまり、コントローラ１３は、高周波成分の除去によって第一サーボ制御系２０の追従性を維持しつつ、位相遅延の発生を防ぐことで第二サーボ制御系３０の可動範囲を有効に利用することができる。コントローラ１３は、第一サーボ制御系２０の追従性を維持しつつ、第一サーボ制御系２０および第二サーボ制御系３０の各々について、その可動範囲を有効に利用することができるという効果を奏する。
【０１９６】
コントローラ１３において、ローパスフィルタ部１３０は、第一逆運動学軌道ＳＰに対し、時間軸の逆方向から順方向の順に前記ローパスフィルタ処理を行なって補正後軌道ＳＰｆを生成する。
【０１９７】
前記の構成によれば、コントローラ１３は、第一逆運動学軌道ＳＰに対し、時間軸の逆方向から順方向の順に前記ローパスフィルタ処理を行なって補正後軌道ＳＰｆを生成する。
【０１９８】
ここで、第一逆運動学軌道ＳＰに対し、時間軸の順方向から逆方向の順に前記ローパスフィルタ処理（前記ゼロ位相フィルタ処理）を行なった場合、補正後軌道ＳＰｆについて、スタート時点（ｔ＝０の時点）において、第一逆運動学軌道ＳＰに対するデータ飛びが発生する。
【０１９９】
これに対して、コントローラ１３は、第一逆運動学軌道ＳＰに対し、時間軸の逆方向から順方向の順に前記ローパスフィルタ処理を行なって補正後軌道ＳＰｆを生成する。したがって、コントローラ１３は、補正後軌道ＳＰｆについて、スタート時点（ｔ＝０の時点）において、第一逆運動学軌道ＳＰに対するデータ飛びが発生することを防ぐことができるとの効果を奏する。
【０２００】
以上を整理すれば、コントローラ１３は、目標軌道Ｔｔに逆運動学演算を行なって生成した軌道に遅延補償付きのローパスフィルタ処理を実施したものを、第一アクチュエータ２２についての指令軌道とする。具体的には、コントローラ１３は、ゼロ位相フィルタを使用する。ゼロ位相フィルタは、フィルタ処理を時間軸の順方向と逆方向との２回（１往復）実行することで、位相遅れを相殺する。さらに、コントローラ１３は、スタート時のデータ飛びをなくすために、逆方向から順方向の順に、ゼロ位相フィルタ処理を実行する。
【０２０１】
コントローラ１３は、低速アクチュエータ（第一アクチュエータ２２）についての軌道（指令軌道）の位相遅れを低減させることにより、高速アクチュエータ（第二アクチュエータ３２）の動作範囲を節約することができる。したがって、コントローラ１３は、より高速の軌道に対応できる。また、コントローラ１３は、ローパスフィルタの効果を強めて、低速アクチュエータの追従性を向上させることができ、トータル（第一サーボ制御系２０および第二サーボ制御系３０の全体）の制御精度を向上することができる。さらに、コントローラ１３は、制御システム１において採用する高速アクチュエータについて選択肢を広がることができ、採用する高速アクチュエータについての選定を容易にすることができる。これまでに概要を整理してきたコントローラ１３について、次に、その構成等の詳細について、図１７等を用いて説明していく。
【０２０２】
（制御装置の詳細）
図１７は、本発明の実施形態４に係るコントローラ１３等の要部構成等を示すブロック図である。上述の通り、「ローパスフィルタ部１３０に代えてゼロ位相フィルタ部１３１を備える」点、および、「記憶部１６０を備える」点以外は、コントローラ１３の構成は、コントローラ１１の構成と同様である。そこで、以下では、記憶部１６０およびゼロ位相フィルタ部１３１についてのみ、説明する。
【０２０３】
コントローラ１３は、各種データを格納する記憶装置としての記憶部１６０を備え、記憶部１６０に、第一指示軌道テーブル１６１および第二指示軌道テーブル１６２を格納している。第一指示軌道テーブル１６１には、「第一サーボ制御系２０についての指令軌道」が格納され、具体的には、ローパスフィルタ部１３０によって、補正後軌道ＳＰｆ（ｉ）が格納される。第二指示軌道テーブル１６２には、「第二サーボ制御系３０についての指令軌道」が格納され、具体的には、第二逆運動学演算部１５０によって、第二逆運動学軌道ＩＫｔ（ｉ）が格納される。
【０２０４】
ゼロ位相フィルタ部１３１は、第一逆運動学演算部１２０から取得した第一逆運動学軌道ＳＰ（ｉ）から、位相遅延が発生しないようにして高周波成分を除去して、第一サーボ制御系２０の軸ごとの補正後軌道ＳＰｆ（ｉ）を生成する。具体的には、ゼロ位相フィルタ部１３１は、第一逆運動学軌道ＳＰ（ｉ）にゼロ位相フィルタ処理を行なって補正後軌道ＳＰｆ（ｉ）を生成する。
【０２０５】
ここで、ゼロ位相フィルタ処理とは、フィルタリング処理（本実施形態では、ローパスフィルタ処理）を、順方向と逆方向との両方向で（例えば、時間軸の順方向と逆方向との各々について１回ずつ、計２回）、実行することをいう。具体的には、第一逆運動学軌道ＳＰ（ｉ）に対して行う、時間軸の順方向と逆方向との両方向でのローパスフィルタ処理を「ゼロ位相フィルタ処理」と称する。なお、ローパスフィルタ処理はローパスフィルタリングと称することがあり、ゼロ位相フィルタ処理はゼロ位相フィルタリングと称することがある。
【０２０６】
特に、ゼロ位相フィルタ部１３１は、第一逆運動学軌道ＳＰ（ｉ）に対し、時間軸の逆方向から順方向の順にローパスフィルタ処理を行なって、つまり、時間軸について逆方向（逆順）にゼロ位相フィルタ処理を行なって、補正後軌道ＳＰｆ（ｉ）を生成する。時間軸の逆方向から順方向の順にローパスフィルタ処理を行なうことにより、ゼロ位相フィルタ部１３１は、スタート時点（ｔ＝０の時点）において第一逆運動学軌道ＳＰ（ｉ）に対するデータ飛びの無い補正後軌道ＳＰｆ（ｉ）を生成することができる。ゼロ位相フィルタ部１３１の用いるローパスフィルタ（ゼロ位相フィルタ）のフィルタ特性は、例えば、カットオフ周波数１０Ｈｚの２次バターワース型である。ゼロ位相フィルタ部１３１が実行するゼロ位相フィルタ処理の詳細について、図２０を用いて後述する。
【０２０７】
ゼロ位相フィルタ部１３１は、生成した補正後軌道ＳＰｆ（ｉ）を、「第一サーボ制御系２０についての指令軌道」として、記憶部１６０の第一指示軌道テーブル１６１に格納する。また、ゼロ位相フィルタ部１３１は、生成した補正後軌道ＳＰｆ（ｉ）を、順運動学演算部１４０に出力する。
【０２０８】
ゼロ位相フィルタ部１３１は、オフラインで事前に軌道計算を実行し、実行した軌道計算の結果をメモリに格納する。つまり、ゼロ位相フィルタ部１３１は、第一逆運動学軌道ＳＰ（ｉ）に対してゼロ位相フィルタ処理を行なって生成した補正後軌道ＳＰｆ（ｉ）を、第一指示軌道テーブル１６１に格納する。
【０２０９】
コントローラ１３（ゼロ位相フィルタ部１３１）は、第一指示軌道テーブル１６１をオフライン処理で予め作成しておき、つまり、「第一サーボ制御系２０についての指令軌道」を予め算出しておく。コントローラ１３は、全ての処理をオフラインで実行しておき、第二指示軌道テーブル１６２についても予め作成しておいてもよく、つまり、「第二サーボ制御系３０についての指令軌道」を予め算出しておいてもよい。なお、図１７には、コントローラ１３が、全ての処理をオフラインで予め実行しておき、第二指示軌道テーブル１６２を作成しておく例が示されている。ただし、コントローラ１３が、「第二サーボ制御系３０についての指令軌道」を予め算出しておくことは必須ではなく、つまり、第二指示軌道テーブル１６２を予め作成しておくことは必須ではない。
【０２１０】
なお、これまでに説明してきたコントローラ１０、１１、および１２については、ゼロ位相処理を行なわないので、第一サーボ制御系２０についての指令軌道（補正後軌道ＳＰｆ）を予め生成し、第一指示軌道テーブル１６１に格納しておく必要はない。そのため、コントローラ１０、１１、および１２は、第一指示軌道テーブル１６１および第二指示軌道テーブル１６２を備えていない。しかしながら、コントローラ１０、１１、および１２、不図示の記憶部を備え、当該記憶部に第一指示軌道テーブル１６１および第二指示軌道テーブル１６２を格納していてもよい。
【０２１１】
（コントローラが実行する処理について）
図１９は、コントローラ１３が実行する処理の概要を示すフロー図である。コントローラ１３は、第一逆運動学軌道ＳＰ（ｉ）に「時間軸の逆方向から順方向へ」の順にゼロ位相フィルタ処理を実行することにより、補正後軌道ＳＰｆ（ｉ）について、位相遅れの発生を抑制する。
【０２１２】
また、コントローラ１３は、第一サーボ制御系２０および第二サーボ制御系３０の動特性モデルを予め作成しておき、作成しておいた動特性モデルを用いて、第一サーボ制御系２０および第二サーボ制御系３０についてＭＰＣ位置補正制御を実行する。具体的には、コントローラ１３は、第一サーボ制御系２０の動特性モデルを用いたＭＰＣによって第一指令値Ｐｃ（ｉ）を補正し、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。また、コントローラ１３は、第二サーボ制御系３０の動特性モデルを用いたＭＰＣによって第二指令値Ｓｃ（ｉ）を補正し、補正した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。コントローラ１３は、第一サーボ制御系２０および第二サーボ制御系３０に対する制御についてもＭＰＣ位置補正制御を適用することにより、第一サーボ制御系２０および第二サーボ制御系３０の応答遅れに起因する追従誤差を低減することができる。以下、コントローラ１３の実行する処理の詳細について、図１９を用いて説明していく。
【０２１３】
コントローラ１３は、低速サーボシステム（第一サーボ制御系２０）および高速サーボシステム（第二サーボ制御系３０）の各々について、動特性モデルを予め作成しておき、第一応答予測部１７２および第二応答予測部１７６に設定しておく（Ｓ４１０）。
【０２１４】
第一逆運動学演算部１２０は、目標軌道Ｔｔから第一アクチュエータ２２の軸毎の指令値を生成し、つまり、目標軌道Ｔｔに逆運動学演算を行なって第一逆運動学軌道ＳＰ（ｉ）を生成する（Ｓ４２０）。
【０２１５】
ゼロ位相フィルタ部１３１は、軸毎の軌道（つまり、第一逆運動学軌道ＳＰ（ｉ））に対して、ゼロ位相フィルタリングを実行し、生成した補正後軌道ＳＰｆ（ｉ）を、記憶部１６０の第一指示軌道テーブル１６１に格納する（Ｓ４３０）。
【０２１６】
コントローラ１３は、「ゼロ位相フィルタリング後の指令軌道から生成される指令値と、目標軌道の指令値と、の差分」を計算し、計算した差分から高速アクチュエータ（第二アクチュエータ３２）の軸毎の指令値を生成する。
【０２１７】
例えば、順運動学演算部１４０は、順運動学演算により、ゼロ位相フィルタリング後の軌道（つまり、補正後軌道ＳＰｆ（ｉ））から中間軌道（つまり、順運動学軌道ＦＫｔ）を生成する（Ｓ４４０）。そして、第二逆運動学演算部１５０は、中間軌道と目標軌道Ｔｔとの差分（誤差）を計算する（Ｓ４５０）。そして、第二逆運動学演算部１５０は、Ｓ４５０で計算した誤差（差分）を用いて、第二アクチュエータ３２の軸毎の軌道を計算し、記憶部１６０の第二指示軌道テーブル１６２に格納する（Ｓ４６０）。具体的には、第二逆運動学演算部１５０は、「中間軌道（つまり、順運動学軌道ＦＫｔ）と、目標軌道Ｔｔと、の誤差」に逆運動学演算を行なって、第二サーボ制御系３０の軸ごとの指令軌道である第二逆運動学軌道ＩＫｔ（ｉ）を生成する。そして、第二逆運動学演算部１５０は、生成した第二逆運動学軌道ＩＫｔ（ｉ）を、記憶部１６０の第二指示軌道テーブル１６２に格納する。
【０２１８】
第二逆運動学演算部１５０は、「順運動学軌道ＦＫｔ（中間軌道）と、第二逆運動学軌道ＩＫｔとの合成軌道が、目標軌道Ｔｔに一致する」ようにして、目標軌道Ｔｔと順運動学軌道ＦＫｔとの誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成する。第二逆運動学演算部１５０は、「中間軌道と、第二逆運動学軌道ＩＫｔとの合成軌道が、目標軌道Ｔｔに一致する」ようにして、第一逆運動学軌道ＳＰと中間軌道との誤差に対応する軌道を含む第二逆運動学軌道ＩＫｔを生成してもよい。第二逆運動学演算部１５０は、「第二サーボ制御系３０についての指令軌道」として、ゼロ位相フィルタ部１３１により第一逆運動学軌道ＳＰ（ｉ）から除去された高周波成分に対応する軌道を含む第二逆運動学軌道ＩＫｔ（第二指令軌道）を生成する。
【０２１９】
コントローラ１３は、ＭＰＣ位置補正制御により、低速サーボシステムおよび高速サーボシステムの各々への補正後指令値を計算し、計算した補正後指令値を低速サーボシステムおよび高速サーボシステムの各々に出力する（Ｓ４７０）。具体的には、ＭＰＣ指令部１７４は、第一指令値Ｐｃ（ｉ）と第二指令値Ｓｃ（ｉ）との各々を、第一サーボ制御系２０および第二サーボ制御系３０の動特性モデルを用いたＭＰＣにより補正し、補正した第一指令値Ｐｃ（ｉ）と第二指令値Ｓｃ（ｉ）とを出力する。
【０２２０】
第一ＭＰＣ位置指令部１７１は、第一指示軌道テーブル１６１に格納されている補正後軌道ＳＰｆ（ｉ）から第一サーボ制御系２０に対する制御周期ごとに生成される第一指令値Ｐｃ（ｉ）を、第一サーボ制御系２０の動特性モデルを用いたＭＰＣにより補正する。そして、第一ＭＰＣ位置指令部１７１は、補正した第一指令値Ｐｃ（ｉ）を第一サーボ制御系２０に出力する。
【０２２１】
第二ＭＰＣ位置指令部１７５は、第二指示軌道テーブル１６２に格納されている第二逆運動学軌道ＩＫｔ（ｉ）から第二サーボ制御系３０に対する制御周期ごとに生成される第二指令値Ｓｃ（ｉ）を、第二サーボ制御系３０の動特性モデルを用いたＭＰＣにより補正する。そして、第二ＭＰＣ位置指令部１７５は、補正した第二指令値Ｓｃ（ｉ）を第二サーボ制御系３０に出力する。そして、コントローラ１３は、軌道終点に到達したかを判定しながら（Ｓ４８０）、制御周期ごとに、Ｓ４５０〜Ｓ４７０の処理を、または、Ｓ４７０の処理を、繰り返す。具体的には、コントローラ１３は、「Ｓ４５０〜Ｓ４７０の処理、または、Ｓ４７０の処理」のうち、「第一サーボ制御系２０のみに係る処理」を、軌道終点に到達したかを判定しながら（Ｓ４８０）、第一サーボ制御系２０に対する制御周期で繰り返し実行する。また、コントローラ１３は、「Ｓ４５０〜Ｓ４７０の処理、または、Ｓ４７０の処理」のうち、「第一サーボ制御系２０のみに係る処理」以外の処理（例えば、第二サーボ制御系３０に係る処理）を、軌道終点に到達したかを判定しながら（Ｓ４８０）、第二サーボ制御系３０に対する制御周期で繰り返し実行する。
【０２２２】
（ゼロ位相フィルタ処理について）
ここで、ゼロ位相フィルタ部１３１が行うゼロ位相フィルタ処理（ゼロ位相フィルタリング）について、詳細を説明しておく。前述の通り、ゼロ位相フィルタ部１３１は、第一逆運動学軌道ＳＰ（ｉ）に対し、時間軸の逆方向から順方向の順に（つまり時間軸について逆方向（逆順）に）、ローパスフィルタ処理を行なって、補正後軌道ＳＰｆ（ｉ）を生成する。
【０２２３】
ゼロ位相フィルタ部１３１は、予め、１次遅れフィルタ計算の係数を求めておく。具体的には、ゼロ位相フィルタ部１３１は、予め、「ａ＝Ｔｓ／（Ｔ＋Ｔｓ）」および「ｂ＝Ｔ／（Ｔ＋Ｔｓ）」を求めておく。ここで、Ｔｓはサンプリング周期であり、Ｔはフィルタ時定数である。
【０２２４】
ゼロ位相フィルタ部１３１は、第一逆運動学軌道ＳＰ（ｉ）について時間軸を逆転させた、仮の軌道データＳＰr（ｉ）を作成し、「ＳＰr（ｉ）＝ＳＰ（ｎ−ｉ）」を求める。ゼロ位相フィルタ部１３１は、フィルタリング計算（ローパスフィルタ処理）の１回目（時間軸の逆方向）を実行し、すなわち、「ＳＰｆｒ（ｉ）＝ａ×ＳＰr（ｉ）＋ｂ×ＳＰr（ｉ−１）」を求める。ただし、「ＳＰr（−１）＝ＳＰr（０）」とする。
【０２２５】
ゼロ位相フィルタ部１３１は、時間軸を再度逆転させて元に戻し、すなわち、「ＳＰｆｎ（ｉ）＝ＳＰｆｒ（ｎ−ｉ）」を求める。ゼロ位相フィルタ部１３１は、フィルタリング計算２回目（順方向）を実行して、ゼロ位相フィルリング後の補正後軌道ＳＰｆ（ｉ）を求める。すなわち、ゼロ位相フィルタ部１３１は、「ＳＰｆ（ｉ）＝ａ×ＳＰｆｎ（ｉ）＋ｂ×ＳＰｆｎ（ｉ−１）」を求める。ただし、「ＳＰｆｎ（−１）＝ＳＰ（０）」とする。ここで、「ＳＰｆｎ（−１）＝ＳＰｆｎ（０）」ではなく、「ＳＰｆｎ（−１）＝ＳＰ（０）」とすることにより、ゼロ位相フィルタ部１３１は、スタート時のＳＰに飛びが生じないようにすることができる。
【０２２６】
ゼロ位相フィルタ部１３１が、時間軸の逆順にゼロ位相フィルタ処理を行なう（つまり、ローパスフィルタ処理を時間軸の逆方向から順方向への１往復行なう）ことにより、スタート時のデータ飛びの発生を防ぐ点について、図２０を用いて説明する。
【０２２７】
（高周波成分の除去方法について）
図２０は、第一逆運動学軌道ＳＰ（ｉ）から高周波成分の除去する方法に応じて補正後軌道ＳＰｆ（ｉ）に発生する位相遅延およびデータ飛びについて説明する図である。図２０において、縦軸は位置、横軸は時間（ｔ）であり、図２０の（Ａ）、（Ｂ）、（Ｃ）の各々について、上段のスタート時点（ｔ＝０）付近を拡大して示すのが下段の図である。図２０の（Ａ）は、第一逆運動学軌道ＳＰ（ｉ）に通常のローパスフィルタ処理（ローパスフィルタリング）を行なった時の、第一逆運動学軌道ＳＰ（ｉ）および補正後軌道ＳＰｆ（ｉ）を示している。図２０の（Ａ）において、ローパスフィルタ特性は、カットオフ周波数１０Ｈｚの４次バターワース型である。図２０の（Ｂ）は、第一逆運動学軌道ＳＰ（ｉ）にローパスフィルタ処理を時間軸の順方向から逆方向への１往復実行した時の、第一逆運動学軌道ＳＰ（ｉ）および補正後軌道ＳＰｆ（ｉ）を示している。図２０の（Ｃ）は、第一逆運動学軌道ＳＰ（ｉ）にローパスフィルタ処理を時間軸の逆方向から順方向への１往復実行した時の、第一逆運動学軌道ＳＰ（ｉ）および補正後軌道ＳＰｆ（ｉ）を示している。図２０の（Ｂ）および（Ｃ）において、ゼロ位相フィルタのフィルタ特性は、カットオフ周波数１０Ｈｚの２次バターワース型である。
【０２２８】
図２０の（Ａ）に示すように、通常のローパスフィルタ処理（フィルタリング処理）を行った場合、このフィルタリング処理により、補正後軌道ＳＰｆ（ｉ）について、第一逆運動学軌道ＳＰ（ｉ）からの位相遅れが発生している。
【０２２９】
これに対し、図２０の（Ｂ）および（Ｃ）に示すように、ゼロ位相フィルタ処理を実行することで、言い換えれば、「フィルタリング処理を時間軸の順方向と逆方向との両方向に１回ずつ計２回実行する（１往復実行する）」ことで、位相遅れを除去できる。
【０２３０】
ただし、「フィルタリング処理を時間軸の順方向から逆方向への１往復実行した（つまり、フィルタリング処理を時間軸の順方向から逆方向の順に実行した）」場合、図２０の（Ｂ）に示されているように、スタート時点（ｔ＝０）でデータ飛びが発生する。
【０２３１】
そこで、ゼロ位相フィルタ処理を「時間軸の逆方向から順方向へ」の順で実行することにより、言い換えれば「フィルタリング処理を、時間軸の逆方向から順方向への１往復実行する」ことにより、スタート時点でのデータ飛びを回避することができる。図２０の（Ｃ）において、ゼロ位相フィルタ処理を「時間軸の逆方向から順方向へ」の順で実行することにより、スタート時点（ｔ＝０）でのデータ飛びを回避することができている。
【０２３２】
（コントローラが奏する効果について）
図２１は、図４に示す制御テストについて、コントローラ１３によって制御された第一アクチュエータ２２および第二アクチュエータ３２の各々の位置、位置偏差、モデル予測誤差、およびトルクの変化を示す図である。図２１の（Ａ）には、上から順に、コントローラ１３によって制御された第一アクチュエータ２２の位置、位置偏差、モデル予測誤差、およびトルクの変化が示されている。図２１の（Ｂ）には、上から順に、コントローラ１３によって制御された第二アクチュエータ３２の位置、位置偏差、モデル予測誤差、およびトルクの変化が示されている。図２１に示す各図において、横軸はいずれも時間（ｔ）である。
【０２３３】
図２２は、図４に示す制御テストについて、コントローラ１３によって制御された第一アクチュエータ２２および第二アクチュエータ３２の合計の位置（図２２の（Ａ））および位置偏差（図２２の（Ｂ））の変化を示す図である。図２２に示す各図において、横軸はいずれも時間（ｔ）である。なお、図２２の（Ａ）において、指令値と低速高速合成制御量（第一アクチュエータ２２の制御量の実測値と、第二アクチュエータ３２の制御量の実測値と、を合計（合成）した値）とは、ほぼ重なっている。
【０２３４】
コントローラ１３は、第一逆運動学軌道ＳＰ（ｉ）に、「時間軸の逆方向から順方向へ」の順にローパスフィルタを一往復実行して、「第一サーボ制御系２０についての指令軌道」を生成する。つまり、コントローラ１３は、第一逆運動学軌道ＳＰ（ｉ）に、「時間軸の逆方向から順方向へ」の順にゼロ位相フィルタ処理を実行して、「第一サーボ制御系２０についての指令軌道」を生成する。コントローラ１３の用いたローパスフィルタのローパスフィルタ特性は、カットオフ周波数１０Ｈｚの２次バターワース型である。コントローラ１３は、さらに、第一サーボ制御系２０および第二サーボ制御系３０の動特性モデルを用いたＭＰＣにより第一指令値Ｐｃ（ｉ）と第二指令値Ｓｃ（ｉ）との各々を補正し、追従性能を向上させている。
【０２３５】
図２１の（Ｂ）と図５の（Ｂ）とを比較すれば分かるように、コントローラ１３は、コントローラ１０に比べて、高速アクチュエータ（第二アクチュエータ３２）の動作範囲を抑制することができている。
【０２３６】
〔補足〕
図６の（Ｂ）および図１６の（Ｂ）に示す第一アクチュエータ２２および第二アクチュエータ３２の合計（総合）のピーク偏差（追従精度）が、０．２ｍｍ強にまでしか低減できていない要因として、以下の点を挙げることができる。すなわち、制御偏差をコントローラ１０およびコントローラ１２で評価していることが原因となって、「ピーク偏差（追従精度）が、０．２ｍｍ強にまでしか低減できていない」。
【０２３７】
言い換えれば、「ピーク偏差（追従精度）が、０．２ｍｍ強にまでしか低減できていない」ことの原因は、以下の２点にある。すなわち、第一に、コントローラ１０およびコントローラ１２から「第一サーボ制御系２０および第二サーボ制御系３０」への指令位置の伝送に要する時間が原因となって、「ピーク偏差（追従精度）が、０．２ｍｍ強にまでしか低減できていない」。また、第二に、「第一サーボ制御系２０および第二サーボ制御系３０」からコントローラ１０およびコントローラ１２へのフィードバック位置（実測位置）の伝送に要する時間が原因となって、「ピーク偏差（追従精度）が、０．２ｍｍ強にまでしか低減できていない」。
【０２３８】
したがって、高速側（つまり、第二サーボ制御系３０）の、上記第１および上記第２の伝送に要する時間を短縮できる場合、図６の（Ｂ）および図１６の（Ｂ）に示す合計（総合）のピーク偏差（追従精度）をさらに低減できる。その場合、図６の（Ｂ）および図１６の（Ｂ）に示す合計（総合）のピーク偏差（追従精度）について、図１１の（Ｂ）に示す合計（総合）のピーク偏差（追従精度）との差は小さくなる。
【０２３９】
コントローラ１１および１３の各々は、第二サーボ制御系３０（高速サーボシステム）にＭＰＣを適用することによって、コントローラ１１および１３の各々と、第二サーボ制御系３０との間の伝送遅れを補償することができる。そのため、図１１（Ｂ）および図２２（Ｂ）に示す合計（総合）のピーク偏差は、小さくなっている。
【０２４０】
〔変形例〕
こでまで、コントローラ１０、１１、１２、および１３が第一サーボ制御系２０および第二サーボ制御系３０という２つのサーボ制御系を協調制御する例について説明してきた。しかしながら、コントローラ１０、１１、１２、および１３が協調制御するサーボ制御系が２つであることは必須ではない。コントローラ１０、１１、１２、および１３は、複数のサーボ制御系の各々に、目標軌道Ｔｔを用いて生成した指令値を出力して、前記複数のサーボ制御系を協調制御できればよい。
【０２４１】
〔ソフトウェアによる実現例〕
コントローラ１０、１１、１２、および１３の制御ブロック（特に、目標軌道取得部１１０、第一逆運動学演算部１２０、ローパスフィルタ部１３０、ゼロ位相フィルタ部１３１、順運動学演算部１４０、第二逆運動学演算部１５０、ＭＰＣ指令部１７０、第一ＭＰＣ位置指令部１７１、第一応答予測部１７２、位置指令部１７３、第二ＭＰＣ位置指令部１７５、第二応答予測部１７６、指示部１８０、第一指示部１８１、第二指示部１８２、および、応答予測部１９０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ソフトウェアによって実現してもよい。
【０２４２】
後者の場合、コントローラ１０、１１、１２、および１３は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば１つ以上のプロセッサを備えていると共に、上記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記プロセッサとしては、例えばＣＰＵ（Central Processing Unit）を用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ＲＯＭ（Read Only Memory）等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムを展開するＲＡＭ（Random Access Memory）などをさらに備えていてもよい。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０２４３】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０２４４】
１０      コントローラ（制御装置）
１１      コントローラ（制御装置）
１２      コントローラ（制御装置）
１３      コントローラ（制御装置）
２０      第一サーボ制御系
３０      第二サーボ制御系
１５０    第二逆運動学演算部（生成部）
１７２    第一応答予測部（予測部）
１７１    第一ＭＰＣ位置指令部（生成部）
１９０    応答予測部（予測部）
ＦＫｔ    順運動学軌道（中間軌道）
ＩＫｔ    第二逆運動学軌道（第二指令軌道）
Ｐｃ      第一指令値
ＳＰ      第一逆運動学軌道（基準軌道）
ＳＰｆ    補正後軌道（第一指令軌道）
Ｓ１７０  予測ステップ、生成ステップ
Ｓ３４０  予測ステップ
Ｓ３７０  生成ステップ
【図１】
2019021087.tif 000004
【図２】
2019021087.tif 000005
【図３】
2019021087.tif 000006
【図４】
2019021087.tif 000007
【図５】
2019021087.tif 000008
【図６】
2019021087.tif 000009
【図７】
2019021087.tif 000010
【図８】
2019021087.tif 000011
【図９】
2019021087.tif 000012
【図１０】
2019021087.tif 000013
【図１１】
2019021087.tif 000014
【図１２】
2019021087.tif 000015
【図１３】
2019021087.tif 000016
【図１４】
2019021087.tif 000017
【図１５】
2019021087.tif 000018
【図１６】
2019021087.tif 000019
【図１７】
2019021087.tif 000020
【図１８】
2019021087.tif 000021
【図１９】
2019021087.tif 000022
【図２０】
2019021087.tif 000023
【図２１】
2019021087.tif 000024
【図２２】
2019021087.tif 000025
【図２３】
2019021087.tif 000026
【図２４】
2019021087.tif 000027