<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<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="publisher-id">679304</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2021.679304</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>Modelling and Control of a 2-DOF Robot Arm with Elastic Joints for Safe Human-Robot Interaction</article-title>
<alt-title alt-title-type="left-running-head">Tuan et&#x20;al.</alt-title>
<alt-title alt-title-type="right-running-head">Robot Arm for Safe HRI</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Tuan</surname>
<given-names>Hua Minh</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1290037/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Sanfilippo</surname>
<given-names>Filippo</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1247233/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Hao</surname>
<given-names>Nguyen Vinh</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
</contrib>
</contrib-group>
<aff id="aff1">
<label>
<sup>1</sup>
</label>Department of Control Engineering and Automation, Faculty of Electrical and Electronic Engineering, Ho Chi Minh City University of Technology (HCMUT), <addr-line>Ho Chi Minh City</addr-line>, <country>Vietnam</country>
</aff>
<aff id="aff2">
<label>
<sup>2</sup>
</label>Vietnam National University Ho Chi Minh City, <addr-line>Ho Chi Minh City</addr-line>, <country>Vietnam</country>
</aff>
<aff id="aff3">
<label>
<sup>3</sup>
</label>Department of Engineering Sciences, University of Agder (UiA), <addr-line>Grimstad</addr-line>, <country>Norway</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/356350/overview">Yongping Pan</ext-link>, National University of Singapore, Singapore</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1044356/overview">Alejandro Suarez</ext-link>, Sevilla University, Spain</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/472563/overview">Sunan Huang</ext-link>, National University of Singapore, Singapore</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Filippo Sanfilippo, <email>filippo.sanfilippo@uia.no</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Robotic Control Systems, a section of the journal Frontiers in Robotics and&#x20;AI</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>18</day>
<month>08</month>
<year>2021</year>
</pub-date>
<pub-date pub-type="collection">
<year>2021</year>
</pub-date>
<volume>8</volume>
<elocation-id>679304</elocation-id>
<history>
<date date-type="received">
<day>01</day>
<month>04</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>02</day>
<month>07</month>
<year>2021</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2021 Tuan, Sanfilippo and Hao.</copyright-statement>
<copyright-year>2021</copyright-year>
<copyright-holder>Tuan, Sanfilippo and Hao</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) and the copyright owner(s) 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&#x20;terms.</p>
</license>
</permissions>
<abstract>
<p>Collaborative robots (or cobots) are robots that can safely work together or interact with humans in a common space. They gradually become noticeable nowadays. Compliant actuators are very relevant for the design of cobots. This type of actuation scheme mitigates the damage caused by unexpected collision. Therefore, elastic joints are considered to outperform rigid joints when operating in a dynamic environment. However, most of the available elastic robots are relatively costly or difficult to construct. To give researchers a solution that is inexpensive, easily customisable, and fast to fabricate, a newly-designed low-cost, and open-source design of an elastic joint is presented in this work. Based on the newly design elastic joint, a highly-compliant multi-purpose 2-DOF robot arm for safe human-robot interaction is also introduced. The mechanical design of the robot and a position control algorithm are presented. The mechanical prototype is 3D-printed. The control algorithm is a two loops control scheme. In particular, the inner control loop is designed as a model reference adaptive controller (MRAC) to deal with uncertainties in the system parameters, while the outer control loop utilises a fuzzy proportional-integral controller to reduce the effect of external disturbances on the load. The control algorithm is first validated in simulation. Then the effectiveness of the controller is also proven by experiments on the mechanical prototype.</p>
</abstract>
<kwd-group>
<kwd>collaborative robot</kwd>
<kwd>robot arm</kwd>
<kwd>series elastic actuator</kwd>
<kwd>human-robot interaction</kwd>
<kwd>robotics</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Cobots are robots intended for direct collaborative work with a human operator (<xref ref-type="bibr" rid="B45">Wannasuphoprasit et&#x20;al., 1997</xref>; <xref ref-type="bibr" rid="B25">Peshkin et&#x20;al., 2001</xref>). Cobots appear and support humans in many situations in our daily life, e.g., search and rescue missions (<xref ref-type="bibr" rid="B8">Govindarajan et&#x20;al., 2016</xref>), surveillance and inspection (<xref ref-type="bibr" rid="B7">Donadio et&#x20;al., 2018</xref>; <xref ref-type="bibr" rid="B3">Brito et&#x20;al., 2020</xref>), medical support (<xref ref-type="bibr" rid="B19">Mokaram et&#x20;al., 2017</xref>), etc. One aspect, which makes cobots different from traditional robots, is the capability to mitigate the damage caused by the unpredictable collision in dynamic shared working space. There are various methods to achieve this capability, such as using force/torque sensors (<xref ref-type="bibr" rid="B16">Li et&#x20;al., 2020</xref>), using elastic joints, or using a collision detection algorithm without changing a robot&#x2019;s physical structure and adding external sensors (<xref ref-type="bibr" rid="B46">Xiao et&#x20;al., 2018</xref>). Using elastic joints is one of the most common methods because it is efficient and low-priced. Conventional actuators are designed by following the traditional principle of &#x201c;the stiffer the better&#x201d; (<xref ref-type="bibr" rid="B28">Pratt and Williamson, 1995</xref>; <xref ref-type="bibr" rid="B42">Vanderborght et&#x20;al., 2013</xref>). Due to having high force bandwidth, stiff actuators are suitable for position and speed control, and trajectory tracking tasks in isolated environments. However, in unknown environments, these stiff actuators can be damaged by undesired collision. In addition, most low-cost electric motors have to operate at high speed to obtain high torque density. Therefore, to achieve low-speed output for position control tasks, gear reduction is used at the expense of introducing friction, noise, backlash, and torque ripple (<xref ref-type="bibr" rid="B28">Pratt and Williamson, 1995</xref>). On the other hand, elastic joints, with compliant motion and shock load absorption characteristics, are developed to tackle these challenges. Shock tolerance of the elastic joints in unstructured environments is enhanced thanks to the elastic components working as a low-pass shock filter. Furthermore, energy storage capability, power output and force sensing are also enhanced (<xref ref-type="bibr" rid="B22">Paine et&#x20;al., 2015</xref>). In spite of numerous advantages, controlling the position and velocity of elastic joints is more challenging than conventional stiff actuators due to the oscillation of elastic components. In addition, disturbance forces can cause the elastic joint to deviate from its original position.</p>
<p>The importance of human-robot interaction cannot be overstated when it comes to cobots, especially when direct physical interaction with humans is considered, i.e.,&#x20;rehabilitation robots. In this perspective, a design of an elastic actuator with springs having different stiffness is introduced in <xref ref-type="bibr" rid="B52">Yu et&#x20;al. (2013c)</xref>. The proposed design consists of a servomotor, a ball screw, a torsional spring between the motor and the ball screw, and a set of translational springs between the ball screw nut and the external load. The soft translational springs are used to handle the low force operation and reduce output impedance, stiction, and external shock load. When the translational springs are fully compressed, the torsional spring has a high effective stiffness and enhances the system bandwidth. This design is quite compact. The dynamic modelling and analysis of the proposed actuator is also demonstrated. In (<xref ref-type="bibr" rid="B49">Yu et&#x20;al. (2013a)</xref>, this same type of elastic actuator is adopted to design a knee-ankle-foot robot. Successively, a force control approach is presented for the same actuator in <xref ref-type="bibr" rid="B51">Yu et&#x20;al. (2013b)</xref>. First, two dynamical actuator methods are introduced based on different force ranges. Second, for the low force range, an optimal control with friction compensation and disturbance rejection, which is augmented by a feedforward control, is presented. The proposed optimal control strategy is further extended to high force ranges. Third, to manage the transition between low and high force control, a switching control technique is provided. The controller is further enhanced in <xref ref-type="bibr" rid="B50">Yu et&#x20;al. (2015)</xref>. Human interaction compensation, friction compensation, and a disturbance observer are the primary components of the improved controller. When operating in human-in-charge mode, such a control system allows the robot to achieve low output impedance, while precise force tracking is obtained when operating in force control&#x20;mode.</p>
<p>In line with these research trends, a newly-designed low-cost, open-source design of an elastic joint is proposed in this work to give researchers a solution that is economical, highly adaptable, and quick to manufacture. The design is based on our previously proposed layout for the modules of <italic>Serpens</italic> (<xref ref-type="bibr" rid="B36">Sanfilippo et&#x20;al., 2019a</xref>; <xref ref-type="bibr" rid="B35">Sanfilippo et&#x20;al., 2019b</xref>), a low-cost, open-source and highly compliant multi-purpose modular snake robot. Based on the newly designed elastic joint, the design of a 2-DOF robot arm for safe human-robot interaction is also proposed in this article. The robot components are 3D-printed by using Fused Deposition Modelling (FDM) manufacturing technology, thus making the rapid-prototyping process very economical and quick. The real 3D-printed robot arm is shown in <xref ref-type="fig" rid="F1">Figure&#x20;1</xref>, together with the actuator model. Moreover, a decentralised control structure is introduced. Separate controllers are implemented for each joint. The control algorithm is based on a two-feedback loops position control mechanism: an adaptive control is designed in the inner loop to stabilise the system and deal with uncertainties, while a fuzzy controller is considered for the outer loop to eliminate the influence of external force/torque. Then, the controller is validated in simulation with (<xref ref-type="bibr" rid="B18">MATLAB, 2018</xref>) and tested in reality with the 3D-printed prototype. The simulation and experiment results show that the decentralised controller could stabilise and precisely control the elastic joint in normal and disturbed conditions.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>The proposed 2-DOF robot arm with elastic joints for safe human-robot interaction. The real 3D-printed prototype and the 3D model of the joint are shown, respectively.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g001.tif"/>
</fig>
<p>The paper is organised as follows. A review of the related research work is given in <xref ref-type="sec" rid="s2">Section 2</xref>. In <xref ref-type="sec" rid="s3">Section 3</xref>, we focus on the description of the proposed control algorithm. In <xref ref-type="sec" rid="s4">Section 4</xref>, the physical prototype of the 2-DOF robot arm is presented. In <xref ref-type="sec" rid="s5">Section 5</xref>, related simulation results are outlined. In <xref ref-type="sec" rid="s6">Section 6</xref>, the results of experiments on the physical prototype are shown. Finally, conclusions and future works are discussed in <xref ref-type="sec" rid="s7">Section&#x20;7</xref>.</p>
</sec>
<sec id="s2">
<title>2 Related Research Work</title>
<sec id="s2-1">
<title>2.1 Related Control Methods</title>
<p>The advantages of elastic joints are first outlined by Pratt and Williamson&#x2019;s research (<xref ref-type="bibr" rid="B28">Pratt and Williamson, 1995</xref>), where a proportional-integral-derivative (PID) control scheme was proposed. Similarly, proportional-derivative (PD) controllers with on-line gravity compensation are considered in <xref ref-type="bibr" rid="B5">De Luca et&#x20;al. (2005)</xref>, <xref ref-type="bibr" rid="B53">Zollo et&#x20;al. (2007)</xref>. The global asymptotic stability of these control laws is demonstrated via Lyapunov&#x2019;s argument and La Salle&#x2019;s theorem. Another alternative approach is based on robust controllers with a disturbance observer (DOB) (<xref ref-type="bibr" rid="B12">Kim and Chung, 2015</xref>). In <xref ref-type="bibr" rid="B40">Talole et&#x20;al. (2010</xref>), a combination of a feedback linearisation-based controller for the trajectory tracking problem and an extended state observer for uncertainty and states estimation is considered. Feedback linearisation and robust integral of sign of error (RISE) methods for controlling position are proposed in <xref ref-type="bibr" rid="B48">Yin et&#x20;al. (2016)</xref>. Specifically, the dynamics of the actuator is first feedback linearised, then a RISE method is applied to adapt the system model to uncertainties. A model reference adaptive control approach is implemented in <xref ref-type="bibr" rid="B17">Losey et&#x20;al. (2016</xref>) to adapt to uncertainties in system parameters, while the adoption law is demonstrated using Lyapunov&#x2019;s theory. In <xref ref-type="bibr" rid="B24">P&#xe9;rez-Ibarra et&#x20;al. (2017)</xref>, a <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi>&#x221e;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> force controller is used to deliver precisely the force required by a PD position controller on the outer loop. In <xref ref-type="bibr" rid="B11">Kaya and &#xc7;etin (2017)</xref>, an adaptive state feedback regulator and a conventional PI controller is adopted to control a rotary series elastic actuator. The adaptive state feedback regulator define the transient behaviour of the SEA, then, the tracking error is reduced by the PI controller. In <xref ref-type="bibr" rid="B23">Penzlin et&#x20;al. (2019)</xref>, a clutched parallel elastic actuator (CPEA) with an iterative learning control loop and a cascade control loop is proposed. The cascade control loop is used to control the position output of a BLDC motor. The iterative learning control loop is used to control the output trajectory of the actuator. To the best of our knowledge, an adaptive control aiming at both stabilising the system as well as dealing with uncertainties to eliminate the influence of external force/torque has not been released&#x20;yet.</p>
</sec>
<sec id="s2-2">
<title>2.2 Related Mechanical Design</title>
<p>Elastic elements play a very important role in elastic joints. They are responsible for absorbing unexpected collision and storing elastic energy. The elastic elements can be springs and can have different shapes (as shown in <xref ref-type="fig" rid="F2">Figure&#x20;2</xref>). Springs in elastic joints can be classified into torsion spring and extension/compression spring. In (<xref ref-type="bibr" rid="B27">Pratt et&#x20;al., 1997</xref>, <xref ref-type="bibr" rid="B29">2002</xref>; for; <xref ref-type="bibr" rid="B10">Human and Cognition, 2020</xref>), a pair of extension/compression springs are used, as shown in <xref ref-type="fig" rid="F2">Figure&#x20;2A</xref>. In (<xref ref-type="bibr" rid="B36">Sanfilippo et&#x20;al., 2019a</xref>), two springs are bent to fit into a compact housing, as shown in <xref ref-type="fig" rid="F2">Figure&#x20;2B</xref>. Beside conventional springs, there are some custom designs of the elastic element. Some examples are shown in <xref ref-type="fig" rid="F2">Figure&#x20;2</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Different designs of the elastic element <bold>(A)</bold> series elastic actuator SEA23-23 from Yobotics (<xref ref-type="bibr" rid="B27">Pratt et&#x20;al., 1997</xref>, <xref ref-type="bibr" rid="B29">2002</xref>) <bold>(B)</bold> series elastic actuator from Serpens robot (<xref ref-type="bibr" rid="B36">Sanfilippo et&#x20;al., 2019a</xref>) <bold>(C)</bold> a torsional elastic element of wearable robots for knee assistance (<xref ref-type="bibr" rid="B4">Carpino et&#x20;al., 2012</xref>) <bold>(D)</bold> LOPES&#x2032; spring (<xref ref-type="bibr" rid="B14">Lagoda et&#x20;al., 2010</xref>) <bold>(E)</bold> NASA Valkyrie&#x2019;s spring (<xref ref-type="bibr" rid="B22">Paine et&#x20;al., 2015</xref>; <xref ref-type="bibr" rid="B31">Radford et&#x20;al., 2015</xref>).</p>
</caption>
<graphic xlink:href="frobt-08-679304-g002.tif"/>
</fig>
<p>To amplify the torque and reduce the speed of a motor, gearing systems are adopted. Besides the common spur gears, some special types of gear are also utilised in elastic joints. Strain wave gearing, also known as harmonic gearing, can be applied, e.g., (<xref ref-type="bibr" rid="B20">Negrello et&#x20;al., 2015</xref>; <xref ref-type="bibr" rid="B44">Wang et&#x20;al., 2017</xref>; <xref ref-type="bibr" rid="B38">Sergi et&#x20;al., 2012</xref>). This mechanism consists of three basic components: a wave generator, a flex spline, and a circular spline. The advantages of the harmonic gearing mechanism are no backlash, high compactness, lightweight, high gear ratios in a small volume, and coaxial input and output shafts. In the research of Meng (<xref ref-type="bibr" rid="B43">Wang et&#x20;al.,2015</xref>; <xref ref-type="bibr" rid="B44">Wang et&#x20;al., 2017</xref>), a nonlinear series elastic joint with variable stiffness is presented. There are two motors and a harmonic gearing mechanism in this design. One motor is connected to the wave generator, while the other motor is used to change the stiffness preset, and the link is attached to the flex spline. Planetary gearing system is also utilised in elastic joints, e.g., (<xref ref-type="bibr" rid="B15">Lee and Oh, 2016</xref>; <xref ref-type="bibr" rid="B26">Plooij et&#x20;al., 2016</xref>). The advantages of the planetary gearing mechanism are compactness, high efficiency, low backlash, high torque density (i.e.,&#x20;high torque-to-mass ratio), and coaxial input and output shafts. In <xref ref-type="bibr" rid="B15">Lee and Oh (2016)</xref>, good control performance is achieved while the size is still compact. The motor shaft is connected to the Sun gear, the torsional spring is connected to the ring gear, the load is attached to the carrier and the planet gears combine these three parts. One side of the spring and the motor is attached to a fixed base. In <xref ref-type="bibr" rid="B26">Plooij et&#x20;al. (2016)</xref>, a <italic>BIdirectional Clutched Parallel Elastic Actuator</italic> (BIC-PEA) is introduced. The mechanism contains a planetary differential, a torsion spring, and two brakes. It is stated that BIC-PEA design can save up to 65% of the energy consumption in some specific&#x20;tasks.</p>
</sec>
</sec>
<sec id="s3">
<title>3 Control Algorithm</title>
<p>In this section, a mathematical model of the considered elastic joint system is introduced. A novel control algorithm was previously designed by our research group and proposed in (<xref ref-type="bibr" rid="B9">Hua et&#x20;al., 2019</xref>). This control algorithm is summarised in this section. For further details, the reader is referred to (<xref ref-type="bibr" rid="B9">Hua et&#x20;al., 2019</xref>).</p>
<sec id="s3-1">
<title>3.1 Mathematical Model</title>
<p>The schematic diagrams of the elastic actuator are illustrated in <xref ref-type="fig" rid="F3">Figure&#x20;3</xref>. There are two gears with gear ratio <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the number of teeth for the load and the motor gear, respectively. The torques shown in these diagrams are motor torque (<inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>), spring reaction torque (<inline-formula id="inf6">
<mml:math id="m6">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) and external torque (<inline-formula id="inf7">
<mml:math id="m7">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>). <xref ref-type="fig" rid="F3">Figure&#x20;3A</xref> illustrates the system when there is no external force/torque, while <xref ref-type="fig" rid="F3">Figure&#x20;3B</xref> illustrates the system affected by an external action. The compression of the springs on the real prototype is also shown on <xref ref-type="fig" rid="F3">Figure&#x20;3C</xref>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Elastic joint system <bold>(A)</bold> without external force/torque <bold>(B)</bold> compressed/tensed by external action <bold>(C)</bold> compression of the springs on the real prototype.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g003.tif"/>
</fig>
<p>The whole system is affected by disturbances from the motor (<inline-formula id="inf8">
<mml:math id="m8">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) as well as from the load (<inline-formula id="inf9">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>). These parameters represent external noise and noise caused by electromechanical systems (e.g., vibrations of the mechanical parts, voltage spike in electronic components, etc). By denoting the motor angular position as <inline-formula id="inf10">
<mml:math id="m10">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
</mml:math>
</inline-formula>, the load angular position as <italic>q</italic>, the rotor inertia as <inline-formula id="inf11">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the motor damping coefficient as <inline-formula id="inf12">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the stiffness coefficient of the spring as <inline-formula id="inf13">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the spring damping coefficient as <inline-formula id="inf14">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the load inertia as <inline-formula id="inf15">
<mml:math id="m15">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and the load damping coefficient as <inline-formula id="inf16">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the mathematical model of the elastic joint system is obtained:<disp-formula id="e1">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
<disp-formula id="e2">
<mml:math id="m18">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>
<disp-formula id="e3">
<mml:math id="m19">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mi>x</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>
<xref ref-type="disp-formula" rid="e1">Eq. 1</xref> shows the relationship on the motor-side between the motor torque, the spring torque and the motor angular position. The spring torque, <inline-formula id="inf17">
<mml:math id="m20">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, is obtained by <xref ref-type="disp-formula" rid="e2">Eq. 2</xref>. The interaction between the spring torque, the external torque and the load angular position is illustrated by <xref ref-type="disp-formula" rid="e3">Eq.&#x20;3</xref>.</p>
</sec>
<sec id="s3-2">
<title>3.2 Controller Design</title>
<p>The proposed control algorithm diagram is presented in <xref ref-type="fig" rid="F4">Figure&#x20;4</xref>. The objective of this work is to develop a controller that can track the desired load angular position when considering external disturbances on the load and uncertainties in system parameters. To achieve this objective, two separate types of controllers are utilised for the motor-side and the load-side, respectively. For the load-side, we propose using a Fuzzy PI Controller (FPIC) to reduce the effect of external disturbances on the load. The considered external disturbances are the forces/torques caused by undesired collisions when operating in unknown environments. The output of the FPIC is used as the desired angular position of the motor. For the motor-side, a Model Reference Adaptive Controller (MRAC) is used to cope with uncertainties in system parameters. The uncertain system parameters could be the inertia of the load or the stiffness of the spring. The idea is inspired to a previous research of (<xref ref-type="bibr" rid="B17">Losey et&#x20;al., 2016</xref>). The advantage of combining the FPIC and the MRAC controllers is the possibility of achieving independence with respect to imprecise system parameters. In previous works (<xref ref-type="bibr" rid="B17">Losey et&#x20;al., 2016</xref>), the motor angular position is prioritised more than the load position because the target is force control. The contribution of the paper is that a robust position control&#x20;algorithm for the load position is proposed. In addition, a better spring model is given with the damping coefficient&#x20;added.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>The proposed two-loop controller.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g004.tif"/>
</fig>
<sec id="s3-2-1">
<title>3.2.1 Fuzzy PI Controller</title>
<p>An FPIC is applied to the load-side to cope with the effect of external disturbances on the elastic joint system. A fuzzy controller is not based on a strict mathematical model and is widely used to solve problems under uncertain environments, with high nonlinearities (<xref ref-type="bibr" rid="B1">Al-Odienat and Al-Lawama, 2008</xref>). A fuzzy algorithm is a control method based on fuzzy logic, which uses &#x201c;fuzzy inference rules&#x201d; instead of &#x201c;equations&#x201d;. These fuzzy inference rules may come from experience of a human expert in controlling a specific object, or in other cases, from the understanding of dynamics and behaviour of the target plant. A fuzzy controller can be combined with a conventional PID controller to obtain a fuzzy PI, a fuzzy PD or a fuzzy PID controller. The fuzzy PI type controller is known to be more&#x20;practical than fuzzy PD types because it is difficult for the fuzzy PD to remove steady state errors (<xref ref-type="bibr" rid="B32">Rao et&#x20;al., 2010</xref>). The relationship between the input and the output in a conventional PI controller is expressed in the following equation:<disp-formula id="e4">
<mml:math id="m21">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:msup>
<mml:mstyle displaystyle="true">
<mml:mo>&#x222b;</mml:mo>
</mml:mstyle>
<mml:mtext>&#x200b;</mml:mtext>
</mml:msup>
</mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi>t</mml:mi>
</mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>where, <inline-formula id="inf18">
<mml:math id="m22">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf19">
<mml:math id="m23">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> are scaling the coefficient of the feedback error, the change of feedback error and the change of control signal, respectively. In fuzzy control, the experience of the human operator is applied to establish fuzzy inference rules. However, the integral of the error is more difficult to be analysed than the change of the error. Therefore, the control signal u is differentiated so that the change of the error can be considered. Then, by differentiating <xref ref-type="disp-formula" rid="e4">Eq. 4</xref>, we obtain:<disp-formula id="e5">
<mml:math id="m24">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>u</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>A fuzzy PI controller can be obtained by combining <xref ref-type="disp-formula" rid="e5">Eq. 5</xref> with the fuzzy controller. Inputs of the FPIC are the feedback error (<italic>e</italic>) and the change of this error (<inline-formula id="inf20">
<mml:math id="m25">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>), while the output of the FPIC is the change of control signal (<inline-formula id="inf21">
<mml:math id="m26">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>u</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>).</p>
<p>The membership functions for the input and the output are shown in <xref ref-type="fig" rid="F5">Figure&#x20;5A,B</xref>, in which <inline-formula id="inf22">
<mml:math id="m27">
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> are parameters to be adjusted. These parameters are chosen by trial and error in the range of (0, 1). The narrower the membership functions are, the faster is the response at the expense of larger oscillations and overshoots. The membership functions for the error and&#x20;the change of error are similar, including the rules base of the fuzzy model: Negative Big (NB), Negative Small (NS), Zero (ZE), Positive Small (PS), and Positive Big (PB). The membership functions for the change of the control signal are in singleton over the output, given NB, NS, ZE, PS, and PB.&#x20;On the basis of the input and output membership functions, 25 fuzzy inference rules are established as shown in <xref ref-type="table" rid="T1">Table&#x20;1</xref>.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Fuzzy membership functions <bold>(A)</bold> input membership functions <bold>(B)</bold> output membership functions.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g005.tif"/>
</fig>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Fuzzy inference&#x20;rules.</p>
</caption>
<table>
<tbody valign="top">
<tr>
<td align="left">
<inline-graphic xlink:href="frobt-08-679304-fx1.tif"/>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s3-2-2">
<title>3.2.2 Model Reference Adaptive Controller</title>
<p>Although there are various control algorithms available from the past literature (<xref ref-type="bibr" rid="B28">Pratt and Williamson, 1995</xref>; <xref ref-type="bibr" rid="B40">Talole et&#x20;al., 2010</xref>; <xref ref-type="bibr" rid="B17">Losey et&#x20;al., 2016</xref>; <xref ref-type="bibr" rid="B23">Penzlin et&#x20;al., 2019</xref>), uncertainties in system parameters can lead to instability in many cases. Adaptive controllers are developed to overcome this problem. An MRAC is an important adaptive controller typology in which the desired response is expressed by a reference model. The adaptation law modifies the system parameters based on the difference between the output of the real system and the output of the reference model. In this article, Lyapunov&#x2019;s stability theory is applied to design the adaptation law. Lyapunov&#x2019;s stability criterion states that a system, <inline-formula id="inf23">
<mml:math id="m28">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>x</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, with equilibrium point at <inline-formula id="inf24">
<mml:math id="m29">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, is stable if there is a function, <inline-formula id="inf25">
<mml:math id="m30">
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, that satisfies the following conditions:<disp-formula id="e6">
<mml:math id="m31">
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi>i</mml:mi>
<mml:mi>f</mml:mi>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi>x</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
<disp-formula id="e7">
<mml:math id="m32">
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi>i</mml:mi>
<mml:mi>f</mml:mi>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi>x</mml:mi>
<mml:mo>&#x2260;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
<disp-formula id="e8">
<mml:math id="m33">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi>f</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>l</mml:mi>
<mml:mtext>&#xa0;</mml:mtext>
<mml:mi>x</mml:mi>
<mml:mo>&#x2260;</mml:mo>
<mml:mn>0.</mml:mn>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>Firstly, the control law is derived. The motor-side system equations can be rewritten by using <xref ref-type="disp-formula" rid="e1">Eqs. 1</xref>, <xref ref-type="disp-formula" rid="e1">2</xref> (ignoring the motor-side external disturbance <inline-formula id="inf26">
<mml:math id="m34">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) as:<disp-formula id="e9">
<mml:math id="m35">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mover>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mover>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>q</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>A</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>q</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e9">Eq. 9</xref>, the state matrix <italic>A</italic>, input matrix <italic>B</italic> and state vector <inline-formula id="inf27">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of the system can be obtained as:<disp-formula id="e10">
<mml:math id="m37">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>B</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>The motor-side system equations have the form of a second-order system, so the reference model is a second-order system model with the desired signal <inline-formula id="inf28">
<mml:math id="m38">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, natural frequency <inline-formula id="inf29">
<mml:math id="m39">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and damping coefficient &#x3be;:<disp-formula id="e11">
<mml:math id="m40">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mn>..</mml:mn>
</mml:mrow>
</mml:mover>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>&#x3be;</mml:mi>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<p>In <xref ref-type="disp-formula" rid="e11">Eq. 11</xref>, the state matrix <inline-formula id="inf30">
<mml:math id="m41">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, input matrix <inline-formula id="inf31">
<mml:math id="m42">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and state vector <inline-formula id="inf32">
<mml:math id="m43">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of the reference model can be obtained as:<disp-formula id="e12">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>&#x3be;</mml:mi>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>A general control law for the system with state <xref ref-type="disp-formula" rid="e9">Eq. 9</xref> is:<disp-formula id="e13">
<mml:math id="m45">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>M</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>L</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>K</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>q</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>Parameters with hats (<inline-formula id="inf33">
<mml:math id="m46">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf34">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>J</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf35">
<mml:math id="m48">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>K</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf36">
<mml:math id="m49">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf37">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf38">
<mml:math id="m51">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>J</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>) are estimated parameters, while matrices <italic>M</italic> and <italic>L</italic> need to be determined. By substituting <inline-formula id="inf39">
<mml:math id="m52">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> to system <xref ref-type="disp-formula" rid="e9">Eq. 9</xref>, we have:<disp-formula id="e14">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mi>M</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>K</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>q</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>If perfect estimation of parameters is obtained, we have <inline-formula id="inf40">
<mml:math id="m54">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>K</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf41">
<mml:math id="m55">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. As the columns of matrices <inline-formula id="inf42">
<mml:math id="m56">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf43">
<mml:math id="m57">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are linear combinations of the vector <italic>B</italic>, there exists optimal matrices <inline-formula id="inf44">
<mml:math id="m58">
<mml:mrow>
<mml:msup>
<mml:mi>M</mml:mi>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf45">
<mml:math id="m59">
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> of matrices <italic>M</italic> and <italic>L</italic> such that:<disp-formula id="e15">
<mml:math id="m60">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>B</mml:mi>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>
<disp-formula id="e16">
<mml:math id="m61">
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>B</mml:mi>
<mml:msup>
<mml:mi>M</mml:mi>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>
<xref ref-type="disp-formula" rid="e15">Eqs. 15</xref>, <xref ref-type="disp-formula" rid="e16">16</xref> are called compatible conditions. If these conditions are satisfied and we have perfect estimation of parameters, then the controller 13 can yield perfect tracking of the reference model. From these equations, the controller optimal matrices <inline-formula id="inf46">
<mml:math id="m62">
<mml:mrow>
<mml:msup>
<mml:mi>M</mml:mi>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf47">
<mml:math id="m63">
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> can be obtained as below:<disp-formula id="e17">
<mml:math id="m64">
<mml:mrow>
<mml:msup>
<mml:mi>M</mml:mi>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>B</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mi>B</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>
<disp-formula id="e18">
<mml:math id="m65">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>B</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mi>B</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mi>&#x3be;</mml:mi>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>Based on the above <xref ref-type="disp-formula" rid="e17">Eqs. 17</xref>, <xref ref-type="disp-formula" rid="e18">18</xref> for the controller optimal matrices, the matrices <italic>M</italic> and <italic>L</italic> can be approximated as:<disp-formula id="e19">
<mml:math id="m66">
<mml:mrow>
<mml:mi>M</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>B</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mi>B</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>J</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>
<disp-formula id="e20">
<mml:math id="m67">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi>L</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mi>B</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mi>B</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover>
<mml:mi>K</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover>
<mml:mi>J</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover>
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>J</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mi>&#x3be;</mml:mi>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>Secondly, the error equation is determined. The feedback error, which is the difference between the output of the real&#x20;system and the output of the reference model, is determined as:<disp-formula id="e21">
<mml:math id="m68">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>
</p>
<p>The derivative of error is determined as:<disp-formula id="e22">
<mml:math id="m69">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mi>M</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>K</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>q</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mi>e</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mi>M</mml:mi>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>K</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>q</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mi>e</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mtext>&#x3a8;</mml:mtext>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>where, it should be noted that:<disp-formula id="e23">
<mml:math id="m70">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>&#x3a8;</mml:mtext>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:mtext>&#xa0;&#xa0;</mml:mtext>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mtext>&#xa0;&#xa0;</mml:mtext>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mtext>&#xa0;&#xa0;</mml:mtext>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi>N</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>M</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover>
<mml:mi>K</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover>
<mml:mi>D</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msup>
<mml:mi>L</mml:mi>
<mml:mrow>
<mml:mtext>&#x2a;</mml:mtext>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msup>
<mml:mi>M</mml:mi>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(23)</label>
</disp-formula>
</p>
<p>Thirdly, the adaption law can be obtained by applying Lyapunov&#x2019;s stability theory. A Lyapunov function is introduced as:<disp-formula id="e24">
<mml:math id="m71">
<mml:mrow>
<mml:mi>V</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mi>&#x3b3;</mml:mi>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>P</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(24)</label>
</disp-formula>where, <italic>P</italic> is a symmetric positive definite matrix and &#x3b3; is a learning rate. The function <italic>V</italic> is positive definite. The derivative of <italic>V</italic> is obtained as:<disp-formula id="e25">
<mml:math id="m72">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mi>&#x3b3;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>P</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mi>&#x3b3;</mml:mi>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>e</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:mfrac>
<mml:mi>&#x3b3;</mml:mi>
<mml:msup>
<mml:mi>e</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>Q</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mtext>&#x2a;</mml:mtext>
</mml:msup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
<mml:msup>
<mml:mtext>&#x3a8;</mml:mtext>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>P</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
<label>(25)</label>
</disp-formula>where, <inline-formula id="inf48">
<mml:math id="m73">
<mml:mrow>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>P</mml:mi>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> and <italic>Q</italic> is a symmetric positive definite matrix. The existence of matrix <italic>Q</italic> is demonstrated by using the Kalman-Yakubovich lemma (<xref ref-type="bibr" rid="B2">&#xc5;str&#xf6;m and Wittenmark, 2013</xref>). If the adaption law is chosen to be:<disp-formula id="e26">
<mml:math id="m74">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mtext>&#x3a6;</mml:mtext>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
<mml:msup>
<mml:mtext>&#x3a8;</mml:mtext>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mi>P</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(26)</label>
</disp-formula>then the derivative of Lyapunov function <inline-formula id="inf49">
<mml:math id="m75">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is negative definite with all <inline-formula id="inf50">
<mml:math id="m76">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>&#x2260;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, which means that the feedback error between the output of the real system and the reference model will go to zero when time goes to infinity.</p>
<p>In this article, due to their symmetry, the matrices <italic>P</italic> and <italic>Q</italic> are chosen as it follows:<disp-formula id="e27">
<mml:math id="m77">
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>Q</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
</mml:math>
<label>(27)</label>
</disp-formula>where, <inline-formula id="inf51">
<mml:math id="m78">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf52">
<mml:math id="m79">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> will be tuned appropriately. From equation <inline-formula id="inf53">
<mml:math id="m80">
<mml:mrow>
<mml:msubsup>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>T</mml:mi>
</mml:msubsup>
<mml:mi>P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>P</mml:mi>
<mml:msub>
<mml:mi>A</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>Q</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf54">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf55">
<mml:math id="m82">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf56">
<mml:math id="m83">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> can be obtained by using the following formulas:<disp-formula id="e28">
<mml:math id="m84">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
<mml:mi>&#x3be;</mml:mi>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>&#x3be;</mml:mi>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(28)</label>
</disp-formula>
</p>
<p>In real applications, discrete system equations are utilized instead of continuous ones. By approximately discretising the reference system <xref ref-type="disp-formula" rid="e9">Eq. 9</xref>, we obtain:<disp-formula id="e29">
<mml:math id="m85">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mi>T</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>T</mml:mi>
<mml:mi>&#x3be;</mml:mi>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi>r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>k</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:msubsup>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(29)</label>
</disp-formula>
</p>
</sec>
</sec>
</sec>
<sec id="s4">
<title>4 Physical Prototype</title>
<sec id="s4-1">
<title>4.1 Mechanical Design</title>
<p>In this section, the mechanical design of the elastic joint and the robot arm are described. The mechanical components of the elastic joint are shown in <xref ref-type="fig" rid="F6">Figure&#x20;6A</xref>. A 3D view of the same parts is illustrated in <xref ref-type="fig" rid="F6">Figure&#x20;6B</xref>, while the assembled view of the actuator is illustrated in <xref ref-type="fig" rid="F6">Figure&#x20;6C&#x2013;E</xref>. The mechanism can be separated into load side and motor side. The motor side mechanism includes an 8&#xa0;mm metal shaft, an 8&#xa0;mm metal flange, a flange extension, a cover, and a driving joint (component 9, 8, 7, 6, 5 in <xref ref-type="fig" rid="F6">Figure&#x20;6A</xref>, respectively). The load side mechanism includes an 8&#xa0;mm metal shaft, a cap, an 8&#xa0;mm metal flange, and a compliant joint (component 1, 2, 3, 4 in <xref ref-type="fig" rid="F6">Figure&#x20;6A</xref>, respectively). The shafts are connected to the other parts by the flanges. The flange on the motor side is connected to the flange extension and the flange extension is connected to the cover and the motor side driving joint. The motor side driving joint has space to place two springs with 8&#xa0;mm outer diameter. When the motor rotates, the springs are&#x20;compressed. This will create an elastic force on the compliant joint. The load side shaft is connected to the joint through the flange. The shaft is kept in place by a cap. In our work, two extension/compression springs are chosen because they form a symmetrical configuration. In addition, the extension/compression type of spring is used instead of torsion spring because it is more durable and can bear a larger&#x20;force.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Mechanical design of the elastic joint <bold>(A)</bold> exploded view. Load side: (1) load side shaft, (2) cap, (3) 8&#xa0;mm-shaft flange, (4) load side compliant joint. Motor side: (5) motor side driving joint, (6) cover, (7) flange extension, (8) 8&#xa0;mm-shaft flange, (9) motor side shaft <bold>(B)</bold> 3D view of the elastic joint <bold>(C)</bold> assembled view of the design of the elastic joint <bold>(D)</bold> view from the motor side <bold>(E)</bold> view from the load&#x20;side.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g006.tif"/>
</fig>
<p>Based on the newly introduced actuator, the design of the&#x20;2-DOF elastic robot arm is shown in <xref ref-type="fig" rid="F7">Figure&#x20;7</xref>. The joints of the robot arm are revolute joints. The motor and the elastic joints are connected by pulleys and belts. The transmission ratio from the motor to the actuator is 4:1 (the pulley of the motor has 20 teeth and the pulley of the actuator has 80 teeth).</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Mechanical design of the 2-DOF robot arm with elastic joints: (1) Gripper, (2) elastic joints, (3) GA25 DC motors, (4) AMT20 encoders.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g007.tif"/>
</fig>
<p>The simplified model of the robot arm is shown in <xref ref-type="fig" rid="F8">Figure&#x20;8</xref>. The Denavit-Hartenberg table is shown in <xref ref-type="table" rid="T2">Table&#x20;2</xref>. The angles are in radian and the lengths are in meter. From this table, the corresponding transformation matrices are formed, as shown in <xref ref-type="disp-formula" rid="e30">Eq. 30</xref>.<disp-formula id="e30">
<mml:math id="m86">
<mml:mrow>
<mml:msubsup>
<mml:mi>T</mml:mi>
<mml:mn>1</mml:mn>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msubsup>
<mml:mi>T</mml:mi>
<mml:mn>2</mml:mn>
<mml:mn>3</mml:mn>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mrow>
</mml:math>
<label>(30)</label>
</disp-formula>
</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Diagram of the elastic robot&#x20;arm.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g008.tif"/>
</fig>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Denavit-Hartenberg parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left"/>
<th align="center">d</th>
<th align="center">&#x398;</th>
<th align="center">a</th>
<th align="center">&#x3b1;</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Joint 1</td>
<td align="center">
<inline-formula id="inf65">
<mml:math id="m95">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf66">
<mml:math id="m96">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="char" char=".">0</td>
<td align="center">
<inline-formula id="inf67">
<mml:math id="m97">
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">Joint 2</td>
<td align="char" char=".">0</td>
<td align="center">
<inline-formula id="inf68">
<mml:math id="m98">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf69">
<mml:math id="m99">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<inline-formula id="inf70">
<mml:math id="m100">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s4-2">
<title>4.2 Hardware Design</title>
<p>In this section, the hardware used in the robot arm is presented. The motor used in the robot arm is the GA25 DC motor (<xref ref-type="bibr" rid="B47">XYTmotor, 2020</xref>). It is a 12&#xa0;V DC motor with a 4&#xa0;mm shaft and a two channels encoder attached. The gearbox transmission ratio is chosen as 217:1. The encoder for the load side is the AMT-20 encoder (<xref ref-type="bibr" rid="B6">devices, 2020</xref>) from CUI Devices. It has incremental and absolute encoders in a compact package. The incremental encoder has three channels (A, B, and Z). The absolute encoder has 12 bits of absolute position information with Serial Peripheral Interface (SPI) communication. The microcontroller used is the STM32F446RE on the STM32 Nucleo board (<xref ref-type="bibr" rid="B39">Stmicroelectronics, 2020</xref>).</p>
</sec>
<sec id="s4-3">
<title>4.3 Software Design and Architecture</title>
<p>The software design is described in this section. The concept of modularity is applied to the control architecture. Each joint is independent, being controlled by a self-reliant slave controller, which directly communicates with the master controller running on a personal computer (PC). Each slave controller communicates with the PC through a Universal Serial Bus&#x20;(USB) port on the board. <xref ref-type="fig" rid="F9">Figure&#x20;9</xref> shows the diagram of the control architecture. Each STM32 board has timer peripherals, which are used to capture the encoder signals. The timers are also configured to be Pulse width modulation (PWM) output to control the motors through H-bridges (<xref ref-type="bibr" rid="B21">nhatbon, 2020</xref>). The control/update rate of the controller is&#x20;100&#xa0;Hz (10 milliseconds). The presented framework is a multi-layer architecture that includes the following layers: High-level control layer: it considers the control of the overall manipulator, it includes kinematics according to the corresponding DOFs. Low-level control layer: it considers the&#x20;control of the single joints. This makes it possible to use the proposed approach for robotic arms with different DOFs.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Software design.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g009.tif"/>
</fig>
</sec>
</sec>
<sec id="s5">
<title>5 Simulation Results</title>
<p>In this section, simulations are outlined with the aim of validating the proposed control algorithm for the considered elastic joint. The simulations are conducted on (<xref ref-type="bibr" rid="B18">MATLAB, 2018</xref>). This software is chosen because of its ability to quickly constructing simulation models and validating control schemes. The responses of the elastic joint with step and sinusoidal wave inputs are presented. The effect of external torque and disturbances on the whole elastic system is also illustrated. The system parameters used in the simulation are shown in <xref ref-type="table" rid="T3">Table&#x20;3</xref>.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>System parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Parameter</th>
<th align="center">Value</th>
<th align="center">Parameter</th>
<th align="center">Value</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Gear ratio(N)</td>
<td align="char" char=".">1</td>
<td align="left">Spring stiffness (<inline-formula id="inf71">
<mml:math id="m101">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="char" char=".">3</td>
</tr>
<tr>
<td align="left">Load damping coefficient (<inline-formula id="inf72">
<mml:math id="m102">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="char" char=".">0.006</td>
<td align="left">Motor damping coefficient (<inline-formula id="inf73">
<mml:math id="m103">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="char" char=".">0.06</td>
</tr>
<tr>
<td align="left">Load inertia (<inline-formula id="inf74">
<mml:math id="m104">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>l</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="char" char=".">0.065</td>
<td align="left">Motor inertia (<inline-formula id="inf75">
<mml:math id="m105">
<mml:mrow>
<mml:msub>
<mml:mi>J</mml:mi>
<mml:mi>m</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="char" char=".">0.1</td>
</tr>
<tr>
<td align="left">Spring damping coefficient (<inline-formula id="inf76">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mi>D</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="char" char=".">0.6</td>
<td align="left">Sampling rate (T)</td>
<td align="char" char=".">0.001</td>
</tr>
</tbody>
</table>
</table-wrap>
<sec id="s5-1">
<title>5.1 Response of the Load-Side System With Step and Sine Desired Signals Without External Torque</title>
<p>The response of the load-side system in normal condition is&#x20;illustrated in this section. Step and sine responses are shown in <xref ref-type="fig" rid="F10">Figure&#x20;10</xref>. In these figures, blue dashed lines are desired inputs and red solid lines are load angular positions. The unstable stage at the beginning of the simulation is the learning phase of the MRAC. The results show that the proposed controller has relatively fast response and small&#x20;error.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Load-side response of the FPIC-MRAC <bold>(A)</bold> step input <bold>(B)</bold> sine&#x20;input.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g010.tif"/>
</fig>
</sec>
<sec id="s5-2">
<title>5.2 Response of the Motor-Side System With Step and Sine Desired Signals Without External Torque</title>
<p>The response of the motor-side system in normal condition is presented in this section. Step and sine responses are shown in <xref ref-type="fig" rid="F11">Figure&#x20;11A,B</xref>
<underline>,</underline> respectively. The reference model and the MRAC parameters are shown in <xref ref-type="fig" rid="F4">Table&#x20;4tbl4</xref>. The system parameters are modified based on the adaption law (<xref ref-type="disp-formula" rid="e26">Eq. 26</xref>) to reduce the error between reference model and real motor response. The adaption law is designed using Lyapunov&#x2019;s approach. This has an advantage: arbitrary large values of the learning rate coefficient &#x3b3; can be used (<xref ref-type="bibr" rid="B2">&#xc5;str&#xf6;m and Wittenmark, 2013</xref>).</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Motor-side response of the FPIC-MRAC <bold>(A)</bold> step input <bold>(B)</bold> sine input.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g011.tif"/>
</fig>
<p>The damping coefficient &#x3be; of the reference model is chosen to be critically damped (<inline-formula id="inf57">
<mml:math id="m87">
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>) because there are no oscillations or overshoots in this configuration and the system returns to equilibrium in minimum time. However, <xref ref-type="fig" rid="F11">Figure&#x20;11A</xref> shows that there is a small overshoot in the&#x20;reference model graph. This is caused by the integrator in the FPIC, not by the reference model in the MRAC, and&#x20;could be reduced by appropriately adjusting the <inline-formula id="inf58">
<mml:math id="m88">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> coefficient. The rising time of the reference model is calculated by using the approximation formula: <inline-formula id="inf59">
<mml:math id="m89">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>5.83392</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s5-3">
<title>5.3 Response of the Load and Motor-Side System With External Torque to the Step Desired Signal</title>
<p>In this section, the effect of the disturbance on the elastic joint and the efficiency of the proposed algorithm is demonstrated. The disturbance signal affecting the load side is a sine wave signal with an amplitude of five radian and a cycle time of 0.5&#xa0;s. This signal is applied to each joint. This is equivalent to the vibrations often occurring in elastic joints. The sine response of the load-side system and the motor-side system is shown in <xref ref-type="fig" rid="F12">Figure&#x20;12A,B</xref>, respectively. The motor control voltage is shown in <xref ref-type="fig" rid="F12">Figure&#x20;12C</xref>. In the proposed two-loop controller, the FPIC is adopted on the load side to reduce the influence of external disturbances and the MRAC is adopted on the motor side to deal with uncertainties. When there is an external torque, the desired motor angular position is adjusted by the FPIC, so that the error between the desired load angular position and the real load angular position goes to zero. As shown in <xref ref-type="fig" rid="F12">Figure&#x20;12B</xref>, the motor angular position changes when the external torque appears and the influence of this external torque is eliminated.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Response of the FPIC-MRAC of the robot arm with external disturbance <bold>(A)</bold> load-side response <bold>(B)</bold> motor-side response <bold>(C)</bold> motor control voltage.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g012.tif"/>
</fig>
<table-wrap id="T4" position="float">
<label>TABLE 4</label>
<caption>
<p>Reference model and MRAC parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Parameter</th>
<th align="center">Value</th>
<th align="center">Parameter</th>
<th align="center">Value</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">Damping coefficient (&#x3be;)</td>
<td align="center">1</td>
<td align="center">
<inline-formula id="inf77">
<mml:math id="m107">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">7</td>
</tr>
<tr>
<td align="left">Natural frequency (<inline-formula id="inf78">
<mml:math id="m108">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c9;</mml:mi>
<mml:mi>n</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>)</td>
<td align="center">5</td>
<td align="center">
<inline-formula id="inf79">
<mml:math id="m109">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.06</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf80">
<mml:math id="m110">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">3</td>
<td align="center">
<inline-formula id="inf81">
<mml:math id="m111">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mn>3</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.256</td>
</tr>
<tr>
<td align="left">
<inline-formula id="inf82">
<mml:math id="m112">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">5</td>
<td align="center">Learning rate coefficient (&#x3b3;)</td>
<td align="center">0.995</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>To show more evidently the effectiveness of the proposed control algorithm, a standard PID controller is applied and its results are compared. As shown in <xref ref-type="fig" rid="F13">Figure&#x20;13A,B</xref>, the responses of the PID controller and the FPIC-MRAC controller are similar in normal condition. However, as shown in <xref ref-type="fig" rid="F13">Figure&#x20;13B</xref> and <xref ref-type="fig" rid="F12">Figure&#x20;12A</xref>, the response of the FPIC-MRAC controller is significantly better than the PID controller in the presence of external disturbance.</p>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>Load-side response of the PID controller of the robot arm <bold>(A)</bold> in normal condition <bold>(B)</bold> with external disturbance.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g013.tif"/>
</fig>
</sec>
<sec id="s5-4">
<title>5.4 Response of the Load and Motor-Side System With Human-Machine Interaction</title>
<p>The impact of human-machine interaction on the elastic joints is presented in this section. The load side response and the control voltage are shown in <xref ref-type="fig" rid="F14">Figure&#x20;14</xref>. The simulated human-machine interaction of joint 1 appears from the second 20 to 30 and from 40 to 45. The simulated human-machine interaction of joint 2 appears from the second 10 to 20 and from 30 to 40. The collected data outline that despite being affected by the disturbance, the controller can adjust the voltage to keep the system stable.</p>
<fig id="F14" position="float">
<label>FIGURE 14</label>
<caption>
<p>Load-side response and control voltage of the FPIC-MRAC with human-machine interaction <bold>(A)</bold> load-side response <bold>(B)</bold> control voltage <bold>(C)</bold> external disturbance.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g014.tif"/>
</fig>
</sec>
</sec>
<sec id="s6">
<title>6 Experiments</title>
<p>In this section, experiments are conducted to verify the effectiveness of the control algorithm on the mechanical prototype of the robot arm. The experiments consist of joints&#x2019; response and trajectory tracking. It should be noted that, in the simulation, the elastic joints are controlled directly by changing the voltage, as shown in <xref ref-type="fig" rid="F12">Figure&#x20;12C</xref>. However, in the experiments, the elastic joints are controlled by torque produced from the motor which is proportional to the current injected by the H-bridge. This current is dependent on the applied voltage, which is controlled by adjusting the duty cycle of the PWM&#x20;pulse.</p>
<sec id="s6-1">
<title>6.1 Experiment in Normal Condition</title>
<p>In this subsection, experiment results related to the control of the real 2-DOF robot arm with elastic joints in the normal condition are presented. The normal condition is when the robot arm is not disturbed by the external torque. The joint angle response and control voltage are demonstrated. There are two input signal types: sinusoidal and square waveforms. The sinusoidal waveform input has an amplitude of 0.5&#xa0;rad and a cycle time of 8&#xa0;s. The square waveform input has an amplitude of 0.5&#xa0;rad and a cycle time of 8&#xa0;s. The data is collected within 50&#xa0;s.</p>
<p>
<xref ref-type="fig" rid="F15">Figure 15</xref>; <xref ref-type="sec" rid="s12">Supplement Figure S1</xref> show the angle response and the control voltage of joint 1 and joint 2, respectively, in normal condition with the sinusoidal waveform input. The figures demonstrate that the decentralised control algorithm works as expected. As shown in <xref ref-type="fig" rid="F15">Figure&#x20;15A</xref>, the absolute value of the positive peak of the motor angle is larger than the negative peak. This is due to a small manufacturing defect in the actuator: the spring on one side is stiffer than the spring on the other side. Despite this fact, it is clear that the controller still tracks the desired load&#x20;angle.</p>
<fig id="F15" position="float">
<label>FIGURE 15</label>
<caption>
<p>Experiment: angle response and control voltage of the FPIC-MRAC of joint 1 in normal condition, sine waveform input <bold>(A)</bold> angle response of joint 1&#x20;<bold>(B)</bold> control voltage of joint 1.</p>
</caption>
<graphic xlink:href="frobt-08-679304-g015.tif"/>
</fig>
<p>The angle response and the control voltage of joint 1 and joint 2 are shown in <xref ref-type="sec" rid="s12">Supplement Figures S2, S3</xref>, respectively, in normal condition with the square waveform input. These figures demonstrate that the decentralised control algorithm also works well in this situation. The error decreases to smaller than 10&#xb0; after just a few seconds.</p>
</sec>
<sec id="s6-2">
<title>6.2 Experiment When There Is Unexpected Torque</title>
<p>In this subsection, the experiment results of the real 2-DOF robot arm with elastic joints in presence of disturbances are presented. The joint angle response and control voltage are demonstrated. The sinusoidal waveform input has an amplitude of 0.5&#xa0;rad and a cycle time of 8&#xa0;s. The data is collected within 50&#xa0;s. The external disturbance is created by randomly holding the robot arm by hand while it is operating. This imitates the unexpected collision with a human operator while coexisting in a shared work-space.The angle response and the control voltage of joint 1 and joint 2 in disturbance condition are shown in <xref ref-type="sec" rid="s12">Supplement Figures S4, S5</xref>, respectively. These figures demonstrate that the decentralised control algorithm can stabilise the system when there is unexpected torque. In addition, if the absolute value of the deviation between the motor angle and the load angle is larger than 30&#xb0; (0.523,599 radians), the motor will stop. This value can be tuned appropriately, which means that safety can be guaranteed.</p>
</sec>
<sec id="s6-3">
<title>6.3 Trajectory Tracking Experiment in Normal Condition</title>
<p>In this subsection, trajectory tracking experiment results of the elastic robot arm in the normal condition are demonstrated. A sequence of images of the experiment is illustrated in <xref ref-type="sec" rid="s12">Supplement Figure S6</xref>. The initial position is when <inline-formula id="inf60">
<mml:math id="m90">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mn>4</mml:mn>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula> and the end position is when <inline-formula id="inf61">
<mml:math id="m91">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>7</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>. The desired trajectory and the response of the robot arm are shown in <xref ref-type="sec" rid="s12">Supplement Figure S7A</xref>. It is clear that the end effector of the robot can be following the desired trajectory. In details, <xref ref-type="sec" rid="s12">Supplement Figure S7B,C</xref>, show the responses of joints 1 and 2, respectively. The tracking error is relatively&#x20;small.</p>
</sec>
<sec id="s6-4">
<title>6.4 Trajectory Tracking Experiment When There Is Unexpected Torque</title>
<p>In this subsection, trajectory tracking experimental results of the elastic robot arm when there is an unexpected torque are demonstrated. A sequence of images from the experiment is shown in <xref ref-type="sec" rid="s12">Supplement Figure S8</xref>. The initial position is when <inline-formula id="inf62">
<mml:math id="m92">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mn>4</mml:mn>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula> and the end position is when <inline-formula id="inf63">
<mml:math id="m93">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>7</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mn>6</mml:mn>
</mml:mfrac>
</mml:mrow>
</mml:math>
</inline-formula>. As shown in the third image of the sequence (<xref ref-type="sec" rid="s12">Supplement Figure S8</xref>), the unexpected torque is produced by the collision with a human hand. The desired trajectory and the response of the robot arm are shown in <xref ref-type="sec" rid="s12">Supplement Figure S9A</xref>. Obviously, there is a section where the end effector of the robot arm deviates from the desired trajectory. It corresponds to the period when the arm is affected by undesired torque. <xref ref-type="sec" rid="s12">Supplement Figure S9B,C</xref> illustrate the responses of joints 1 and 2, respectively. As shown in these figures, when the collision occurred from second 7 to second 12, the robot arm tries to hold its position to mitigate the damage. After that, when the robot arm is released, it gradually converges to the end position.</p>
</sec>
</sec>
<sec sec-type="conclusion" id="s7">
<title>7 Conclusion</title>
<p>A newly designed elastic joint was presented in this work based on our previuous design, which was previously introduced in <xref ref-type="bibr" rid="B36">Sanfilippo et&#x20;al. (2019a)</xref>, <xref ref-type="bibr" rid="B35">Sanfilippo et&#x20;al. (2019b)</xref>. Based on the developed elastic joint, a 2-DOF robot arm with elastic behaviour for safe human-robot interaction was also presented. The mechanical prototype can be 3D-printed by using Fused Deposition Modelling (FDM) manufacturing technology, thus making the rapid-prototyping process very economical and fast. Moreover, a position control algorithm was introduced to control each joint of the arm. The control algorithm is based on a 2-loops control mechanism. In particular, the inner control loop is designed as a model reference adaptive controller (MRAC) to deal with uncertainties in the system parameters, while the outer control loop utilises a fuzzy proportional-integral controller (FPIC) to reduce the effect of external disturbances on the load. Preliminary simulations were carried out in <italic>Matlab</italic> to validate the potential of the proposed control algorithm. Successively, the effectiveness of the controller was also proven by conducting experiments with the mechanical prototype.</p>
<p>As future work, the possibility of replacing the DC motors with brushless DC (BLDC) motors will be considered. Due to having high torque density, BLDC motors will make it possible to achieve a more compact actuation system. In addition, as shown in <xref ref-type="fig" rid="F9">Figure&#x20;9</xref>, the proposed controller has a decentralised design. This means that each joint has its own separated controller, both in hardware and software. Therefore, the number of DOFs can be expanded and tested easily in the future. Furthermore, the stability analysis at the system level will also be considered.</p>
<p>Moreover, the possibility of realising a digital-twin of the presented robot will be considered to enable researchers for designing and prototyping different control algorithms. In this perspective, the integration with an open-source software framework will be investigated. To achieve this, there are different robotic frameworks and middleware available in recent years (<xref ref-type="bibr" rid="B41">Tsardoulias and Mitkas, 2017</xref>). However, the Robot Operating System (ROS) (<xref ref-type="bibr" rid="B30">Quigley et&#x20;al., 2009</xref>) has emerged as a <italic>de facto</italic> standard for robot software architecture in the research community. In conjunction with ROS, Gazebo 3D simulator (<xref ref-type="bibr" rid="B13">Koenig and Howard, 2004</xref>) can be adopted to accurately and efficiently simulate robots in complex indoor and outdoor environments. Therefore, these tools will be considered to realise a digital-twin of the presented&#x20;robot.</p>
<p>In the future, the design of reliable low-level control algorithms for the proposed elastic joints could be also relevant for other robotic systems, such as snake like robots similar to <italic>Serpens</italic> (<xref ref-type="bibr" rid="B36">Sanfilippo et&#x20;al., 2019a</xref>), which is developed by our research group. This technology may be essential to enable the achievement of <italic>perception-driven obstacle-aided locomotion</italic> (POAL) (<xref ref-type="bibr" rid="B33">Sanfilippo et&#x20;al., 2016</xref>, <xref ref-type="bibr" rid="B34">2017</xref>, <xref ref-type="bibr" rid="B37">2018</xref>).</p>
</sec>
</body>
<back>
<sec id="s8">
<title>Data Availability Statement</title>
<p>The raw data supporting the conclusion of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s9">
<title>Author Contributions</title>
<p>Conceptualisation, TH and FS; methodology, TH and FS; software, TH; validation, TH, FS and HN; formal analysis, TH and FS; investigation, TH and FS; resources, HN; data curation, TH; writing&#x2014;original draft preparation, TH and FS; writing&#x2014;review and editing, TH, FS and HN; visualisation, TH; supervision, FS and HN; project administration, FS and HN; funding acquisition, FS and HN. All authors have read and agreed to the published version of the manuscript.</p>
</sec>
<sec id="s10">
<title>Funding</title>
<p>We acknowledge the support of time and facilities from Ho Chi Minh City University of Technology (HCMUT), VNU-HCM and from the Top Research Centre Mechatronics (TRCM), University of Agder, Norway, for this study.</p>
</sec>
<sec sec-type="COI-statement" id="s11">
<title>Conflict of Interest</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 sec-type="disclaimer" id="s15">
<title>Publisher&#x2019;s Note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<sec id="s12">
<title>Supplementary Material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xlink:href="https://www.frontiersin.org/articles/10.3389/frobt.2021.679304/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/frobt.2021.679304/full&#x23;supplementary-material</ext-link>
</p>
<supplementary-material xlink:href="Image5.jpg" id="SM1" mimetype="application/jpg" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Image3.jpg" id="SM2" mimetype="application/jpg" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Image2.jpg" id="SM3" mimetype="application/jpg" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Image7.jpg" id="SM4" mimetype="application/jpg" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Image8.png" id="SM5" mimetype="application/png" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Image4.jpg" id="SM6" mimetype="application/jpg" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Image6.png" id="SM7" mimetype="application/png" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Video1.MP4" id="SM8" mimetype="application/MP4" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Image9.jpg" id="SM9" mimetype="application/jpg" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Image1.jpg" id="SM10" mimetype="application/jpg" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Al-Odienat</surname>
<given-names>A. I.</given-names>
</name>
<name>
<surname>Al-Lawama</surname>
<given-names>A. A.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>The Advantages of Pid fuzzy controllers over the conventional types</article-title>. <source>Am. J.&#x20;Appl. Sci.</source> <volume>5</volume>, <fpage>653</fpage>&#x2013;<lpage>658</lpage>. <pub-id pub-id-type="doi">10.3844/ajassp.2008.653.658</pub-id> </citation>
</ref>
<ref id="B2">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>&#xc5;str&#xf6;m</surname>
<given-names>K. J.</given-names>
</name>
<name>
<surname>Wittenmark</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2013</year>). <source>Adaptive Control</source>. <publisher-loc>North Chelmsford, Massachusetts</publisher-loc>: <publisher-name>Courier Corporation</publisher-name>.</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Brito</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Queiroz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Piardi</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Fernandes</surname>
<given-names>L. A.</given-names>
</name>
<name>
<surname>Lima</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Leit&#xe3;o</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>A machine learning Approach for collaborative robot smart manufacturing inspection for quality control systems</article-title>. <source>Proced. Manufacturing</source> <volume>51</volume>, <fpage>11</fpage>&#x2013;<lpage>18</lpage>. <pub-id pub-id-type="doi">10.1016/j.promfg.2020.10.003</pub-id> </citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Carpino</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Accoto</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Sergi</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Luigi Tagliamonte</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Guglielmelli</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>A novel compact torsional spring for series elastic Actuators for Assistive wearable robots</article-title>. <source>J.&#x20;Mech. Des.</source> <volume>134</volume> (<issue>121002</issue>), <fpage>1</fpage>&#x2013;<lpage>10</lpage>. <pub-id pub-id-type="doi">10.1115/1.4007695</pub-id> </citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>De Luca</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Siciliano</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Zollo</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2005</year>). <article-title>PD control with on-line gravity compensation for robots with elastic joints: theory and experiments</article-title>. <source>Automatica</source> <volume>41</volume>, <fpage>1809</fpage>&#x2013;<lpage>1819</lpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2005.05.009</pub-id> </citation>
</ref>
<ref id="B6">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>devices</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2020</year>). <source>28 Mm, 12 Bit, Single-Turn, Absolute, Spi Interface, Capacitive Modular Encoder</source> (<publisher-loc>Lake Oswego</publisher-loc>: <publisher-name>CUI devices</publisher-name>).</citation>
</ref>
<ref id="B7">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Donadio</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Frejaville</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Larnier</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Vetault</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Artificial intelligence and collaborative robot to improve Airport operations</article-title>,&#x201d; in <source>Online Engineering &#x26; Internet of Things (Springer)</source> (<publisher-name>Springer, Cham</publisher-name>). <pub-id pub-id-type="doi">10.1007/978-3-319-64352-6_91</pub-id>
<fpage>973</fpage>&#x2013;<lpage>986</lpage>. </citation>
</ref>
<ref id="B8">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Govindarajan</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Bhattacharya</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Kumar</surname>
<given-names>V.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Human-robot collaborative topological exploration for search and rescue Applications</article-title>,&#x201d; in <source>Distributed Autonomous Robotic Systems</source> (<publisher-loc>Berlin, Germany</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>17</fpage>&#x2013;<lpage>32</lpage>. <pub-id pub-id-type="doi">10.1007/978-4-431-55879-8_2</pub-id> </citation>
</ref>
<ref id="B9">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Hua</surname>
<given-names>T. M.</given-names>
</name>
<name>
<surname>Sanfilippo</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Helgerud</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>A robust two-feedback loops Position control Algorithm for compliant low-cost series elastic Actuators</article-title>,&#x201d; in <source>2019 IEEE International Conference on Systems, Man and Cybernetics (SMC)</source> (<publisher-loc>New Jersey, United&#x20;States</publisher-loc>: <publisher-name>IEEE</publisher-name>). <comment>2384&#x2013;2390</comment>. <pub-id pub-id-type="doi">10.1109/smc.2019.8913845</pub-id> </citation>
</ref>
<ref id="B10">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Human</surname>
<given-names>F. I.</given-names>
</name>
<name>
<surname>Cognition</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). <source>The institute for Human &#x26; Machine Cognition (Ihmc) Pioneers Technologies Aimed at Leveraging and Extending Human Capabilities</source> (<publisher-loc>Ocala</publisher-loc>: <publisher-name>IHMC</publisher-name>).</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kaya</surname>
<given-names>K. D.</given-names>
</name>
<name>
<surname>&#xc7;etin</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Adaptive state feedback controller design for a rotary series elastic Actuator</article-title>. <source>Trans. Inst. Meas. Control.</source> <volume>39</volume>, <fpage>61</fpage>&#x2013;<lpage>74</lpage>. <pub-id pub-id-type="doi">10.1177/0142331215600779</pub-id> </citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kim</surname>
<given-names>M. J.</given-names>
</name>
<name>
<surname>Chung</surname>
<given-names>W. K.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Disturbance-observer-based Pd control of flexible joint robots for Asymptotic convergence</article-title>. <source>IEEE Trans. Robot.</source> <volume>31</volume>, <fpage>1508</fpage>&#x2013;<lpage>1516</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2015.2477957</pub-id> </citation>
</ref>
<ref id="B13">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Koenig</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Howard</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2004</year>). &#x201c;<article-title>
<italic>Design And use Paradigms for gazebo, an open-source multi-robot simulator</italic>
</article-title>,&#x201d; in <conf-name>Proc. of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</conf-name>, <conf-loc>Sendai, Japan</conf-loc> <comment>(IEEE).</comment> vol. <volume>3</volume>, <fpage>2149</fpage>&#x2013;<lpage>2154</lpage>. </citation>
</ref>
<ref id="B14">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lagoda</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Schouten</surname>
<given-names>A. C.</given-names>
</name>
<name>
<surname>Stienen</surname>
<given-names>A. H.</given-names>
</name>
<name>
<surname>Hekman</surname>
<given-names>E. E.</given-names>
</name>
<name>
<surname>van der Kooij</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Design of an electric series elastic Actuated joint for robotic gait rehabilitation training</article-title>. In <conf-name>2010 3rd IEEE RAS &#x26; EMBS International Conference on Biomedical Robotics and Biomechatronics</conf-name>. <publisher-loc>New Jersey, United&#x20;States</publisher-loc>: <publisher-name>IEEE</publisher-name>. <fpage>21</fpage>&#x2013;<lpage>26</lpage>. <pub-id pub-id-type="doi">10.1109/biorob.2010.5626010</pub-id> </citation>
</ref>
<ref id="B15">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lee</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Oh</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Configuration and Performance Analysis of a compact Planetary geared elastic Actuator</article-title>. In <conf-name>IECON 2016-42nd Annual Conference of the IEEE Industrial Electronics Society</conf-name>. (<publisher-loc>New Jersey, United&#x20;States</publisher-loc>: <publisher-name>IEEE</publisher-name>). <fpage>6391</fpage>&#x2013;<lpage>6396</lpage>. <pub-id pub-id-type="doi">10.1109/iecon.2016.7793816</pub-id> </citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Han</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Xiong</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Collision detection of robots based on a force/torque sensor at the bedplate</article-title>. <source>IEEE/ASME Trans. Mechatronics</source> <volume>25</volume>, <fpage>2565</fpage>&#x2013;<lpage>2573</lpage>. <pub-id pub-id-type="doi">10.1109/tmech.2020.2995904</pub-id> </citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Losey</surname>
<given-names>D. P.</given-names>
</name>
<name>
<surname>Erwin</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>McDonald</surname>
<given-names>C. G.</given-names>
</name>
<name>
<surname>Sergi</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>O&#x27;Malley</surname>
<given-names>M. K.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>A time-domain Approach to control of series elastic Actuators: Adaptive torque and Passivity-based impedance control</article-title>. <source>Ieee/asme Trans. Mechatron.</source> <volume>21</volume>, <fpage>2085</fpage>&#x2013;<lpage>2096</lpage>. <pub-id pub-id-type="doi">10.1109/tmech.2016.2557727</pub-id> </citation>
</ref>
<ref id="B18">
<citation citation-type="book">
<collab>MATLAB</collab> (<year>2018</year>). <source>9.5.0.944444 (R2018b)</source>. <publisher-loc>Natick, Massachusetts</publisher-loc>: <publisher-name>The MathWorks Inc.</publisher-name>).</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mokaram</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Aitken</surname>
<given-names>J.&#x20;M.</given-names>
</name>
<name>
<surname>Martinez-Hernandez</surname>
<given-names>U.</given-names>
</name>
<name>
<surname>Eimontaite</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Cameron</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Rolph</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2017</year>). <article-title>A ROS-integrated API for the KUKA LBR iiwa collaborative robot &#x2a; &#x2a;The Authors Acknowledge support from the EPSRC Centre for Innovative Manufacturing in Intelligent Automation, in undertaking this research work under grant reference number EP/I033467/1, and the University of Sheffield Impact, Innovation and Knowledge Exchange grant "Human Robot Interaction Development". Equipment has been provided under the EPSRC Great Technologies Capital Call: Robotics and Autonomous Systems</article-title>. <source>IFAC-PapersOnLine</source> <volume>50</volume>, <fpage>15859</fpage>&#x2013;<lpage>15864</lpage>. <pub-id pub-id-type="doi">10.1016/j.ifacol.2017.08.2331</pub-id> </citation>
</ref>
<ref id="B20">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Negrello</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Garabini</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Catalano</surname>
<given-names>M. G.</given-names>
</name>
<name>
<surname>Malzahn</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Caldwell</surname>
<given-names>D. G.</given-names>
</name>
<name>
<surname>Bicchi</surname>
<given-names>A.</given-names>
</name>
<etal/>
</person-group> (<year>2015</year>). <article-title>A modular compliant Actuator for emerging high Performance and fall-resilient humanoids</article-title>. In <conf-name>2015 IEEE-RAS 15th International Conference on Humanoid Robots (Humanoids)</conf-name>. <publisher-loc>New Jersey, United&#x20;States</publisher-loc>: <publisher-name>IEEE</publisher-name>). <fpage>414</fpage>&#x2013;<lpage>420</lpage>. <pub-id pub-id-type="doi">10.1109/humanoids.2015.7363567</pub-id> </citation>
</ref>
<ref id="B21">
<citation citation-type="book">
<collab>nhatbon</collab> (<year>2020</year>). <source>Dc H216 15a H Bridge</source>.</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Paine</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Mehling</surname>
<given-names>J.&#x20;S.</given-names>
</name>
<name>
<surname>Holley</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Radford</surname>
<given-names>N. A.</given-names>
</name>
<name>
<surname>Johnson</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Fok</surname>
<given-names>C.-L.</given-names>
</name>
<etal/>
</person-group> (<year>2015</year>). <article-title>Actuator control for the nasa-jsc valkyrie humanoid robot: A decoupled dynamics Approach for torque control of series elastic robots</article-title>. <source>J.&#x20;Field Robotics</source> <volume>32</volume>, <fpage>378</fpage>&#x2013;<lpage>396</lpage>. <pub-id pub-id-type="doi">10.1002/rob.21556</pub-id> </citation>
</ref>
<ref id="B23">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Penzlin</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Enes Fincan</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ji</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Leonhardt</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Ngo</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Design and Analysis of a clutched Parallel elastic Actuator</article-title>,&#x201d; in <source>Actuators</source> (<publisher-loc>Basel, Switzerland</publisher-loc>, <publisher-name>Multidisciplinary Digital Publishing Institute</publisher-name>), vol. <volume>8</volume>, <fpage>67</fpage>. <pub-id pub-id-type="doi">10.3390/act8030067</pub-id> </citation>
</ref>
<ref id="B24">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>P&#xe9;rez-Ibarra</surname>
<given-names>J.&#x20;C.</given-names>
</name>
<name>
<surname>Alarc&#xf3;n</surname>
<given-names>A. L. J.</given-names>
</name>
<name>
<surname>Jaimes</surname>
<given-names>J.&#x20;C.</given-names>
</name>
<name>
<surname>Ortega</surname>
<given-names>F. M. E.</given-names>
</name>
<name>
<surname>Terra</surname>
<given-names>M. H.</given-names>
</name>
<name>
<surname>Siqueira</surname>
<given-names>A. A.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Design and Analysis of force control of a series elastic Actuator for impedance control of an Ankle rehabilitation robotic Platform</article-title>. In <conf-name>2017 American Control Conference (ACC)</conf-name>. (<publisher-loc>New Jersey, United&#x20;States</publisher-loc>: <publisher-name>IEEE</publisher-name>). <fpage>2423</fpage>&#x2013;<lpage>2428</lpage>. </citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Peshkin</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Colgate</surname>
<given-names>J.&#x20;E.</given-names>
</name>
<name>
<surname>Wannasuphoprasit</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Moore</surname>
<given-names>C. A.</given-names>
</name>
<name>
<surname>Gillespie</surname>
<given-names>R. B.</given-names>
</name>
<name>
<surname>Akella</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2001</year>). <article-title>Cobot Architecture</article-title>. <source>IEEE Trans. Robot. Automat.</source> <volume>17</volume>, <fpage>377</fpage>&#x2013;<lpage>390</lpage>. <pub-id pub-id-type="doi">10.1109/70.954751</pub-id> </citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Plooij</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Wisse</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Vallery</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Reducing the energy consumption of robots using the bidirectional clutched Parallel elastic Actuator</article-title>. <source>IEEE Trans. Robot.</source> <volume>32</volume>, <fpage>1512</fpage>&#x2013;<lpage>1523</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2016.2604496</pub-id> </citation>
</ref>
<ref id="B27">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Pratt</surname>
<given-names>G. A.</given-names>
</name>
<name>
<surname>Williamson</surname>
<given-names>M. M.</given-names>
</name>
<name>
<surname>Dillworth</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Pratt</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wright</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>1997</year>). &#x201c;<article-title>Stiffness isn&#x2019;t everything</article-title>,&#x201d; in <source>Experimental Robotics IV</source> (<publisher-loc>Berlin, Germany</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>253</fpage>&#x2013;<lpage>262</lpage>. </citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pratt</surname>
<given-names>G. A.</given-names>
</name>
<name>
<surname>Williamson</surname>
<given-names>M. M.</given-names>
</name>
</person-group> (<year>1995</year>). <article-title>Series elastic Actuators</article-title>. In <conf-name>Proc. of the IEEE/RSJ International Conference on Intelligent Robots and Systems</conf-name>, <conf-loc>Pittsburgh, PA</conf-loc> <comment>(IEEE)</comment>. vol. <volume>1</volume>, <fpage>399</fpage>&#x2013;<lpage>406</lpage>. </citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pratt</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Krupp</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Morse</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2002</year>). <article-title>Series elastic Actuators for high fidelity force control</article-title>. <source>Ind. Robot: Int. J</source> <volume>29</volume> (<issue>3</issue>), <fpage>234</fpage>&#x2013;<lpage>241</lpage>. <pub-id pub-id-type="doi">10.1108/01439910210425522</pub-id> </citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Quigley</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Conley</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Gerkey</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Faust</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Foote</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Leibs</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2009</year>). &#x201c;<article-title>ROS: an open-source robot operating system</article-title>,&#x201d; in <conf-name>Proc. of the IEEE International Conference on Robotics and Automation (ICRA), workshop on open source software</conf-name>, <conf-loc>Kobe, Japan</conf-loc> <comment>(IEEE).</comment> vol. <volume>3</volume>, <fpage>5</fpage>. </citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Radford</surname>
<given-names>N. A.</given-names>
</name>
<name>
<surname>Strawser</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Hambuchen</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Mehling</surname>
<given-names>J.&#x20;S.</given-names>
</name>
<name>
<surname>Verdeyen</surname>
<given-names>W. K.</given-names>
</name>
<name>
<surname>Donnan</surname>
<given-names>A. S.</given-names>
</name>
<etal/>
</person-group> (<year>2015</year>). <article-title>Valkyrie: NASA&#x27;s First Bipedal Humanoid Robot</article-title>. <source>J.&#x20;Field Robotics</source> <volume>32</volume>, <fpage>397</fpage>&#x2013;<lpage>419</lpage>. <pub-id pub-id-type="doi">10.1002/rob.21560</pub-id> </citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rao</surname>
<given-names>K. G.</given-names>
</name>
<name>
<surname>Reddy</surname>
<given-names>B. A.</given-names>
</name>
<name>
<surname>Bhavani</surname>
<given-names>P. D.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Fuzzy Pi and integrating type fuzzy Pid controllers of linear, nonlinear and time-delay systems</article-title>. <source>Int. J.&#x20;Comp. Appl.</source> <volume>1</volume>, <fpage>41</fpage>&#x2013;<lpage>47</lpage>. <pub-id pub-id-type="doi">10.5120/144-264</pub-id> </citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sanfilippo</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Azpiazu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Marafioti</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Transeth</surname>
<given-names>A. A.</given-names>
</name>
<name>
<surname>Stavdahl</surname>
<given-names>&#xd8;.</given-names>
</name>
<name>
<surname>Liljeb&#xe4;ck</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>A review on Perception-driven obstacle-Aided locomotion for snake robots</article-title>. In <conf-name>Proc. of the 14th International Conference on Control, Automation, Robotics and Vision (ICARCV)</conf-name>, <conf-loc>Phuket, Thailand</conf-loc>. <fpage>1</fpage>&#x2013;<lpage>7</lpage>. <pub-id pub-id-type="doi">10.1109/icarcv.2016.7838565</pub-id> </citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sanfilippo</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Azpiazu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Marafioti</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Transeth</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Stavdahl</surname>
<given-names>&#xd8;.</given-names>
</name>
<name>
<surname>Liljeb&#xe4;ck</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Perception-Driven Obstacle-Aided Locomotion for Snake Robots: The State of the Art, Challenges and Possibilities &#x2020;</article-title>. <source>Appl. Sci.</source> <volume>7</volume>, <fpage>336</fpage>. <pub-id pub-id-type="doi">10.3390/app7040336</pub-id> </citation>
</ref>
<ref id="B35">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Sanfilippo</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Helgerud</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Stadheim</surname>
<given-names>P. A.</given-names>
</name>
<name>
<surname>Aronsen</surname>
<given-names>S. L.</given-names>
</name>
</person-group> (<year>2019b</year>). <article-title>Serpens, a low-cost snake robot with series elastic torque-controlled Actuators and a screw-less Assembly mechanism</article-title>. In <conf-name>Proc. of the IEEE 5th International Conference on Control</conf-name>. <publisher-loc>Beijing, China</publisher-loc>: <publisher-name>Automation and Robotics (ICCAR)</publisher-name>. <fpage>133</fpage>&#x2013;<lpage>139</lpage>. <pub-id pub-id-type="doi">10.1109/iccar.2019.8813482</pub-id> </citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sanfilippo</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Helgerud</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Stadheim</surname>
<given-names>P. A.</given-names>
</name>
<name>
<surname>Aronsen</surname>
<given-names>S. L.</given-names>
</name>
</person-group> (<year>2019a</year>). <article-title>Serpens: a highly compliant low-cost ROS-based snake robot with series elastic Actuators, stereoscopic vision and a screw-less Assembly mechanism</article-title>. <source>Appl. Sci.</source> <volume>9</volume>. <comment>Art. no. 396</comment>. <pub-id pub-id-type="doi">10.3390/app9030396</pub-id> </citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sanfilippo</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Stavdahl</surname>
<given-names>&#xd8;.</given-names>
</name>
<name>
<surname>Liljeb&#xe4;ck</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>SnakeSIM: a ROS-based control and simulation framework for Perception-driven obstacle-Aided locomotion of snake robots</article-title>. <source>Artif. Life Robotics</source> <volume>23</volume>, <fpage>449</fpage>&#x2013;<lpage>458</lpage>. <pub-id pub-id-type="doi">10.1007/s10015-018-0458-6</pub-id> </citation>
</ref>
<ref id="B38">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Sergi</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Accoto</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Carpino</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Tagliamonte</surname>
<given-names>N. L.</given-names>
</name>
<name>
<surname>Guglielmelli</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Design and characterization of a compact rotary series elastic Actuator for knee Assistance during overground walking</article-title>. In <conf-name>2012 4th IEEE RAS &#x26; EMBS International Conference on Biomedical Robotics and Biomechatronics (BioRob)</conf-name>. <publisher-loc>New Jersey, United&#x20;States</publisher-loc>: <publisher-name>IEEE</publisher-name>. <fpage>1931</fpage>&#x2013;<lpage>1936</lpage>. <pub-id pub-id-type="doi">10.1109/biorob.2012.6290271</pub-id> </citation>
</ref>
<ref id="B39">
<citation citation-type="other">
<collab>Stmicroelectronics</collab> (<year>2020</year>). <comment>Nucleo-f446re development board with stm32f446re mcu</comment>
</citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Talole</surname>
<given-names>S. E.</given-names>
</name>
<name>
<surname>Kolhe</surname>
<given-names>J.&#x20;P.</given-names>
</name>
<name>
<surname>Phadke</surname>
<given-names>S. B.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Extended-state-observer-based control of flexible-joint system with experimental validation</article-title>. <source>IEEE Trans. Ind. Electron.</source> <volume>57</volume>, <fpage>1411</fpage>&#x2013;<lpage>1419</lpage>. <pub-id pub-id-type="doi">10.1109/tie.2009.2029528</pub-id> </citation>
</ref>
<ref id="B41">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Tsardoulias</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Mitkas</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2017</year>). <source>Robotic Frameworks, Architectures and Middleware Comparison</source>. <comment>
<italic>arXiv preprint arXiv:1711.06842</italic>
</comment> (<publisher-name>arXiv</publisher-name>).</citation>
</ref>
<ref id="B42">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Vanderborght</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Albu-Schaeffer</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Bicchi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Burdet</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Caldwell</surname>
<given-names>D. G.</given-names>
</name>
<name>
<surname>Carloni</surname>
<given-names>R.</given-names>
</name>
<etal/>
</person-group> (<year>2013</year>). <article-title>Variable impedance Actuators: A review</article-title>. <source>Robotics autonomous Syst.</source> <volume>61</volume>, <fpage>1601</fpage>&#x2013;<lpage>1614</lpage>. <pub-id pub-id-type="doi">10.1016/j.robot.2013.06.009</pub-id> </citation>
</ref>
<ref id="B43">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yin</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Dong</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>A novel sliding mode control for series elastic Actuator torque tracking with an extended disturbance observer</article-title>. In <conf-name>2015 IEEE International Conference on Robotics and Biomimetics (ROBIO)</conf-name>. (<publisher-loc>New Jersey, United&#x20;States</publisher-loc>: <publisher-name>IEEE</publisher-name>. <fpage>2407</fpage>&#x2013;<lpage>2412</lpage>. <pub-id pub-id-type="doi">10.1109/robio.2015.7419699</pub-id> </citation>
</ref>
<ref id="B44">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wang</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yin</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Dong</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Continuous robust control for series elastic Actuator with unknown Payload Parameters and external disturbances</article-title>. <source>Ieee/caa J.&#x20;Autom. Sinica</source> <volume>4</volume>, <fpage>620</fpage>&#x2013;<lpage>627</lpage>. <pub-id pub-id-type="doi">10.1109/jas.2017.7510610</pub-id> </citation>
</ref>
<ref id="B45">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Wannasuphoprasit</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Gillespie</surname>
<given-names>R. B.</given-names>
</name>
<name>
<surname>Colgate</surname>
<given-names>J.&#x20;E.</given-names>
</name>
<name>
<surname>Peshkin</surname>
<given-names>M. A.</given-names>
</name>
</person-group> (<year>1997</year>). <article-title>Cobot control</article-title>. In <conf-name>Proceedings of International Conference on Robotics and Automation</conf-name>), <volume>4</volume>. <publisher-loc>New Jersey, United&#x20;States</publisher-loc>: <publisher-name>IEEE</publisher-name>, <fpage>3571</fpage>&#x2013;<lpage>3576</lpage>. </citation>
</ref>
<ref id="B46">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xiao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Hong</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Zeng</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Collision detection Algorithm for collaborative robots considering joint friction</article-title>. <source>Int. J.&#x20;Adv. Robotic. Syst.</source> <volume>15</volume>, <fpage>1729881418788992</fpage>. <pub-id pub-id-type="doi">10.1177/1729881418788992</pub-id> </citation>
</ref>
<ref id="B47">
<citation citation-type="book">
<collab>XYTmotor</collab> (<year>2020</year>). <source>12v Dc Motor Servo Encoder</source> (<publisher-loc>Guangdong</publisher-loc>: <publisher-name>XYTmotor</publisher-name>).</citation>
</ref>
<ref id="B48">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yin</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Sun</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Position control of series elastic&#x20;Actuator based on feedback linearization and rise method</article-title>. In <conf-name>Proc. of the IEEE International Conference on Robotics and Biomimetics (ROBIO)</conf-name>, <conf-loc>Qingdao, China</conf-loc> <comment>(IEEE).</comment> <fpage>1203</fpage>&#x2013;<lpage>1208</lpage>. </citation>
</ref>
<ref id="B49">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Cruz</surname>
<given-names>M. S.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zhu</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Chew</surname>
<given-names>E.</given-names>
</name>
<etal/>
</person-group> (<year>2013a</year>). <article-title>Mechanical design of a Portable knee-Ankle-foot robot</article-title>. In <conf-name>Proc. of the IEEE International Conference on Robotics and Automation (ICRA)</conf-name>, <conf-loc>Karlsruhe, Germany</conf-loc> <comment>(IEEE).</comment> <fpage>2183</fpage>&#x2013;<lpage>2188</lpage>. <pub-id pub-id-type="doi">10.1109/icra.2013.6630870</pub-id> </citation>
</ref>
<ref id="B50">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Pan</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Human-Robot Interaction Control of Rehabilitation Robots With Series Elastic Actuators</article-title>. <source>IEEE Trans. Robot.</source> <volume>31</volume>, <fpage>1089</fpage>&#x2013;<lpage>1100</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2015.2457314</pub-id> </citation>
</ref>
<ref id="B51">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Thakor</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2013b</year>). <article-title>Control design of a novel compliant Actuator for rehabilitation robots</article-title>. <source>Mechatronics</source> <volume>23</volume>, <fpage>1072</fpage>&#x2013;<lpage>1083</lpage>. <pub-id pub-id-type="doi">10.1016/j.mechatronics.2013.08.004</pub-id> </citation>
</ref>
<ref id="B52">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Thakor</surname>
<given-names>N. V.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Toh</surname>
<given-names>S.-L.</given-names>
</name>
<name>
<surname>Cruz</surname>
<given-names>M. S.</given-names>
</name>
<etal/>
</person-group> (<year>2013c</year>). <article-title>A novel compact compliant Actuator design for rehabilitation robots</article-title>. In <conf-name>Proc. of the IEEE 13th International Conference on Rehabilitation Robotics (ICORR)</conf-name>, <conf-loc>Seattle, WA</conf-loc> <comment>(IEEE).</comment> <fpage>1</fpage>&#x2013;<lpage>6</lpage>. <pub-id pub-id-type="doi">10.1109/icorr.2013.6650478</pub-id> </citation>
</ref>
<ref id="B53">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zollo</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Siciliano</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>De Luca</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Guglielmelli</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2007</year>). <article-title>PD control with on-line gravity compensation for robots with flexible links</article-title>. In <conf-name>Proc. of the IEEE European Control Conference (ECC)</conf-name>, <conf-loc>Kos, Greece</conf-loc> <comment>(IEEE)</comment>. <fpage>4365</fpage>&#x2013;<lpage>4370</lpage>. <pub-id pub-id-type="doi">10.23919/ecc.2007.7068344</pub-id> </citation>
</ref>
</ref-list>
</back>
</article>