# Zero-tilting moment point

In robotics, the *Zero-tilting Moment Point* (ZMP) is a characteristic point
used notably in legged 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).

## Definition

The ZMP stems from the Newton-Euler equations of motion of any multi-body system. These equations can be written as:

\begin{align} m \bfpdd_G & = m \bfg + \bff^c \\ \Ld_O & = \overrightarrow{OG} \times m \bfg + \bftau^{c}_G \end{align}where \(m\) is the total mass of the robot, \(\bfg\) the gravity
vector, \(G\) the center of gravity of the system, \(\bfpdd_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 =
[\bftau^c_G\ \bff^c])\) denotes the *net* contact wrench, that is, the sum of
all contact wrenches exerted onto the robot, with coordinates taken at the
center of mass (COM) \(G\).

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

\begin{align} \bff^{gi} & \defeq m (\bfg - \bfpdd_G) \\ \bftau^{gi}_O & \defeq \overrightarrow{OG} \times m \bfg - \Ld_O \end{align}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:

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:

\begin{align} \bftau^{gi}_Z \times \bfn & = (\bftau^{gi}_O + \overrightarrow{ZO} \times \bff^{gi}) \times \bfn \\ & = \bftau^{gi}_O \times \bfn + (\overrightarrow{ZO} \cdot \bfn) \bff^{gi} - (\bff^{gi} \cdot \bfn) \overrightarrow{ZO} \end{align}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:

This formula is used in practice to compute the ZMP from force sensors or from an inertial measurement
unit, which are
usually embedded in current legged robots. ZMPs can also be called *zero moment
points* for short in some contexts, for example in legged locomotion when the
angular momentum is kept constant at the center of mass so that \(\bftau^{gi}_Z
= \bftau^{gi}_G = \bfzero\). Remember however that without such assumption the
net moment of contact forces at the ZMP is only cancelled over two out of its
three coordinates.

## 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 and 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:

- the resultant pressure force \(\bff^p = (\bff^c \cdot \bfn) \bfn\), and
- the resultant friction force \(\bff^f = \bff^c - \bff^p\), tangent to the contact surface \((\bff^f \cdot \bfn = 0)\).

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\) :

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:

As both points \(O\) and \(C\) belong to the same plane of normal \(\bfn\), we get:

Meanwhile, friction forces are tangent to the contact surface, so that their moment is aligned with \(\bfn\). As a consequence, the relationship above can be equivalently written as:

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 area

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:

So that the COP formula above becomes:

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.

This criterion is frequently used in *walking pattern generation*, see for
example (Kajita et al., 2003)
and (Wieber, 2006). Note that it
is a necessary but not sufficient condition for contact stability, as it lacks the complementary
*non-sliding* condition (see for instance Section II of this paper for details).

## 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.