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 the Jet Propulsion Laboratory 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
html Overview of the controller's principles
html Python prototype of the walking trajectory generator

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,
  doi = {10.1109/ICRA.2019.8794348},
}

Discussion

Thanks to all those who have contributed to the conversation so far. Feel free to leave a reply using the form below, or subscribe to the  Discussion's atom feed to stay tuned.

  • Avatar

    Reader #1

    Posted on

    Ankle angular velocities are clamped in the foot damping controller. How significant is this? Does the pipeline rely on this?

    • Avatar

      Stéphane

      Posted on

      We clamped angular velocities at 0.2 rad/s for the ankles. In the nominal behavior (a.k.a. "if everything goes well"™) no clamping should happen, so the control pipeline does not rely on this part. This clamping is rather a safety to avoid some states going from bad to worse: if the ZMP hits the boundary of its support area and the foot starts to tilt around its edge, force/torque sensors may measure an obscenely-far ZMP. We don't want to forward this value unclamped to a direct velocity controller ;-)

  • Avatar

    Reader #2

    Posted on

    In the MPC trajectory generator, what ZMP constraints are enforced during double support?

    • Avatar

      Stéphane

      Posted on

      To compute open-loop walking trajectories (i.e. before sensor readings and DCM feedback, which are the task of the stabilizer), we solve linear model predictive control (MPC) quadratic programs. These programs follow the formulation from Wieber et al., see e.g. the writeup in Brasseur et al. (2015). In particular, problems from this line of work use CoM jerk as control inputs/optimization variables, and don't have inequality constraints during double support phases, owing to the fact that these phases are no more than one or two timesteps. See the ZMP inequality constraint FAQ of the controller for more technical details.

  • Avatar

    Reader #3

    Posted on

    Why isn't there an angular momentum task in whole body control?

    • Avatar

      Stéphane

      Posted on

      Although the linear inverted pendulum model assumes constant angular momentum around the CoM, this controller does not try to explicitly control angular momentum. Rather, it relies on chest posture control for the upper body, and treats angular momentum variations as unmodeled disturbances handled after the fact by DCM feedback. Chest posture control is synchronized with foot damping control to adapt to terrain variations: see the angular momentum task FAQ of the controller for more technical details.

  • Avatar

    Reader #4

    Posted on

    What are the pros and cons of CoM admittance control?

    • Avatar

      Stéphane

      Posted on

      While we used CoM admittance control in 2019 stair climbing experiments, such as the one you see in the video above, we disabled it by default when distributing the open source controller. This choice is detailed in the CoM admittance control FAQ of the controller. In short: it improves disturbance rejection when contact force constraints are saturated (like we had when stepping up), but on stiff position-controlled robots like HRP-4 it has a tendency to pick up resonance vibrations.

  • Avatar

    Reader #5

    Posted on

    How is the divergent component of motion estimated?

    • Avatar

      Stéphane

      Posted on

      As now described in Appendix B, we compute the translation and orientation of the floating base using the classical IMU with anchor frame estimate. We then derive the CoM position by combining it with joint encoder measurements, and the CoM velocity by first-order low-pass filtering of this position.

  • Avatar

    Reader #6

    Posted on

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

    • Avatar

      Stéphane

      Posted on

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

      • Avatar

        Reader #6

        Posted on

        OK, but why in practice use damping control rather than an acceleration-based formulation?

        • Avatar

          Stéphane

          Posted on

          Large stiffness and low damping were rather a design choice that came with the robots we worked with. The second-order model with both stiffness \(K\) and damping \(B\) coefficients has more parameters to tune, but if \(K \Delta \theta \gg B \Delta \dot{\theta}\) this more complex model will anyway behave like a first-order model. Let us apply Occam's razor then: using the first-order model, we get similar performance with less parameters to tune and simpler code to maintain ;-)

  • Avatar

    Reader #7

    Posted on

    Shall we try moving away from such high-stiffness low-damping at the contact interface?

    • Avatar

      Stéphane

      Posted on

      Absolutely, moving away from high stiffness and low damping at contact makes sense in my opinion. We tried moving away from this setting when walking on gravel with soft soles: the soles had a Young's modulus of 0.32 MPa (versus 5 MPa in previous works and I-don't-know-how-much for the default hard robot soles) meaning we reduced \(K\) rather than increase \(B\). We still walked on hard floor though. There were two takeaway observations from this work:

      First, the interaction with the ground through soft soles had more (ankle displacement to reaction force change) delay, i.e. lower force control bandwidth. This is not great for balance control where, when the stabilizer outputs a desired contact wrench, we want this wrench to be applied to the environment as fast as possible. That's one thing to look at: what combinations of \(K\) and \(B\) maximize the force control bandwidth?

      Second, foot impacts at touchdown with soft soles were better mitigated mechanically. Walking controllers typically touch down earlier than expected at every step, which incurs undesired CoM velocity disturbances (foot impacts after they propagate across the kinematic chain). But with the soft soles these impacts were lower. If we imagine a function \(\mathrm{impact}(K, B)\) at touchdown, it is likely decreasing in \(B\) yet increasing in \(K\). This leads us to another question: for a given \(K\) (and some model of early-touchdown impact), what values of \(B\) minimize \(\mathrm{impact}(K, B)\)?

  • Avatar

    Reader #8

    Posted on

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

    • Avatar

      Stéphane

      Posted on

      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:

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