🚀 AI時代系列 (4) -《機器人學 🤖 —— AI 的身體與行動》
45/100 📌 第 5 周:控制系統與穩定性設計
45.模型預測控制 (MPC) 🧠 預判未來的高階控制方法!
________________________________________
一、為什麼要學「模型預測控制」?
✅ 再穩定的 PID,有時也敵不過**「延遲 + 變動 + 複雜環境」**的現實考驗。
模型預測控制 (Model Predictive Control, MPC)
是一種前瞻性思考的控制法:
🎯 它不只是修正當下,而是預測未來可能發生什麼!
________________________________________
二、MPC 的核心思維模型
🔮 它像是機器人內建一位「先知」:
• 模擬接下來 1秒、3秒、5秒後的可能走向
• 在腦中模擬出幾百條未來路徑
• 提前選出穩定安全又高效的最佳動作!
________________________________________
三、MPC 控制流程圖
當前狀態 ➔ 模型預測 ➔ 預測 N 步未來狀態序列 ➔ 計算最佳行動路徑 ➔ 執行第一步 ➔ 重複
👉 每一輪都像在玩小型「模擬世界」,不斷即時更新計劃。
________________________________________
四、MPC 的核心公式簡單說明
目標:
MPC 控制目標(成本函數):
Minimize:
J = Σ [ (y_k - r_k)^T * Q * (y_k - r_k) + (u_k)^T * R * (u_k) ]
k=0 到 N
Subject to:
x(k+1) = A * x(k) + B * u(k)
y(k) = C * x(k)
u_min <= u(k) <= u_max
y_min <= y(k) <= y_max
🧩 說明:
J:整體成本(損失函數),控制器要使這個值最小
y_k:第 k 步的預測輸出
r_k:第 k 步的期望值(參考軌跡)
u_k:第 k 步的控制輸入(機器人的動作)
x(k):系統狀態(如位置、速度)
A, B, C:系統模型矩陣(離散狀態空間模型)
Q, R:權重矩陣(調整誤差與控制輸出的重要性)
N:預測範圍(Prediction Horizon)
這個公式的意義在於:**MPC(模型預測控制)透過預測未來系統行為,找出一組控制輸出序列,使系統在未來一段時間內盡量貼近目標值,同時避免超出輸入與輸出的限制條件。**它不只是即時反應,而是像「下棋高手」一樣,根據系統模型預測接下來幾步的結果,選擇整體成本(誤差與控制代價)最小的方案,每次只執行當下的第一步,然後重新計算,如此反覆進行,實現更穩定、智慧與安全的控制。
🎯 讓路徑整體穩定、順暢、經濟、平滑。
________________________________________
五、MPC 與 PID 最大差異
PID 控制屬於反應式控制方式,只根據當前誤差進行即時修正,運算簡單、回應快速,適合用在結構明確、變化不大的系統。相對地,MPC(模型預測控制)則採用預測性思維,透過系統模型預測未來幾秒內的狀態變化,再從整體角度找出最優控制策略,不僅能精準跟蹤目標,還能同時考慮各種操作限制。儘管 MPC 計算量大、設計複雜,但在多變、約束多、需提前規劃的場景中(如智慧車、機器人、人群避障)展現出遠優於 PID 的智慧與柔韌性。
________________________________________
六、MPC 擅長的典型應用場景
| 應用場景 | MPC 功能貢獻 |
| 自駕車轉彎超車 | 預測前方車流與障礙行為提早決策 |
| 無人機空中編隊 | 預判編隊隊形變動提前微調位置 |
| 機械手臂避障操作 | 預估手臂運動路徑是否會撞到障礙物 |
| 自平衡兩輪機器人 | 預測傾斜趨勢,提前調整推力防倒 |
________________________________________
七、MPC 的強大特色
✅ 多約束處理能力:
可以把「速度限制、加速度限制、安全距離、障礙區域…」全部整合進考慮
✅ 多目標平衡能力:
能讓系統同時考慮平穩、能耗、路徑最佳化
✅ 高階 AI 融合基礎:
適合整合深度學習預測模型做複雜動態模擬
________________________________________
八、AI 結合 MPC 的突破應用
AI 融入讓 MPC(模型預測控制)從傳統最佳化控制器,進化為更智慧、更精準的決策核心。透過深度學習,控制系統能建立更準確的非線性動態模型,捕捉複雜環境下的真實行為;強化學習則進一步學會在多階段任務中做出長期最優控制決策;當系統模型存在誤差或變動時,AI 可進行動態補償,增強系統的魯棒性與容錯能力;此外,AI 演算法也能大幅加快運算速度,協助 MPC 在每一輪控制週期中即時完成複雜運算,使智慧控制真正落地應用於自駕車、機器人與工業自動化等高速場景。
🤖 模型假設:離散時間線性化倒立擺(自平衡機器人)
使用線性化狀態空間模型:
x_{k+1} = A * x_k + B * u_k
其中狀態為:
系統狀態向量:
x = [ θ, θ_dot ]ᵗ
其中:
θ = 傾角(radians)
θ_dot = 角速度(radians/second)
u = 控制輸入(例如馬達扭矩或車輪加速度)
________________________________________
🐍 Python 實作(用 cvxpy + 簡化模型)
python
import numpy as np
import matplotlib.pyplot as plt
import cvxpy as cp
# 離散間模型(簡化版)
dt = 0.1 # 時間間隔
A = np.array([[1, dt],
[0, 0.98]]) # 角度與角速度變化(假設重力影響)
B = np.array([[0],
[dt]]) # 控制影響角速度
n_states = 2
n_inputs = 1
N = 10 # MPC 預測步數
x0 = np.array([[0.2], # 初始角度偏離(例如 0.2 rad)
[0.0]]) # 初始角速度
# 記錄歷史
x_history = [x0.flatten()]
u_history = []
# MPC 控制迴圈
for t in range(50): # 模擬 50 步
x = cp.Variable((n_states, N + 1))
u = cp.Variable((n_inputs, N))
cost = 0
constraints = [x[:, 0] == x0.flatten()]
for k in range(N):
cost += cp.sum_squares(x[:, k]) + 0.01 * cp.sum_squares(u[:, k])
constraints += [x[:, k+1] == A @ x[:, k] + B @ u[:, k]]
constraints += [cp.abs(u[:, k]) <= 1.0] # 控制輸入限制(模擬電機限制)
prob = cp.Problem(cp.Minimize(cost), constraints)
prob.solve()
u_val = u[:, 0].value
x0 = A @ x0 + B @ u_val
x_history.append(x0.flatten())
u_history.append(u_val[0])
# 視覺化結果
x_array = np.array(x_history)
time = np.arange(len(x_array)) * dt
plt.figure(figsize=(12, 5))
plt.subplot(2, 1, 1)
plt.plot(time, x_array[:, 0], label="角度 θ (rad)")
plt.plot(time, x_array[:, 1], label="角速度 θ̇ (rad/s)")
plt.axhline(0, color='gray', linestyle='--')
plt.legend()
plt.title("MPC 控制下的自平衡機器人狀態")
plt.subplot(2, 1, 2)
plt.step(time[:-1], u_history, where='post', label="控制輸入 u")
plt.axhline(0, color='gray', linestyle='--')
plt.ylabel("u (扭矩)")
plt.xlabel("時間 (s)")
plt.legend()
plt.grid()
plt.tight_layout()
plt.show()
這段 Python 程式碼模擬了一個使用 MPC(模型預測控制) 來穩定 自平衡機器人(倒立擺) 的範例。機器人的狀態由角度 𝜃和角速度 𝜃˙組成,初始時有一個 0.2 弧度的傾斜。程式每一個控制週期使用 cvxpy 解決一個最佳化問題,預測未來 10 步的狀態,目標是讓角度趨近於 0(直立),並同時限制控制輸出在 ±1 的範圍內。每輪只執行預測中的第一個控制輸出(receding horizon),然後更新狀態。最終透過 matplotlib 視覺化控制過程中角度、角速度與控制輸入的變化,展示機器人如何逐步恢復平衡。整體程式示範了 MPC 在控制不穩定系統上的智慧決策與穩定能力。
________________________________________
🧠 說明:
• 初始傾斜角度為 0.2 rad,機器人會倒下
• MPC 控制器預測未來 10 步行為,決定最適控制序列
• 每輪只執行第一個控制動作(receding horizon)
• 控制目標是讓角度趨近 0,也就是自動恢復直立平衡
________________________________________
🛠 可擴充方向(給研究或實務使用):
• 加入位置變數 x ,x˙,做完整的 4 維倒立擺控制
• 結合 強化學習 進行控制器自我調整
• 加入 LIDAR、IMU 等感測器資訊做實體機器整合
________________________________________
九、MPC 直覺生活比喻 🎮
👉 想像你在繁忙十字路口開車左轉:
• 你看到對向車流速度、行人動作
• 大腦會「腦補模擬」:
o 幾秒後可能出現的空隙
o 轉不轉得過去
o 要不要踩煞車或加速
🎯 這正是你自己內建的「生物版 MPC」!
________________________________________
🌱 生動反思任務
請思考:
如果讓醫療配送機器人在繁忙醫院走廊導航,
病人輪椅、護理車、病房門隨時會動,
👉 MPC 如何幫助它在擁擠中預判走位、平穩穿越?
👉 結合哪些 AI 技術,讓預測更準?行為更柔順?
ANS:
🎯
在繁忙的醫院走廊中,一台自動配送機器人正在送藥物。眼前的路線卻充滿挑戰:
病人輪椅隨時轉動、護理車突然停下、病房門忽然開啟。
這不是單一障礙物的問題,而是一場「動態混亂中的智慧決策」。
________________________________________
👉 MPC 如何幫助它在擁擠中預判走位、平穩穿越?
1. 預測性思維(Predictive Thinking)
MPC 會預測接下來幾秒內病人、門、護理車可能的位置,並提前規劃一條不只「現在安全」,而是「整個預測時間段都安全」的路徑。
2. 動態限制加入規劃
MPC 可將障礙物未來可能的移動範圍(如門的打開角度、輪椅的移動半徑)納入限制條件,確保不進入危險區域。
3. 平滑控制輸出
控制輸出會平衡「速度、轉向與舒適度」,避免急煞、急轉造成碰撞或讓病人驚慌。
4. 即時重新規劃(Receding Horizon)
每一步都會重新預測與規劃,可即時應對突發改變,例如護理車突然逆向推回。
________________________________________
👉 結合哪些 AI 技術,讓預測更準?行為更柔順?
✅ 1. 行人/設備動態預測(深度學習 + RNN)
• 使用攝影機與 LIDAR 搭配 AI 模型(如 LSTM 或 Transformer)來預測輪椅、病人、醫護車在未來幾秒的行進軌跡。
✅ 2. 場景理解(Computer Vision)
• 分辨哪些物體會動、哪些是固定結構,例如:門 vs. 牆、醫療推車 vs. 固定垃圾桶。
✅ 3. 模糊邏輯或行為規則嵌入
• 例如在人多時減速,在病房門附近自動繞行、遠離產生風險的區域,使行為更像「有經驗的護理人員」。
✅ 4. 強化學習訓練風格策略
• 在模擬環境中反覆訓練「最少剎車、最少閃避、最少擁堵」的導航風格,讓控制策略符合醫院現場節奏。
________________________________________
🧠 一句反思:
真正聰明的導航,不只是在不撞人的路上走,而是能理解「人會怎麼動」、「該讓誰先走」、「什麼時候放慢」,像個成熟的醫護助手般圓融。
______________________________________
✅ 你已正式進入 AI 控制系統的智慧預判核心!