Open Source Robotics

精選高品質的開源機器人專案、工具與軟體,推動機器人社群向前發展。

OpEn (Optimization Engine)

以 Rust 撰寫的嵌入式非凸最佳化求解器,用於機器人的即時模型預測控制(MPC)

授權條款

MIT, Apache 2.0

概述

OpEn(Optimization Engine)是一個在嵌入式系統上進行快速、記憶體安全之非凸最佳化的框架,以 PANOC 近端平均牛頓型演算法為核心,並以增廣拉格朗日法與懲罰法處理約束條件。問題以 Python 或 MATLAB 搭配 CasADi 符號運算來描述;OpEn 會為目標平台——機器人的機載電腦、MCU 等級的開發板或 ROS 節點——產生無相依性的 Rust 求解器,從而實現即時模型預測控制與無碰撞軌跡最佳化。

工作流程以程式碼產生為主:你在 OpEn 的 Python/MATLAB 前端 opengen 中定義決策變數、(可能非凸的)成本函數與約束條件;它會輸出一個實作 PANOC 的獨立 Rust crate——PANOC 是一種結合近端梯度與 L-BFGS 方向的線搜尋方法,無需 Hessian 矩陣即可快速收斂——並以 ALM/懲罰法外層迴圈處理一般約束條件。產生的求解器不會有意外的堆積配置、沒有外部函式庫,且記憶體用量有可證明的上限:這正是重視認證的嵌入式控制所需要的。介面包括直接使用 Rust、C/C++ 綁定、TCP 伺服器模式、Python 綁定,以及 ROS 套件產生器。典型的機器人應用包括以數百赫茲執行、用於避障的非線性模型預測控制(MPC)(其導航範例已成為 AGV/無人機無碰撞 MPC 的參考)、軌跡最佳化,以及在資源受限平台上的滾動時域估測。OpEn 由學術界開發(Sopasakis 等人,IFAC 2020 論文),並採用 MIT/Apache-2.0 雙重授權。

為何重要

OpEn 讓即時非凸模型預測控制(MPC)在小型機器人上變得可行:一個具備 Rust 記憶體保證、無相依性、記憶體用量有上限,並能在嵌入式開發板上執行的求解器——當機器人必須每隔幾毫秒就在機上重新求解避障問題時,這正是你需要的元件。

解決的問題

通用 NLP 求解器(IPOPT 等級)對於高頻率的機上模型預測控制(MPC)而言太慢、太笨重,而手寫的求解器又容易出錯。OpEn 只需幾行 CasADi,就能為你的特定問題產生快速、無相依性且記憶體安全的求解器。

重點

  • PANOC 演算法:近端梯度 + L-BFGS,無需 Hessian 矩陣即可快速求解非凸問題
  • 產生獨立、無相依性且記憶體用量有上限的 Rust 求解器
  • Python(opengen)與 MATLAB 前端,搭配 CasADi 符號運算
  • 可直接以 Rust/C/C++ 使用,並提供 TCP 伺服器模式與 ROS 套件產生
  • AGV 與無人機上嵌入式無碰撞模型預測控制(MPC)的首選參考;MIT/Apache-2.0 雙重授權

適用對象

  • 部署機上模型預測控制(MPC)的控制工程師
  • 從事軌跡最佳化的機器人研究人員
  • 需要利於認證之求解器的嵌入式開發者
  • AGV/無人機自主系統團隊

限制

  • 以一階方法為基礎的 PANOC,在病態問題上可能落後於內點法
  • 非凸性意味著得到的是局部(而非全域)解——初始化很重要
  • 透過 ALM/懲罰法處理約束條件時,對於硬性等式約束需要調整容許誤差

本網站需要 JavaScript 才能正常運作。請啟用 JavaScript 以瀏覽我們的開源機器人專案。