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