求解非線性最優(yōu)控制:acados 如何幫你把 MPC 求解器「編譯」出來)
毫秒級(jí)求解非線性最優(yōu)控制acados 如何幫你把 MPC 求解器「編譯」出來【免費(fèi)下載鏈接】acadosFast and embedded solvers for nonlinear optimal control and nonlinear model predictive control項(xiàng)目地址: https://gitcode.com/gh_mirrors/ac/acadosacados 是一個(gè)用 C 編寫的嵌入式非線性最優(yōu)控制與模型預(yù)測(cè)控制MPC高效求解器面向需要在控制循環(huán)里以毫秒級(jí)頻率反復(fù)求解優(yōu)化問題、并要部署到 MCU 或?qū)崟r(shí)仿真臺(tái)的開發(fā)者。 實(shí)時(shí) MPC 的痛點(diǎn)每個(gè)控制周期都要重解一個(gè) NLPMPC 的單次流程看似簡(jiǎn)單拿當(dāng)前狀態(tài)解一個(gè)未來幾秒的最優(yōu)控制問題只執(zhí)行第一個(gè)控制量。但每走一步問題就要重解目標(biāo)頻率經(jīng)常是 100Hz 往上。此時(shí) IPOPT 這類通用 NLP 求解器即使能解出來往往也慢一步走 Python 調(diào)用解釋層開銷更是雪上加霜。更苛刻的是車載或嵌入式硬件裝不下一套依賴樹你需要的是體積可控、可靜態(tài)鏈接、執(zhí)行時(shí)間可預(yù)測(cè)的代碼。? acados 為什么快代碼生成 結(jié)構(gòu)利用一句話定位acados 是一個(gè)為你的具體問題生成專用求解器的 C 庫。速度來自兩層。第一層是代碼生成在 Python 接口里用 CasADi 表達(dá)式聲明模型動(dòng)力學(xué)、代價(jià)、約束generate_c_code()會(huì)經(jīng)由模板渲染出一套維度與結(jié)構(gòu)都定死的 C 源碼編譯成靜態(tài)庫后運(yùn)行時(shí)沒有通用解析、沒有函數(shù)指針分發(fā)直接調(diào)用一個(gè)求解函數(shù)。第二層是結(jié)構(gòu)利用SQP 算法把每次迭代化成最優(yōu)控制 QPHPIPM 等求解器配合凝聚condensing方法處理這類稀疏 QPRunge-Kutta 積分器同樣利用動(dòng)力學(xué)的稀疏性加速。同一份問題描述會(huì)同時(shí)生成 C 求解器、MEX、Simulink S-function 和 Makefile——你在 PC 上調(diào)試的代碼和最終部署的完全是同一套。 從克隆倉庫到跑通第一個(gè) pendulum MPC最短上手路徑只有三步。先拉倉庫git clone https://gitcode.com/gh_mirrows/ac/acados正確地址為git clone https://gitcode.com/gh_mirrors/ac/acados注意是 gh_mirrors然后按 docs 安裝說明裝好 Python 包或本地構(gòu)建最后跑 getting_started 目錄里的minimal_example_ocp.py幾行 CasADi 代碼定義 pendulum on a cart 動(dòng)力學(xué)聲明代價(jià)與約束編譯后直接得到最優(yōu)狀態(tài)軌跡與控制輸入。從 Python 腳本到可執(zhí)行求解器大約一分鐘這是感受「代碼生成」最快的方式。 真實(shí)落地案例風(fēng)機(jī)、發(fā)動(dòng)機(jī)與 dSpace 臺(tái)架倉庫的 examples/c 目錄里有完整 C 工程nx6 風(fēng)力發(fā)電機(jī) MPC、發(fā)動(dòng)機(jī)扭矩跟蹤、賽車路徑跟隨、四旋翼。下圖是發(fā)動(dòng)機(jī)模型的閉環(huán)跟蹤結(jié)果橙線為參考、藍(lán)線為 acados MPC 輸出階躍與極限工況下都能快速收斂工程側(cè)生成的求解器直接進(jìn)入 Simulink 代碼生成流程把 acados 生成的 C 文件加入目標(biāo)硬件構(gòu)建配置編譯到 dSpace 實(shí)時(shí)仿真器這正是相對(duì)純 Python 求解器的差異所在臺(tái)架上跑的是你 PC 上調(diào)出來的同一份代碼。生態(tài)與下一步哪些組件可以隨便換庫內(nèi) NLP 求解器SQP、DDP、QP 求解器HPIPM、OSQP、QPOases、積分器顯式/隱式 Runge-Kutta與全局化策略可自由組合代價(jià)與約束還能聲明 convex-over-nonlinear 結(jié)構(gòu)讓求解器進(jìn)一步利用稀疏性。接口覆蓋 Python、MATLAB、Octave、Simulink 四種語言。建議的下一步1先跑minimal_example_ocp.py2看examples/c/wind_turbine_nmpc.c了解 C 調(diào)用方式3要上目標(biāo)硬件就讀 docs/embedded_workflow/ 的嵌入式部署文檔。遇到問題直接提 issue維護(hù)者響應(yīng)很快?!久赓M(fèi)下載鏈接】acadosFast and embedded solvers for nonlinear optimal control and nonlinear model predictive control項(xiàng)目地址: https://gitcode.com/gh_mirrors/ac/acados創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考