Stair Climbing Stabilization of the HRP4 Humanoid Robot using Wholebody Admittance Control
Abstract
We consider dynamic stair climbing with the HRP4 humanoid robot as part of an Airbus manufacturing usecase demonstrator. We share experimental knowledge gathered so as to achieve this task, which HRP4 had never been challenged to before. In particular, we extend walking stabilization based on linear inverted pendulum tracking by quadratic programmingbased wrench distribution and a wholebody admittance controller that applies both endeffector 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 onsite experiment where HRP4 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 postprint 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).
Postprint paper  
Poster presented at ICRA 2019  
Presentation given at the Jet Propulsion Laboratory on 5 June 2019  
Stair climbing at the Airbus SaintNazaire factory  
Walking controller (C++)  
10.1109/ICRA.2019.8794348 
Supplementary material
Controller documentation  
Floating base observer used in this controller  
Overview of the controller's principles  
Python prototype of the walking trajectory generator 
BibTeX
@inproceedings{caron2019icra,
title = {Stair Climbing Stabilization of the {HRP}4 Humanoid Robot using Wholebody Admittance Control},
author = {Caron, St{\'e}phane and Kheddar, Abderrahmane and Tempier, Olivier},
booktitle = {IEEE International Conference on Robotics and Automation},
url = {https://hal.archivesouvertes.fr/hal01875387},
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.

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

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 obscenelyfar ZMP. We don't want to forward this value unclamped to a direct velocity controller ;)


Reader #2
Posted on
In the MPC trajectory generator, what ZMP constraints are enforced during double support?

Stéphane
Posted on
To compute openloop 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.


Reader #3
Posted on
Why isn't there an angular momentum task in whole body control?

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.


Reader #4
Posted on
What are the pros and cons of CoM admittance control?

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 positioncontrolled robots like HRP4 it has a tendency to pick up resonance vibrations.


Reader #5
Posted on
How is the divergent component of motion estimated?

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 firstorder lowpass filtering of this position.


Reader #6
Posted on
Why use damping control at the foot contact frame rather than, say, an accelerationbased force control law?

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

Reader #6
Posted on
OK, but why in practice use damping control rather than an accelerationbased formulation?

Stéphane
Posted on
Large stiffness and low damping were rather a design choice that came with the robots we worked with. The secondorder 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 firstorder model. Let us apply Occam's razor then: using the firstorder model, we get similar performance with less parameters to tune and simpler code to maintain ;)




Reader #7
Posted on
Shall we try moving away from such highstiffness lowdamping at the contact interface?

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 Idon'tknowhowmuch 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 earlytouchdown impact), what values of \(B\) minimize \(\mathrm{impact}(K, B)\)?


Reader #8
Posted on
What is the formula for the matrix \(\bfU\) in Equation (10)?

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 halflength and \(Y\) the halfwidth 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:
 Contact.wrench_inequalities() of pymanoid (Python)
 Stabilizer::wrenchFaceMatrix() of the lipm_walking_controller (C++)
