Stability of Surface Contacts for Humanoid Robots

Closed-Form Formulae of the Contact Wrench Cone for Rectangular Support Areas

Stéphane Caron, Quang-Cuong Pham and Yoshihiko Nakamura. ICRA 2015, Seattle, USA, May 2015.


Humanoids locomote by making and breaking contacts with their environment. Thus, a crucial question for them is to anticipate whether a contact will hold or break under effort. For rigid surface contacts, existing methods usually consider several point-contact forces, which has some drawbacks due to the underlying redundancy. We derive a criterion, the Contact Wrench Cone (CWC), which is equivalent to any number of applied forces on the contact surface, and for which we provide a closed-form formula.

Illustration of the paper's contribution

It turns out that the CWC can be decomposed into three conditions: (i) Coulomb friction on the resultant force, (ii) CoP inside the support area, and (iii) upper and lower bounds on the yaw torque. While the first two are well-known, the third one is novel. It can, for instance, be used to prevent the undesired foot yaws observed in biped locomotion. We show that our formula yields simpler and faster computations than existing approaches for humanoid motions in single support, and assess its validity in the OpenHRP simulator.



  title = {Stability of Surface Contacts for Humanoid Robots: Closed-Form Formulae of the Contact Wrench for Rectangular Support Areas},
  author = {Caron, St{\'e}phane and Pham, Quang-Cuong and Nakamura, Yoshihiko},
  booktitle = {IEEE International Conference on Robotics and Automation},
  year = {2015},
  month = may,
  pages = {5107--5112},
  doi = {10.1109/ICRA.2015.7139910},


Is the total wrench expressed as a spatial force in link coordinates of the contact, or as a Cartesian force in world coordinates?

The wrench \(\bfw = (\bff, \bftau)\) in Proposition 2 is expressed at the central frame of the rectangular contact area. This frame has:

  • Its origin at the center O of the area (depicted in Fig. 2(B))
  • Its x-axis aligned with the long axis of the rectangular contact area (hence the half-length of the rectangle denoted by \(X\))
  • Its y-axis aligned with the short axis of the rectangular contact area (hence the half-width of the rectangle denoted by \(Y\))
  • Its z-axis aligned with the contact normal, pointing from the environment to the robot's end-effector.

Do the CoP Equations (18) and (19) assume a horizontal floor? Or does the contact wrench condition also hold for inclined contacts?

The condition holds for any contact orientation, be it a foot on the floor, a hand on a wall, etc. What Equations (18) and (19) assume is a planar contact area between the robot's end-effector and the environment. This area can have an arbitrary orientation with respect to the inertial frame.

For which application cases do you think additionally constraining the yaw torque becomes crucial, or the other way round, when is it also sufficient to only constrain the friction cone and CoP (e.g static/dynamic walking, highly-dynamic maneuvers)?

We can enumerate all cases by reformulating the yaw-moment condition at the CoP, as shown in p. 82 of this manuscript. This equivalent condition can be written:

\begin{equation*} | \tau^z - \tau^z_\mathit{safe} | \leq \mu \, f^z \, d(\mathit{CoP}, \mathit{edge}) \end{equation*}

where \(\tau^z_\mathit{safe}\) is the yaw torque furthest away from inequality constraints (its formula is given in the manuscript), \(\mu\) is the friction coefficient, \(f^z\) is the normal contact force, and \(d(\mathit{CoP}, \mathit{edge})\) is the distance from the CoP to the nearest edge of the contact area.

Hence, there are three cases where this constraint becomes easier to violate:

  1. Friction is low
  2. Normal force at contact is low, e.g., the robot is about to lift its foot
  3. CoP is close to the edge of the contact area

The last condition typically depends on your trajectory optimization: if you lower-bound your \(d(\mathit{CoP}, \mathit{edge})\) by other means, you may get a yaw-moment range \(\mu \, f^z \, d(\mathit{CoP}, \mathit{edge})\) so large that you don't need to consider the yaw constraint explicitly. One example of this are the successive MPC implementations from Nicola Scianca et al.: initially CoPs from their trajectory optimization were on the edge of their contact areas, but in a later implementation they constrained the CoP to be close to a point well inside the area. The former was much more sensitive to yaw slippage than the latter.

Pages of this website are under the CC-BY 4.0 license.