概要
- 倒立振子デモの実行と概要
まず、あるものでてっとり早く遊んでみます。
- 運動方程式の導出
デモのなかで記述されている運動方程式が、実際に倒立振子のものであることを確認します。
- 運動方程式の変更
その運動方程式では振子の慣性モーメントが無視されていて現実性に欠けるので、慣性モーメントを考慮するように運動方程式を変更してシミュレーションします。
ここまでは、以降の作業の準備です。
以降では、倒立振子を立てる補償器を、0 から作ります。
今回の演習で採用する補償器は、状態フィードバック補償器です。
この補償器は、制御対象の状態が全て観測できる場合に採用される補償器で、
制御対象の状態(ベクトル)に定数行列をかけたものを制御入力とするという、簡単な構造の補償器となっています。
式で書くとつぎのようになります:
f = F z
ただし、f は制御入力、F は定数行列(状態フィードバックゲインと呼ぶ)、
z は制御対象の状態です。
- 状態フィードバック制御系の構成
倒立振子の場合、z は、台車の位置および振子の角度と、それらの微分値をまとめたベクトルです。
デモでは、台車の位置と振子の角度のみ出力され、微分値は出力されないので、
これを変更して微分値も出力されるようにします。
さらに、z に定数行列 F をかけたものを台車に加える力としてフィードバックするように、ブロック線図を変更します。
- 線形モデル(状態方程式)の導出
あとは、F を適切に設定すれば、振子をすばやく倒立させることができます。
あてずっぽうで F を調整するのは至難の技なので、
ここでは極配置法という方法を使って、F を求めます。
ただし、そのためには、制御対象の線形モデルが必要となります。
すなわち、
(d/dt) z = A z + B f
と表現したときの、定数行列 A と B の情報が必要です。
上式は、z に関して線形の微分方程式となっていることに注意してください
(z の 2 乗項や sin, cos 等の非線形項が入っていない)。
ところが、倒立振子の運動方程式には、非線形項が入っているので、
まず、線形化を行う必要があります。
極配置による状態フィードバックゲインの決定
線形モデルの係数行列 A, B が求まれば、あとは閉ループの極を指定すると、
自動的に対応する状態フィードバックゲインが求まります。
閉ループ極と時間応答の関連
両者の間には、厳密ではないが直観的にとらえることが可能な関係があります。
その関係を使って、多少の試行錯誤を行い、望ましい時間応答が得られるように
閉ループ極の配置を調整します。