ZMP support area

When a legged robot walks over a regular terrain, we can simplify its dynamics to a reduced model like the linear inverted pendulum where the center of mass (CoM) is controlled via the zero-tilting moment point (ZMP) of contact forces with the ground. To be physically feasible, the ZMP must lie in a support area, which is roughly "the area between the feet" in simple cases, and a bit more complex but still computable in the presence of additional contacts such as a hand on a wall or a knee on the ground.


Whole-body model

The constrained equations of motion of our whole-body model are:

\begin{equation*} \begin{array}{rcl} \bfM(\bfq) \qdd + \qd^\top \bfC(\bfq) \qd & = & \bfS^\top \bftau + \bftau_g(\bfq) + \bftau_\mathit{ext} + \bfJ(\bfq)^\top \bff \\ \bfF(\bfq) \bff & \leq & \bfzero \end{array} \end{equation*}

The configuration \(\bfq\) consists of its \(n\) actuated degrees of freedom and 6 unactuated floating base coordinates. Contact forces from the environment are stacked in the vector \(\bff\) and constrained by the matrix \(\bfF(\bfq)\) of Coulomb friction cones.

Reduced model

The constrained equations of motion of our reduced model are point-by-point similar to the whole-body:

\begin{equation*} \begin{array}{rcl} \bfpdd_G & = & \omega^2 (\bfp_G - \bfp_Z) \\ \bfA(\bfp_G) \bfp_Z & \leq & \bfb(\bfp_G) \end{array} \end{equation*}

The configuration \(\bfp_G\) consists of the the 2D horizontal position of the center of mass. Contact forces from the environment are aggregated in the position \(\bfp_Z\) of the ZMP and constrained by the polygonal half-space inequality \(\bfA(\bfp_G) \bfp_z \leq \bfb(\bfp_G)\).


The matrix \(\bfA(\bfp_G)\) and vector \(\bfb(\bfp_G)\) can be computed from the contact geometry and friction information encoded in \(\bfJ(\bfq)\) and \(\bfF(\bfq)\) by polyhedral projection. This method is described in Section IV of this paper.

Simplification on flat floors

In pre-2010 robotics papers, we often see the ZMP support area defined as the "convex hull of ground contact points", where \(\bfA\) and \(\bfb\) do not depend on \(\bfp_G\) any more and can be readily computed from ground contact points by a convex hull algorithm (a particular case of polyhedral projection). This simplification is only valid if we make two assumptions:

  • All ground contact points are coplanar.
  • The coefficient of friction for the interaction between robot feet and the ground is infinite.

If we follow the general algorithm from the previous section, which takes the CoM position \(\bfp_G\) as an input, it is not clear how the ZMP support area becomes independent from \(\bfp_G\) under these two conditions. Let us detail this step by step.

Infinite friction

Let us consider for simplicity of calculations that our flat ground contact plane is horizontal (othogonal to gravity). In the absence of friction constaints, our friction cone inequalities are reduced to contact unilaterality constraints:

\begin{equation*} \forall \textrm{ contact } i, \ f_i^z > 0 \end{equation*}

This means we can exert arbitrary horizontal forces \(f_i^x\) and \(f_i^y\) at every contact point \(i\).

Newton-Euler equations

Our contact forces are bound to the CoM and ZMP by Newton and Euler equations. First, Newton equation gives us:

\begin{equation*} \sum_{\textrm{contact } i} \bff_i = \bff = \frac{m g}{h} (\bfp_G - \bfp_Z) \end{equation*}

with \(m\) the total mass, \(g\) the gravity constant and \(h\) the CoM height above ground. Second, Euler equation (with no angular momentum at the center of mass since we are in a pendular model) gives us:

\begin{equation*} \sum_{\textrm{ contact } i} \bfp_i \times \bff_i = \bfp_G \times \bff \end{equation*}

Let's unwrap it to understand better what it says. On flat floor, we have \(z_i = 0\) for all contact points \(i\), so that the vector cross products expand to:

\begin{equation*} \begin{array}{rcl} \sum_{i} y_i f_i^z & = & y_G f^z - h f^y \\ \sum_{i} -x_i f_i^z & = & -x_G f^z + h f^x \\ \sum_{i} (x_i f_i^y - y_i f_i^x) & = & x_G f^y - y_G f^x \end{array} \end{equation*}

Since we are not limited by friction, the third equation always has a solution and we can trim it out. In the other two equations, we can replace \(\bff\) by its expression \(mg (\bfp_G - p_Z) / h\) from the linear inverted pendulum model, for instance:

\begin{equation*} \begin{array}{rcl} y_G f^z & = & y_G m g (h - 0) / h = y_G m g \\ h f^y & = & m g (y_G - y_Z) \\ y_G f^z - h f^y & = & m g y_Z \\ mg y_Z & = & \sum_i {f_i^z} y_i \end{array} \end{equation*}

and similarly for the other equation. Defining \(\alpha_i = \frac{f_i^z}{mg}\), we get:

\begin{equation*} \begin{array}{rcl} \bfp_Z & = & \sum_{i} \alpha_i \bfp_i \\ \forall i, \alpha_i & \geq & 0 \end{array} \end{equation*}

which is the vertex representation of the convex hull of ground contact points \(\bfp_i\).

To go further

ZMP support areas can be derived in any multi-contact configurations, but in this case they depend (nonlinearly) on the position of the center of mass. Simplified ZMP support areas can be applied for walking over both horizontal and inclined. For instance, they have been used by biped robots to climb stairs and quadruped robots to trot over inclined surfaces.

© Stéphane Caron — Pages of this website are under the Creative Commons CC BY 4.0 license.