Stair Climbing Stabilization of the HRP-4 Humanoid Robot using Whole-body Admittance Control

Stéphane Caron, Abderrahmane Kheddar and Olivier Tempier. ICRA 2019, Montreal, Canada, May 2019.

Abstract

We consider dynamic stair climbing with the HRP-4 humanoid robot as part of an Airbus manufacturing use-case demonstrator. We share experimental knowledge gathered so as to achieve this task, which HRP-4 had never been challenged to before. In particular, we extend walking stabilization based on linear inverted pendulum tracking by quadratic programming-based wrench distribution and a whole-body admittance controller that applies both end-effector and CoM strategies. While existing stabilizers tend to use either one or the other, our experience suggests that the combination of these two approaches improves tracking performance. We demonstrate this solution in an on-site experiment where HRP-4 climbs an industrial staircase with 18.5 cm high steps, and release our walking controller as open source software.

Videos

Climbing stairs

Standing on mobile ground

Content

The paper on HAL is a post-print I have kept updating after the conference to keep up with the later additions and fixes implemented in the walking controller. See the release notes on GitHub for an overview of the major changes since the conference version (v1.1).

pdf Post-print paper
pdf Poster presented at ICRA 2019
pdf Presentation given at NASA-Caltech JPL on 5 June 2019
mp4 Stair climbing at the Airbus Saint-Nazaire factory
github Walking controller (C++)
doi 10.1109/ICRA.2019.8794348

Supplementary material

html Controller documentation
html Floating base observer used in this controller

BibTeX

@inproceedings{caron2019icra,
  title = {Stair Climbing Stabilization of the {HRP}-4 Humanoid Robot using Whole-body Admittance Control},
  author = {Caron, St{\'e}phane and Kheddar, Abderrahmane and Tempier, Olivier},
  booktitle = {IEEE International Conference on Robotics and Automation},
  url = {https://hal.archives-ouvertes.fr/hal-01875387},
  year = {2019},
  month = may,
}

Discussion

What is the formula for the matrix \(\bfU\) in Equation (10)?

This matrix is given by:

\begin{equation*} \bfU = \begin{bmatrix} -1 & 0 & -\mu & 0 & 0 & 0 \\ +1 & 0 & -\mu & 0 & 0 & 0 \\ 0 & -1 & -\mu & 0 & 0 & 0 \\ 0 & +1 & -\mu & 0 & 0 & 0 \\ 0 & 0 & -Y & -1 & 0 & 0 \\ 0 & 0 & -Y & +1 & 0 & 0 \\ 0 & 0 & -X & 0 & -1 & 0 \\ 0 & 0 & -X & 0 & +1 & 0 \\ -Y & -X & -(X + Y) \mu & +\mu & +\mu & -1 \\ -Y & +X & -(X + Y) \mu & +\mu & -\mu & -1 \\ +Y & -X & -(X + Y) \mu & -\mu & +\mu & -1 \\ +Y & +X & -(X + Y) \mu & -\mu & -\mu & -1 \\ +Y & +X & -(X + Y) \mu & +\mu & +\mu & +1 \\ +Y & -X & -(X + Y) \mu & +\mu & -\mu & +1 \\ -Y & +X & -(X + Y) \mu & -\mu & +\mu & +1 \\ -Y & -X & -(X + Y) \mu & -\mu & -\mu & +1 \end{bmatrix} \end{equation*}

with \(\mu\) the friction coefficient, \(X\) the half-length and \(Y\) the half-width of the rectangular contact area. Check out this paper for the derivation of this formula, which corresponds to its equations (15) to (20). In code, it is implemented in the functions:

Why use damping control at the foot contact frame rather than, say, an acceleration-based force control law?

The answer can be found in Equation (2) of Kajita et al. (2001). Robots from the HRP series have inherited from their Honda elders the choice of a mechanical flexibility (rubber bushes and linear dampers) added between the ankle and foot links. Stiffness \(K\) dominates damping \(B\) in this flexibility, that is, in practice \(K \Delta \theta \gg B \Delta \dot{\theta}\) where \(\theta\) is a contact frame angle. We then use as a ground reaction torque model:

\begin{equation*} \tau = K (\theta - \theta_{\mathit{ground}}) \end{equation*}

Usually the environment is static, so that the time-derivative of this expression is:

\begin{equation*} \dot{\tau} = K \dot{\theta} \end{equation*}

Foot damping control corresponds to the following angular velocity:

\begin{equation*} \dot{\theta} = A (\tau_{\mathit{desired}} - \tau) \end{equation*}

In closed loop, this yields:

\begin{equation*} \dot{\tau} = K A (\tau_{\mathit{desired}} - \tau) \end{equation*}

This ensures that \(\tau \to \tau_{\mathit{desired}}\) as \(t \to \infty\).

Pages of this website are under the CC-BY 4.0 license.