* Watch the [http://homes.cs.washington.edu/~todorov/index.php?video=MordatchSIGGRAPH12&paper=Mordatch,%20SIGGRAPH%202012 movies!
Discovery of complex behaviors through contactinvariant optimization]
 Complex movements tend to have phases within which the set of active contacts (hands, feet) remains invariant (hence can exert forces on the objects they are contacting, or vice versa).
 Discovering suitable contact sets is the central goal of optimization in our approach.
 Once this is done, optimizing the remaining aspects of the movement tends to be relatively straightforward.
 They do this through axillary scalar variables which indicate whether the a contact is active or not, hence whether to enable contact forces.
 Allows the optimizer to 'realize' that movements should have phases.
 Also "shapes the energy landscape to be smoother and better behaved"
 Initial attempts to make these contact axillary variables discrete  when and where  which was easy for humans to specify, but made optimization intractable.
 Motion between contacts was modeled as a continuous feedback system.
 Instead, the contact variables $c_i$ have to be continuous.
 Contact forces are active only when $c_i$ is 'large'.
 Hence all potential contacts have to be enumerated in advance.
 Then, parameterize the end effector (position) and use inverse kinematics to figure out joint angles.
 Optimization:
 Break the movement up into a predefined number of phases, equal duration.
 Interpolate endeffector with splines
 Physics constraints are 'soft'  helps the optimizer : 'powerful continuation methods'
 That is, weight different terms differently in phases of the optimization process.
 Likewise, appendages are allowed to stretch and intersect, with a smooth cost.
 Contactinvariant cost penalizes distortion and slip (difference between endpoint and surface, measured normal, and velocity relative to contact point)
 Contact point is also 'soft' and smooth via distancenormalized weighting.
 All contact forces are merged into a $f \in \mathbb{R}^6$ vector, which includes both forces and torques. Hence contact force origin can move within the contact patch, which again makes the optimization smoother.
 Set $\tau(q, \dot{q}, \ddot{q}) = J(q)^T f + B u$ where $J(q)^T$ maps generalize (endpoint) velocities to contactpoint velocities, and f above are the contactforces. $B$ is to map control forces $u$ to the full space.
 $\tau(q, \dot{q}, \ddot{q}) = M(q)\dot{q} + C(q, \dot{q})\dot{q} + G(q)$  M is inertia matrix, C is Coriolis matrix, g is gravity.
 This means: forces need to add to zero. (friction $f$ + control $u$ = inertia + coriolis + gravity)
 Hence need to optimize $f$ and $u$ .
 Use frictioncone approximation for nongrab (feet) contact forces.
 These are optimized within a quadratic programming framework.
 LBFGS algo.
 Squared terms for friction and control, squared penalization for penetrating and slipping on a surface.
 Phases of optimization (continuation method):
 $L(s) = L_{CI}(s) + L_{physics}(s) + L_{task}(s) + L_{hint}(s)$
 task term only: wishful thinking.
 all 4 terms, physcics lessened  gradually add constraints.
 all terms, no hint, full physics.
 Total time to simulate 210 minutes per clip (only!)
 The equations of the paper seem incomplete  not clear how QP eq fits in with the $L(s)$ , and how $c_i$ fits in with $J(q)^T f + B u$
