Complementarity Constraint
- 又稱: complementarity condition, contact complementarity
- 類別: Planning & manipulation › Trajectory optimisation
- 標籤: contact, trajectory-optimization, nonlinear-programming, physics-simulation, legged-robots
一對乘積為零的非負條件,因此至多只有一個量可以為正;用來為接觸建模,也就是只有在間隙為零時才存在力。
定義
互補約束(complementarity constraint)把兩個量連結起來:兩者都必須非負,而且乘積必須為零,寫成 0 ≤ a ⊥ b ≥ 0。在任何解中,兩者至少有一個為零,而且只有在另一個維持為零時,其中一個才可以為正。每當一個系統在兩種狀態之間切換、卻沒有明確的切換變數時,就會出現這種結構;它是線性互補問題(LCP)以及具互補約束之數學規劃的基礎。
剛性接觸是機器人學中的標準例子。足端或手指與表面之間的距離 φ(q) 必須非負;法向接觸力 λ 必須非負,因為表面只能推;而且只有在距離為零時,力才可能不為零:0 ≤ φ(q) ⊥ λ ≥ 0。庫侖摩擦可以用更多的互補條件來表示,把滑動速度與摩擦力是否落在摩擦錐的邊緣上連結起來。1990 年代發展出來的時間步進剛體模擬器,包括 Stewart 與 Trinkle、Anitescu 與 Potra 的方法,會在每一步求解一個 LCP 或相關的互補問題,以求得接觸衝量。在軌跡最佳化中,Posa、Cantu 與 Tedrake(2014)把這些約束直接加進直接轉錄問題,讓最佳化器在不必事先指定接觸順序的情況下,自行決定何時、何處建立與斷開接觸。
這種做法避開了混合整數表述用來表示接觸開關的整數變數,卻也帶來了自己的困難。互補約束是非凸的,而且違反了標準非線性規劃求解器所依賴的約束規範,因此求解器可能停滯或收斂緩慢。常見的補救方式包括:把乘積條件放寬為 φλ ≤ ε,並在一連串求解中逐步收緊 ε;把乘積當成懲罰項移進成本函數;或使用專為互補問題設計的求解器。良好的初始猜測非常重要,這也是接觸隱式最佳化器常從較簡單的解進行熱啟動的原因。
為何重要
接觸是足式運動與操作的決定性特徵,而互補約束是以方程式精確描述剛性接觸的標準方式。它們讓模擬器能一致地計算接觸力,也讓最佳化器能自行找出接觸時機,而不需要工程師事先固定步態或接觸順序。
主要應用
- 用於足式機器人與操作的接觸隱式軌跡最佳化
- 含接觸與摩擦的時間步進剛體模擬
- 著陸、跳躍與衝擊規劃
- 為關節極限與纜線等單邊約束建模
- 接觸的可微分物理表述
實際應用
一位工程師為一台從高處落下的四足機器人規劃著陸。軌跡最佳化採用直接轉錄,每隔幾毫秒設一個節點;對每隻腳與每個節點,它把腳離地的高度與垂直方向的地面反作用力加為變數,並附上條件 高度 ≥ 0、力 ≥ 0 與 高度 × 力 ≤ ε。第一次求解使用寬鬆的 ε,並以一個簡單的下落動作作為初始猜測;之後每次求解都收緊 ε,並從上一次的解熱啟動。最終的規劃顯示哪幾隻腳先著地、力如何逐步上升,工程師也會檢查剩餘的互補違反量是否夠小,使規劃不會依賴隔空作用的力。
常見誤解
- 互補約束讓接觸規劃變成凸問題 — 它們去掉了整數變數,但本身是非凸的,對標準求解器而言在數值上很困難
- 放寬後乘積很小的解在物理上是精確的 — 在 φλ ≤ ε 之下,最佳化器可以利用小距離上的小力,因此必須檢查 ε 與剩餘的違反量
- 所有物理引擎都把接觸當成互補問題來求解 — 許多引擎改用懲罰式或柔順接觸模型,或是凸鬆弛,而不是嚴格的互補
誰需要了解
- 軌跡最佳化與足式運動工程師
- 物理模擬開發人員
- 規劃穿越接觸過程的操作研究人員
- 機器人領域的數值最佳化實務工作者
相關技術
- 線性互補問題(Linear Complementarity Problem,LCP)
- MPCC(Mathematical Program with Complementarity Constraints)
- IPOPT
- Drake
- PATH 求解器(PATH Solver)
相關術語
- Contact mode
- Mixed-Integer Programming
- Direct Collocation
- Penalty-Based Contact Model
- Coulomb Friction
- Warm Start
相關專案
- Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design
- ProtoMotions: NVIDIA framework for training simulated digital humans and humanoid robots on GPUs
- PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
- PHC: Physics-based perpetual humanoid controller with fail-state recovery for real-time avatars
- SOFA Framework: Real-time physics simulation framework for medical simulation and soft tissue modeling
- Extreme Parkour with Legged Robots: RL system for legged robot parkour trained in under 20 hours