Capture point

The capture point is a characteristic quantity of the linear inverted pendulum model used in legged robot locomotion. It was originally coined by Pratt et al. (2006) to address a question of push recovery: where should the robot step right now to eliminate linear momentum and come asymptotically to a stop?


Let us start from the equation of motion of the linear inverted pendulum, where all the mass is concentrated at the center of mass \(\bfp_G\):

\begin{equation*} \bfpdd_G = \omega^2 (\bfp_G - \bfp_Z) \end{equation*}

We assume that the robot steps instantly at time \(t=0\) and maintains its ZMP \(\bfp_Z\) at a constant location in its new foothold, so that \(\bfp_Z\) is stationary. Since the natural frequency \(\omega\) of the pendulum is also a model constant, we can solve this second-order linear differential equation as:

\begin{equation*} \bfp_G(t) = \displaystyle \bfp_Z + \frac{e^{\omega t}}{2} \left[\bfp_G(0) + \frac{\bfpd_G(0)}{\omega} - \bfp_Z\right] + \frac{e^{-\omega t}}{2} \left[\bfp_G(0) - \frac{\bfpd_G(0)}{\omega} - \bfp_Z\right] \end{equation*}

This function is the sum of a stationary term \(\bfp_Z\), a convergent term factored by \(e^{-\omega t}\) that vanishes as \(t \to \infty\), and a term factored by \(e^{\omega t}\) that diverges as \(t \to \infty\). Let us define the capture point as:

\begin{equation*} \bfp_C \defeq \bfp_G + \frac{\bfpd_G}{\omega} \end{equation*}

The divergent term in \(\bfp_G(t)\) is then \(e^{\omega t}/2 (\bfp_C(0) - \bfp_Z)\). In particular, the only way for the center of mass trajectory to be bounded is for the stationary ZMP to be equal to the instantaneous capture point:

\begin{equation*} \bfp_Z = \bfp_C(0) \ \Longrightarrow \ \bfp_G(t) \underset{t \to \infty}{\longrightarrow} \bfp_C(0) \end{equation*}

We can thus interpret the capture point as a point where the robot should step (shift its ZMP) in order to come (asymptotically) to a stop.

Connection to balance

The capture point is a divergent component of motion of the linear inverted pendulum. Shifting the ZMP to the capture point prevents divergence from the unstable dynamics of the model, but does not control the other (stable) component. In effect, the system comes to a stop following its natural dynamics:

\begin{equation*} \bfpd_G = \omega (\bfp_C - \bfp_G) \end{equation*}

This phenomenon is noticable in balance controllers based on capture point feedback such as Englsberger et al. (2011) and Morisawa et al. (2012). Take the robot standing, push it in a given direction and sustain your push, then suddenly release it: the robot will come back to its reference standing position following its natural dynamics (which only depend on \(\omega\), i.e. gravity and the height of the center of mass), regardless of the values of the various feedback gains used in the balance controller. You can for instance test this behavior in dynamic simulations with the lipm_walking_controller.

This behavior highlights how balance controllers based on capture-point feedback are not trying to come to a stop as fast as possible. Rather, they focus on preventing divergence, and leverage passive dynamics to absorb undesired linear momentum. When using linear feedback, Sugihara (2009) showed that this approach maximizes the basin of attraction of the resulting controller.

Boundedness condition

The derivation above can be generalized to the case where \(\bfp_Z(t)\) is time-varying rather than time-invariant. Consider the equation of motion split as follows into divergent and convergent components:

\begin{equation*} \begin{array}{rcl} \bfpd_C & = & \omega (\bfp_C - \bfp_Z) \\ \bfpd_G & = & \omega (\bfp_C - \bfp_G) \end{array} \end{equation*}

The capture point diverges away from the ZMP while the center of mass is attracted to the capture point:

Decoupled dynamics between the ZMP, capture point and center of mass

As the center-of-mass dynamics are convergent, the system diverges if and only if its capture point diverges. We can therefore focus on the capture point dynamics alone.

The solution to a first-order linear time-varying differential equation is:

\begin{equation*} \dot{\bfy}(t) - a(t) \bfy(t) = \bfb(t) \ \Longrightarrow \ \bfy(t) = e^{A(t)} \left(\bfy(0) + \int_{\tau=0}^t \bfb(\tau) e^{-A(\tau)} {\rm d} \tau \right) \end{equation*}

where \(A\) is the antiderivative of \(a\) such that \(A(0)=0\). Applied to capture point dynamics, this formula becomes:

\begin{equation*} \bfp_C(t) = e^{\omega t} \left(\bfp_C(0) - \omega \int_{\tau=0}^t \bfp_Z(t) e^{-\omega \tau} {\rm d}\tau\right) \end{equation*}

We can check how, in the previous case where \(\bfp_Z\) is stationary, this formula becomes:

\begin{equation*} \bfp_C(t) = \bfp_Z + e^{\omega t} (\bfp_C(0) - \bfp_Z) \end{equation*}

The capture point trajectory is then bounded if and only if \(\bfp_Z = \bfp_C(0)\), which is indeed the result we obtained above. In the general case, the capture point stays bounded if and only if:

\begin{equation*} \bfp_C(0) = \omega \int_{\tau=0}^t \bfp_Z(t) e^{-\omega \tau} {\rm d}\tau \end{equation*}

This condition was coined boundedness condition by Lanari et al. (2014). It relates future system inputs to the present state, and characterizes the subset of these inputs that will actually stabilize the system in the long run. The boundedness condition is, for instance, a core component of the walking trajectory generator from Scianca et al. (2019). It can also be applied to more general reduced models such as the variable-height inverted pendulum.

To go further

The notion of divergent component of motion behind the capture point reaches beyond the linear inverted pendulum model. For instance, there exists a generalization of the capture point to variable height center-of-mass trajectories, from which the tiptoe balancing strategy emerges in addition to the stepping strategy.


There are no comments yet. Feel free to leave a reply using the form below.

Post a comment

You can use Markdown with $\LaTeX$ formulas in your comment.

You agree to the publication of your comment on this page under the CC BY 4.0 license.

Your email address will not be published.

© Stéphane Caron — All content on this website is under the CC BY 4.0 license.