比PID更絲滑的控制算法&卡內(nèi)基梅隆大學(xué)
本文經(jīng)自動駕駛之心公眾號授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。
MPC控制算法,全稱Model Predictive Control(模型預(yù)測控制),是一種基于系統(tǒng)動態(tài)模型的控制技術(shù)。它的工作原理是通過數(shù)學(xué)模型預(yù)測系統(tǒng)的未來行為,并基于這些預(yù)測結(jié)果來優(yōu)化系統(tǒng)的控制輸入,從而實現(xiàn)期望的輸出。
MPC控制算法的核心在于其預(yù)測模型,這個模型可以根據(jù)系統(tǒng)的當前狀態(tài)信息預(yù)測未來的系統(tǒng)狀態(tài)。預(yù)測模型的形式并不固定,可以是狀態(tài)空間方程、傳遞函數(shù)、階躍響應(yīng)模型、脈沖響應(yīng)模型、模糊模型等,具體形式取決于被控對象和需要預(yù)測的狀態(tài)。
TinyMPC 是一款專為凸模型預(yù)測控制量身定制的開源求解器,可以較小的內(nèi)存占用提供高速計算。TinyMPC 在 C++ 中實現(xiàn),具有最小的依賴性,特別適用于資源受限平臺上的嵌入式控制和機器人應(yīng)用程序。TinyMPC 可以處理狀態(tài)和輸入邊界以及二階錐約束。Python、Julia 和 MATLAB 接口可用于幫助為嵌入式系統(tǒng)生成代碼。
機器人演示
TinyMPC 有助于彌合計算密集型凸模型預(yù)測控制與資源受限的處理平臺之間的差距。將 TinyMPC 集成到計算能力不足的機器人中,使它們能夠執(zhí)行敏捷操作并表現(xiàn)出安全行為。
動態(tài)避障
TinyMPC 的運行速度足夠快,可以在每個時間步長重新線性化約束,從而使其能夠?qū)σ苿拥恼系K物進行推理。在左邊,在搖桿末端為中心的虛擬球體在每個時間步長被線性化為一組新的超平面約束。該算法還可以處理任意數(shù)量的任意線性約束。例如,在右側(cè),它在停留在 yz 平面時避開了搖桿的末端。
極致姿態(tài)恢復(fù)
TinyMPC 可以從極端的初始條件下恢復(fù)。在此示例中,將其與 Crazyflie 2.1's stock controllers進行了比較。只有 TinyMPC 能夠推斷出控制極限,從而實現(xiàn)干凈利落的恢復(fù)操作。
圖 8 跟蹤
我們比較了相同的庫存控制器,以完成不可行的快速 8 字形跟蹤任務(wù)(只有在無人機更強大的情況下才能完成單個 8 字形的時間)。TinyMPC 和 PID 能夠保持直立,但 TinyMPC 的軌跡更接近 8 字形。
微控制器基準測試
在微控制器基準測試中,TinyMPC 在速度和內(nèi)存占用方面優(yōu)于最先進的求解器。我們求解隨機生成的基于 QP 的 MPC 問題,并將迭代時間和內(nèi)存占用與 OSQP 進行比較。TinyMPC 在 OSQP 上的最大加速是 OSQP 的 8 倍,內(nèi)存要少得多。
TinyMPC 現(xiàn)在也能夠處理圓錐約束!在(b)中,我們將TinyMPC與兩個現(xiàn)有的具有嵌入式支持的圓錐求解器(SCS和ECOS)對火箭軟著陸問題進行了基準測試。TinyMPC 在 SCS 上實現(xiàn)了 13 倍的平均速度提升,在 ECOS 上實現(xiàn)了 137 倍的平均速度提升。
實時控制要求求解器在嚴格的時間窗口內(nèi)返回解決方案。在火箭軟著陸問題上比較了TinyMPC與SCS和ECOS的軌跡跟蹤性能,同時人為地改變了每個求解的可用時間量。在所有控制持續(xù)時間內(nèi),TinyMPC 的違反約束更少,跟蹤誤差也低于 SCS 和 ECOS。
算法貢獻者:
代碼獲取地址:
GitHub - TinyMPC/TinyMPC: Model-predictive control for microcontrollers