Stéphane on Locomotion - Comments: Stair Climbing Stabilization of the HRP-4 Humanoid Robot using Whole-body Admittance Controlhttps://scaron.info/publications/icra-2019.html/2019-05-20T16:42:00+02:00Posted by: Stéphane2019-05-20T16:42:00+02:002019-05-20T16:42:00+02:00Stéphanetag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-reply-dcm-estimation<p>As now described in Appendix B, we compute the translation and orientation of
the floating base using the classical <a class="reference external" href="https://scaron.info/teaching/floating-base-estimation.html">IMU with anchor frame</a> estimate. We
then derive the CoM position by combining it with joint encoder measurements,
and the CoM velocity by first-order <a class="reference external" href="https://en.wikipedia.org/wiki/Low-pass_filter">low-pass filtering</a> of this position.</p>
Posted by: Stéphane2019-05-20T16:42:00+02:002019-05-20T16:42:00+02:00Stéphanetag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-reply-angular-momentum-task<p>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 <em>chest posture control</em> for the upper body, and
treats angular momentum variations as unmodeled disturbances handled after the
fact by DCM feedback. Chest …</p><p>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 <em>chest posture control</em> 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 <a class="reference external" href="https://github.com/stephane-caron/lipm_walking_controller/wiki/Why-isn%27t-there-an-angular-momentum-task-in-whole-body-control%3F">angular momentum task FAQ</a>
of the controller for more technical details.</p>
Posted by: Stéphane2019-05-20T16:42:00+02:002019-05-20T16:42:00+02:00Stéphanetag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-reply-formula-contact-wrench-cone<p>This matrix is given by:</p>
<div class="math">
\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 …</div><p>This matrix is given by:</p>
<div class="math">
\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*}
</div>
<p>with <span class="math">\(\mu\)</span> the friction coefficient, <span class="math">\(X\)</span> the half-length and <span class="math">\(Y\)</span> the half-width of the rectangular contact area. Check out <a class="reference external" href="https://hal.archives-ouvertes.fr/hal-02108449/document">this paper</a> for the derivation of this formula, which corresponds to its equations (15) to (20). In code, it is implemented in the functions:</p>
<ul class="simple">
<li><a class="reference external" href="https://scaron.info/doc/pymanoid/contact-stability.html#pymanoid.contact.Contact.wrench_inequalities">Contact.wrench_inequalities()</a> of <a class="reference external" href="https://github.com/stephane-caron/pymanoid/">pymanoid</a> (Python)</li>
<li><a class="reference external" href="https://github.com/stephane-caron/lipm_walking_controller/blob/1faa0b7adec71acf8e2af9de934695ab16296fc3/include/lipm_walking/Stabilizer.h#L215">Stabilizer::wrenchFaceMatrix()</a> of the <a class="reference external" href="https://github.com/stephane-caron/lipm_walking_controller/">lipm_walking_controller</a> (C++)</li>
</ul>
Posted by: Stéphane2019-05-20T16:42:00+02:002019-05-20T16:42:00+02:00Stéphanetag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-reply-why-not-acceleration-based<p>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 <span class="math">\(K\)</span> and damping <span class="math">\(B\)</span> coefficients has more parameters to tune, but if <span class="math">\(K \Delta \theta \gg B \Delta \dot{\theta}\)</span> this more complex model will anyway …</p><p>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 <span class="math">\(K\)</span> and damping <span class="math">\(B\)</span> coefficients has more parameters to tune, but if <span class="math">\(K \Delta \theta \gg B \Delta \dot{\theta}\)</span> 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 ;-)</p>
Posted by: Stéphane2019-05-20T16:42:00+02:002019-05-20T16:42:00+02:00Stéphanetag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-reply-damping-control-at-foot-contacts<p>The answer can be found in Equation (2) of <a class="reference external" href="https://doi.org/10.1109/ROBOT.2001.933139">Kajita et al. (2001)</a>. 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 <span class="math">\(K\)</span> dominates damping <span class="math">\(B\)</span> in this flexibility …</p><p>The answer can be found in Equation (2) of <a class="reference external" href="https://doi.org/10.1109/ROBOT.2001.933139">Kajita et al. (2001)</a>. 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 <span class="math">\(K\)</span> dominates damping <span class="math">\(B\)</span> in this flexibility, that is, in practice <span class="math">\(K \Delta \theta \gg B \Delta \dot{\theta}\)</span> where <span class="math">\(\theta\)</span> is a contact frame angle. We then use as a ground reaction torque model:</p>
<div class="math">
\begin{equation*}
\tau = K (\theta - \theta_{\mathit{ground}})
\end{equation*}
</div>
<p>Usually the environment is static, so that the time-derivative of this expression is:</p>
<div class="math">
\begin{equation*}
\dot{\tau} = K \dot{\theta}
\end{equation*}
</div>
<p>Foot damping control corresponds to the following angular velocity:</p>
<div class="math">
\begin{equation*}
\dot{\theta} = A (\tau_{\mathit{desired}} - \tau)
\end{equation*}
</div>
<p>In closed loop, this yields:</p>
<div class="math">
\begin{equation*}
\dot{\tau} = K A (\tau_{\mathit{desired}} - \tau)
\end{equation*}
</div>
<p>This ensures that <span class="math">\(\tau \to \tau_{\mathit{desired}}\)</span> as <span class="math">\(t \to \infty\)</span>.</p>
Posted by: Stéphane2019-05-20T16:42:00+02:002019-05-20T16:42:00+02:00Stéphanetag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-reply-com-admittance-control-pros-and-cons<p>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 <a class="reference external" href="https://github.com/stephane-caron/lipm_walking_controller/wiki/What-are-the-pros-and-cons-of-CoM-admittance-control%3F">CoM
admittance control FAQ</a>
of the controller. In short: it improves disturbance …</p><p>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 <a class="reference external" href="https://github.com/stephane-caron/lipm_walking_controller/wiki/What-are-the-pros-and-cons-of-CoM-admittance-control%3F">CoM
admittance control FAQ</a>
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.</p>
Posted by: Stéphane2019-05-20T16:42:00+02:002019-05-20T16:42:00+02:00Stéphanetag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-reply-ankle-angular-velocities<p>We clamped angular velocities at 0.2 rad/s for the ankles. In the nominal
behavior (<em>a.k.a.</em> "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 …</p><p>We clamped angular velocities at 0.2 rad/s for the ankles. In the nominal
behavior (<em>a.k.a.</em> "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 ;-)</p>
Posted by: Stéphane2019-05-20T16:42:00+02:002019-05-20T16:42:00+02:00Stéphanetag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-reply-zmp-constraints-double-support<p>To compute open-loop walking trajectories (<em>i.e.</em> 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 <em>et al.</em>, see <em>e.g.</em> the writeup in <a class="reference external" href="https://hal.inria.fr/hal-01418355/document">Brasseur et al.
(2015)</a>. In particular …</p><p>To compute open-loop walking trajectories (<em>i.e.</em> 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 <em>et al.</em>, see <em>e.g.</em> the writeup in <a class="reference external" href="https://hal.inria.fr/hal-01418355/document">Brasseur et al.
(2015)</a>. 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 <a class="reference external" href="https://github.com/stephane-caron/lipm_walking_controller/wiki/What-ZMP-inequality-constraints-are-used-in-the-MPC-during-stair-climbing%3F">ZMP
inequality constraint FAQ</a>
of the controller for more technical details.</p>
Posted by: Stéphane2019-05-20T16:42:00+02:002019-05-20T16:42:00+02:00Stéphanetag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-reply-high-stiffness-low-damping-at-contacts<p>Absolutely, moving away from high stiffness and low damping at contact makes sense in my opinion. We tried moving away from this setting when <a class="reference external" href="https://hal.archives-ouvertes.fr/hal-01576516/document">walking on gravel with soft soles</a>: 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 …</p><p>Absolutely, moving away from high stiffness and low damping at contact makes sense in my opinion. We tried moving away from this setting when <a class="reference external" href="https://hal.archives-ouvertes.fr/hal-01576516/document">walking on gravel with soft soles</a>: 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 <span class="math">\(K\)</span> rather than increase <span class="math">\(B\)</span>. We still walked on hard floor though. There were two takeaway observations from this work:</p>
<p>First, the interaction with the ground through soft soles had more (ankle displacement to reaction force change) delay, <em>i.e.</em> 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 <span class="math">\(K\)</span> and <span class="math">\(B\)</span> maximize the force control bandwidth?</p>
<p>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 <span class="math">\(\mathrm{impact}(K, B)\)</span> at touchdown, it is likely decreasing in <span class="math">\(B\)</span> yet increasing in <span class="math">\(K\)</span>. This leads us to another question: for a given <span class="math">\(K\)</span> (and some model of early-touchdown impact), what values of <span class="math">\(B\)</span> minimize <span class="math">\(\mathrm{impact}(K, B)\)</span>?</p>
Posted by: Reader #82019-05-20T16:18:00+02:002019-05-20T16:18:00+02:00Reader #8tag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-question-formula-contact-wrench-cone<p>What is the formula for the matrix <span class="math">\(\bfU\)</span> in Equation (10)?</p>
<script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var align = "center",
indent = "0em",
linebreak = "false";
if (false) {
align = (screen.width < 768) ? "left" : align;
indent = (screen.width < 768) ? "0em" : indent;
linebreak = (screen.width < 768) ? 'true' : linebreak;
}
var mathjaxscript = document.createElement('script');
mathjaxscript.id = 'mathjaxscript_pelican_ …</script><p>What is the formula for the matrix <span class="math">\(\bfU\)</span> in Equation (10)?</p>
<script type="text/javascript">if (!document.getElementById('mathjaxscript_pelican_#%@#$@#')) {
var align = "center",
indent = "0em",
linebreak = "false";
if (false) {
align = (screen.width < 768) ? "left" : align;
indent = (screen.width < 768) ? "0em" : indent;
linebreak = (screen.width < 768) ? 'true' : linebreak;
}
var mathjaxscript = document.createElement('script');
mathjaxscript.id = 'mathjaxscript_pelican_#%@#$@#';
mathjaxscript.type = 'text/javascript';
mathjaxscript.src = '/MathJax/MathJax.js?config=TeX-AMS-MML_HTMLorMML';
var configscript = document.createElement('script');
configscript.type = 'text/x-mathjax-config';
configscript[(window.opera ? "innerHTML" : "text")] =
"MathJax.Hub.Config({" +
" config: ['MMLorHTML.js']," +
" TeX: { extensions: ['AMSmath.js','AMSsymbols.js','noErrors.js','noUndefined.js'], equationNumbers: { autoNumber: 'none' } }," +
" jax: ['input/TeX','input/MathML','output/HTML-CSS']," +
" extensions: ['tex2jax.js','mml2jax.js','MathMenu.js','MathZoom.js']," +
" displayAlign: '"+ align +"'," +
" displayIndent: '"+ indent +"'," +
" showMathMenu: true," +
" messageStyle: 'normal'," +
" tex2jax: { " +
" inlineMath: [ ['\\\\(','\\\\)'] ], " +
" displayMath: [ ['$$','$$'] ]," +
" processEscapes: true," +
" preview: 'TeX'," +
" }, " +
" 'HTML-CSS': { " +
" availableFonts: ['STIX', 'TeX']," +
" preferredFont: 'STIX'," +
" styles: { '.MathJax_Display, .MathJax .mo, .MathJax .mi, .MathJax .mn': {color: '#333 ! important'} }," +
" linebreaks: { automatic: "+ linebreak +", width: '90% container' }," +
" }, " +
" 'TeX': { " +
" Macros: { " +
" defeq: \"{\\\\stackrel{\\\\mathrm{def}}{=}}\"," +
" Ld: \"{\\\\dot{L}}\"," +
" LdG: \"{\\\\dot{L}_G}\"," +
" bfA: \"{\\\\boldsymbol{A}}\"," +
" bfB: \"{\\\\boldsymbol{B}}\"," +
" bfC: \"{\\\\boldsymbol{C}}\"," +
" bfD: \"{\\\\boldsymbol{D}}\"," +
" bfE: \"{\\\\boldsymbol{E}}\"," +
" bfF: \"{\\\\boldsymbol{F}}\"," +
" bfG: \"{\\\\boldsymbol{G}}\"," +
" bfH: \"{\\\\boldsymbol{H}}\"," +
" bfI: \"{\\\\boldsymbol{I}}\"," +
" bfJ: \"{\\\\boldsymbol{J}}\"," +
" bfK: \"{\\\\boldsymbol{K}}\"," +
" bfL: \"{\\\\boldsymbol{L}}\"," +
" bfM: \"{\\\\boldsymbol{M}}\"," +
" bfN: \"{\\\\boldsymbol{N}}\"," +
" bfO: \"{\\\\boldsymbol{O}}\"," +
" bfP: \"{\\\\boldsymbol{P}}\"," +
" bfQ: \"{\\\\boldsymbol{Q}}\"," +
" bfR: \"{\\\\boldsymbol{R}}\"," +
" bfS: \"{\\\\boldsymbol{S}}\"," +
" bfT: \"{\\\\boldsymbol{T}}\"," +
" bfU: \"{\\\\boldsymbol{U}}\"," +
" bfV: \"{\\\\boldsymbol{V}}\"," +
" bfW: \"{\\\\boldsymbol{W}}\"," +
" bfX: \"{\\\\boldsymbol{X}}\"," +
" bfY: \"{\\\\boldsymbol{Y}}\"," +
" bfZ: \"{\\\\boldsymbol{Z}}\"," +
" bfa: \"{\\\\boldsymbol{a}}\"," +
" bfb: \"{\\\\boldsymbol{b}}\"," +
" bfc: \"{\\\\boldsymbol{c}}\"," +
" bfd: \"{\\\\boldsymbol{d}}\"," +
" bfe: \"{\\\\boldsymbol{e}}\"," +
" bff: \"{\\\\boldsymbol{f}}\"," +
" bfg: \"{\\\\boldsymbol{g}}\"," +
" bfh: \"{\\\\boldsymbol{h}}\"," +
" bfi: \"{\\\\boldsymbol{i}}\"," +
" bfj: \"{\\\\boldsymbol{j}}\"," +
" bfk: \"{\\\\boldsymbol{k}}\"," +
" bfl: \"{\\\\boldsymbol{l}}\"," +
" bfm: \"{\\\\boldsymbol{m}}\"," +
" bfn: \"{\\\\boldsymbol{n}}\"," +
" bfo: \"{\\\\boldsymbol{o}}\"," +
" bfp: \"{\\\\boldsymbol{p}}\"," +
" bfq: \"{\\\\boldsymbol{q}}\"," +
" bfr: \"{\\\\boldsymbol{r}}\"," +
" bfs: \"{\\\\boldsymbol{s}}\"," +
" bft: \"{\\\\boldsymbol{t}}\"," +
" bfu: \"{\\\\boldsymbol{u}}\"," +
" bfv: \"{\\\\boldsymbol{v}}\"," +
" bfw: \"{\\\\boldsymbol{w}}\"," +
" bfx: \"{\\\\boldsymbol{x}}\"," +
" bfy: \"{\\\\boldsymbol{y}}\"," +
" bfz: \"{\\\\boldsymbol{z}}\"," +
" bfalpha: \"{\\\\boldsymbol{\\\\alpha}}\"," +
" bfbeta: \"{\\\\boldsymbol{\\\\beta}}\"," +
" bfchi: \"{\\\\boldsymbol{\\\\chi}}\"," +
" bfgamma: \"{\\\\boldsymbol{\\\\gamma}}\"," +
" bflambda: \"{\\\\boldsymbol{\\\\lambda}}\"," +
" bfomega: \"{\\\\boldsymbol{\\\\omega}}\"," +
" bfone: \"{\\\\boldsymbol{1}}\"," +
" bfsigma: \"{\\\\boldsymbol{\\\\sigma}}\"," +
" bftau: \"{\\\\boldsymbol{\\\\tau}}\"," +
" bfxi: \"{\\\\boldsymbol{\\\\xi}}\"," +
" bfzero: \"{\\\\boldsymbol{0}}\"," +
" calA: \"{\\\\cal A}\"," +
" calB: \"{\\\\cal B}\"," +
" calC: \"{\\\\cal C}\"," +
" calD: \"{\\\\cal D}\"," +
" calE: \"{\\\\cal E}\"," +
" calF: \"{\\\\cal F}\"," +
" calG: \"{\\\\cal G}\"," +
" calH: \"{\\\\cal H}\"," +
" calI: \"{\\\\cal I}\"," +
" calJ: \"{\\\\cal J}\"," +
" calK: \"{\\\\cal K}\"," +
" calL: \"{\\\\cal L}\"," +
" calM: \"{\\\\cal M}\"," +
" calN: \"{\\\\cal N}\"," +
" calO: \"{\\\\cal O}\"," +
" calP: \"{\\\\cal P}\"," +
" calQ: \"{\\\\cal Q}\"," +
" calR: \"{\\\\cal R}\"," +
" calS: \"{\\\\cal S}\"," +
" calT: \"{\\\\cal T}\"," +
" calU: \"{\\\\cal U}\"," +
" calV: \"{\\\\cal V}\"," +
" calW: \"{\\\\cal W}\"," +
" calX: \"{\\\\cal X}\"," +
" calY: \"{\\\\cal Y}\"," +
" calZ: \"{\\\\cal Z}\"," +
" d: [\"{\\\\rm d}{#1}\", 1]," +
" bfcd: \"{\\\\dot{\\\\bfc}}\"," +
" bfpd: \"{\\\\dot{\\\\bfp}}\"," +
" bfpdd: \"{\\\\ddot{\\\\bfp}}\"," +
" dim: \"{\\\\rm dim}\"," +
" p: \"{\\\\boldsymbol{p}}\"," +
" q: \"{\\\\boldsymbol{q}}\"," +
" qd: \"{\\\\dot{\\\\bfq}}\"," +
" qdd: \"{\\\\ddot{\\\\bfq}}\"," +
" xd: \"{\\\\dot{x}}\"," +
" xdd: \"{\\\\ddot{x}}\"," +
" yd: \"{\\\\dot{y}}\"," +
" ydd: \"{\\\\ddot{y}}\"," +
" zd: \"{\\\\dot{z}}\"," +
" zdd: \"{\\\\ddot{z}}\"," +
" defeq: \"{\\\\stackrel{\\\\mathrm{def}}{\\\\ =\\\\ }}\"," +
" } " +
" } " +
"}); " +
"if ('default' !== 'default') {" +
"MathJax.Hub.Register.StartupHook('HTML-CSS Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax['HTML-CSS'].FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_default');" +
"VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
"});" +
"MathJax.Hub.Register.StartupHook('SVG Jax Ready',function () {" +
"var VARIANT = MathJax.OutputJax.SVG.FONTDATA.VARIANT;" +
"VARIANT['normal'].fonts.unshift('MathJax_default');" +
"VARIANT['bold'].fonts.unshift('MathJax_default-bold');" +
"VARIANT['italic'].fonts.unshift('MathJax_default-italic');" +
"VARIANT['-tex-mathit'].fonts.unshift('MathJax_default-italic');" +
"});" +
"}";
(document.body || document.getElementsByTagName('head')[0]).appendChild(configscript);
(document.body || document.getElementsByTagName('head')[0]).appendChild(mathjaxscript);
}
</script>Posted by: Reader #72019-05-20T16:17:00+02:002019-05-20T16:17:00+02:00Reader #7tag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-question-high-stiffness-low-damping-at-contacts<p>Shall we try moving away from such high-stiffness low-damping at the contact interface?</p>Posted by: Reader #62019-05-20T16:07:00+02:002019-05-20T16:07:00+02:00Reader #6tag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-question-why-not-acceleration-based<p>OK, but why in practice use damping control rather than an acceleration-based formulation?</p>Posted by: Reader #62019-05-20T16:06:00+02:002019-05-20T16:06:00+02:00Reader #6tag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-question-damping-control-at-foot-contacts<p>Why use damping control at the foot contact frame rather than, say, an acceleration-based force control law?</p>Posted by: Reader #52019-05-20T16:05:00+02:002019-05-20T16:05:00+02:00Reader #5tag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-question-dcm-estimation<p>How is the divergent component of motion estimated?</p>Posted by: Reader #42019-05-20T16:04:00+02:002019-05-20T16:04:00+02:00Reader #4tag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-question-com-admittance-control-pros-and-cons<p>What are the pros and cons of CoM admittance control?</p>Posted by: Reader #32019-05-20T16:03:00+02:002019-05-20T16:03:00+02:00Reader #3tag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-question-angular-momentum-task<p>Why isn't there an angular momentum task in whole body control?</p>Posted by: Reader #22019-05-20T16:02:00+02:002019-05-20T16:02:00+02:00Reader #2tag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-question-zmp-constraints-double-support<p>In the MPC trajectory generator, what ZMP constraints are enforced during double support?</p>Posted by: Reader #12019-05-20T16:01:00+02:002019-05-20T16:01:00+02:00Reader #1tag:scaron.info,2019-05-20:/publications/icra-2019.html//comment-question-ankle-angular-velocities<p>Ankle angular velocities are clamped in the foot damping controller. How significant is this? Does the pipeline rely on this?</p>