[[制御]] *概要 [#gaed9835] -周波数応答に着目した制御理論 -多変数が扱えないのでロボットの実運用にはほとんど役に立たない!!! --入出力が一変数で周波数応答と安定余裕解析を知りたい時にしか使えないので、僕は使ったことがない *参考 [#a6484208] -[[octaveスクリプト>http://www2.hwe.oita-u.ac.jp/kikuchilab/Class/ModernControl/HowTouseOctave3.pdf]] -制御工学演習 -https://controlabo.com/ --不要な数学を排除しているのでとてもわかりやすい *目次 [#p19e75e5] #contents *疑問 [#c55ec7bb] -根軌跡法 -なんで-180度はやばくて,-179度はOKなの? *メンタルモデル [#x8b4ca94] -古典制御理論は、一変数一入力の入出力をラプラス変換で特徴づけたときに安定性を議論する理論です。 -ラプラス変換 --複素数に一般化された周波数応答を考えることで、微分方程式を掛け算で解けるようにする --微分方程式を掛け算と部分分数分解で解ける https://controlabo.com/transfer-function/#toc3 --簡単にシステムを結合できる。 https://controlabo.com/transfer-function/#toc3 --簡単に周波数解析ができる。実際 s = iω と入力するとフーリエ変換になって、特定の周波数がどれくらい大きくなるかなどがわかる。 https://controlabo.com/transfer-function/#toc3 -伝達関数 --Y = GX としたときの G --X(s), Y(s) は両方とも時系列を表す(ラプラス変換されているので周波数空間だけど) --超重要: s=iωを代入する⇔x = sin(ωt) を入力した時に、y = |G(s)| sin(ω(t-arg(G(iω))) が出力される ---つまり、G は 周波数ωのsin関数を入力すると、|G(iω)|倍に増幅されて、arg(G(iω)) だけ位相が遅れる(=グラフが右に移動する) --gain(G): ω -> log |G(iω)|, phase(G): arg(G(iω)) のグラフがボード線図と呼ばれる。 ---gain = log(増幅率) ---伝達関数 G, H があった時、gain(GH) = gain(G) + gain(H), phase(GH) = phase(G) + phase(H) ---伝達関数 G, H があった時、gain(N/D) = -gain(D/N), phase(N/D) = -phase(D/N) --動作範囲での gain は減衰せず phase は遅れず、高周波での gain は高周波ノイズ対策のためなるべく小さく、超低周波での gain は低周波ノイズ対策のためはフィードバック制御によって定常特性を改善させ影響を抑制 -制御システムでよく出る伝達関数 (R = 目標値, E = 誤差 = R - Y^、U = 入力, Y = 出力, Y^ = 観測量) https://controlabo.com/open-loop-closed-loop/ --制御器 U = C E : 人間が設計する --制御対象 Y = G U : 実世界に存在する --検出器 Y^ = H Y : センサ特性。例えば距離センサから物体までの距離を測る時、内部の電気応答などから実際の距離とセンサリングされた距離には乖離があることがある。このようなセンサ特性をモデル化できる。 --閉ループ伝達関数:目標値rから出力yまでの伝達関数 --開ループ伝達関数:誤差eから出力yまでの伝達関数 --一巡伝達関数 :誤差eから観測量y^までの伝達関数(通常検出器はモデル化しないことが多いので、開ループ伝達関数=一巡伝達関数となることが実用上多い) ---少なくとも一巡伝達関数が不安定だと発散するのでシステムは不安定 ---閉ループ伝達関数の極を見るのはめんどうくさいが(現代では面倒ではない)、「一巡伝達関数の不安定極数と、一巡伝達関数のナイキスト線図の回転数」から、閉ループ伝達関数が安定かを判定できる(ナイキストの安定判別法)。この方法は現代では意味がないように思えるが、実は安定余裕がわかるのでナイキスト線図自体は意味がある。 -gain, phase の設計: 閉ループ伝達関数 --リマインダ: 目標値 -> 出力の伝達関数 --理想: gain = 0, phase = 0 が望ましい (リマインダ: gain = log(増幅率) なので 増幅率が 1 が望ましいということ) --現実的には動作周波数ではそうなっていて、それより高周波はノイズなので可能なら減衰・遅れが発生してもいいって感じ(むしろノイズは減衰すべきかも) -内部安定 https://controlabo.com/internal-stability/ --システムに加わるすべての入力信号 (R, D) に対して、システム内のすべての信号 (E, U, Y) が発散しないならば、そのシステムは内部安定であるという --閉ループ伝達関数が安定ならば内部安定、ではない!!! ---U^ = U + D (D は外乱) が制御対象に入力されることに注意。D から Y への経路が発散するのも良くない(目標値では制御不能な外乱で制御対象や Y が不安定になるので) ---Y 以外にも、U, E が発散することもあるので。例えば入力 U が発散したら無限のエネルギーを求められてしまう --内部安定でなければ、システムは使い物にならない --不安定な極零相殺がなく、かつ閉ループ伝達関数が安定であれば、そのシステムは内部安定である --不安定な極零相殺があるならば、そのシステムは内部安定でない ---例: 制御機が (s-1)/s, 制御対象が 1/(s-1) の時、入力にステップ応答の入力 U とステップ応答の外乱 d が加わると、(真面目に計算しないとわからないが)U が安定して E, Y が発散する。 -ナイキスト図: 開ループ伝達関数CPに対し C(iω)P(iω) のω: 0->∞の軌跡(と、それをIm軸でひっくり返したもの) --リマインダ: 開ループ伝達関数は誤差 E から出力 R までの伝達関数 ---C(iω)P(iω): E が周波数ωのsinの時、信号が|CP|倍されarg(CP)だけ遅れる。軌跡はそれぞれのωでどれくらいの増幅率・位相になるかを表している(ボード線図 2 つを使って絶対値・偏角の形で二次元にしただけ) --お気持ち: E = R - Y なので、E に sin ωt を入力して、その周波数 ω で E, R の間の位相遅れが180度になる場合、 ---Rの増幅率が 1 なので R = -sin ωt となる。単純に R = 0, D = 0と仮定すると、E = R - Y から、時系列でずっと E = sin ωt を維持することになる。 ---Rの増幅率が 1 以上だと、徐々に E, R が逆位相を保ったまま増幅していく ---Rの増幅率が 1 未満だと、徐々に E, R が逆位相を保ったまま減衰していく(←これが健康で、-180度の偏角で (0, -1) より向こう側を通ってほしくない) --事実: 開ループ伝達関数は実用上ほぼ不安定極を持たない。 --数学的事実: 厳密にプロパーなシステムのベクトル軌跡は必ず実軸からスタートし、原点に収束する(証明略、信じてください) --数学的事実: 開ループ伝達関数が不安定極を持たないならば、ナイキスト図が (-1, 0) を囲わないならば内部安定!(証明略、信じてください) --となると、数式の誤差でナイキスト図が (-1, 0) を囲ってしまわないような余裕が知りたい ---ゲイン余裕:位相そのままでゲインをあと何倍すると軌跡が点(-1,0)に触れるか (CP を k 倍すると、ナイキスト図の軌跡もそのまま k 倍拡大される) ---位相余裕:ゲインそのままで位相があと何度遅れると軌跡が点(-1,0)に触れるか (CP を回転させて (-1, 0) にぶつかるまでの角度) -gain, phase の設計: 開ループ伝達関数 --リマインダ: 誤差 -> 出力の伝達関数 --理想: 低周波ゲインが高く、高周波ゲインが低く、gain = 0 のときにゲインの傾きが小さい(最小位相系=全零点・極が安定ならば、余裕位相=gain = 1 での phase が増えるので) --TODO: 開ループ伝達関数ってどういう意味を持っているの?これは R を sin で動かした時、Y も同様に三角関数で振動して、e は 0 に近い三角関数で振動することになる。すると、E から Y へのゲインってめっちゃ高くなるのでは?(e はほぼ 0 になることが期待されているが y は普通に変動するので) --開ループ伝達関数は gain = 0 となるような場所では gain はなだらかにしたほうがよい -プロパー https://controlabo.com/proper-system/ --F/G において、dim(F)<dim(G) なら真にプロパー、dim(F)<=dim(G)ならプロパー --現実世界のシステムは概ね真にプロパー --プロパーでないと、sが式に残ることになって未来の情報を欲しているのでどうしても近似せざるをえないので、そのシステムを厳密には実現できない、というのがよくある説明(だがよくわからない) ---自分が設計した制御器がプロパーかは考えたほうがいい ---直感的には D ゲイン s は確かに 5 ms 前の値と比較して差分など、近似をしているがなぜプロパーなシステムなら厳密に表現できるといえるのかはよくわからない) ---実際のところは、プロパーでない制御器も微分要素を「厳密でないけどほぼ微分な要素」に置き換えることで、むりやり実現できる場合が多いです。電気信号を微分する微分回路や、微分をプログラムで近似的に計算する数値微分がその代表でしょう。これらには必ず誤差が含まれるので「厳密な微分」ではないですが、実用上はそれで十分な場合がほとんど ---逆に、定数はただの比例、1/s はただの積分なので、そりゃ過去の情報や現在の情報から実現できるという言い方では納得できる。 -安定余裕 --ナイキスト線図とボード線図から安定余裕がわかる。 --安定余裕は「フィードバック制御システムが内部安定だとしたときに、それがどれくらい安定であるか」を示す指標 --安定余裕からは「数式モデルの誤差がどれほどまでなら許容されるか」が分かる --ゲイン余裕は「ゲイン何倍相当の誤差までなら許容されるか」を表す --位相余裕は「位相何度相当の誤差までなら許容されるか」を表す *単語 [#g10e3552] -上にG_1, G_2, 下にHの,フィードバック系についての定義を述べる. -閉回路伝達関数W --目標値から制御量への伝達関数.''制御屋さんが最も興味があるはずの応答'' --G_1 G_2/(1+G_1 G_2 H) -G=G_1 G_2 --K=G_1, P=G_2と表現することもある.K=ゲイン,P=プラントモデル -直結フィードバック系 --H=1(要するに制御量と目標量の次元が一致しているということ) -一巡伝達関数 --G_1 G_2 H --更にひどいことに,直結フィードバック系だと一巡伝達関数がGに一致するので,「伝達関数が一巡伝達関数Gで表されるフィードバック系」とか表現されていることがある(Q7.5).このような場合はH=1と判断する. -特性方程式 --1+GHの分子(GHで不安定零点相殺が発生する場合は、G/(1+GH)の分母が特性方程式) --これまた''勉強の際の混乱のもと'' --閉回路伝達関数の極を計算するのが面倒だから定義されただけのいらない子 --閉回路伝達関数G/(1+GH)の極は,零点相殺がないならば特性方程式1+GHの根に一致する,というただそれだけ. |ナイキスト線図|G(jω)H(jω)をωをパラメータとして複素平面に描いた図。| |根、零点|分子が0| |極|分母が0| |プロパー|分子<=分母、分子<分母は厳密にプロパー| |安定性|BIBO安定と漸近安定がある| *特性方程式の闇 [#uc028fb4] -閉回路伝達関数G/(1+GH)の極は,零点相殺がないならば特性方程式1+GHの根に一致する -特性方程式の動機 --閉回路伝達関数G/(1+GH)をきちんと計算して,その極を見れば安定性がわかる. --しかし,それが面倒くさいっていう理由だけで1+GHの根で代用しているだけ. --従って,「G/(1+GH)の極は,零点相殺がないならば1+GHの根に一致する」という言及に過ぎない.なのに特性方程式とか大層な名前が付いているのが混乱の原因 --だから不安定零点相殺があるときは1+GHの根ではダメで,原義に戻ってG/(1+GH)の極を見なければならない,というただそれだけの事. ---それでも内部安定性は失われるんだけどね *安定性判定 [#i9466ef4] **内部安定性 [#x6dd3e74] -不安定零点の相殺 --不安定零点を相殺する⇔内部不安定になる --内部安定⇔外部から加わる信号=「目標値」「操作量外乱」から、各要素の出力=「操作量」「制御量」への4 つの伝達関数がすべて安定⇔G分子*H分子+G分母*H分母が根実部が全て負⇔相殺がないかつ閉ループ特性方程式の根実部が0より小さい --確かに、目標値rと状態yの間では安定になる。しかし、ノイズdと状態yの間で不安定になったりして死ぬ。 --10.21 不安定零点の相殺があると,不可制御または不可観測になる -一般に零点の相殺 --7.17 減衰の悪い極の零点相殺では,外乱dが存在する場合,それがなかなか消滅しなかったりする --7.16 零点の相殺があると,不可制御または不可観測になる **特性方程式から直接2 [#r9888bed] -伝達関数の極実部が、すべて0より小さければ漸近安定 --G, Hのみの単純なフィードバックで、かつ、特性方程式(=1+GH)の計算途中で約分が発生しなければ、特性方程式の根実部がすべて0より小さければ漸近安定も導かれる **ナイキスト線図 [#w5d03c08] -開ループの不安定極数とナイキスト軌跡から、閉ループ不安定極数を求めることで、''内部安定性''を評価可能な手法。 --特性方程式1+PK=[1+PKの極]/[PKの極] -閉回路伝達関数の不安定極数=一巡伝達関数PKの不安定極数+ナイキスト軌跡P(iω)K(iω)が-1を時計回りに回る回数 -虚軸上の極は左に見るように回避 -単純なものに関しては[[ここ>http://www.ecei.tohoku.ac.jp/hariyama/lecture/control/control-04.pdf]]の10ページ目がわかりやすい **ボード線図 [#g4bfe4e1] -ある周波数の入力がどれくらい増幅されるかを表した図 -ボード線図の見方 --いきなり位相がずれてる=反応が遅れるんだ。ということはあんまりはやい動きをさせようとすると逆の動きをするかも --Kpをかけると何が起きる?:位相が変わらない。値を上げていくとだんだん上がったり下がったりする。 --Kiをかけると何が起きる?:位相が逆方向に動く --Kdをかけると何が起きる?:位相が進む。でも高周波だと途中から0dBより上がっているので、ノイズを増幅してしまう --時間応答だけ見てやると、ピークを見逃して悲しいので、ボード線図は必ず見る。 --つまり、状態空間から必ず伝達関数にして、ボード線図をみる!! -ボード線図の読み取り方=「安定余裕」 --ゲイン180度でゲインが1以上だと死ぬ->逆に、その時に1以下なら任意の周波数で発振はしない --0とクロス時の時に180度までがでかいとうれしい、180度より下だとやばい *離散化 [#q3519ab9] -連続離散の変換 --連続積分に相当する離散積分Discrete-time Integrator(K Ts / (z-1)), --連続微分に相当する離散微分Discrete Derivative(K(z-1)/Ts z)が存在する --実装は2_CtrlDesign->2_misc->PID_ctrlに単純な積分器と単純な微分器の原理も含んだ詳細なモデルが書かれているので参考になる。(''単純なオイラー法'') -一般には連続->離散双一次変換 --連続は左平面 --離散の場合は根は単位円に --これらの写像を行う -z変換系でできることまとめ(制御工学演習参考) --8.1 インパルス時間応答からz変換を計算 ---$Z[c]=\Sigma c[n]z^{-n}$ --8.2 プロパーなラプラス変換からz変換を計算 ---$Z[L^{-1}[C(s)]] = \Sigma \frac{C(\sigma)}{1-z^{-1}exp(T\sigma)]$の極σでの留数 --8.4, 8.11 逆z変換 ---$Z[C(z)] = \Sigma C(z)z^{n-1}$の極σでの留数 --8.12 sとzが混在するシステム図と応答計算方法 --8.18 所望のデジタルフィルタの設計と''演算図'' (プログラミングできる!) ---プロパーなz伝達関数は線形差分方程式を表すので、''演算図が計算可能。'' -BET変換を使うとsみたいなプロパーでないものでもzに変換可能らしい http://jaco.ec.t.kanazawa-u.ac.jp/edu/digi/pdf/43.pdf *BIBO安定・漸近安定の必要十分条件 [#aef12065] -2つの安定性の必要十分条件 --定理10.4 漸近安定⇔状態空間モデルのAの固有値の実部が全て負 --定理10.5 BIBO安定⇔閉回路伝達関数の極の実部が全て負 --10.25 可観測and可制御→「BIBO安定→漸近安定」 *不安定零点と可制御可観測 [#w0bfd4cd] -10.21 不安定零点相殺→不可観測もしくは不可制御となる -7.16 不安定でない零点相殺→不可観測もしくは不可制御となる *状態空間モデルと伝達関数表記 [#ued639fc] -10.10 状態空間モデル→伝達関数が計算可能 --G(s)=c^t (sI-A)^{-1} b --ここでMIMO性は.y, uがスカラと前提して捨てている. -10.11 伝達関数→状態空間モデルが計算可能 --部分分数分解による *ゲイン余裕・位相余裕 [#g1c0fd2e] -[[目標>http://ysserve.wakasato.jp/Lecture/ControlMecha1/node27.html]] --サーボ機構の場合 ゲイン余裕$12\sim 20dB$、位相余裕 $40\sim 60^{\circ}$ --プロセス制御の場合 ゲイン余裕$3dB$以上、位相余裕$20^{\circ}$以上 -ボード線図において、位相が $-180^\circ $ を通過するときのゲインの値が $0dB$ より低く、また$0dB$を通過するときの位相の値が $-180^\circ $ より小さければ安定である。 -http://alk.fam.cx/block_090.html --ゲインは,位相差が-180度になる前に,さっさと1以下まで下がって欲しい, --位相差は,ゲインが1以下になってから,-180度になってほしい -直感的な意味 --位相余裕が大きい→振動しにくい |