Direct Collocation
- 又稱: collocation, direct transcription
- 類別: Planning & manipulation › Trajectory optimisation
- 標籤: trajectory-optimization, optimal-control, nonlinear-programming, motion-planning, dynamics
一種軌跡最佳化方法,把取樣時間點上的狀態與控制量當作變數,並把動力學當作相鄰樣本之間的約束來施加。
定義
直接配置法(Direct collocation)是把最佳控制問題(也就是找出隨時間變化的控制輸入,以最小代價把系統從起點帶到目標)轉換成標準求解器能處理的有限非線性規劃問題的方法。軌跡被切分成若干時間點,稱為節點(knot points)。每個節點上的狀態與控制輸入都成為決策變數,系統動力學則以等式約束的形式施加,這些約束稱為缺陷約束(defect constraints),要求相鄰的狀態與某個積分規則(例如梯形規則或 Hermite–Simpson 規則)一致。偽譜法是與之相關的一類方法,在整條軌跡上使用高階多項式。
這與射擊法(shooting)不同:在射擊法中,只有控制量是決策變數,狀態則是把動力學向前模擬而得出。配置法產生的問題較大,但非常稀疏,以 IPOPT 或 SNOPT 等稀疏非線性規劃求解器求解。它的優點是:對狀態的限制(例如關節範圍、與障礙物的間隙或接觸條件)很容易直接施加;求解器可以從物理上不一致的猜測開始,例如一條穿過障礙物的直線;而且在長時域與不穩定系統上,它的表現往往比單次射擊法好。
這種結構的一個結果是,中間的迭代解不必遵守動力學:求解器在初期可以自由違反缺陷約束,只在收斂時才滿足它們。把動力學或碰撞約束移到懲罰項中的表述方式,讓這一點變得明確,允許解先穿過不可行區域,再由懲罰把它推回來。這個想法已被機器人學習借用,例如先讓模擬中的機器人帶著懲罰穿過障礙物,之後再強制執行硬碰撞。和大多數軌跡最佳化一樣,直接配置法找到的是局部最佳解,因此結果取決於初始猜測。
為何重要
直接配置法是腿足機器人、無人機與機器手臂軌跡最佳化的主力方法之一,因為它能妥善處理約束,又容易從粗略的猜測開始。理解它也能說明機器人學習中一個實用的設計概念:先放寬物理約束,再逐步強制執行。
主要應用
- 腿足機器人跳躍、翻轉與步態的軌跡最佳化
- 機器手臂與無人機的時間最佳與能量最佳軌跡
- 為移動機器人規劃搜尋與涵蓋軌跡
- 為學習所得的策略與追蹤控制器產生參考運動
- 太空船與飛行器的軌跡設計
實際應用
一位工程師在 Drake 或 CasADi 中為腿足機器人規劃一次跳躍,他建立的問題在整個跳躍過程中設有例如固定數量的節點,每個節點包含機器人的狀態與關節扭矩。缺陷約束透過機器人的動力學把相鄰節點連結起來,額外的約束讓扭矩保持在馬達限制內,並讓腳在支撐期間留在地面上,代價函數則懲罰控制量與最終誤差。他們用起跳與落地姿態之間的簡單內插來初始化,這違反了動力學,再讓 IPOPT 找出一條一致的軌跡。如果求解失敗,他們會增加節點、縮放變數或改善初始猜測。得到的軌跡接著由回授控制器追蹤,或當作學習策略的參考。
常見誤解
- 求解器的每次迭代都是物理上有效的軌跡 — 動力學只在收斂時才被滿足;中間解可能違反它們
- 直接配置法能找到全域最佳的軌跡 — 它在局部求解一個非凸問題,因此不同的初始猜測可能得到不同的答案
- 配置法與射擊法求解的是不同的問題 — 它們是同一個最佳控制問題的兩種轉寫方式,只是數值行為不同
誰需要了解
- 軌跡最佳化與運動規劃工程師
- 腿足機器人與無人機控制開發者
- 使用最佳化參考運動的機器人學習研究人員
- 研讀最佳控制的機器人學學生
相關技術
- Drake
- CasADi
- IPOPT
- SNOPT
- 多重射擊法(Multiple Shooting)
- 偽譜法(Pseudospectral Methods)
相關術語
- Trajectory Planning
- Model Predictive Control
- Differential Flatness
- Motion Planning
- Curriculum Learning
- Ergodic Coverage
相關專案
- Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design
- OMPL: Sampling-based motion planning library powering MoveIt and countless robotics applications
- MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
- PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
- mink: Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
- Ruckig: Real-time jerk-constrained time-optimal trajectory generation for robots and machines