Zero-tilting moment point

In robotics, the Zero-tilting Moment Point (ZMP) is a characteristic point
used notably in biped locomotion. It describes the set of points in space that
cancel at least two out of the three coordinates of the moment of contact
forces, which corresponds to a no-tilt condition with respect to a plane
(typically, the ground plane).

where \(m\) is the total mass of the robot, \(\bfg\) the gravity vector, \(G\) the
center of gravity of the system, \(\pdd_G\) its acceleration and \(\Ld_O\) the
rate-of-change of the angular momentum taken at a fixed point \(O\).
On the right-hand side, \(\bfw^c_G = (\bff^c, \bftau^c_G)\) denotes the net
contact wrench, i.e. the sum of all contact wrenches exterted onto the robot,
with coordinates taken at the COM \(G\).

Define the gravito-inertial wrench of the multi-body system, which only depends
on its accelerations:

Newton-Euler equations can then be written in wrench form using screw
algebra: \(\bfw^{gi} + \bfw^{c} =
\boldsymbol{0}\). ZMPs are the points \(Z\) belonging to the non-central axis
defined by:

$$
\bftau^{gi}_Z \times \bfn = \boldsymbol{0}
$$

where \(\bfn\) denotes the normal vector to the non-tilting surface (typically,
the ground surface when walking on a flat floor). The left-hand side of this
equation can be rewritten with respect to the moment taken at another point:

by developping the vector triple
product.
Let us suppose for now that \(O\) and \(Z\) lie in the same plane normal to \(\bfn\),
so that \(\overrightarrow{ZO} \cdot \bfn = 0\). Then, injecting the expression
above into the definition of the ZMP yields:

Center of pressure

The center of pressure (COP) is a dynamic point defined in between two bodies
in contact. Unlike the ZMP, which we defined from the accelerations of the
multi-body system, the COP is a local quantity defined from interaction forces
at the contact surface. These two different approaches yield the same point
when the robot is in single-contact with its environment, or walks on a flat
floor (Sardain et Bessonnet, 2004).

Let us consider the case where a foot of the robot contacts a plane surface:

The resultant \(\bff^c\) of contact forces, exerted by the environment onto the
robot through the surface, can be decomposed as the sum of two terms:

These two forces are the sum of infinitesimal forces applied through all
elements \({\rm d}\calS\) of the contact surface \(\calS\). Denoting by
\(p(P)\) the pressure exerted at any point \(P \in \calS\) :

$$
\bff^p = \int_{P \in \calS} p(P) \bfn {\rm d}\calS
$$

Pressure is always a positive quantity since the foot cannot penetrate the
ground surface. As a consequence, there always exists a center of pressure
\(C\),
that is to say a point where the moment of pressure forces vanishes, so that
the \(\bff^p\) can be thought of as "being applied at \(C\)". Its coordinates are
given by:

Where we recognize the same formula as the one used to define the ZMP, except
that it is now applied to the (local) contact wrench rather than the (global)
gravito-inertial wrench. Now, remember how \(\bfw^{gi} = -\bfw^c\) from
Newton-Euler equations? You see then why the COP and ZMP coincide when there is
only one contact (Sardain et Bessonnet,
2004).

The figure above represents the COM \(G\), the COP \(C\) and a ZMP \(Z\) along the
(non-central) gravito-inertial axis \(\Delta^{gi}\). The latter does not
necessarily contain \(G\), unless the angular momentum of the system is conserved
\((\Ld_G = \boldsymbol{0})\). Conservation of the angular momentum is a common
assumption in most works on biped locomotion in the 90's and 00's (Kajita et
Tani, 1991).

Support polygon

As long as the contact is maintained, the COP will lie inside the contact
surface \(\cal S\). Indeed, the moment of contact forces can be written as:

Thus, the COP can be seen as the average of ground contact points weighted
by their respective pressures. When it crosses the boundaries of \(\cal S\), the
contact will break and start to rotate around the corresponding edge of the
area \(\cal S\). To avoid this outcome, bipeds thus make sure to maintain their
COPs inside this area, which is then called "support area". The condition \(C
\in \cal S\) is the non-tilting contact condition.

Multiple contacts with a flat surface

In the special case where all contacts are made with the same flat surface,
the support area \(\cal S\) becomes the convex hull of all contact points.
Indeed, the same plane can be used to define the COP and ZMP as above, and the
integral formula shows \(C \in \cal S\) to be a necessary condition for
non-tilting as well. This results in the well-known criterion used in biped
locomotion:

Non-tilting contact condition: during bipedal walking, the ZMP
lies inside the support area \(\cal S\) defined as the convex hull of ground
contact points.

To go further

ZMP support areas can be extended to multi-contact scenarios; see this
paper for their complete construction. However, their
2D nature makes them a little restrictive for multi-contact locomotion. In a
later walking pattern generator, they were therefore extended to the 3D cone
of COM accelerations.