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


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

\begin{eqnarray} m \pdd_G & = & m \bfg + \bff^c \\ \Ld_O & = & \overrightarrow{OG} \times m \bfg + \bftau^{c}_G \end{eqnarray}

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:

\begin{eqnarray} \bff^{gi} & \defeq & m (\bfg - \pdd_G) \\ \bftau^{gi}_O & \defeq & \overrightarrow{OG} \times m \bfg - \Ld_O \end{eqnarray}

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:

\begin{eqnarray} \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{eqnarray}

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:

\begin{equation} \overrightarrow{OZ} \ = \ \frac{\bfn \times \bfM^{gi}_O}{\bff^{gi} \cdot \bfn} \end{equation}

This formula is used in practice to compute the ZMP from force sensors or from an inertial measurement unit. Current humanoids embed both of these components.

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:

  • the resultant pressure force \(\bff^p = (\bff^c \cdot \bfn) \bfn\), and
  • the resultant friction force \(\bff^f = \bff^c - \bff^p\), which is 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\) :

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

\begin{eqnarray} \bftau^p_C & = & \boldsymbol{0} \\ \overrightarrow{OC} \times (\bff^p \cdot \bfn) \bfn & = & - \bftau^p_O \\ (\bff^p \cdot \bfn)\,\bfn \times \overrightarrow{OC} \times \bfn & = & -\bfn \times \bftau^p_O \end{eqnarray}

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

$$ \overrightarrow{OC} = \frac{\bftau^p_O \times \bfn}{\bfn \cdot \bff^p} $$

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:

$$ \overrightarrow{OC} = \frac{\bftau^c_O \times \bfn}{\bfn \cdot \bff^c} $$

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:

$$ \bftau^c_O = \int_{P \in {\cal S}} \overrightarrow{OP} \times p(P) \bfn {\rm d}{\cal S} $$

So that the COP formula above becomes:

$$ \overrightarrow{OC} = \frac{\int_{P \in {\cal S}} p(P)\,\overrightarrow{OP}\,{\rm d}{\cal S}}{\int_{P \in {\cal S}} p(P) {\rm d}{\cal S}} $$

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 a sufficient condition for contact stability. The sufficient part is the complementary non-sliding condition, which was derived in a recent work.

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.

Content on this website is under the CC-BY 4.0 license.