運用 MathWorks® 模型預測控制工具箱實現 Qube-Servo 3 倒單擺平衡控制
- 錫昌科教
- 8月18日
- 讀畢需時 5 分鐘
模型預測控制(Model Predictive Control, MPC)發展已久,近年在自動駕駛車輛的車道維持等任務中找到了全新應用。同樣地,MPC 過去主要用於製程控制工業中具備慢動態(slow dynamics)特性的受控對象,現在也可應用於高動態、高響應的運動控制情境,例如倒單擺的平衡控制。本文將展示如何結合 The MathWorks® 的 Model Predictive Control Toolbox™ 與 Simulink®,為 Qube-Servo 3 系統開發 MPC 平衡控制器。
將模型預測控制 (MPC) 應用於 Qube-Servo 3
如下圖所示,Quanser Qube-Servo 3 攜帶式旋轉倒單擺可配置為直流馬達或倒單擺系統,廣泛應用於控制系統的教學與研究。在隨附的教材中,我們深入探討了如何設計狀態回授控制器(例如使用線性二次調節器 LQR)來實現單擺平衡。狀態回授控制遵循基於模型的設計方法,且具備優異效能。然而,它並未考量未建模的不確定性與外在干擾(例如編碼器訊號線的影響)。若模型無法精準代表實際系統,控制器的表現便可能不如預期。

MathWorks® Model Predictive Control Toolbox 使設計與實現 MPC 控制器變得相當簡便。MPC 設計的第一步是定義各項輸入與輸出訊號及其邊界限制。圖 2 展示了 MPC 控制器中所使用的受控對象模型訊號。使用者仍需具備代表性的系統模型,但由於 MPC 的自適應特性,控制設計的需求相對降低,且更能補償參數不確定性與外在干擾帶來的影響。

Qube-Servo 3 之 MPC 設計
取樣時間(Sample Time)、預測時域(Prediction Horizon)與控制時域(Control Horizon)是建立 MPC 時的核心參數。預測與控制時域必須根據應用所需的取樣時間進行調整。詳細設計指引請參閱「選擇取樣時間與時域(Choose Sample Time and Horizons)」。
實現 Qube-Servo 3 倒單擺的平衡控制,通常需要至少 200 Hz 的執行頻率以維持良好效能。在標準的狀態回授控制中,通常採用 500 Hz 的取樣率以獲得更佳的控制效果。但在 MPC 中,使用更高的取樣率意味著需要更長的預測時間,從而大幅增加運算負擔。設計指引T ~ NpTs(其中T為預期閉迴路響應時間,Ts 為取樣間隔)提供了一個良好的設計起點。若期望獲得 0.25 秒的閉迴路響應,則預測時域大約需設定為 Np = 125。此設定可作為初始值,隨後在閉迴路模擬中進行微調,以達到目標響應並確保運算量在可接受範圍內:
Ts = 0.002; % 取樣間隔 (s)
Np = 150; % 預測時域
Nc = 2; % 控制時域
qube_ip_mpc = mpc(rotpen_ss, Ts, Np, Nc); % MPC 控制器
Qube-Servo 3 的控制輸入(即操縱變數,MV)為馬達電壓,功率放大器的建議最大輸出為 ±10V。量測輸出(MO)則為旋轉臂與倒單擺角度。在平衡模式下,假設控制指令維持在合理區間且系統未失去控制,旋轉臂通常不會超過 ±60度。平衡控制僅在單擺位於垂直向上 ±10 度範圍內時才會啟動。基於上述條件,我們可以針對操縱變數(MV)與量測輸出(MO)設定以下最小/最大限制及縮放因子:
% 控制輸入最小值/最大值(V)
u_max = 10;
u_min = -10;
% 旋轉臂角度最小值/最大值(rad)
theta_min = -60*pi/180;
theta_max = 60*pi/180;
% 最小/最大 倒單擺擺角(rad)
alpha_min = -10*pi/180;
alpha_max = 10*pi/180;
指定輸入與輸出的比例因子
qube_ip_mpc.ManipulatedVariables.ScaleFactor = u_max-u_min;
qube_ip_mpc.OutputVariables(1).ScaleFactor = theta_max-theta_min; qube_ip_mpc.OutputVariables(2).ScaleFactor = alpha_max-alpha_min;
設定操縱變數(馬達輸入)的最大/最小值
qube_ip_mpc.ManipulatedVariables.Min = u_min;
qube_ip_mpc.ManipulatedVariables.Max = u_max;
操縱變數與輸出變數的權重通常是微調控制效能的關鍵,這是一個透過閉迴路模擬反覆進行的優化過程。經過數次疊代後,最終確定使用以下權重:
qube_ip_mpc.Weights.ManipulatedVariables = 0;
qube_ip_mpc.Weights.ManipulatedVariablesRate = 0.1;
qube_ip_mpc.Weights.OutputVariables = [10 5];
輸出變數權重自 [1 0] 進行了調整。第一個權重影響旋轉臂,調整至 10 以獲得更佳的目標追蹤能力;第二個權重與單擺相關,提高該值可大幅降低偏擺幅度。
註:在此範例中,若對輸出變數加入最小/最大限制,會導致 MPC 建構過程極為緩慢。針對此應用,最佳做法是先從較少的限制條件開始,再進行模擬測試。
模型預測控制–執行模擬
Quanser Qube-Servo 3 系統提供完整的檔案,包含學生與教師教材,以及用於設計與模擬基於 LQR 狀態回授平衡控制的 Simulink® 模型和 MATLAB 腳本。上述設計的 MPC 控制器是透過 Model Predictive Control Toolbox™ 中的 MPC Controller 模組實現。隨附的狀態回授 Simulink® 模型已進行修改,加入 MPC Controller 模組,如下圖所示:

此 Simulink 架構圖包含 Qube-Servo 3 倒單擺的非線性模型,以取得更接近真實系統的響應。當單擺自偏離垂直平衡位置 9 度啟動時,旋轉臂與單擺的響應顯示於 Rotary Arm (deg) 與 Inverted Pendulum (deg) 示波器中;施加於馬達的電壓則顯示於 Vm (V) 示波器。



模型預測控制–於虛擬系統上執行
QLabs Virtual Qube-Servo 3 系統包含 Qube-Servo 3 的高擬真非線性動態模型,整合了摩擦力、硬體極限、感測器雜訊等傳統模型未考慮的物理特性。如同模擬階段,我們透過 Model Predictive Control Toolbox™ 中的 MPC Controller 模組,將上述設計的 MPC 部署至虛擬實驗中。此處使用了 Enabled Subsystem 模組,僅在單擺進入垂直向上約±10度範圍時才啟動 MPC 控制器。這能確保內建的卡爾曼濾波器(Kalman filter)精準估算系統狀態;否則估算過程將耗時過長,導致無法順利實現單擺平衡(即系統失去控制)。

下方的示波器顯示了當單擺自下方向上抬升並於虛擬 Qube-Servo 3 上啟動平衡控制時的響應。



該響應與模擬結果略有不同。在虛擬系統中,可觀察到響應包含些許高頻成分,這主要歸因於虛擬系統中納入了編碼器量子化 (quantization) 的物理效應。
模型預測控制–於硬體上執行
下方的 Simulink 模型將設計好的 MPC 控制器部署於 Quanser Qube-Servo 3 硬體上。如同在虛擬受控對象中的設定,MPC 控制同樣透過 Model Predictive Control Toolbox™ 的 MPC Controller 模組實現。硬體介面連接與即時程式碼部署則是透過 QUARC即時控制軟體完成。

下圖展示了透過 QUARC 在硬體上執行 MPC 時的代表性響應,其趨勢與虛擬孿生系統高度吻合。



未來展望
模型預測控制(MPC)可應用於多種不同的系統中,且 MPC 控制器本身亦有許多衍生架構。針對 Qube-Servo 3 倒單擺,我們設計並實現了標準的隱式 MPC 控制(implicit MPC)。未來計畫進一步探索 Simulink® Model Predictive Control Toolbox™ 中提供的其他 MPC 類型。目前已在進行的應用之一,即是利用非線性 MPC(Nonlinear MPC)來執行單擺的起擺(swing-up)控制,非線性 MPC 允許直接利用非線性模型完成此類複雜任務。
相關資源
請造訪 MathWorks 網站,以了解有關模型預測控制工具箱的更多資訊:
MathWorks® 模型預測控制工具箱™ 產品頁面:
選擇採樣時間和採樣範圍:
提升模型預測控制器速度的三種方法:
本文轉載自 Quanser 原廠網站,作者 Michel Levis,QUANSER 客戶成功經理



留言