問題回顧:
例7.22考慮圖7.3所示的移動倒立擺。設M=2kg,m=0.1kg,l=0.5m。設計帶降維觀測器的狀態反饋系統使得倒立擺在垂直位置。

建立模型
易得,該系統狀態空間模型為:
其中,\(x1= θ\) 是擺桿與垂直位置的夾角;\(x3\) 是小車的位移;\(x2=\dot θ\)表示擺桿的角速率,\(x4\) 表示小車的平移速度;\(F\) 是控制輸入。
代入M、m和l的值可得系統狀態空間模型
其中
計算反饋增益矩陣K
為了使系統具有較短的調節時間(取 \(t_s ≈ 2s\) )和適當的阻尼比(取 \(ξ=0.5\) ),期望閉環極點可取為
由書中算法2編寫matlab 程序
K_ba = [1600,720,211.244,24];
M = [0,-20.6,0,1; -20.6,0,1,0;0,1,0,0;1,0,0,0];
Qc = [B,A*B,A*A*B,A*A*A*B];
P = Qc*M;
K = K_ba *P^-1
計算得
計算降維觀測器反饋增益矩陣H
由狀態空間模型可以看出,需要進行觀測的狀態量為擺桿的角速率 \(x2\) 以及小車的平移速度 \(x4\) 。
取降維觀測器期望極點:
設
由
由於上述式子得到的方程組未知量個數多於方程個數,因此 取 \(h_{11} = -a、h_{12} = 1\),算得
得降維觀測器狀態空間模型:
搭建Simulink模型
- 驗證狀態反饋效果
搭建模型如下:

輸入階躍信號:

輸出結果:

由結果可知,該狀態反饋能夠使得倒立擺在2s內進入穩定區,故K滿足要求。
- 帶降維觀測器的狀態反饋控制系統結構
參照書P406頁圖7.22

在Simulink中搭建帶降維觀測器的狀態反饋控制系統結構:

同樣輸入階躍信號:

- 驗證降維狀態器
取降維觀測器期望極點為
則其反饋增益矩陣H為:
觀察結果如下圖,從上至下依次為系統狀態量 \(x\),觀測量 \(\hat x\),以及兩者之間的差值:

由差值曲線可以看出,觀測值與實際值之間的差值精度已經達到了 \(1 * 10^{-16}\),因此H的選擇是符合要求的。
- 觀察降維觀測器的狀態反饋控制輸出結果
輸出結果如下圖所示:

由上圖可以看出,在 \(t = 1s\)施加 \(F = 20N\) 的力之后,小車通過運動使得倒立擺在 2s 之后能夠穩定在垂直狀態,說明利用降維觀測器的狀態反饋控制起到了效果。
- 思考
這里主要談及整個控制過程中我理解的小車的實際運動狀況。
不妨引入一個時間寬度為 3 s 的脈沖輸入信號,如下圖所示:

此時觀察系統狀態如下圖所示:

從圖中曲線可以看出:
- 當在 t = 1s 時,對小車施加一個 F = 20N 的向前的力之后:
- 在 \(t ∈ [1, 4]\) 時間段內:
小車先是向前移動了一小段距離(紫色曲線),此時平移速度(紅色曲線)先是增加,隨后受控制器作用立刻以一個較大的反向加速度向后運動,在這個過程中倒立擺角度(黃色曲線)先是在小車前進的時候向后倒,隨后在小車后退的時候往前倒。經過這樣的2次振盪運動之后小車最終靜止在 位移 ≈ -0.05 處,其余狀態量(包括倒立擺角度及角速度、小車平移速度)趨於0.
在這個地方,前面的實驗是用的階躍信號,因此我一直沒有想明白為什么位移會穩定在一個固定的值,而不是像我之前參加智能車競賽過程中直立小車會因為為了保持前進過程中的平衡狀態而不斷往前運動(正反饋)。不過在引入脈沖信號之后我想明白了:
- 在 \(t ∈ [1, 4]\) 時間段內:
- 當在 t = 4s 時,對小車施加向前的力撤消之后:
- 在 \(t ∈ [4,6]\) 時間段內:
小車以與上述運動過程相反的動作狀態進行運動,最終回到原點(位移 = 0),其余狀態量趨於0。
- 在 \(t ∈ [4,6]\) 時間段內:
為什么會有上面的運動過程呢?我的理解是,當施加一個外力之后,在短暫的時間內,電機受控制系統控制產生的力矩低於外力,因此會先往前行進一段距離,在控制器控制力度增大后,電力力矩大於外力,小車開始后退,並使得倒立擺從向后傾覆的狀態變為向前傾覆,因此小車又需要往前運動以保證倒立擺保持垂直狀態,經過幾次調整之后,倒立擺靜止在垂直位置,但是此時外力F仍作用在小車上,也就是說,小車電機產生的平衡外力的力矩依然存在,所以小車此時的位移應該是一個不趨於0的值;當外力撤消之后,小車不再需要額外的電機力矩平衡外力,因此會往回運動,並最終保持在初始狀態,此時所有狀態量(包括位移、角度、角速度、平移速度)均趨於0。