<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Robot. AI</journal-id>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/frobt.2015.00021</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Robotics and AI</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Humanoid Robot Balance Control Using the Spherical Inverted Pendulum Mode</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Elhasairi</surname> <given-names>Ahmed</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="cor1">&#x0002A;</xref>
<uri xlink:href="http://frontiersin.org/people/u/238708"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Pechev</surname> <given-names>Alexandre</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Surrey Space Centre, University of Surrey</institution>, <addr-line>Guildford</addr-line>, <country>UK</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Alexandre Bernardino, Universidade de Lisboa, Portugal</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Kenji Hashimoto, Waseda University, Japan; Kensuke Harada, National Institute of Advanced Industrial Science and Technology, Japan</p></fn>
<corresp content-type="corresp" id="cor1">&#x0002A;Correspondence: Ahmed Elhasairi, Surrey Space Centre, University of Surrey, 11 Borelli Yard, Farnham, Surrey, GU9 7NU, UK, <email>a.elhasairi&#x00040;surrey.ac.uk</email></corresp>
<fn fn-type="other" id="fn001"><p>Specialty section: This article was submitted to Humanoid Robotics, a section of the journal Frontiers in Robotics and AI</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>05</day>
<month>10</month>
<year>2015</year>
</pub-date>
<pub-date pub-type="collection">
<year>2015</year>
</pub-date>
<volume>2</volume>
<elocation-id>21</elocation-id>
<history>
<date date-type="received">
<day>30</day>
<month>05</month>
<year>2015</year>
</date>
<date date-type="accepted">
<day>08</day>
<month>09</month>
<year>2015</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2015 Elhasairi and Pechev.</copyright-statement>
<copyright-year>2015</copyright-year>
<copyright-holder>Elhasairi and Pechev</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>Human beings are highly efficient in maintaining standing balance under the influence of different perturbations. However, biped humanoid robots are far from exhibiting similar skills. This is mainly due to the limitations in the current control and modeling techniques used in humanoid robots. Even though approaches using the Linear Inverted Pendulum Model and the Preview Control schemes have shown improved results, they still suffer from shortcomings in the overall generated motion. We propose here a model and control approach that aims to overcome the limiting assumptions in the LIPM models through using the ankle joint variables in modeling and control of the standing balance of the humanoid robot.</p>
</abstract>
<kwd-group>
<kwd>humanoid robots</kwd>
<kwd>modeling</kwd>
<kwd>standing balance</kwd>
<kwd>control</kwd>
</kwd-group>
<counts>
<fig-count count="13"/>
<table-count count="1"/>
<equation-count count="34"/>
<ref-count count="22"/>
<page-count count="13"/>
<word-count count="6029"/>
</counts>
</article-meta>
</front>
<body>
<sec id="S1" sec-type="introduction">
<label>1</label> <title>Introduction</title>
<p>Modeling and control of the biped robot balance and locomotion is a difficult and complex process due to its high dimensionality and non-linearity. Simplifying assumptions are needed in order to facilitate real-time robot control. There have been several studies in modeling biped locomotion. All of these use the zero moment point (ZMP) concept to study and control the motion of the biped. The most notable one is the introduction of the Linear Inverted Pendulum Model by Kajita and Tanie (<xref ref-type="bibr" rid="B10">1991</xref>) and Kajita et al. (<xref ref-type="bibr" rid="B9">2001</xref>, <xref ref-type="bibr" rid="B8">2003</xref>). In deriving this mode, the authors apply a set of constraints that limit the motion of the pendulum. The first of these limits the motion to a plane with a given normal and <italic>z</italic> intersection <italic>z<sub>c</sub></italic>. For walking on uneven terrain, the normal vector is parallel to the ground surface normal and the <italic>z</italic> intersection matches the average distance of the robot&#x02019;s CoM from the ground. Under these constraints the 3D inverted pendulum dynamics converted dynamics can be described as follows:
<disp-formula id="E1"><label>(1)</label><mml:math id="M1"><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">mz</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:math></disp-formula>
where <italic>x</italic> is the CoM position along the <italic>x-axis</italic>, <italic>g</italic> is the gravity acceleration, <italic>m</italic> is the total mass of the pendulum, and <italic>u<sub>x</sub></italic> is a virtual input to compensate for the non-linearities in the system. In other words, the 3D-LIPM linearizes the biped dynamics by constricting the center of mass (CoM) of the robot to travel on a straight line at a constant height from the ground. The authors also derive an expression of a conserved quantity termed the <italic>Orbital Energy</italic> (Kajita and Tanie, <xref ref-type="bibr" rid="B10">1991</xref>). The orbital energy characterizes the particular motion of the robot during the step. The linearized dynamics of the 3D-LIPM and the fact that the orbital energy is conserved allows for the calculation of the leg exchange condition to generate a stable walking gait.</p>
<p>Fujimoto and Kawamura (<xref ref-type="bibr" rid="B3">1998</xref>) proposed a control hierarchy for the posture of the robot by considering the physical constraints on the feet. Real-time trajectory generation was performed using a linearized model of the inverted pendulum. Hashimoto et al. (<xref ref-type="bibr" rid="B4">2013</xref>) developed humanoid walking stabilization method based on the findings of analysis human gait. The controller consists of the two main findings of the performed gait analysis (i.e., the swing foot step location is along the same direction of the CoM as viewed from the stand leg and the step length is modified to maintain a constant mechanical energy during locomotion). The developed controller requires the offline generation of a reference walking pattern and the iterative optimization of the swing leg hips angle, to ensure that the total mechanical energy remains within a predetermined range, based on the mechanical and dynamical properties of the robot.</p>
<p>Sugihara and others developed a real-time motion generation method through the control of the whole-body CoM by manipulating the ZMP (Sugihara et al., <xref ref-type="bibr" rid="B16">2002</xref>). The humanoid body is simulated as an inverted pendulum on a cart with its pivot point coinciding with the ZMP. The ZMP trajectory is then planned through the control of the inverted pendulum system. In a later article, Sugihara and Nakamura (<xref ref-type="bibr" rid="B15">2003</xref>) describe the use of the CoM displacement to achieve short- and long-term stability.</p>
<p>Standing balance recovery after a perturbation occurs is a complex process compromising the use of different balancing strategies. Experimental studies conducted by Horak and Nashner (<xref ref-type="bibr" rid="B7">1986</xref>) have identified that humans use three methods for recovering balance, Ankle, Hips, and Step strategies. Each one is employed for a different level of disturbance. The Ankle strategy is exploited for small disturbance. It uses the ankle torque to restore balance by modifying the center of pressure location (CoP) and hence changing the tangential term of the ground reaction force (GRF) affecting the CoM. On the other hand, the hip strategy is used for larger disturbances. Maki and McIlroy (<xref ref-type="bibr" rid="B11">1997</xref>) showed that the hip recovering torque is proportional to the size of the perturbation triggering the instability. For even larger disturbances, a step has to be taken to restore the robot balance by extending the support polygon.</p>
<p>Most control approaches for biped robot standing balance recovery implement the ankle strategy to regulate the CoP with fixed feet positions, such as the case in Hirai et al. (<xref ref-type="bibr" rid="B5">1998</xref>) and Nishiwaki and Kagami (<xref ref-type="bibr" rid="B12">2007</xref>). Pratt et al. (<xref ref-type="bibr" rid="B13">2006</xref>) extended the LIPM model by adding a flywheel at the hips of the biped to generate angular momentum around the CoM and employ the hips strategy for balance recovery. They have introduced the concept of the capture point and enhanced it through the use of the hips angular momentum to cover an entire region known as the Capture Region. Atkeson and Stephens (<xref ref-type="bibr" rid="B1">2007</xref>) proposed a method to maintain standing balance using different strategies by utilizing the same optimization criteria. The cost function used was a combination of quadratic penalties on the deviation of the joint angle and torques from zero. Furthermore, stepping strategies have been addressed with the Capture point and similar concepts in Stephens (<xref ref-type="bibr" rid="B14">2007</xref>) and Wang et al. (<xref ref-type="bibr" rid="B18">2009</xref>).</p>
<p>Our main goal here is to propose a new modeling approach based on the Spherical Inverted Pendulum (SIP) Model along with an efficient energy-based control law. In the following section, we will introduce the SIP model for the biped robot. In Section <xref ref-type="sec" rid="S3">3</xref>, we propose an energy controller based on the concept of dissipative systems. After that, in Section <xref ref-type="sec" rid="S4">4</xref>, we will demonstrate the results of the ankle strategy balance and compare its performance to traditional control approaches and extend the SIP model to utilize the stepping strategy for balance recovery. The model and controller described here are then used to derive the ankle strategy stability bounds in terms of the SIP state variables in Section <xref ref-type="sec" rid="S5">5</xref>. Finally in Section <xref ref-type="sec" rid="S6">6</xref>, we demonstrate how the stepping balance strategy can be extended to generate a stable walking gait.</p>
</sec>
<sec id="S2">
<label>2</label> <title>Spherical Inverted Pendulum Mode</title>
<p>In the biomechanical literature (Winter, <xref ref-type="bibr" rid="B21">1995</xref>; Uyar et al., <xref ref-type="bibr" rid="B17">2009</xref>), the standing human body is modeled as an inverted pendulum to represent the stance leg as shown in Figure <xref ref-type="fig" rid="F1">1</xref>. Similarly, the humanoid robot is modeled as a point mass located at the center of mass (CoM) of the robot with a mass equal to the total mass. The point mass is supported by a mass-less rod, describing the stance leg with a single contact point with the ground representing the ankle joint.</p>
<fig position="float" id="F1">
<label>Figure 1</label>
<caption><p><bold>Biomechanical model for human balance and walking as an inverted pendulum</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g001.tif"/>
</fig>
<p>The ankle joint in the SIP model is assumed to be a two degrees of freedom rotational joint. The CoM is allowed to move in three-dimensional space due to the two rotational degrees of freedom at the ankle. As a result, the CoM can fall anywhere on the surface defined by the hemisphere of radius equal to the stance leg length, as can be seen in Figure <xref ref-type="fig" rid="F2">2</xref>. This way the constraint to maintain constant height for the CoM off the ground is not required and more natural motion can be generated and controlled.</p>
<fig position="float" id="F2">
<label>Figure 2</label>
<caption><p><bold>Spherical inverted pendulum with two degrees of freedom at the pivot point</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g002.tif"/>
</fig>
<p>The CoM location in the local frame of reference is defined by <italic>p</italic>&#x02009;&#x0003D;&#x02009;(0, <italic>l</italic>, 0)<italic><sup>T</sup></italic>, where <italic>l</italic> is the length of the fully extended stance leg. The two rotational DoFs represent a rotation around the <italic>x</italic> and <italic>z</italic> axes as defined in Figure <xref ref-type="fig" rid="F2">2</xref>. The world position of the CoM is then given as:
<disp-formula id="E2"><label>(2)</label><mml:math id="M2"><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mi>w</mml:mi></mml:msup><mml:mi>p</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003D5;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi mathvariant="italic">cos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi>l</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mi mathvariant="italic">cos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003D5;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi mathvariant="italic">cos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi>l</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi>l</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:math></disp-formula>
The equations of motion have the following form:
<disp-formula id="E3"><label>(3)</label><mml:math id="M3"><mml:mfrac><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">dt</mml:mi></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi mathvariant="script">L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mover accent='true'><mml:mi>q</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow></mml:mfrac><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi mathvariant="script">L</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02202;q</mml:mi></mml:mrow></mml:mfrac><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>&#x003C4;</mml:mn></mml:math></disp-formula>
where <inline-formula><mml:math id="M4"><mml:mi mathvariant="script">L</mml:mi></mml:math></inline-formula>&#x02009;&#x0003D;&#x02009;<italic>K &#x02013; U</italic> is the Lagrangian defined as the difference between the kinetic energy, <italic>K</italic>, and the potential energy, <italic>U</italic>. The system state variable <inline-formula><mml:math id="M5"><mml:mi>q</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;&#x02009;&#x02009;&#x02009;&#x003D5;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> is the angles of the ankle joint and &#x003C4; is a (2&#x02009;&#x000D7;&#x02009;1) vector of actuator torques. Carrying out the derivatives in Eq. <xref ref-type="disp-formula" rid="E3">3</xref>, we derive the dynamic equations of the system as below:
<disp-formula id="E4"><label>(4)</label><mml:math id="M6"><mml:msup><mml:mrow><mml:mi mathvariant="italic">ml</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>m</mml:mi><mml:msup><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent='true'><mml:mi>&#x003D5;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi mathvariant="italic">cos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi mathvariant="italic">mlgcos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003D5;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow></mml:msub></mml:math></disp-formula>
<disp-formula id="E5"><label>(5)</label><mml:math id="M7"><mml:mi>m</mml:mi><mml:msup><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mi mathvariant="italic">cos</mml:mi><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mover accent='true'><mml:mi>&#x003D5;</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>2</mml:mn><mml:mover accent='true'><mml:mi>&#x003D5;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mi mathvariant="italic">tan</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:mi mathvariant="italic">gsin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003D5;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi mathvariant="italic">lcos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003D5;</mml:mn></mml:mrow></mml:msub></mml:math></disp-formula></p>
<p>As can be seen from Eqs <xref ref-type="disp-formula" rid="E4">4</xref> and <xref ref-type="disp-formula" rid="E5">5</xref>, the system is non-linear and there is a degree of cross coupling between the two degrees of freedom appearing in the form of the Centrifugal and Coriolis terms in the equations of motion. In the next section, we will introduce a dissipative energy controller that is able to stabilize the pendulum in its upright posture.</p>
</sec>
<sec id="S3">
<label>3</label> <title>SIP Balancing Using Dissipative Control</title>
<p>In order to find a storage function for the SIP model as defined by Willems (<xref ref-type="bibr" rid="B20">2007</xref>), we consider only one degree of freedom. Linearizing Eq. <xref ref-type="disp-formula" rid="E4">4</xref> around the upright posture, &#x003B8;&#x02009;&#x0003D;&#x02009;0, the unpowered system&#x02019;s equation of motion is given by:
<disp-formula id="E6"><label>(6)</label><mml:math id="M8"><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:mfrac><mml:mn>&#x003B8;</mml:mn></mml:math></disp-formula></p>
<p>The above system behaves like a spring-mass system with negative stiffness of <italic>k</italic>&#x02009;&#x0003D;&#x02009;&#x02212;<italic>g</italic>/<italic>l</italic>. A conserved quantity <italic>E<sub>SIP</sub></italic> can be defined as:
<disp-formula id="E7"><label>(7)</label><mml:math id="M9"><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">SIP</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:msup><mml:mrow><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mi>l</mml:mi></mml:mrow></mml:mfrac><mml:msup><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></disp-formula></p>
<p>The <italic>E<sub>SIP</sub></italic> represents the sum of the potential and kinetic energies. It can be interpreted as the stored energy function of the one degree of freedom inverted pendulum. The system is stabilized when the quantity <italic>E<sub>SIP</sub></italic>&#x02009;&#x0003D;&#x02009;0. The solution to this stable condition results in the eigenvalues of the system as given below:
<disp-formula id="E8"><label>(8)</label><mml:math id="M10"><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x000B1;</mml:mo><mml:msqrt><mml:mrow><mml:mfrac><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:msqrt><mml:mn>&#x003B8;</mml:mn></mml:math></disp-formula></p>
<p>The solution given by Eq. <xref ref-type="disp-formula" rid="E8">8</xref> represents a saddle point in the system dynamics with a stable eigenvector when &#x003B8; and <inline-formula><mml:math id="M11"><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula> have opposite signs (the CoM is moving toward the pivot point), and unstable eigenvector when the signs are the same (the CoM is moving away from the pivot point). Rearranging Eq. <xref ref-type="disp-formula" rid="E8">8</xref>, the state-space stability condition, defined as <italic>P</italic>, is given by:
<disp-formula id="E9"><label>(9)</label><mml:math id="M12"><mml:mi>P</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>&#x003B8;</mml:mn><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msqrt><mml:mrow><mml:mfrac><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:msqrt><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn></mml:math></disp-formula></p>
<p>However, when the system is disturbed, the above stability condition does not hold and <italic>P</italic>&#x02009;&#x02260;&#x02009;0. Using a standard proportional control law with gain, <italic>k<sub>p</sub></italic>, with the goal of restoring <italic>P</italic> to 0, the control input <italic>u</italic> can be defined as:
<disp-formula id="E10"><label>(10)</label><mml:math id="M13"><mml:mi>u</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mi>P</mml:mi></mml:math></disp-formula></p>
<p>The control input, <italic>u</italic>, is then related to the ankle joint torque, <italic>&#x003C4;</italic>, as follows:
<disp-formula id="E11"><label>(11)</label><mml:math id="M14"><mml:mn>&#x003C4;</mml:mn><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi mathvariant="italic">mglsin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>Using the control torque as the driving input to the linearized system described by Eq. <xref ref-type="disp-formula" rid="E6">6</xref>, the system can be represented by:
<disp-formula id="E12"><label>(12)</label><mml:math id="M15"><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:mfrac><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>u</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>The approximation <italic>sin</italic>(<italic>u</italic>)&#x02009;&#x02248;&#x02009;<italic>u</italic> was used in simplifying Eq. <xref ref-type="disp-formula" rid="E12">12</xref>. Substituting the values of <italic>u</italic> and <italic>P</italic> from Eqs. <xref ref-type="disp-formula" rid="E7">7</xref> and <xref ref-type="disp-formula" rid="E9">9</xref>, and simplifying, we get the following, where <inline-formula><mml:math id="M16"><mml:mn>&#x003C9;</mml:mn><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msqrt><mml:mrow><mml:mfrac><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:msqrt></mml:math></inline-formula>
<disp-formula id="E13"><label>(13)</label><mml:math id="M17"><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mn>&#x003C9;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mn>&#x003B8;</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mn>&#x003C9;</mml:mn><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:math></disp-formula></p>
<p>This controller offers the benefits of ease of tuning in comparison to standard proportional derivative controllers, since there is only one gain variable instead of two tunable gains. Furthermore, we will show in the next section that this controller results in a critically damp response, achieving the fastest stabilization time with the least amount of energy consumption possible.</p>
</sec>
<sec id="S4">
<label>4</label> <title>Simulation Results of the SIP Dissipative Energy Controller</title>
<p>To verify the validity of the energy controller described above, we have run a number of simulation experiments, using classical control approaches, such as PD&#x02009;&#x0002B;&#x02009;Gravity compensation, and the Energy controller presented here. The control torque was constrained to ensure that the CoP does not leave the support polygon defined by the foot. Assuming that the foot is fixed to the floor and the ankle torque does not result in slippage or foot rotation, Yu et al. (<xref ref-type="bibr" rid="B22">2009</xref>) define the CoP location to be given by
<disp-formula id="E14"><label>(14)</label><mml:math id="M18"><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">cop</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>F</mml:mi></mml:mrow><mml:mrow><mml:mi>Z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:math></disp-formula>
where <italic>&#x003C4;</italic> is the total moment generated at the ground contact (the pivot point) of the SIP. The other constraint is due to friction and guarantees that the no slippage assumption is held.</p>
<p><disp-formula id="E15"><label>(15)</label><mml:math id="M19"><mml:mfenced separators="" open="&#x02225;" close="&#x02225;"><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>F</mml:mi></mml:mrow><mml:mrow><mml:mi>X</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>F</mml:mi></mml:mrow><mml:mrow><mml:mi>Z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mn>&#x003BC;</mml:mn></mml:math></disp-formula>
Where <italic>F<sub>X</sub></italic> and <italic>F<sub>Z</sub></italic> are the components of the ground reaction force. From Eq. <xref ref-type="disp-formula" rid="E15">15</xref>, it is clear that the ground reaction force in the <italic>z</italic> direction, <italic>F<sub>Z</sub></italic>, must satisfy the following inequality:
<disp-formula id="E16"><label>(16)</label><mml:math id="M20"><mml:msub><mml:mrow><mml:mi>F</mml:mi></mml:mrow><mml:mrow><mml:mi>Z</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:mfenced separators="" open="&#x02225;" close="&#x02225;"><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>F</mml:mi></mml:mrow><mml:mrow><mml:mi>X</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mn>&#x003BC;</mml:mn></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced></mml:math></disp-formula></p>
<p>Furthermore, <italic>F<sub>Z</sub></italic> is expressed as:
<disp-formula id="E17"><label>(17)</label><mml:math id="M21"><mml:msub><mml:mrow><mml:mi>F</mml:mi></mml:mrow><mml:mrow><mml:mi>Z</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>m</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>Z</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>g</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula>
where <inline-formula><mml:math id="M22"><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>Z</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the vertical acceleration of the CoM, <italic>m</italic> is the system mass, and <italic>g</italic> is the gravity acceleration. From the constraint of Eq. <xref ref-type="disp-formula" rid="E16">16</xref> and the constraint to maintain the CoP within the support polygon defined by the foot, the maximum joint torque that can be generated by the controller is written as a function of the ground reaction force and the support polygon dimensions as follows:
<disp-formula id="E18"><label>(18)</label><mml:math id="M23"><mml:msub><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mrow><mml:mi mathvariant="italic">max</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi mathvariant="italic">md</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>Z</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>g</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula>
where <italic>d</italic> defines the edge of the support polygon. The SIP was subjected to an instantaneous impulse varying in magnitude up to 5&#x02009;Nm. The objective of the control was to restore the pendulum to a stable upright posture. Table <xref ref-type="table" rid="T1">1</xref> shows the parameters of the humanoid robot used in the simulations. Figure <xref ref-type="fig" rid="F3">3</xref> shows the closed-loop system response for the different disturbances. The solid colored lines represent the response of the energy controller, whereas the dotted lines represent the classical controller response. The energy controller response resembles that of a critically damped system resulting in increased stability margins, since it does not suffer from any oscillation and overshoot in the system&#x02019;s response observed in the hand tuned PD controller.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p><bold>Humanoid robot parameters used in the simulations</bold>.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td valign="top" align="left"><bold>Length (m)</bold></td>
<td valign="top" align="left"/>
</tr>
<tr>
<td valign="top" align="left">CoM height<xref ref-type="table-fn" rid="tfnT1_1"><sup>a</sup></xref></td>
<td valign="top" align="center">0.367&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td valign="top" align="left">CoM to hip joint offset<xref ref-type="table-fn" rid="tfnT1_2"><sup>b</sup></xref></td>
<td valign="top" align="center">0.095&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td valign="top" align="left">Upper leg</td>
<td valign="top" align="center">0.11 &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td valign="top" align="left">Lower leg</td>
<td valign="top" align="center">0.103&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td valign="top" align="left">Foot height</td>
<td valign="top" align="center">0.045&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td valign="top" align="left">Foot length</td>
<td valign="top" align="center">0.2 &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td valign="top" align="left"><bold>Weight (kg)</bold></td>
<td valign="top" align="left"/>
</tr>
<tr>
<td valign="top" align="left">Total body<xref ref-type="table-fn" rid="tfnT1_3"><sup>c</sup></xref></td>
<td valign="top" align="center">5 &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td valign="top" align="left">Upper leg</td>
<td valign="top" align="center">0.591&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td valign="top" align="left">Lower leg</td>
<td valign="top" align="center">0.292&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td valign="top" align="left">Foot</td>
<td valign="top" align="center">0.296&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<fn id="tfnT1_1"><p><italic><sup>a</sup>Pendulum length</italic>.</p></fn>
<fn id="tfnT1_2"><p><italic><sup>b</sup>Distance from the CoM as determined by the total robot mass to the hip joint location</italic>.</p></fn>
<fn id="tfnT1_3"><p><italic><sup>c</sup>This includes the mass of head and arms</italic>.</p></fn>
</table-wrap-foot>
</table-wrap>
<fig position="float" id="F3">
<label>Figure 3</label>
<caption><p><bold>Ankle joint trajectories for a range of disturbance sizes</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g003.tif"/>
</fig>
<p>The resulting controlling torque from both control approaches is shown in Figure <xref ref-type="fig" rid="F4">4</xref>. Similarly, the solid lines represent the torque resulting from the energy controller, whereas the dotted lines represent the PD controller torques. The energy controller requires less overall torque to restore balance in response to the impulse disturbances. As a result, it requires less energy in comparison to the PD controller. Furthermore, the critically damped nature of the SIP energy controller ensures that no energy is expended in attenuating the oscillations that result from the undamped PD controller.</p>
<fig position="float" id="F4">
<label>Figure 4</label>
<caption><p><bold>Ankle torques for the same range of perturbation</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g004.tif"/>
</fig>
<p>From the static kinematic analysis of the inverted pendulum, Flanagan (<xref ref-type="bibr" rid="B2">2014</xref>) relates the sway angle to the CoP location during quiet standing by
<disp-formula id="E19"><label>(19)</label><mml:math id="M24"><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">CoP</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi mathvariant="italic">lsin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>Solving Eq. <xref ref-type="disp-formula" rid="E19">19</xref> for &#x003B8; to derive the largest possible sway angle, we get:
<disp-formula id="E20"><label>(20)</label><mml:math id="M25"><mml:mn>&#x003B8;</mml:mn><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi mathvariant="italic">si</mml:mi><mml:msup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">CoP</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced></mml:math></disp-formula>
where <italic>l</italic> is the length of the stance leg and <italic>x<sub>CoP</sub></italic> is the location of the center of pressure.</p>
<p>Both controllers manage to stabilize the SIP in face of impulse disturbances with a maximum sway angle of around 8&#x000B0;, which is well within the limits described in Eq. <xref ref-type="disp-formula" rid="E20">20</xref> when solved using the parameters of our robot hardware. The limit on the sway angle for the robot hardware was found to be &#x000B1;17&#x000B0;.</p>
<p>In the case of large disturbances, a different strategy needs to be used to avoid falling over. One such strategy is to allow the robot to take a step in order to enlarge its support polygon and prevent a fall. The optimal stepping location is defined using the concept of the capture point (Pratt et al., <xref ref-type="bibr" rid="B13">2006</xref>). Taking into account the effects of the instantaneous impact of the swing leg, the pendulum angular velocity just before impact is determined by the following:
<disp-formula id="E21"><label>(21)</label><mml:math id="M26"><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mn>&#x003C9;</mml:mn><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>2</mml:mn><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi mathvariant="italic">tan</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi mathvariant="italic">cos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo><mml:msqrt><mml:mrow><mml:mi mathvariant="italic">cos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac></mml:math></disp-formula></p>
<p>To compute the required orientation of the robot in terms of its ankle angular velocity <inline-formula><mml:math id="M27"><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula>, Eq. <xref ref-type="disp-formula" rid="E21">21</xref> is solved numerically and the optimal step location is found to be the intersection point between the CoM trajectory and the resulting trajectory from solving Eq. <xref ref-type="disp-formula" rid="E21">21</xref>.</p>
<p>For small angular velocities, the biped angle before impact is a linear function of the velocity. A linear approximation can be used to simplify the computation time when implemented on the computer for simulation or on the actual robot hardware. If the angular velocity is larger than &#x000B1;1&#x02009;rad/s, the system is forced to take a number of steps before it can reach a complete stop in a balanced state due to size limitation of the biped robot. The exact step length <italic>l<sub>s</sub></italic> is defined as a function of the ankle angle and the leg length as:
<disp-formula><mml:math id="M28"><mml:msub><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>2</mml:mn><mml:mi mathvariant="italic">lsin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula>
where <italic>l</italic> is the pendulum length and &#x003B8; is the angle between the pendulum and the vertical just before taking the step, which was found to be around &#x000B1;20&#x000B0; in the sagittal plane. The foot landing position in the frontal plane is decided so that the pivot point of the pendulum coincides with the CoM ground projection when the robot comes to a stop. Hence, the pendulum angle <italic>&#x003D5;</italic> after taken a step is always equal to zero.</p>
<sec id="S4-1">
<label>4.1</label> <title>Comparison of canonical and energy controllers</title>
<p>Reducing the required energy to maintain the standing balance will prolong the battery life and autonomous behavior of the humanoid robot. Figure <xref ref-type="fig" rid="F5">5</xref> shows the delta in the total mechanical energy of the SIP humanoid robot model in response to small disturbances. It is evident that the new energy controller achieves faster response time in comparison to the canonical control approaches. It is also visible that the energy-based controller requires less overall energy in restoring the system balanced state in comparison to the classical approaches, without the need for extensive tuning of the different gains in the control system.</p>
<fig position="float" id="F5">
<label>Figure 5</label>
<caption><p><bold>Comparison between the TME change using energy-based controller vs. standard controller</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g005.tif"/>
</fig>
<p>The transfer function from the measurement noise to the output of the closed-loop energy control law is denoted by <italic>T</italic>, the <italic>complementary sensitivity function</italic>
<disp-formula id="E22"><label>(22)</label><mml:math id="M29"><mml:msub><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Energy</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mn>&#x003C9;</mml:mn><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mi>s</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mn>&#x003C9;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>&#x003C9;</mml:mn><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mi>s</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mn>&#x003C9;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac></mml:math></disp-formula>
while in the case of the classical PD control the same transfer function is given by:
<disp-formula id="E23"><label>(23)</label><mml:math id="M30"><mml:msub><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">PD</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mi>s</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:msup><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mi>s</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi mathvariant="italic">mlg</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac></mml:math></disp-formula></p>
<p>The energy control law transfer function, <italic>T<sub>Energy</sub></italic>, depends only on the gain variable, <italic>K<sub>P</sub></italic>. While <italic>T<sub>PD</sub></italic> depends on both the proportional and derivative gains as well as the mass of the pendulum. Both Eqs <xref ref-type="disp-formula" rid="E22">22</xref> and <xref ref-type="disp-formula" rid="E23">23</xref> behave as low-pass filters as shown in the Bode plot of Figure <xref ref-type="fig" rid="F6">6</xref>. The steady-state (DC) gain of these transfer functions is given by:
<disp-formula><mml:math id="M31"><mml:msub><mml:mrow><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ss</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:munder accentunder="true"><mml:mrow><mml:mi mathvariant="normal">lim</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi><mml:mo class="MathClass-rel">&#x02192;</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:munder><mml:mi>T</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<fig position="float" id="F6">
<label>Figure 6</label>
<caption><p><bold>Bode plot of the closed-loop SIP system using both control laws</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g006.tif"/>
</fig>
<p>For the energy control law, the steady-state gain is defined to be:
<disp-formula id="E24"><label>(24)</label><mml:math id="M32"><mml:msub><mml:mrow><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">Energy</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ss</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfrac></mml:math></disp-formula></p>
<p>The classical control law has a similar expression for the steady-state gain as that given by Eq. <xref ref-type="disp-formula" rid="E24">24</xref>. The steady-state gain is given by:
<disp-formula id="E25"><label>(25)</label><mml:math id="M33"><mml:msub><mml:mrow><mml:mi>G</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="italic">PD</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ss</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi mathvariant="italic">mlg</mml:mi></mml:mrow></mml:mfrac></mml:math></disp-formula></p>
<p>For large proportional gains, the steady-state gain of both transfer functions approaches one. In most practical situations, this ideal case cannot be achieved, since the value of these gains is limited to an upper bound. The maximum gain value is imposed by the actuator saturation limits, or in the case of humanoid robots, by the center of pressure constraints. In this situation, the DC gain will be larger than 1, as evident from the denominator of both Eqs <xref ref-type="disp-formula" rid="E24">24</xref> and <xref ref-type="disp-formula" rid="E25">25</xref>.</p>
<p>The magnitude of the transfer function for both systems decays to zero as the frequency increases as shown in Figure <xref ref-type="fig" rid="F6">6</xref>. The classical control magnitude decays faster than the energy-based controller. However, it is evident from the Bode plot of the PD transfer function that a peak at low frequencies exists. This peak corresponds to the overshoot in the time response when using the PD controller to restore the pendulum to its upright posture. On the other hand, the energy-based controller does not suffer from such effects. In fact, it acts similarly to a critically damped system, as observed in its time response.</p>
<p>To simulate walking at low speeds, the ankle joint of the pendulum is demanded to go back and forth at a rate of two steps per second. A sinusoidal input signal, <italic>r(t)</italic>, was used as the driving input for both systems.</p>
<disp-formula id="E26"><label>(26)</label><mml:math id="M34"><mml:mi>r</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>4&#x003C0;</mml:mn><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula>
<p>The top graph in Figure <xref ref-type="fig" rid="F7">7</xref> shows the tracking response of the two control methods. The classical control system has a large tracking error and phase delay of roughly <italic>&#x003C0;</italic>/2. On the other hand, the response from the energy controller closely tracks the input signal in terms of the amplitude and the phase of the signal.</p>
<fig position="float" id="F7">
<label>Figure 7</label>
<caption><p><bold>Reference input tracking comparison between the novel energy-based controller and a classical PD&#x02009;&#x0002B;&#x02009;gravity controller</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g007.tif"/>
</fig>
<p>To simulate the effects of the real-world measurement and actuation noise, white Gaussian noise was added to the input signal before being fed to the system. The noise signal was filtered at 100&#x02009;Hz to model the bandwidth of our robot hardware joint position and IMU sensors. This is also the sampling frequency at which the control loop will be running on the robot. The bottom graph of Figure <xref ref-type="fig" rid="F7">7</xref> shows the response of both controllers. The PD control system performs better in rejecting the high-frequency noise compared to the energy control system. However, this is expected due to the larger bandwidth of the energy-based control law in comparison to the classical method, as can be determined from Figure <xref ref-type="fig" rid="F6">6</xref>.</p>
<p>On the other hand, the energy-based controller tracks the input signal, <italic>r(t)</italic>, closely as can be seen at the top graph in Figure <xref ref-type="fig" rid="F7">7</xref>. The PD controller causes a larger phase delay and more attenuation to the input signal of almost 30%.</p>
</sec>
</sec>
<sec id="S5">
<label>5</label> <title>Ankle Strategy Stability Regions</title>
<p>The orbital energy of the SIP model defined by Eq. <xref ref-type="disp-formula" rid="E7">7</xref> is a conserved quantity until the moment of touch-down or lift-off of the swing foot. As the CoM moves toward the pivot point, three situations are possible depending on the value of <italic>E<sub>SIP</sub></italic>
<list list-type="bullet">
<list-item><p><italic>E<sub>SIP</sub></italic>&#x02009;&#x0003E;&#x02009;0, the CoM will pass the pivot point and carry on in the same direction</p></list-item>
<list-item><p><italic>E<sub>SIP</sub></italic>&#x02009;&#x0003C;&#x02009;0, the CoM will come to a stop over the pivot point momentarily before reversing direction and starting to move in the opposite direction</p></list-item>
<list-item><p><italic>E<sub>SIP</sub></italic>&#x02009;&#x0003D;&#x02009;0, the CoM will come to a rest over the pivot point, resulting in a stable stance.</p></list-item>
</list></p>
<p>The solution to the stable condition is given by Eq. <xref ref-type="disp-formula" rid="E8">8</xref>. From the center of pressure constraint on the control input to the system, the maximum input torque on the system, assuming <inline-formula><mml:math id="M35"><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, is given by
<disp-formula id="E27"><label>(27)</label><mml:math id="M36"><mml:msub><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mrow><mml:mi mathvariant="italic">max</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi mathvariant="italic">mgd</mml:mi></mml:math></disp-formula>
where <italic>m</italic> is the total mass of the system, <italic>g</italic> is the acceleration due to gravity, and <italic>d</italic> is the distance from the pivot point to the edge of the support region. Defining the pendulum angle, <italic>&#x003B4;<sub>&#x003B8;</sub></italic>, as the maximum possible sway angle as defined by Eq. <xref ref-type="disp-formula" rid="E20">20</xref>, expressing <italic>d</italic> in terms of <italic>&#x003B4;<sub>&#x003B8;</sub></italic>, Eq. <xref ref-type="disp-formula" rid="E27">27</xref> becomes
<disp-formula id="E28"><label>(28)</label><mml:math id="M37"><mml:msub><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mrow><mml:mi mathvariant="italic">max</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi mathvariant="italic">mglsin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003B4;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>The maximum acceleration, <inline-formula><mml:math id="M38"><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover></mml:math></inline-formula>, due to the maximum control torque is then given by
<disp-formula id="E29"><label>(29)</label><mml:math id="M39"><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi mathvariant="italic">max</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:mfrac><mml:mn>&#x003B8;</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:mfrac><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003B4;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>By analogy, the saddle point of the system when <italic>E<sub>SIP</sub></italic>&#x02009;&#x0003D;&#x02009;0 is expressed as
<disp-formula id="E30"><label>(30)</label><mml:math id="M40"><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi mathvariant="italic">max</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x000B1;</mml:mo><mml:msqrt><mml:mrow><mml:mfrac><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:msqrt><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B8;</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003B4;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>The above equation describes the stability bounds on the SIP while using the ankle balancing strategy. The stable region in terms of the SIP states is then defined as
<disp-formula id="E31"><label>(31)</label><mml:math id="M41"><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003B4;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:mn>&#x003B8;</mml:mn><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msqrt><mml:mrow><mml:mfrac><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:msqrt><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:mi mathvariant="italic">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003B4;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>Figure <xref ref-type="fig" rid="F8">8</xref> shows that all the stable trajectories in blue fall in the middle section defined by the two yellow lines. The region defined by Eq. <xref ref-type="disp-formula" rid="E31">31</xref> and the numerical simulations for balance recovery show that the system is able to recover from a push impulse with a magnitude of 5.7&#x02009;Ns. The fact that both methods coincide validates our assumptions in deriving the stability bounds, allowing the control framework to monitor the angular state of the SIP to make a decision on the method to be used in recovering and restoring balance to the humanoid robot.</p>
<fig position="float" id="F8">
<label>Figure 8</label>
<caption><p><bold>Angular stability regions as defined by the SIP Ankle Balance Strategy</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g008.tif"/>
</fig>
</sec>
<sec id="S6">
<label>6</label> <title>Walking Gait Generation</title>
<p>The SIP model is used to generate and control a stable walking gait using the principles of passive dynamic walking. The SIP model is extended to be described as a hybrid dynamic system with two stages. The first is a continuous dynamic model for the Single Support Phase to describe the CoM behavior. The second stage is during the exchange of support instance and impact of the swing leg. After each impact, an internal impulse push is used to restore any lost energy due to the impact with the ground. In the proposed control architecture, the SIP model and its energy-based control are considered as an internal model that provides the CoM and feet trajectories during the walking cycle. These trajectories are converted to joint motion through a full-body inverse kinematics algorithm to be executed through the robot individual joints. The full control framework is visualized in Figure <xref ref-type="fig" rid="F9">9</xref>.</p>
<fig position="float" id="F9">
<label>Figure 9</label>
<caption><p><bold>Complete control framework for standing balance and walking gait generation</bold>. The diagram shows how the SIP model and the energy-based controllers are used as an internal control loop that provides CoM and foot trajectories to the humanoid robots while receiving the actual CoM and feet location in the feedback loop.</p></caption>
<graphic xlink:href="frobt-02-00021-g009.tif"/>
</fig>
<p>The walk cycle stability is a nominally periodic sequence of steps that is stable as a whole, but not locally stable at every instant in time. The motion stability in this way is defined as &#x0201C;the ability to interrupt and avoid a fall.&#x0201D;</p>
<p>In order to generate a walking gait, the authors extended the stepping strategy for standing balance through the injection of a virtual impulse push into the controller at the moment of impact to restore any energy loss. The energy loss is modeled through the angular velocity loss of the pendulum as described below:
<disp-formula id="E32"><label>(32)</label><mml:math id="M42"><mml:msup><mml:mrow><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi mathvariant="italic">lcos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>2</mml:mn><mml:msup><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mover accent='true'><mml:mi>&#x003B8;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo></mml:mrow></mml:msup></mml:math></disp-formula>
where <italic>&#x003B8;</italic><sup>&#x02212;</sup> is the pendulum angle just before impact and <italic>&#x003B8;</italic><sup>&#x0002B;</sup> is the angle just after impact and <italic>l</italic> is the pendulum length. Under these conditions, every step of the walking gait is defined as an interrupted fall and the overall motion is stable as a whole, but not locally stable at every instant in time. Hobbelen and Martijn (<xref ref-type="bibr" rid="B6">2007</xref>) define this a &#x0201C;limit cycle walking.&#x0201D;</p>
<p>The motion in the frontal place of the robot is controlled in such a way that will translate the CoM from side to side during the walk. This motion trajectory is dependent on the CoM trajectory in the sagittal plane. This trajectory is provided as a reference input to the energy controller for the CoM motion to follow. Figure <xref ref-type="fig" rid="F10">10</xref> shows the projection of the CoM motion on the ground along with the step locations.</p>
<fig position="float" id="F10">
<label>Figure 10</label>
<caption><p><bold>Top view of the CoM motion as a result of the simulation of the gait generation and control method for a number of steps</bold>. The foot locations are also shown highlighting the support exchange from one foot to the next.</p></caption>
<graphic xlink:href="frobt-02-00021-g010.tif"/>
</fig>
<p>The resulting CoM trajectory is shown in Figure <xref ref-type="fig" rid="F11">11</xref>. By comparison to the findings of the CoM motion characterized by biomechanical researchers shown in Figure <xref ref-type="fig" rid="F12">12</xref>, we can see large similarities between the two trajectories. The shape and phase of the forward direction resembles two sinusoidal curves. The maxima occur at about &#x0223C;35% and &#x0223C;85% of the gait cycle, whereas the minima occur at the moment of foot impact at &#x0223C;10% and &#x0223C;60% of the cycle. On the other hand, the lateral displacement is represented with a sinusoidal curve, ensuring the CoM is moved from one support foot to the other. The phase difference between the SIP and biomechanical trajectory is resulting from the first step choice, and it does not change the nature of the results.</p>
<fig position="float" id="F11">
<label>Figure 11</label>
<caption><p><bold>CoM displacement as a result of the gait generation approach developed using the SIP control framework</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g011.tif"/>
</fig>
<fig position="float" id="F12">
<label>Figure 12</label>
<caption><p><bold>Biomechanics measurements of CoM displacement (Whittle, <xref ref-type="bibr" rid="B19">1997</xref>)</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g012.tif"/>
</fig>
<p>The vertical motion has the same periodicity as that of the human walk. However, the SIP-generated trajectory has an instantaneous change in the direction of the CoM motion at the moment of foot impact at &#x0223C;50% of the gait cycle. This instantaneous change results from the stepping model used with the SIP biped model. The CoM reaches its highest point twice during the gait cycle at around 25 and 75% of the cycle. This is the time when the support leg is fully extended and is in an upright position. The lowest CoM position occurs at the moment of switching support. Figure <xref ref-type="fig" rid="F13">13</xref> shows a series of screenshots of the resulting walking motion. It should be noted here that the entire motion was generated using the SIP CoM trajectories and a fifth-order polynomial to give the swing foot trajectory. The difference between this approach and that of the standard 3DLIPM approaches can be summarized by the fact that the motion of the CoM is not constrained to a constant height of the plane during a single-step motion resulting in a more natural overall motion for the entire humanoid body.</p>
<fig position="float" id="F13">
<label>Figure 13</label>
<caption><p><bold>Screenshots of the generated full-body walking motion as a result of the proposed approach</bold>.</p></caption>
<graphic xlink:href="frobt-02-00021-g013.tif"/>
</fig>
</sec>
<sec id="S7">
<label>7</label> <title>Conclusion</title>
<p>This article presents the Spherical Inverted Pendulum model for the biped standing balance control. It describes the system using the two rotational degrees of freedom at the ankle and does not suffer from the limiting assumptions of the traditional approaches such as maintaining a constant CoM height off the ground.</p>
<p>We also described an energy-based control architecture for push recovery on humanoid robots. This control method transforms the SIP model into a critically damped system with the use of a single tuning parameter, so that balance is restored in the fastest and most energy efficient way possible. Finally, a description of the stability bounds and walking gait generation method using the SIP and the energy controller is presented.</p>
</sec>
<sec id="S8">
<title>Author Contributions</title>
<p>AE developed the SIP model and the passivity-based control law and performed the simulations under AP&#x02019;s direct supervision throughout the research process. AE wrote the manuscript. AP provided editing comments. AP was AE&#x02019;s first supervisor during his studies.</p>
</sec>
<sec id="S9">
<title>Conflict of Interest Statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec id="S10">
<title>Funding</title>
<p>This research has been partly funded by the Libyan Higher Education Ministry.</p>
</sec>
</body>
<back>
<ref-list>
<title>References</title>
<ref id="B1"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Atkeson</surname> <given-names>C. G.</given-names></name> <name><surname>Stephens</surname> <given-names>B.</given-names></name></person-group> (<year>2007</year>). <article-title>&#x0201C;Multiple balance strategies from one optimization criterion,&#x0201D;</article-title> in <conf-name>2007 7th IEEE-RAS. International Conference on Humanoid Robots</conf-name> (<conf-loc>Pittsburgh, PA</conf-loc>: <conf-sponsor>Institute of Electrical Engineers, IEEE</conf-sponsor>), <fpage>57</fpage>&#x02013;<lpage>64</lpage></citation></ref>
<ref id="B2"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Flanagan</surname> <given-names>S. P.</given-names></name></person-group> (<year>2014</year>). <article-title>&#x0201C;Chapter explaining motion II: angular kinematics,&#x0201D;</article-title> in <source>Biomechanics: A Case-Based Approach</source>, ed. <person-group person-group-type="editor"><name><surname>Turner</surname> <given-names>M. R.</given-names></name></person-group> (<publisher-loc>Burlington, MA</publisher-loc>: <publisher-name>Jones &#x00026; Bartlett Publishers</publisher-name>), <fpage>120</fpage>.</citation></ref>
<ref id="B3"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fujimoto</surname> <given-names>Y.</given-names></name> <name><surname>Kawamura</surname> <given-names>A.</given-names></name></person-group> (<year>1998</year>). <article-title>Simulation of an autonomous biped walking robot including environmental force interaction</article-title>. <source>IEEE Robot. Autom. Mag.</source> <volume>5</volume>, <fpage>33</fpage>&#x02013;<lpage>42</lpage>.<pub-id pub-id-type="doi">10.1109/100.692339</pub-id></citation></ref>
<ref id="B4"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hashimoto</surname> <given-names>K.</given-names></name> <name><surname>Takezaki</surname> <given-names>Y.</given-names></name> <name><surname>Lim</surname> <given-names>H.-O.</given-names></name> <name><surname>Takanishi</surname> <given-names>A.</given-names></name></person-group> (<year>2013</year>). <article-title>Walking stabilization based on gait analysis for biped humanoid robot</article-title>. <source>Adv. Robot.</source> <volume>27</volume>, <fpage>541</fpage>&#x02013;<lpage>551</lpage>.<pub-id pub-id-type="doi">10.1080/01691864.2013.777015</pub-id></citation></ref>
<ref id="B5"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Hirai</surname> <given-names>K.</given-names></name> <name><surname>Hirose</surname> <given-names>M.</given-names></name> <name><surname>Haikawa</surname> <given-names>Y.</given-names></name> <name><surname>Takenaka</surname> <given-names>T.</given-names></name></person-group> (<year>1998</year>). <article-title>&#x0201C;The development of honda humanoid robot,&#x0201D;</article-title> in <conf-name>IEEE International Conference on Robotics and Automation</conf-name> (<conf-loc>Leuven</conf-loc>: <conf-sponsor>Institute of Electrical Engineers, IEEE</conf-sponsor>), <fpage>1321</fpage>&#x02013;<lpage>1326</lpage>.</citation></ref>
<ref id="B6"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Hobbelen</surname> <given-names>D. G. E.</given-names></name> <name><surname>Martijn</surname> <given-names>W.</given-names></name></person-group> (<year>2007</year>). <article-title>&#x0201C;Limit cycle walking,&#x0201D;</article-title> in <source>Humanoid Robots: Human-Like Machines</source>, ed. <person-group person-group-type="editor"><name><surname>Hackel</surname> <given-names>M.</given-names></name></person-group> (<publisher-loc>Vienna</publisher-loc>: <publisher-name>I-Tech</publisher-name>), <fpage>642</fpage>.</citation></ref>
<ref id="B7"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Horak</surname> <given-names>F. B.</given-names></name> <name><surname>Nashner</surname> <given-names>L. M.</given-names></name></person-group> (<year>1986</year>). <article-title>Central programming of postural movements: adaptation to altered support-surface configurations</article-title>. <source>J. Neurophysiol.</source> <volume>55</volume>, <fpage>1369</fpage>&#x02013;<lpage>1381</lpage>.<pub-id pub-id-type="pmid">3734861</pub-id></citation></ref>
<ref id="B8"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Kajita</surname> <given-names>S.</given-names></name> <name><surname>Kanehiro</surname> <given-names>F.</given-names></name> <name><surname>Kaneko</surname> <given-names>K.</given-names></name> <name><surname>Fujiwara</surname> <given-names>K.</given-names></name> <name><surname>Harada</surname> <given-names>K.</given-names></name> <name><surname>Yokoi</surname> <given-names>K.</given-names></name> <etal/></person-group> (<year>2003</year>). <article-title>&#x0201C;Biped walking pattern generation by using preview control of zero-moment point,&#x0201D;</article-title> in <conf-name>Robotics and Automation, 2003. Proceedings. ICRA &#x02019;03. IEEE International Conference on</conf-name>, Vol. <volume>2</volume> (<conf-loc>Taipei</conf-loc>: <conf-sponsor>Institute of Electrical Engineers, IEEE</conf-sponsor>), <fpage>1620</fpage>&#x02013;<lpage>1626</lpage>.</citation></ref>
<ref id="B9"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Kajita</surname> <given-names>S.</given-names></name> <name><surname>Kanehiro</surname> <given-names>F.</given-names></name> <name><surname>Kaneko</surname> <given-names>K.</given-names></name> <name><surname>Yokoi</surname> <given-names>K.</given-names></name> <name><surname>Hirukawa</surname> <given-names>H.</given-names></name></person-group> (<year>2001</year>). <article-title>&#x0201C;The 3d linear inverted pendulum mode: a simple modeling for a biped walking pattern generation,&#x0201D;</article-title> in <conf-name>Intelligent Robots and Systems, 2001. Proceedings. 2001 IEEE/RSJ International Conference on</conf-name>, Vol. <volume>1</volume> (<conf-loc>Maui</conf-loc>: <conf-sponsor>Institute of Electrical Engineers, IEEE</conf-sponsor>), <fpage>239</fpage>&#x02013;<lpage>246</lpage>.</citation></ref>
<ref id="B10"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Kajita</surname> <given-names>S.</given-names></name> <name><surname>Tanie</surname> <given-names>K.</given-names></name></person-group> (<year>1991</year>). <article-title>&#x0201C;Study of dynamic biped locomotion on rugged terrain &#x02013; derivation and application of the linear inverted pendulum mode,&#x0201D;</article-title> in <conf-name>Robotics and Automation, 1991. Proceedings. 1991 IEEE International Conference on</conf-name>, Vol. <volume>2</volume> (<conf-loc>Sacramento, CA</conf-loc>: <conf-sponsor>Institute of Electrical Engineers, IEEE</conf-sponsor>), <fpage>1405</fpage>&#x02013;<lpage>1411</lpage>.</citation></ref>
<ref id="B11"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Maki</surname> <given-names>B. E.</given-names></name> <name><surname>McIlroy</surname> <given-names>W. E.</given-names></name></person-group> (<year>1997</year>). <article-title>The role of limb movements in maintaining upright stance: the &#x0201C;change-in-support&#x0201D; strategy</article-title>. <source>Phys. Ther.</source> <volume>77</volume>, <fpage>488</fpage>&#x02013;<lpage>507</lpage>.<pub-id pub-id-type="pmid">9149760</pub-id></citation></ref>
<ref id="B12"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Nishiwaki</surname> <given-names>K.</given-names></name> <name><surname>Kagami</surname> <given-names>S.</given-names></name></person-group> (<year>2007</year>). <article-title>&#x0201C;Walking control on uneven terrain with short cycle pattern generation,&#x0201D;</article-title> in <conf-name>Humanoid Robots, 2007 7th IEEE-RAS International Conference on</conf-name>, <fpage>447</fpage>&#x02013;<lpage>453</lpage>.</citation></ref>
<ref id="B13"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Pratt</surname> <given-names>J.</given-names></name> <name><surname>Carff</surname> <given-names>J.</given-names></name> <name><surname>Drakunov</surname> <given-names>S.</given-names></name> <name><surname>Goswami</surname> <given-names>A.</given-names></name></person-group> (<year>2006</year>). <article-title>&#x0201C;Capture point: a step toward humanoid push recovery,&#x0201D;</article-title> in <conf-name>Humanoid Robots, 2006 6th IEEE-RAS International Conference on</conf-name>, (<conf-loc>Genova</conf-loc>: <conf-sponsor>Institute of Electrical Engineers, IEEE</conf-sponsor>), <fpage>200</fpage>&#x02013;<lpage>207</lpage>.</citation></ref>
<ref id="B14"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Stephens</surname> <given-names>B.</given-names></name></person-group> (<year>2007</year>). <article-title>&#x0201C;Humanoid push recovery,&#x0201D;</article-title> in <conf-name>IEEE-RAS International Conference on Humanoid Robots</conf-name>. <conf-loc>Pittsburgh, PA</conf-loc>: <conf-sponsor>Institute of Electrical Engineers, IEEE</conf-sponsor>.</citation></ref>
<ref id="B15"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Sugihara</surname> <given-names>T.</given-names></name> <name><surname>Nakamura</surname> <given-names>Y.</given-names></name></person-group> (<year>2003</year>). <article-title>&#x0201C;Whole-body cooperative COG control through ZMP manipulation for humanoid robots,&#x0201D;</article-title> in <conf-name>2nd International Symposium on Adaptive Motion of Animals and Machines (AMAM2003)</conf-name>.</citation></ref>
<ref id="B16"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Sugihara</surname> <given-names>T.</given-names></name> <name><surname>Nakamura</surname> <given-names>Y.</given-names></name> <name><surname>Inoue</surname> <given-names>H.</given-names></name></person-group> (<year>2002</year>). <article-title>&#x0201C;Real-time humanoid motion generation through ZMP manipulation based on inverted pendulum control,&#x0201D;</article-title> in <conf-name>IEEE International Conference on Robotics and Automation</conf-name>, Vol. <volume>2</volume>. <conf-loc>Washington, DC</conf-loc>.</citation></ref>
<ref id="B17"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Uyar</surname> <given-names>E.</given-names></name> <name><surname>Baser</surname> <given-names>&#x000D6;.</given-names></name> <name><surname>Baci</surname> <given-names>R.</given-names></name> <name><surname>&#x000D6;z&#x000E7;ivici</surname> <given-names>E.</given-names></name></person-group> (<year>2009</year>). <source>Investigation of Bipedal Human Gait Dynamics and Knee Motion Control</source>. Technical Report. <publisher-loc>Izmir</publisher-loc>: <publisher-name>Department of Mechanical Engineering, Faculty of Engineering, Dokuz Eyl&#x000FC;l University</publisher-name>.</citation></ref>
<ref id="B18"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>B.</given-names></name> <name><surname>Hu</surname> <given-names>R.</given-names></name> <name><surname>Zhang</surname> <given-names>J.</given-names></name> <name><surname>Huai</surname> <given-names>C.</given-names></name></person-group> (<year>2009</year>). <article-title>Balance recovery control for biped robot based on reaction null space method</article-title>. <source>J. Control Theory Appl.</source> <volume>7</volume>, <fpage>87</fpage>&#x02013;<lpage>91</lpage>.<pub-id pub-id-type="doi">10.1007/s11768-009-7019-4</pub-id></citation></ref>
<ref id="B19"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Whittle</surname> <given-names>M. W.</given-names></name></person-group> (<year>1997</year>). <article-title>Three-dimensional motion of the center of gravity of the body during walking</article-title>. <source>Hum. Mov. Sci.</source> <volume>16</volume>, <fpage>347</fpage>&#x02013;<lpage>355</lpage>.<pub-id pub-id-type="doi">10.1016/S0167-9457(96)00052-8</pub-id></citation></ref>
<ref id="B20"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Willems</surname> <given-names>J.</given-names></name></person-group> (<year>2007</year>). <article-title>Dissipative dynamical systems</article-title>. <source>Eur. J. Control</source> <volume>13</volume>, <fpage>134</fpage>&#x02013;<lpage>151</lpage>.<pub-id pub-id-type="doi">10.3166/ejc.13.134-151</pub-id></citation></ref>
<ref id="B21"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Winter</surname> <given-names>D. A.</given-names></name></person-group> (<year>1995</year>). <article-title>Human balance and posture control during standing and walking</article-title>. <source>Gait Posture</source> <volume>3</volume>, <fpage>193</fpage>&#x02013;<lpage>214</lpage>.<pub-id pub-id-type="doi">10.1016/0966-6362(96)82849-9</pub-id></citation></ref>
<ref id="B22"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Yu</surname> <given-names>W.</given-names></name> <name><surname>Bao</surname> <given-names>G.</given-names></name> <name><surname>Wang</surname> <given-names>Z.</given-names></name></person-group> (<year>2009</year>). <article-title>&#x0201C;Effects of joint torque constraints on humanoid robot balance recovery in the presence of external disturbance,&#x0201D;</article-title> in <conf-name>Robotics and Biomimetics (ROBIO), 2009 IEEE International Conference on</conf-name> (<conf-loc>Guilin</conf-loc>: <conf-sponsor>Institute of Electrical Engineers, IEEE</conf-sponsor>), <fpage>2361</fpage>&#x02013;<lpage>2367</lpage>.</citation></ref>
</ref-list>
</back>
</article>