  We propose a method for checking and enforcing multi-contact stability based
on the Zero-tilting Moment Point (ZMP). The key to our development is the
generalization of ZMP support areas to take into account (a) frictional
constraints and (b) multiple non-coplanar contacts. We introduce and
investigate two kinds of ZMP support areas. First, we characterize and provide
a fast geometric construction for the support area generated by valid contact
forces, with no other constraint on the robot motion. We call this set the full
support area. Next, we consider the control of humanoid robots using the Linear
Pendulum Mode (LPM). We observe that the constraints stemming from the LPM
induce a shrinking of the support area, even for walking on horizontal floors.
We propose an algorithm to compute the new area, which we call pendular support
area. We show that, in the LPM, having the ZMP in the pendular support area is
a necessary and sufficient condition for contact stability. Based on these
developments, we implement a whole-body controller and generate feasible
multi-contact motions where an HRP-4 humanoid locomotes in challenging
multi-contact scenarios.
