運用 MATLAB 強化學習工具箱實現 Qube-Servo 3 旋轉倒單擺之平衡控制
- 錫昌科教
- 3月18日
- 讀畢需時 7 分鐘

結合 MATLAB 與 Quanser 頂尖設備,探索強化學習於動態控制系統的實務應用
強化學習(Reinforcement Learning, RL)是機器學習的一個子集,其核心在於處理動態數據,而不是非監督式或監督式學習處理靜態數據。強化學習已廣泛應用於多種領域,從訓練電腦程式執行特定任務到自動駕駛車輛,同時也在控制系統中扮演重要角色。
圖 1 展示了利用強化學習控制動態系統(如水箱、直流馬達或主動懸吊系統)的主要組成部分。

以下為各組成要素的簡要說明:
環境(Environment):代理(Agent)之外的一切事物。這包含受控體(Plant)以及所有其他影響,如量測雜訊、擾動、濾波等。
策略(Policy):根據來自環境的觀測值與獎勵訊號,對環境執行動作。不同的策略類似於不同類型的控制方法,例如PI、PD、PID。
強化學習演算法(Reinforcement Learning Algorithm):根據觀測值與獎勵訊號(例如隨環境變化時)來更新策略。
獎勵(Reward):強化學習 (RL) 用來判斷系統何時接近其目標或任務(例如使擺桿平衡)的函數。它類似於線性二次調節器(LQR)控制中所使用的成本函數,不同之處在於獎勵函數旨在最大化數值(而非最小化)。
觀測值(Observations):提供給強化學習 (RL) 演算法、獎勵函數與策略使用的一組量測訊號(例如直流馬達的位置與速度)。
動作(Actions):由策略決定並傳送到受控體的一組控制訊號(例如馬達電壓)。
強化學習設計流程
設計強化學習代理(Agent)的步驟可歸納如下:

此工作流程將在下一節應用於 Qube-Servo 3 倒單擺任務。
Qube-Servo 3 倒單擺強化學習設計
如下所示的 Qube-Servo 3 倒單擺系統擁有兩個編碼器,分別用來量測旋轉臂(即直流馬達角度)與單擺連結桿的位置,並在旋轉臂底部配備一個直流馬達。

下圖為用於訓練此系統強化學習 (RL) 代理 (Agent) 的 Simulink® 模型。

圖 1 中定義的主要強化學習(RL)組件(如獎勵、觀測值與環境)皆已在上述 Simulink 模型中定義。
環境
用於訓練代理(Agent)的環境是 Qube-Servo 3 系統的非線性動態模型,定義於 Simulink 的「Qube-Servo 3 Pendulum Model」模塊中。非線性模型能更精確地在更大範圍內呈現硬體動態。本應用採用基於模型的強化學習(RL)訓練方法,但也存在一些無模型(Model-free)的訓練方法,這些方法在訓練過程中利用了硬體本身的特性。。
獎勵與停止訊號
「qr reward」子系統包含獎勵與停止訊號。停止訊號用於在系統不滿足特定條件時停止訓練。當符合下列任一條件時,訓練將會停止:
旋轉臂超過 +/- 60 度,|Θ| > π/3
倒單擺角度超過 +/- 10 度,|α| > π/18
馬達電壓超過 +/- 5 V,|u| > 5
停止訊號也整合至獎勵訊號中,當上述任一情況發生時會懲罰代理 (Agent),即降低評分。加入懲罰機制可提高訓練出成功策略的機會。Qube-Servo 3 旋轉倒單擺所使用的獎勵函數為:

此二次函數會在旋轉臂保持在 0 度位置、單擺達成平衡且控制功/馬達電壓不過高時給予代理(Agent)獎勵。研究發現,基於二次函數的獎勵訊號更容易調整,並能提高訓練出成功策略的可能性。
觀測與動作訊號
對於旋轉倒單擺,共有四個觀測訊號:旋轉臂與單擺連結桿的角度位置與速度,即 [Θ, α, Θ_dot, α_dot];以及一個動作訊號:馬達電壓 Vm。
建立與訓練強化學習代理
MathWorks 的 MATLAB 強化學習工具箱™ 包含多種可用於生成策略的代理 (Agent) 類型。本應用選擇深層確定性策略梯度(DDPG)代理 (Agent),原因如下:
它可輸出一個連續的動作空間
已廣泛應用於現有的倒單擺案例
代理 (Agent) 在 MATLAB 中建立,並使用於 Simulink 模型中定義的環境、獎勵、觀測值與動作訊號。訓練則在 MATLAB 中使用 train 指令執行。「RL Agent」模塊包含由強化學習 (RL) 演算法訓練出的策略,用以控制系統。
訓練成功代理的關鍵因素
強化學習包含許多不同參數。以下是訓練出能成功平衡倒單擺代理 (Agent) 的幾個最重要面向:
重置函數(Reset function): 用於倒單擺的初始位置隨機化。這對於強化學習(RL)代理(Agent)在足夠大的範圍內實現平衡(倒立角度在垂直平衡位置 +/-10 度內)。
停止訊號(Stop signals): 用於在系統超過物理硬體限制等情況時停止訓練。停止訊號能縮短代理(Agent)的總訓練時間。
基於二次函數的獎勵訊號(包含對停止訊號的懲罰):二次函數能使尋找合適的強化學習(RL)代理(Agent)訓練候選對象變得更容易。
強化學習設計過程
設計目標如下:
在基於非線性模型的模擬中,當單擺初始位置在 +/- 10 度之間時,能實現穩定。
在 QLabs Virtual Qube-Servo 3 數位孿生中,當透過「抬起單擺」按鈕「手動」抬起擺桿時,能實現穩定。
相較於基於模型的設計,訓練強化學習(RL)代理(Agent)面臨不同的挑戰:
獎勵訊號的選擇。
設計變數眾多。
訓練時間長。
以下是訓練過程中所調整的主要設計參數:
獎勵訊號:獎勵函數中使用的二次權重。
初始擺桿角度範圍:決定重置函數隨機化倒單擺初始位置的範圍。
最終時間:模擬持續時間。在允許系統達成平衡的前提下儘可能縮短模擬時間,可減少整體訓練時程。
取樣時間:Simulink 模型(環境與代理 Agent)的取樣時間。選擇執行任務所需的最低取樣率可使訓練時間保持在合理範圍。
結果
一旦訓練出成功的代理 (Agent),就會在 Qube-Servo 3 的數位孿生體和實際的 Qube-Servo 3 硬體上,透過模擬來測試此策略平衡單擺的效果。
模擬
首先在用於訓練代理 (Agent) 的相同 Simulink 模型(如圖 3)中進行測試。如前所述,此模型使用旋轉倒單擺系統的非線性模型。當系統從距離垂直平衡位置約 -7.5 度啟動時,旋轉臂與單擺的響應顯示於示波器中,對應的馬達電壓亦同步呈現。響應顯示,單擺能迅速達成平衡(小於 0.4 秒),效果與基於 LQR 的控制相似,且控制訊號平滑,可在數位孿生與實體硬體上實現。



數位孿生
下圖所示的 Simulink 模型與 QLabs Qube-Servo 3 虛擬實驗室進行互動。此模型同樣包含 RL Agent 模塊。由於系統中的單擺與實體硬體一樣從垂懸位置開始,因此加入了一個「啟動平衡控制切換」機制,僅當單擺被抬起至垂直向上 +/- 10 度範圍內時才施加控制訊號。

下圖顯示了單擺從底部向下位置旋轉到頂部位置時的響應,代理(Agent)在進入垂直 +/- 10 度範圍時啟動。



下面的範圍圖顯示了系統處於穩態平衡模式時的響應。



以下影片展示了 QLabs Qube-Servo 3 虛擬實驗室與強化學習的結合應用:
數位孿生使用了比訓練時更具代表性的系統模型,納入了直流馬達摩擦力與訊號處理效應。因此,旋轉臂在平衡位置附近的振盪較多,這與實際硬體執行平衡控制時的行為更加一致。此測試驗證了強化學習代理(Agent)可在實際硬體上實現。
硬體
隨後,利用下列 Simulink 模型配合 Quanser QUARC 即時控制軟體,將代理(Agent)部署於硬體。

「Agent」模塊執行策略,硬體介面則透過 QUARC Targets 函式庫建立。QUARC 的 「HIL Write Analog」負責輸出電壓至直流馬達,而 「HIL Read Encoder Timebase」則透過編碼器量測旋轉臂與擺桿的角度。

實際硬體響應與數位孿生模型相似,旋轉臂會來回振盪以平衡單擺。在此案例中,旋轉臂在約 15 度的非零點附近振盪。馬達指令訊號與數位孿生一樣略有雜訊。



以下影片展示了 Qube-Servo 3 系統中強化學習(RL)平衡控制的實際應用:
在此應用中,QUARC即時控制軟體運用 Simulink Coder™ 與 MATLAB Coder™ 產生程式碼,建立適用於 64 位元 Windows 的 QUARC 執行檔,並透過 Simulink 介面以全外部模式(External mode)運作。由於本文章撰寫時所使用的 R2025b 版本中 RL Agent 模塊尚不支援程式碼生成,因此訓練好的代理 (Agent) 是透過 MATLAB 強化學習工具箱中的「Policy」模塊部署於載有 QUARC 的 64 位元 Window s目標系統上。

結語
儘管仍有改進空間,此方法證明了強化學習能成功用於機電系統的高階控制任務,並可在實際硬體上實現。目前已有大量範例展示如何利用強化學習進行單擺系統的平衡與起擺。雖然強化學習在控制系統應用中已展現優勢,但該領域仍處於活躍發展階段,預計在未來幾年將成為更強大且易於使用的技術。
後續步驟
簡化並建立更系統化的設計流程,以產出可實現的強化學習策略。找出對響應影響最大的因素(例如:加快響應、最小化控制訊號雜訊)。
設計一個能完成 Qube-Servo 3 旋轉倒單擺「起擺 Swing-up」並平衡的 強化學習控制器。
下載電子書與 MATLAB/Simulink 檔案
欲了解強化學習控制器設計的完整細節,請點擊此處取得電子書。請注意,該電子書是以 MATLAB R2020a 針對 Qube-Servo 2 編寫。自該版本以來已有多次更新,例如如何使用 Policy模塊在硬體上實作強化學習。
本應用的 MATLAB 腳本與 Simulink 模型已上傳至 MATLAB Central:
Quanser(2026). Quanser Qube-Servo 3 Pendulum Control Reinforcement Learning(https://www.mathworks.com/matlabcentral/fileexchange/183368-quanser-qube-servo-3-pendulum-control-reinforcement-learning), MATLAB Central File Exchange. 擷取日期:2026 年 3 月 10 日。
資源
MathWorks® 強化學習電子書:
Brian Douglas 的密集學習技術講座影片:
MathWorks® 強化學習工具箱™ 產品頁面:
MathWorks® 控制系統應用強化學習頁面:
Quanser Interactive Labs:
QUARC即時控制軟體:
本文轉載自 Quanser 原廠網站,作者 Michel Levis,QUANSER 客戶成功經理



留言