<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neurol.</journal-id>
<journal-title>Frontiers in Neurology</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neurol.</abbrev-journal-title>
<issn pub-type="epub">1664-2295</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fneur.2017.00646</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Sliding Mode Tracking Control of a Wire-Driven Upper-Limb Rehabilitation Robot with Nonlinear Disturbance Observer</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Niu</surname> <given-names>Jie</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="author-notes" rid="fn001"><sup>&#x02020;</sup></xref>
<uri xlink:href="http://frontiersin.org/people/u/444848"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Yang</surname> <given-names>Qianqian</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="author-notes" rid="fn001"><sup>&#x02020;</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Wang</surname> <given-names>Xiaoyun</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Song</surname> <given-names>Rong</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="cor1">&#x0002A;</xref>
<uri xlink:href="http://frontiersin.org/people/u/359091"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Guangdong Provincial Engineering and Technology Center of Advanced and Portable Medical Devices, School of Engineering, Sun Yat-sen University</institution>, <addr-line>Guangzhou</addr-line>, <country>China</country></aff>
<aff id="aff2"><sup>2</sup><institution>Injury Rehabilitation Hospital of Guangdong Province</institution>, <addr-line>Guangzhou</addr-line>, <country>China</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Guanglin Li, Shenzhen Institutes of Advanced Technology (CAS), China</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Xu Zhang, University of Science and Technology of China, China; Ru-Lan Hsieh, Shin Kong WHS Memorial Hospital, Taiwan</p></fn>
<corresp content-type="corresp" id="cor1">&#x0002A;Correspondence: Rong Song, <email>songrong&#x00040;mail.sysu.edu.cn</email></corresp>
<fn fn-type="other" id="fn001"><p><sup>&#x02020;</sup>Co-first authors.</p></fn>
<fn fn-type="other" id="fn002"><p>Specialty section: This article was submitted to Stroke, a section of the journal Frontiers in Neurology</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>04</day>
<month>12</month>
<year>2017</year>
</pub-date>
<pub-date pub-type="collection">
<year>2017</year>
</pub-date>
<volume>8</volume>
<elocation-id>646</elocation-id>
<history>
<date date-type="received">
<day>11</day>
<month>07</month>
<year>2017</year>
</date>
<date date-type="accepted">
<day>16</day>
<month>11</month>
<year>2017</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2017 Niu, Yang, Wang and Song.</copyright-statement>
<copyright-year>2017</copyright-year>
<copyright-holder>Niu, Yang, Wang and Song</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>Robot-aided rehabilitation has become an important technology to restore and reinforce motor functions of patients with extremity impairment, whereas it can be extremely challenging to achieve satisfactory tracking performance due to uncertainties and disturbances during rehabilitation training. In this paper, a wire-driven rehabilitation robot that can work over a three-dimensional space is designed for upper-limb rehabilitation, and sliding mode control with nonlinear disturbance observer is designed for the robot to deal with the problem of unpredictable disturbances during robot-assisted training. Then, simulation and experiments of trajectory tracking are carried out to evaluate the performance of the system, the position errors, and the output forces of the designed control scheme are compared with those of the traditional sliding mode control (SMC) scheme. The results show that the designed control scheme can effectively reduce the tracking errors and chattering of the output forces as compared with the traditional SMC scheme, which indicates that the nonlinear disturbance observer can reduce the effect of unpredictable disturbances. The designed control scheme for the wire-driven rehabilitation robot has potential to assist patients with stroke in performing repetitive rehabilitation training.</p>
</abstract>
<kwd-group>
<kwd>rehabilitation robot</kwd>
<kwd>wire-driven</kwd>
<kwd>upper limb</kwd>
<kwd>tracking control</kwd>
<kwd>sliding mode</kwd>
<kwd>nonlinear disturbance observer</kwd>
</kwd-group>
<counts>
<fig-count count="8"/>
<table-count count="2"/>
<equation-count count="27"/>
<ref-count count="34"/>
<page-count count="10"/>
<word-count count="6740"/>
</counts>
</article-meta>
</front>
<body>
<sec id="S1" sec-type="introduction">
<title>Introduction</title>
<p>Stroke, an acute cerebrovascular disease typically caused by hemorrhage or blockage in brain blood vessels, is a major cause of motor dysfunction or even permanent disability (<xref ref-type="bibr" rid="B1">1</xref>). Repetitive training and task-oriented exercises of the paretic extremity are significantly beneficial to the recovery of extremity functions (<xref ref-type="bibr" rid="B2">2</xref>&#x02013;<xref ref-type="bibr" rid="B4">4</xref>). However, traditional therapy for the rehabilitation relies heavily on the experience and manual manipulation of physical therapists, which is time-consuming, labor-intensive, and costly. Robot-aided rehabilitation has many advantages such as high efficiency, high precision, and controllability (<xref ref-type="bibr" rid="B5">5</xref>&#x02013;<xref ref-type="bibr" rid="B7">7</xref>), which can allow more intensive training (<xref ref-type="bibr" rid="B8">8</xref>, <xref ref-type="bibr" rid="B9">9</xref>) and reduce the workload of physical therapists.</p>
<p>Mechanical structure is one of the most important factors that can affect the effectiveness of the robot-assisted rehabilitation. In the past two decades, many robotic systems have been designed and applied in rehabilitation training. Conventional rehabilitation robots usually consist of several rigid links. MIT-MANUS has two degrees-of-freedom (DOF) and can guide the upper-limb over a horizontal plane (<xref ref-type="bibr" rid="B5">5</xref>). Mirror-image movement enabler is an upper-limb rehabilitation robot that can ensure the hemiparetic arm move to the mirror-image position of the opposite arm in a three-dimensional space (<xref ref-type="bibr" rid="B8">8</xref>). Fazekas et al. have designed a robotic system based on two industrial robots for upper-limb rehabilitation to assist three-dimensional movements (<xref ref-type="bibr" rid="B10">10</xref>). Though these rehabilitation robots can be used for rehabilitation training, they have many limitations like poor workspace, lack of compliance, and relatively high construction costs. Wire-driven rehabilitation robots not only remedy these shortcomings but have simple structures and are easy to assemble/disassemble. Moreover, since the wire-driven rehabilitation robots have lower moving inertia compared to rehabilitation robots that consist of rigid links, the user can feel less constraint and more comfort when participating in robot-assisted rehabilitation training. In the past few years, some wire-driven robots have been designed for rehabilitation. Jones et al. have designed a wire-actuated rehabilitation robot, which is a three DOF robotic exoskeleton for hand rehabilitation (<xref ref-type="bibr" rid="B11">11</xref>). Sophia-3, an end-effector based wire-driven rehabilitation robot, has been designed to assist planar movements (<xref ref-type="bibr" rid="B12">12</xref>). Gaponov et al. have designed a portable cable-driven rehabilitation robot, which provides assistance for shoulder, abduction, and elbow flexion (<xref ref-type="bibr" rid="B13">13</xref>).</p>
<p>Control scheme is another important factor affects the effectiveness of robot-assisted rehabilitation. When delivering task-oriented rehabilitation training, the control scheme is required to assist the robot in guiding the paretic limb to finish predefined movements or trajectory accurately and compliantly. Linear control techniques such as PID (<xref ref-type="bibr" rid="B14">14</xref>, <xref ref-type="bibr" rid="B15">15</xref>) and PD (<xref ref-type="bibr" rid="B15">15</xref>, <xref ref-type="bibr" rid="B16">16</xref>) controllers have been designed for rehabilitation robot, but they have degraded performance if nonlinear uncertainties of the system are considered (<xref ref-type="bibr" rid="B17">17</xref>). Simple nonlinear control techniques such as robust torque control scheme (<xref ref-type="bibr" rid="B14">14</xref>, <xref ref-type="bibr" rid="B15">15</xref>) and impedance control scheme (<xref ref-type="bibr" rid="B15">15</xref>, <xref ref-type="bibr" rid="B18">18</xref>) cannot meet the requirement under uncertain dynamics. Many other control schemes have been presented such as fuzzy adaption (<xref ref-type="bibr" rid="B19">19</xref>) and adaptive control schemes (<xref ref-type="bibr" rid="B17">17</xref>, <xref ref-type="bibr" rid="B18">18</xref>), whereas these control schemes perform well for industrial robots but not for rehabilitation robots due to uncertainties and disturbances in rehabilitation training (<xref ref-type="bibr" rid="B20">20</xref>). Sliding mode control (SMC) is a variable structure control method, which has inherent insensitivity and robustness against uncertainties and disturbances. Therefore, it can be relatively suitable for the control of human&#x02013;robot interaction systems. However, to achieve satisfactory tracking performance, traditional SMC needs high-control authority to eliminate model uncertainties and external disturbances, which in turn is the main cause of chattering (<xref ref-type="bibr" rid="B21">21</xref>). Chattering is undesirable since it may degrade tracking performance and even cause damage to actuators (<xref ref-type="bibr" rid="B22">22</xref>). A relatively easy and effective approach to address this problem is to employ a nonlinear disturbance observer in the control loop to estimate all the lumped uncertainties and disturbances. By this means, the tracking precision can be improved since uncertainties and disturbances can be estimated and compensated for, while the chattering phenomenon can be reduced since the control scheme may not need high-control authority to resist disturbances. Though nonlinear disturbance observer has been investigated in various fields (<xref ref-type="bibr" rid="B23">23</xref>, <xref ref-type="bibr" rid="B24">24</xref>), to the largest of our knowledge, it is rarely utilized in a wire-driven rehabilitation robot.</p>
<p>In this paper, a wire-driven rehabilitation robot is designed to deliver task-oriented training exercises for upper-limb, which can work over a three-dimensional space. First, sliding mode control with nonlinear disturbance observer (SMCNDO) is designed for the wire-driven rehabilitation robot against unpredictable disturbances. Then, simulation of tracking a predefined trajectory is conducted to investigate the performance of the designed control scheme. Moreover, a square-shaped and a circle-shaped trajectory are designed, and the forearm of the subject is controlled by the robot to follow the predefined trajectories. Both simulation and experimental results of the designed SMCNDO are compared with that of a traditional SMC.</p>
</sec>
<sec id="S2" sec-type="materials|methods">
<title>Materials and Methods</title>
<sec id="S2-1">
<title>System Description</title>
<p>Mechanical architecture of the designed wire-driven rehabilitation robot is shown in Figure <xref ref-type="fig" rid="F1">1</xref>A, which consists of three actuated wire-driven limbs to perform translational movement in a three-dimensional space. The main software program provides control scheme, reference trajectory, and data storage procedures, which is written in VC&#x0002B;&#x0002B;. In addition, a personal computer is used to perform real-time processing and real-time communication with I/Os and serves as a user interface that can be used to manage the system. Motion capture system is implemented to ensure relatively accurate measurement. From Figure <xref ref-type="fig" rid="F1">1</xref>A, four cameras are attached on the top of the base frame, and a spherical marker is placed on the top of the end-effector. The position of the marker can be directly obtained by motion capture system, which is used to represent the position of the end-effector and as the feedback in the control loop. Safety is an important factor that needs to be considered. To ensure security and prevent accidents during rehabilitation training, emergency stop switches are designed both in software and hardware. When a patient feels uncomfortable or any accident happens, the power supply for the system can be immediately interrupted by pressing software or hardware emergency stop switch. Moreover, the output force of each actuator is strictly limited when designing software program.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>A wire-driven rehabilitation robot. <bold>(A)</bold> Mechanical architecture of the wire-driven rehabilitation robot and <bold>(B)</bold> geometry of the wire-driven rehabilitation robot.</p></caption>
<graphic xlink:href="fneur-08-00646-g001.tif"/>
</fig>
</sec>
<sec id="S2-2">
<title>Control Scheme Design</title>
<p>The geometry of the designed wire-driven rehabilitation robot is shown in Figure <xref ref-type="fig" rid="F1">1</xref>B. The origin of the coordinate system is chosen referring to the midpoint of a certain side of the cube-shaped structure, which is shown in Figure <xref ref-type="fig" rid="F1">1</xref>B. The position of the top of each winch pulley can be obtained by measurement. The end-effector is simply treated as a point mass, and its position can be obtained directly by the implementation of the task space coordinates, and it is assumed that the end-effector is lying inside the workspace. Therefore, the length of each wire can be calculated according to the spatial position of the end-effector and the spatial position of related winch pulley:
<disp-formula id="E1"><label>(1)</label><mml:math id="M1"><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msqrt></mml:math></disp-formula>
where (<italic>x, y, z</italic>) represents the position of the end-effector, <italic>i</italic> varying from 1 to the number of wires, and (<italic>x<sub>i</sub>, y<sub>i</sub>, z<sub>i</sub></italic>) represents the position of the associated <italic>i</italic>th winch pulley.</p>
<p>According to Table <xref ref-type="table" rid="T1">1</xref>, (<italic>x<sub>i</sub>, y<sub>i</sub>, z<sub>i</sub></italic>) can be expressed specifically as follows:
<disp-formula id="E2"><label>(2)</label><mml:math id="M2"><mml:mfenced separators="" open="&#x0007B;" close=""><mml:mrow><mml:mtable columnalign="left"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>b</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>b</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>c</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>a</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>b</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:math></disp-formula>
where <italic>a</italic> represents the length of &#x0007C;<italic>OA</italic>&#x0007C;, <italic>b</italic> represents the length of &#x0007C;<italic>AB</italic>&#x0007C;, and <italic>c</italic> represents the length of &#x0007C;<italic>AC</italic>&#x0007C;. Therefore, from Eqs <xref ref-type="disp-formula" rid="E1">1</xref> and <xref ref-type="disp-formula" rid="E2">2</xref>, the length of the wires can be written exactly as follows:
<disp-formula id="E3"><label>(3)</label><mml:math id="M3"><mml:mfenced separators="" open="&#x0007B;" close=""><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>a</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>b</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msqrt></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>b</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>c</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msqrt></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msqrt><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>a</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>b</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msqrt></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p>Parameters of the designed wire-driven rehabilitation robot.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left">Parameter</th>
<th align="center">Symbol</th>
<th align="center">Value</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">End-effector mass</td>
<td align="center"><italic>m</italic></td>
<td align="center">2.5&#x02009;kg</td>
</tr>
<tr>
<td align="left">The length of <italic>&#x0007C;OA&#x0007C;</italic></td>
<td align="center"><italic>a</italic></td>
<td align="center">0.81&#x02009;m</td>
</tr>
<tr>
<td align="left">The length of <italic>&#x0007C;AB&#x0007C;</italic></td>
<td align="center"><italic>b</italic></td>
<td align="center">1.78&#x02009;m</td>
</tr>
<tr>
<td align="left">The length of <italic>&#x0007C;AC&#x0007C;</italic></td>
<td align="center"><italic>c</italic></td>
<td align="center">1.36&#x02009;m</td>
</tr>
<tr>
<td align="left">Gravity acceleration</td>
<td align="center"><italic>g</italic></td>
<td align="center">9.8&#x02009;m/s<sup>2</sup></td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Differentiating the length of each wire with respect to time leads to velocity of each wire:
<disp-formula id="E4"><label>(4)</label><mml:math id="M4"><mml:mfenced separators="" open="&#x0007B;" close=""><mml:mrow><mml:mtable columnalign="left"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>a</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>b</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mi>z</mml:mi></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>b</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>c</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>a</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>b</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mi>z</mml:mi></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>Moreover, the relation between <inline-formula><mml:math id="M5"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula><mml:math id="M6"><mml:mover accent="true"><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula>, <inline-formula><mml:math id="M7"><mml:mover accent="true"><mml:mrow><mml:mi>y</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula>, and <inline-formula><mml:math id="M8"><mml:mover accent="true"><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula> can be established based on Jacobian matrix. Jacobian matrix for the designed wire-driven rehabilitation robot can be expressed specifically as follows:
<disp-formula id="E5"><label>(5)</label><mml:math id="M9"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mn>&#x02202;</mml:mn><mml:mi>x</mml:mi></mml:mtd><mml:mtd><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mn>&#x02202;</mml:mn><mml:mi>y</mml:mi></mml:mtd><mml:mtd><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mi>&#x02202;</mml:mi><mml:mtext>z</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mn>&#x02202;</mml:mn><mml:mi>x</mml:mi></mml:mtd><mml:mtd><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mn>&#x02202;</mml:mn><mml:mi>y</mml:mi></mml:mtd><mml:mtd><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mi>&#x02202;</mml:mi><mml:mtext>z</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mn>&#x02202;</mml:mn><mml:mi>x</mml:mi></mml:mtd><mml:mtd><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mn>&#x02202;</mml:mn><mml:mi>y</mml:mi></mml:mtd><mml:mtd><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mn>&#x02202;</mml:mn><mml:mi>z</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mtd></mml:mtr><mml:mtr><mml:mtd></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>a</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>b</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mi>z</mml:mi><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>b</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>c</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi>a</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>y</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>b</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mi>z</mml:mi><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:msub><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>Moreover, in this study, we assume that the motion is within the workspace and the gravity of the end-effector is able to keep all the wires under tension. Therefore, the relation between externally applied forces and the wire tensile forces can be expressed as follows (<xref ref-type="bibr" rid="B25">25</xref>):
<disp-formula id="E6"><label>(6)</label><mml:math id="M10"><mml:msup><mml:mrow><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mn>&#x003C4;</mml:mn></mml:mstyle></mml:math></disp-formula>
where &#x003C4; denotes the vector of wire-driven forces. In this study, the dynamic equation of the wire-driven rehabilitation robot can be expressed as follows (<xref ref-type="bibr" rid="B25">25</xref>):
<disp-formula id="E7"><label>(7)</label><mml:math id="M11"><mml:mtext mathvariant="bold-italic">M</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x000A8;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">C</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext><mml:mo class="MathClass-punc">,</mml:mo><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">G</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">u</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:math></disp-formula>
where <inline-formula><mml:math id="M12"><mml:mtext mathvariant="bold-italic">M</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula> denotes the inertia matrix, <inline-formula><mml:math id="M13"><mml:mtext mathvariant="bold-italic">C</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext><mml:mo class="MathClass-punc">,</mml:mo><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula> is the vector of Coriolis and centripetal terms, <bold><italic>G</italic></bold><italic>(</italic><bold><italic>p</italic></bold><italic>)</italic> is the vector of gravity terms, and <bold><italic>d</italic></bold> denotes the vector of all the lumped uncertainties (parametric, model, and disturbance). In this study, the designed wire-driven rehabilitation robot is considered to perform only translational movements, low velocities, and accelerations are involved in rehabilitation training, therefore Coriolis forces can be neglected. Hence, Eq. <xref ref-type="disp-formula" rid="E7">7</xref> can be simplified as follows:
<disp-formula id="E8"><label>(8)</label><mml:math id="M14"><mml:mtext mathvariant="bold-italic">M</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x000A8;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">G</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">u</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:math></disp-formula>
where
<disp-formula id="E9"><mml:math id="M15"><mml:mtext mathvariant="bold-italic">M</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mi>m</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>m</mml:mi></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mi>m</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo><mml:mspace width="0.5em"/><mml:mtext mathvariant="bold-italic">G</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mi mathvariant="italic">mg</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo><mml:mspace width="0.5em"/><mml:mtext mathvariant="bold-italic">d</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:math></disp-formula>
<italic>d<sub>x</sub>, d<sub>y</sub></italic>, and <italic>d<sub>z</sub></italic> represent the disturbances in <italic>X, Y</italic>, and <italic>Z</italic> directions. Therefore, referring to Eqs <xref ref-type="disp-formula" rid="E6">6</xref> and <xref ref-type="disp-formula" rid="E8">8</xref>, wire cable-driven forces in terms of <bold><italic>p</italic></bold> generalized coordinates can be obtained as:
<disp-formula id="E10"><label>(9)</label><mml:math id="M16"><mml:mstyle mathvariant="bold"><mml:mn>&#x003C4;</mml:mn></mml:mstyle><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">M</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x000A8;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">G</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>Note that <bold><italic>p</italic>&#x02009;</bold> &#x0003D;&#x02009;[<italic>x y z</italic>]<sup>T</sup> and <bold><italic>p<sub>d</sub></italic>&#x02009;</bold> &#x0003D;&#x02009;[<italic>x<sub>d</sub> y<sub>d</sub> z<sub>d</sub></italic>]<sup>T</sup> represents the actual and the desired position in a three-dimensional space, respectively. For the sake of control scheme design, the vector of sliding surfaces is defined as follows:
<disp-formula id="E11"><label>(10)</label><mml:math id="M17"><mml:mtext mathvariant="bold-italic">s</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003BB;</mml:mn></mml:mstyle><mml:mtext mathvariant="bold-italic">e</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:math></disp-formula>
where <bold><italic>e</italic>&#x02009;</bold> &#x0003D;&#x02009;[<italic>x</italic>&#x02212;<italic>x<sub>d</sub> x</italic>&#x02212;<italic>x<sub>d</sub> x</italic>&#x02212;<italic>x<sub>d</sub></italic>]<sup>T</sup> is the vector of tracking errors in a three-dimensional space, <bold><italic>s</italic>&#x02009;</bold> &#x0003D;&#x02009;[<italic>s<sub>x</sub> s<sub>y</sub> s<sub>z</sub></italic>]<sup>T</sup> and <bold><italic>&#x003BB;</italic></bold>&#x02009;&#x0003D;&#x02009;[&#x003BB;<italic><sub>x</sub></italic> &#x003BB;<italic><sub>y</sub></italic> &#x003BB;<italic><sub>z</sub></italic>]<sup>T</sup> are positive symmetric diagonal matrices. Taking the derivative of <bold><italic>s</italic></bold> leads to <inline-formula><mml:math id="M19"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula>. And <inline-formula><mml:math id="M20"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula> is the so-called reaching law, and in this study it can be defined as follows:
<disp-formula id="E12"><label>(11)</label><mml:math id="M21"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext mathvariant="bold-italic">ks</mml:mtext><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mstyle mathvariant="bold"><mml:mn>&#x003B7;</mml:mn></mml:mstyle><mml:mtext>sgn</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">M</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:math></disp-formula>
where sgn(<bold><italic>s</italic></bold>) is a discontinuous function, it can be given as follows:
<disp-formula id="E13"><label>(12)</label><mml:math id="M22"><mml:mtext>sgn</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="&#x0007B;" close=""><mml:mrow><mml:mtable columnalign="left"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo></mml:mrow></mml:mfrac><mml:mo class="MathClass-punc">,</mml:mo><mml:mtext>when</mml:mtext><mml:mspace width="1em" class="quad"/></mml:mtd><mml:mtd class="array" columnalign="left"><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mtext> when</mml:mtext><mml:mspace width="1em" class="quad"/></mml:mtd><mml:mtd class="array" columnalign="left"><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:mtext>&#x0003D;</mml:mtext><mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:math></disp-formula>
and sgn(<bold><italic>s</italic></bold>)&#x02009;&#x0003D;&#x02009;[sgn(<italic>s<sub>x</sub></italic>) sgn(<italic>s<sub>y</sub></italic>) sgn(<italic>s<sub>z</sub></italic>)]<sup>T</sup>, <inline-formula><mml:math id="M23"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:math></inline-formula> denotes the vector of the estimation errors which is given as <inline-formula><mml:math id="M24"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">d</mml:mtext><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula>, <bold><italic>k</italic>&#x02009;</bold> &#x0003D;&#x02009;diag(<italic>k<sub>x</sub> k<sub>y</sub> k<sub>z</sub></italic>) and <bold>&#x003B7;</bold>&#x02009;&#x0003D;&#x02009;diag(&#x003B7;<italic><sub>x</sub></italic> &#x003B7;<italic><sub>y</sub></italic> &#x003B7;<italic><sub>z</sub></italic>) are symmetric diagonal positive matrices need to be designed in practice. In this study, a switching sliding surface is considered by defining control gain as follows:
<disp-formula id="E14"><label>(13)</label><mml:math id="M26"><mml:msub><mml:mrow><mml:mn>&#x003B7;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="&#x0007B;" close=""><mml:mrow><mml:mtable columnalign="left"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msub><mml:mrow><mml:mn>&#x003B7;</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mtext>when</mml:mtext></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mn>&#x003B2;</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msub><mml:mrow><mml:mn>&#x003B7;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mtext>when</mml:mtext></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:mn>&#x003B2;</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mspace width="-15.0pt"/><mml:mo class="MathClass-punc">,</mml:mo><mml:mspace width="1em" class="quad"/><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>x</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>y</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>z</mml:mi><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>According to Eqs <xref ref-type="disp-formula" rid="E10">9</xref>&#x02013;<xref ref-type="disp-formula" rid="E12">11</xref>, through a series of substitutions and transformations, the SMC scheme can be expressed as follows:
<disp-formula id="E15"><label>(14)</label><mml:math id="M27"><mml:mtext mathvariant="bold-italic">u</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">M</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003BB;</mml:mn></mml:mstyle><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">ks</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mn>&#x003B7;</mml:mn></mml:mstyle><mml:mtext>sgn</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">G</mml:mtext><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>A nonlinear disturbance observer has been introduced in many studies (<xref ref-type="bibr" rid="B26">26</xref>&#x02013;<xref ref-type="bibr" rid="B28">28</xref>). In this study, a nonlinear disturbance observer is designed for the wire-driven robot to estimate and compensate disturbances and uncertainties that exist in the rehabilitation training, which can be defined as follows:
<disp-formula id="E16"><label>(15)</label><mml:math id="M28"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">q</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B3;</mml:mn></mml:mstyle><mml:mtext mathvariant="bold-italic">M</mml:mtext><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:math></disp-formula>
<disp-formula id="E17"><label>(16)</label><mml:math id="M29"><mml:mover accent="true"><mml:mrow><mml:mi>q</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B3;</mml:mn></mml:mstyle><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">G</mml:mtext><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext mathvariant="bold-italic">u</mml:mtext><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula>
where <bold><italic>d</italic></bold> is estimated as <inline-formula><mml:math id="M30"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula>, <bold><italic>q</italic></bold> is an auxiliary vector, <bold><italic>&#x003B3;</italic></bold>&#x02009;&#x0003D;&#x02009;diag(&#x003B3;<italic><sub>x</sub></italic> &#x003B3;<italic><sub>y</sub></italic> &#x003B3;<italic><sub>z</sub></italic>) is a symmetric diagonal positive matrix. In this study, we consider that the disturbances are slow time-varying signal, which means <inline-formula><mml:math id="M32"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold">0</mml:mtext></mml:math></inline-formula>. According to Eqs <xref ref-type="disp-formula" rid="E15">14</xref>&#x02013;<xref ref-type="disp-formula" rid="E17">16</xref>, through a series of translations, we can find that <inline-formula><mml:math id="M33"><mml:mover accent="true"><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B3;</mml:mn></mml:mstyle><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold">0</mml:mtext></mml:math></inline-formula>, therefore, it can be noticed that the estimation errors will convergence to 0 exponentially by using the designed nonlinear disturbance observer. Furthermore, to prove the closed-loop stability of the control scheme, the Lyapunov function is chosen as follows:
<disp-formula id="E18"><label>(17)</label><mml:math id="M34"><mml:mi>V</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mtext mathvariant="bold-italic">s</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:msup><mml:mrow><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>The derivative of <italic>V</italic> is:
<disp-formula id="E19"><label>(18)</label><mml:math id="M35"><mml:mover accent="true"><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mspace width="2.56804pt" class="tmspace"/><mml:mspace width="0.3em"/><mml:mover accent="true"><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>Substitute Eq. <xref ref-type="disp-formula" rid="E12">11</xref> and <inline-formula><mml:math id="M36"><mml:mover accent="true"><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B3;</mml:mn></mml:mstyle><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold">0</mml:mtext></mml:math></inline-formula> into the Eq. <xref ref-type="disp-formula" rid="E19">18</xref>, one can notice that:
<disp-formula id="E20"><label>(19)</label><mml:math id="M37"><mml:mover accent="true"><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mtext mathvariant="bold-italic">k</mml:mtext><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mstyle mathvariant="bold"><mml:mn>&#x003B7;</mml:mn></mml:mstyle><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:mtext mathvariant="bold-italic">s</mml:mtext><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">M</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mn>&#x003B3;</mml:mn><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>Therefore, <inline-formula><mml:math id="M38"><mml:mover accent="true"><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula> can be rewritten as:
<disp-formula id="E21"><label>(20)</label><mml:math id="M39"><mml:mover accent="true"><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mtext mathvariant="bold-italic">ks</mml:mtext><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B3;</mml:mn></mml:mstyle><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mo class="MathClass-op">&#x02211;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003B7;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mi>m</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>x</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>y</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>z</mml:mi><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>In this study, <inline-formula><mml:math id="M40"><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo class="MathClass-rel">&#x0007C;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="normal">max</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> represents the maximum value of <inline-formula><mml:math id="M41"><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0007C;</mml:mo></mml:math></inline-formula>, and we assume &#x003B7;<italic><sub>i</sub></italic> satisfies <inline-formula><mml:math id="M42"><mml:msub><mml:mrow><mml:mn>&#x003B7;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo class="MathClass-rel">&#x0007C;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="normal">max</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02215;</mml:mo><mml:mi>m</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>x</mml:mi><mml:mtext>,</mml:mtext><mml:mi>y</mml:mi><mml:mtext>,</mml:mtext><mml:mi>z</mml:mi></mml:math></inline-formula>. Therefore, <inline-formula><mml:math id="M43"><mml:mover accent="true"><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:math></inline-formula> can be expressed as follows:
<disp-formula id="E22"><label>(21)</label><mml:math id="M44"><mml:mover accent="true"><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mtext mathvariant="bold-italic">ks</mml:mtext><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B3;</mml:mn></mml:mstyle><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>As mentioned previously that <bold><italic>k</italic></bold> and <bold><italic>&#x003B3;</italic></bold> are symmetric diagonal positive matrices, therefore, one can notice that <inline-formula><mml:math id="M46"><mml:mover accent="true"><mml:mrow><mml:mi>V</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>. Therefore, the Lyapunov function is always decreasing, which means the closed-loop system is asymptotically stable. As described previously that sgn(<bold><italic>s</italic></bold>) function is a discontinuous function, the control law is discontinuous across the sliding surface, which may cause chattering. Chattering is undesirable since it can cause damage to the actuators being controlled. Chattering reduction can be achieved by using a nonlinear disturbance observer to estimate and compensate disturbances; furthermore, chattering can be reduced by replacing the discontinuous sgn(<bold><italic>s</italic></bold>) function with a continuous sat(<bold><italic>s</italic></bold>) function. Using sat(<bold><italic>s</italic></bold>) function, the discontinuity of the controller is smoothed in a thin boundary layer neighboring the sliding surface. sat(<bold><italic>s</italic></bold>) function is defined as follows:
<disp-formula id="E23"><label>(22)</label><mml:math id="M47"><mml:mi mathvariant="normal">sat</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="&#x0007B;" close=""><mml:mrow><mml:mtable columnalign="left"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo></mml:mrow></mml:mfrac><mml:mo class="MathClass-punc">,</mml:mo><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mtext>when</mml:mtext></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:mn>&#x00394;</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mn>&#x00394;</mml:mn></mml:mrow></mml:mfrac><mml:mo class="MathClass-punc">,</mml:mo><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mtext>when</mml:mtext></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mspace width="1em" class="quad"/><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:mn>&#x00394;</mml:mn></mml:mtd></mml:mtr></mml:mtable><mml:mspace width="1em" class="quad"/></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mspace width="-15.0pt"/><mml:mo class="MathClass-punc">,</mml:mo><mml:mspace width="1em" class="quad"/><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>x</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>y</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>z</mml:mi></mml:math></disp-formula>
where &#x00394; is a small and positive constant. Therefore, control scheme for the wire-driven forces by the SMC scheme with nonlinear disturbance observer can be rewritten as:
<disp-formula id="E24"><label>(23)</label><mml:math id="M48"><mml:mstyle mathvariant="bold"><mml:mn>&#x003C4;</mml:mn></mml:mstyle><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">M</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003BB;</mml:mn></mml:mstyle><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x000A8;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">ks</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mn>&#x003B7;</mml:mn></mml:mstyle><mml:mtext>sat</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">s</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">G</mml:mtext><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mspace width="2.56804pt" class="tmspace"/><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
</sec>
<sec id="S2-3">
<title>Simulation and Experimental Setup</title>
<p>To investigate the effectiveness of the presented SMCNDO for the wire-driven rehabilitation robot, first, simulation is carried out in Matlab/Simulink. Both SMCNDO and the traditional SMC are considered in the simulation, and the results of tracking a predefined trajectory <italic>via</italic> SMCNDO are compared with that of the traditional SMC. Parameters for the wire-driven rehabilitation robot are shown in Table <xref ref-type="table" rid="T1">1</xref>. The reference trajectory is predefined as <inline-formula><mml:math id="M49"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>1</mml:mn><mml:mi mathvariant="normal">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>1</mml:mn><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>98</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>1</mml:mn><mml:mi mathvariant="normal">cos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>1</mml:mn><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>52</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:math></inline-formula>. In addition, the vector of the desired velocities and accelerations along the three coordinate directions can be obtained by differentiating <bold><italic>p</italic></bold><italic><sub>d</sub></italic>(<italic>t</italic>) once and twice, respectively. The vector of disturbances along three coordinate directions is defined as follows:
<disp-formula id="E25"><label>(24)</label><mml:math id="M50"><mml:mtext mathvariant="bold-italic">d</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></disp-formula>
where <bold><italic>d</italic></bold><italic><sub>1</sub></italic>(<italic>t</italic>)&#x02009;&#x0003D;&#x02009;[5sin(<italic>t</italic>) 5sin(<italic>t</italic>) 5sin(<italic>t</italic>)]<sub>T</sub>, <bold><italic>d</italic></bold><italic><sub>2</sub></italic>(<italic>t</italic>) is a vector of pulse-like disturbances which is defined as follows:
<disp-formula id="E26"><label>(25)</label><mml:math id="M51"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="&#x0007B;" close=""><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msup><mml:mrow><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>200</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>200</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>200</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msup><mml:mrow><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mn>200</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>200</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>200</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:msup><mml:mrow><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>200</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>200</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>200</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mspace width="0.3em"/><mml:mtext>if</mml:mtext></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:mn>15</mml:mn><mml:mtext>s</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mspace width="1em" class="quad"/><mml:mtext>if</mml:mtext></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>15</mml:mn><mml:mtext>s</mml:mtext><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:mn>45</mml:mn><mml:mtext>s</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mspace width="2em" class="qquad"/><mml:mtext>if</mml:mtext></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>45</mml:mn><mml:mtext>s</mml:mtext><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:mn>62</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>8</mml:mn><mml:mtext>s</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>Both the traditional SMC and SMCNDO can be designed according to Eq. <xref ref-type="disp-formula" rid="E24">23</xref>, and <inline-formula><mml:math id="M52"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula> term is considered as 0 for the traditional SMC. A nonlinear disturbance is designed based on Eqs <xref ref-type="disp-formula" rid="E16">15</xref> and <xref ref-type="disp-formula" rid="E17">16</xref>. According to the design procedures, proper control parameters for SMC are given as: <bold><italic>&#x003BB;</italic></bold>&#x02009;&#x0003D;&#x02009;diag(10,10,10), <bold><italic>k</italic>&#x02009;</bold> <italic>&#x0003D;</italic>&#x02009;diag(5,5,5), &#x003B7;<sub>1</sub>&#x02009;&#x0003D;&#x02009;0.1, &#x003B7;<sub>2</sub>&#x02009;&#x0003D;&#x02009;80, &#x003B2;&#x02009;&#x0003D;&#x02009;0.5, and proper control parameters for SMCNDO are given as: <bold><italic>&#x003BB;</italic></bold>&#x02009;&#x0003D;&#x02009;diag(10,10,10), <bold><italic>k</italic>&#x02009;</bold> &#x0003D;&#x02009;diag(5,5,5), <bold><italic>&#x003B3;</italic></bold>&#x02009;&#x0003D;&#x02009;diag(50,50,50), &#x003B7;<sub>1</sub>&#x02009;&#x0003D;&#x02009;0.1, &#x003B7;<sub>2</sub>&#x02009;&#x0003D;&#x02009;80, &#x003B2;&#x02009;&#x0003D;&#x02009;0.5.</p>
<p>Experiments are carried out based on a real-time system to verify the performance of the presented controller for practical applications. It has been approved by the ethics committee of the Injury Rehabilitation Hospital of Guangdong Province. During the experiments, a healthy subject (23&#x02009;years old, height of 173&#x02009;cm, and weight of 60&#x02009;kg) is seated beside the wire-driven rehabilitation robot with his forearm placed on the splint. The subject is instructed to keep relaxed during the experiments. Then, the forearm of the subject is controlled by the robot to follow predefined trajectories, and two different types of trajectories are considered in this section, including a square-shaped and a circle-shaped trajectory. The results of SMCNDO are compared with that of the traditional SMC. The traditional SMC and SMCNDO are designed according to Eq. <xref ref-type="disp-formula" rid="E24">23</xref> and <inline-formula><mml:math id="M57"><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">d</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula> is also considered as 0 for the traditional SMC, which is the same as previous simulation. A nonlinear disturbance observer is also designed based on Eqs <xref ref-type="disp-formula" rid="E16">15</xref> and <xref ref-type="disp-formula" rid="E17">16</xref>. According to the design procedures and considering the practical application, proper control parameters for SMC and SMCNDO are given as: <bold><italic>&#x003BB;</italic></bold>&#x02009;&#x0003D;&#x02009;diag(55,55,55), <bold><italic>k</italic>&#x02009;</bold> &#x0003D;&#x02009;diag(20,20,20), &#x003B7;<sub>1</sub>&#x02009;&#x0003D;&#x02009;2,000, &#x003B7;<sub>2</sub>&#x02009;&#x0003D;&#x02009;500, &#x003B2;&#x02009;&#x0003D;&#x02009;0.1, and proper control parameters for SMCNDO is chosen as: <bold><italic>&#x003BB;</italic></bold>&#x02009;&#x0003D;&#x02009;diag(55,55,55), <bold><italic>k</italic>&#x02009;</bold> &#x0003D;&#x02009;diag(20,20,20), &#x003B7;<sub>1</sub>&#x02009;&#x0003D;&#x02009;2,000, &#x003B7;<sub>2</sub>&#x02009;&#x0003D;&#x02009;500, &#x003B2;&#x02009;&#x0003D;&#x02009;0.1, <bold><italic>&#x003B3;</italic></bold>&#x02009;&#x0003D;&#x02009;diag(3,3,3). The square-shaped trajectory which is predefined as the reference trajectory for the experiment is shown in Figure <xref ref-type="fig" rid="F2">2</xref>, and the side length is <inline-formula><mml:math id="M61"><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>1</mml:mn><mml:msqrt><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msqrt></mml:math></inline-formula> meters. Each experiment of tracking the square-shaped trajectory lasts 60&#x02009;s. And the circle-shaped reference trajectory with a radius of 0.1&#x02009;m is predefined as <inline-formula><mml:math id="M62"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">p</mml:mtext></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>1</mml:mn><mml:mi mathvariant="normal">sin</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>1</mml:mn><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>98</mml:mn></mml:mtd><mml:mtd class="array" columnalign="center"><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>1</mml:mn><mml:mi mathvariant="normal">cos</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>1</mml:mn><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>52</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:math></inline-formula>.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>Predefined square-shaped and circle-shaped trajectories in experiments. The side length of square-shaped trajectory is <inline-formula><mml:math id="M56"><mml:mtext>0.1</mml:mtext><mml:msqrt><mml:mrow><mml:mtext>2</mml:mtext></mml:mrow></mml:msqrt><mml:mtext> m</mml:mtext></mml:math></inline-formula>, and the radius of the circle is 0.1&#x02009;m.</p></caption>
<graphic xlink:href="fneur-08-00646-g002.tif"/>
</fig>
<p>The desired velocity and acceleration can be obtained by differentiating the desired position once and twice, respectively, each experiment of tracking the circle-shaped trajectory lasts 62.8&#x02009;s. The predefined circle-shaped trajectory is visually shown in Figure <xref ref-type="fig" rid="F2">2</xref>. The root mean square errors are calculated to evaluate the tracking accuracy of the two applied control schemes when tracking the two predefined trajectories. The root mean square error between actual position and desired position is used to evaluate the tracking accuracy, which can be expressed as follows:
<disp-formula id="E27"><label>(26)</label><mml:math id="M63"><mml:mtext>RMSE</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msqrt><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:mfrac><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003B4;</mml:mn></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>&#x003B4;</mml:mn><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msqrt><mml:mo class="MathClass-punc">,</mml:mo><mml:mspace width="1em" class="quad"/><mml:mn>&#x003B4;</mml:mn><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>x</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>y</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>z</mml:mi><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
</sec>
</sec>
<sec id="S3">
<title>Results</title>
<p>Tracking performance of the traditional SMC and SMCNDO in simulation are shown in Figure <xref ref-type="fig" rid="F3">3</xref>, and tracking performance along <italic>X, Y</italic>, and <italic>Z</italic> directions are shown in Figures <xref ref-type="fig" rid="F3">3</xref>A&#x02013;C, respectively. In Figure <xref ref-type="fig" rid="F3">3</xref>, tracking performance <italic>via</italic> the traditional SMC and SMCNDO are drawn in blue dashed line and red dashed line, respectively, and the predefined trajectory is drawn in black-solid line. The output forces for the three wires in simulation <italic>via</italic> SMC and SMCNDO are shown in Figure <xref ref-type="fig" rid="F4">4</xref>. Figures <xref ref-type="fig" rid="F4">4</xref>A&#x02013;C are the output forces <italic>via</italic> SMC for wire 1, wire 2, and wire 3, respectively. Figures <xref ref-type="fig" rid="F4">4</xref>D&#x02013;F are the output forces <italic>via</italic> SMCNDO for wire 1, wire 2, and wire 3, respectively. From Figure <xref ref-type="fig" rid="F4">4</xref>, we can find that chattering of the output forces <italic>via</italic> SMC is relatively severe, whereas chattering is reduced effectively by implementation of SMCNDO. These simulation results indicate that when control the wire-driven robot follow a predefined trajectory in the presence of unknown disturbances, SMCNDO has better tracking performance and lower chattering compared with the traditional SMC.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>Tracking performance in the three coordinate directions <italic>via</italic> sliding mode control (SMC) and sliding mode control with nonlinear disturbance observer (SMCNDO). <bold>(A)</bold> Tracking performance in <italic>X</italic> direction, <bold>(B)</bold> tracking performance in <italic>Y</italic> direction, and <bold>(C)</bold> tracking performance in <italic>Z</italic> direction.</p></caption>
<graphic xlink:href="fneur-08-00646-g003.tif"/>
</fig>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>The output forces for the three wires <italic>via</italic> sliding mode control (SMC) and sliding mode control with nonlinear disturbance observer (SMCNDO). <bold>(A)</bold> The output force for wire 1 <italic>via</italic> SMC, <bold>(B)</bold> the output force for wire 2 <italic>via</italic> SMC, <bold>(C)</bold> the output force for wire 3 <italic>via</italic> SMC, <bold>(D)</bold> the output force for wire 1 <italic>via</italic> SMCNDO, <bold>(E)</bold> the output force for wire 2 <italic>via</italic> SMCNDO, and <bold>(F)</bold> the output force for wire 3 <italic>via</italic> SMCNDO.</p></caption>
<graphic xlink:href="fneur-08-00646-g004.tif"/>
</fig>
<p>The tracking errors of the two applied control schemes in the three coordinate directions when a healthy subject follows the predefined square-shaped trajectory are shown in Figure <xref ref-type="fig" rid="F5">5</xref>, where the tracking errors by implementation of the traditional SMC and SMCNDO are drawn in blue-solid line and red-solid line, respectively, the black-solid line is added as a reference whose value is always 0. From Figure <xref ref-type="fig" rid="F5">5</xref>, it is observed that SMCNDO has obviously smaller tracking errors along all the three directions. In addition, the root mean square errors along the three coordinate directions of tracking the square-shaped trajectory are calculated based on Eq. <xref ref-type="disp-formula" rid="E27">26</xref> and are show in Table <xref ref-type="table" rid="T2">2</xref>. It can be found in Table <xref ref-type="table" rid="T2">2</xref> that the root mean square errors of SMCNDO are obviously less than the traditional SMC in all the three coordinate directions. The output forces for the three wires when tracking the square-shaped trajectory by implementation of the traditional SMC and SMCNDO are shown in Figure <xref ref-type="fig" rid="F6">6</xref>. Figures <xref ref-type="fig" rid="F6">6</xref>A&#x02013;C are the results of the output force by implementation of SMC, and Figures <xref ref-type="fig" rid="F6">6</xref>B,C and <xref ref-type="fig" rid="F7">7</xref>A are the results of the output forces by implementation of SMCNDO. It can be seen from these plots that the output forces for the three wires by implementation of SMCNDO are much smoother than that of the traditional SMC, which means chattering is effectively reduced by implementation of SMCNDO.</p>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p>Comparison of tracking errors in the three coordinate directions by implementation of sliding mode control (SMC) and sliding mode control with nonlinear disturbance observer (SMCNDO) when a healthy subject follows a square-shaped trajectory. <bold>(A)</bold> Tracking errors in the <italic>X</italic> direction by implementation of SMC and SMCNDO, <bold>(B)</bold> tracking errors in the <italic>Y</italic> direction by implementation of SMC and SMCNDO, and <bold>(C)</bold> tracking errors in the <italic>Z</italic> direction by implementation of SMC and SMCNDO.</p></caption>
<graphic xlink:href="fneur-08-00646-g005.tif"/>
</fig>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p>Root mean square errors (cm) in the three coordinate directions by implementation of sliding mode control (SMC) and sliding mode control with nonlinear disturbance observer (SMCNDO) when a healthy subject follows a square-shaped and a circle-shaped trajectory.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left">Type of trajectory</th>
<th align="center" valign="top" colspan="2"><italic>X position</italic><hr/></th>
<th align="center" valign="top" colspan="2"><italic>Y position</italic><hr/></th>
<th align="center" valign="top" colspan="2"><italic>Z position</italic><hr/></th>
</tr>
<tr>
<th align="center"/>
<th align="center">SMC</th>
<th align="center">SMCNDO</th>
<th align="center">SMC</th>
<th align="center">SMCNDO</th>
<th align="center">SMC</th>
<th align="center">SMCNDO</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">Square-shaped</td>
<td align="center">0.301</td>
<td align="center">0.047</td>
<td align="center">0.177</td>
<td align="center">0.061</td>
<td align="center">0.389</td>
<td align="center">0.071</td>
</tr>
<tr>
<td align="left">Circle-shaped</td>
<td align="center">0.411</td>
<td align="center">0.075</td>
<td align="center">0.214</td>
<td align="center">0.066</td>
<td align="center">0.313</td>
<td align="center">0.081</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>Comparison of output forces for the three wires by implementation of sliding mode control (SMC) and sliding mode control with nonlinear disturbance observer (SMCNDO) when a healthy subject follows a square-shaped trajectory. <bold>(A)</bold> The output force for wire 1 by implementation of SMC, <bold>(B)</bold> the output force for wire 2 by implementation of SMC, <bold>(C)</bold> the output force for wire 3 by implementation of SMC, <bold>(D)</bold> the output force for wire 1 by implementation of SMCNDO, <bold>(E)</bold> the output force for wire 2 by implementation of SMCNDO, and <bold>(F)</bold> the output force for wire 3 by implementation of SMCNDO.</p></caption>
<graphic xlink:href="fneur-08-00646-g006.tif"/>
</fig>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p>Comparison of tracking errors in the three coordinate directions by implementation of sliding mode control (SMC) and sliding mode control with nonlinear disturbance observer (SMCNDO) when a healthy subject follows a circle-shaped trajectory. <bold>(A)</bold> Tracking errors in the <italic>X</italic> direction by implementation of SMC and SMCNDO, <bold>(B)</bold> tracking errors in the <italic>Y</italic> direction by implementation of SMC and SMCNDO, and <bold>(C)</bold> tracking errors in the <italic>Z</italic> direction by implementation of SMC and SMCNDO.</p></caption>
<graphic xlink:href="fneur-08-00646-g007.tif"/>
</fig>
<p>The tracking errors along the three coordinate directions when tracking the predefined circle-shaped trajectory by implementation of SMC and SMCNDO are shown in Figure <xref ref-type="fig" rid="F7">7</xref>. It can be noticed from Figure <xref ref-type="fig" rid="F7">7</xref> that SMCNDO has better tacking performance in a three-dimensional space as compared with the traditional SMC. The root mean square errors along the three coordinate directions are also calculated in this experiment according to Eq. <xref ref-type="disp-formula" rid="E27">26</xref> and are shown in Table <xref ref-type="table" rid="T2">2</xref>, which also indicates that SMCNDO has less tracking errors in the three coordinate directions as compared with the traditional SMC. The output forces for the three wires when tracking the predefined circle-shaped trajectory by implementation of SMC and SMCNDO are shown in Figure <xref ref-type="fig" rid="F8">8</xref>. Figures <xref ref-type="fig" rid="F8">8</xref>A&#x02013;C are the results of the output forces by implementation of SMC, and Figures <xref ref-type="fig" rid="F8">8</xref>A&#x02013;C are the results of the output forces by implementation of SMCNDO. From these plots, it can be observed that chattering is effectively reduced by SMCNDO, as the output forces by implementation of SMCNDO is much smoother than that of the traditional SMC.</p>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p>Comparison of the output forces for the three wires by implementation of sliding mode control (SMC) and sliding mode control with nonlinear disturbance observer (SMCNDO) when a healthy subject follows a circle-shaped trajectory. <bold>(A)</bold> The output force for wire 1 by implementation of SMC, <bold>(B)</bold> the output force for wire 2 by implementation of SMC, <bold>(C)</bold> the output force for wire 3 by implementation of SMC, <bold>(D)</bold> the output force for wire 1 by implementation of SMCNDO, <bold>(E)</bold> the output force for wire 2 by implementation of SMCNDO, and <bold>(F)</bold> the output force for wire 3 by implementation of SMCNDO.</p></caption>
<graphic xlink:href="fneur-08-00646-g008.tif"/>
</fig>
</sec>
<sec id="S4" sec-type="discussion">
<title>Discussion</title>
<p>The designed wire-driven rehabilitation in this paper has three DOF and its architecture makes it possible to assist the subject in performing predefined movements in a three-dimensional space. Coordinate system that applied in the control scheme design procedure is considered in this paper, which can be classified into the wire length coordinate system and the task space coordinate system. In the wire length coordinate system, the length of each wire is measured by scaling the associated motor encoder count; however, due to the unavailable flexibility of wires, using the wire length coordinate system is not reliable when the implementation may require high accuracy. In this paper, this problem can be effectively addressed by using the task space coordinates (<xref ref-type="bibr" rid="B25">25</xref>), where the spatial position of the end-effector is measured directly using the motion capture system (OptiTrack, NaturalPoint, USA).</p>
<p>From the results of both simulation and experiments, the traditional SMC has degraded tracking performance and can cause high chattering in all the three coordinate directions, while tracking performance can be obviously improved and chattering can be effectively reduced <italic>via</italic> SMCNDO. The results of experiments are consistent with those of simulation. In literature, many studies have found that the traditional SMC is not able to achieve satisfactory tracking performance and can cause high chattering (<xref ref-type="bibr" rid="B29">29</xref>&#x02013;<xref ref-type="bibr" rid="B31">31</xref>). Mohammed et al. have designed SMCNDO for a pneumatic muscle system (<xref ref-type="bibr" rid="B28">28</xref>), Deshpande et al. have designed SMCNDO for an active suspension systems (<xref ref-type="bibr" rid="B32">32</xref>), the results of these studies show that the tracking performance is obviously improved by SMCNDO as compared with the traditional SMC, which is consistent with the results of our study. By adding the nonlinear disturbance observer to estimate disturbances and feed them back in the control loop, tracking accuracy can be effectively improved. Moreover, since disturbances can be compensated for and high tracking accuracy can be achieved by SMCNDO, the control gain for SMCNDO may be reduced in this study, this could lead to the result of chattering reduction. When delivering robot-assisted rehabilitation training, many unpredictable disturbance scan affect training such as friction caused by actuators (<xref ref-type="bibr" rid="B33">33</xref>), human-applied force due to spasticity (<xref ref-type="bibr" rid="B34">34</xref>), and uncertainties due to diverse biomechanical variations (<xref ref-type="bibr" rid="B20">20</xref>), whereas SMCNDO could effectively reduce the effect of the above-mentioned unpredictable disturbances.</p>
<p>There are a few limitations of this study that should be addressed in the future. The positions of the wires should be well arranged to ensure enough workspace and the safety for upper-limb rehabilitation in clinical application. In this pilot study, we mainly focus on the investigation of the feasibility of the wire-driven rehabilitation robot using SMCNDO, in the future, we will recruit enough patients after stroke to investigate its clinical effectiveness in rehabilitation training.</p>
</sec>
<sec id="S5">
<title>Conclusion</title>
<p>In this paper, a wire-driven rehabilitation robot is designed for upper-limb rehabilitation training, and SMCNDO is designed for this robot. Simulation and experimental results of trajectory tracking show that the wire-driven rehabilitation robot with the designed control scheme has exhibited two superiorities including tracking performance improvement and chattering reduction as compared with the traditional sliding mode control scheme. The wire-driven rehabilitation robot with the designed control scheme may have great potential in robot-aided rehabilitation training.</p>
</sec>
<sec id="S6">
<title>Ethics Statement</title>
<p>This study was approved by the ethics committee of the Injury Rehabilitation Hospital of Guangdong Province.</p>
</sec>
<sec id="S7" sec-type="author-contributor">
<title>Author Contributions</title>
<p>JN and RS conceived and designed the study. JN and QY performed the experiments, wrote the paper, contributed to the work equally, and should be regarded as cofirst authors. RS reviewed and edited the manuscript. XW made a contribution to experiments. All authors had read and approved the manuscript.</p>
</sec>
<sec id="S9">
<title>Conflict of Interest Statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
</body>
<back>
<fn-group>
<fn fn-type="financial-disclosure">
<p><bold>Funding.</bold> This work was supported by the Guangdong Science and Technology Plan Project (Application Technology Research Foundation) [Grant No. 2015B020233006]; Science and Technology Program of Guangzhou [Grant No. 201604020108]; Guangzhou Key Lab of Body Data Science, [Grant No. 201605030011].</p>
</fn>
</fn-group>
<sec id="S10">
<title>Abbreviations</title>
<p>SMC, sliding mode control; SMNDO, sliding mode control with nonlinear disturbance observer.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1"><label>1</label><citation citation-type="journal"><person-group person-group-type="author"><collab>Writing Group M</collab> <name><surname>Mozaffarian</surname> <given-names>D</given-names></name> <name><surname>Benjamin</surname> <given-names>EJ</given-names></name> <name><surname>Go</surname> <given-names>AS</given-names></name> <name><surname>Arnett</surname> <given-names>DK</given-names></name> <name><surname>Blaha</surname> <given-names>MJ</given-names></name> <etal/></person-group> <article-title>Executive summary: heart disease and stroke statistics &#x02013; 2016 update: a report from the American Heart Association</article-title>. <source>Circulation</source> (<year>2016</year>) <volume>133</volume>(<issue>4</issue>):<fpage>447</fpage>&#x02013;<lpage>54</lpage>.<pub-id pub-id-type="doi">10.1161/cir.0000000000000366</pub-id></citation></ref>
<ref id="B2"><label>2</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Michaelsen</surname> <given-names>SM</given-names></name> <name><surname>Dannenbaum</surname> <given-names>R</given-names></name> <name><surname>Levin</surname> <given-names>MF</given-names></name></person-group>. <article-title>Task-specific training with trunk restraint on arm recovery in stroke: randomized control trial</article-title>. <source>Stroke</source> (<year>2006</year>) <volume>37</volume>(<issue>1</issue>):<fpage>186</fpage>&#x02013;<lpage>92</lpage>.<pub-id pub-id-type="doi">10.1161/01.str.0000196940.20446.c9</pub-id><pub-id pub-id-type="pmid">16339469</pub-id></citation></ref>
<ref id="B3"><label>3</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Luft</surname> <given-names>AR</given-names></name> <name><surname>McCombe-Waller</surname> <given-names>S</given-names></name> <name><surname>Whitall</surname> <given-names>J</given-names></name> <name><surname>Forrester</surname> <given-names>LW</given-names></name> <name><surname>Macko</surname> <given-names>R</given-names></name> <name><surname>Sorkin</surname> <given-names>JD</given-names></name> <etal/></person-group> <article-title>Repetitive bilateral arm training and motor cortex activation in chronic stroke: a randomized controlled trial</article-title>. <source>JAMA</source> (<year>2004</year>) <volume>292</volume>(<issue>15</issue>):<fpage>1853</fpage>&#x02013;<lpage>61</lpage>.<pub-id pub-id-type="doi">10.1001/jama.292.15.1853</pub-id></citation></ref>
<ref id="B4"><label>4</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wilkins</surname> <given-names>KB</given-names></name> <name><surname>Owen</surname> <given-names>M</given-names></name> <name><surname>Ingo</surname> <given-names>C</given-names></name> <name><surname>Carmona</surname> <given-names>C</given-names></name> <name><surname>Dewald</surname> <given-names>JPA</given-names></name> <name><surname>Yao</surname> <given-names>J</given-names></name></person-group>. <article-title>Neural plasticity in moderate to severe chronic stroke following a device-assisted task-specific arm/hand intervention</article-title>. <source>Front Neurol</source> (<year>2017</year>) <volume>8</volume>:<fpage>284</fpage>.<pub-id pub-id-type="doi">10.3389/fneur.2017.00284</pub-id><pub-id pub-id-type="pmid">28659863</pub-id></citation></ref>
<ref id="B5"><label>5</label><citation citation-type="confproc"><person-group person-group-type="editor"><name><surname>Hogan</surname> <given-names>N</given-names></name> <name><surname>Krebs</surname> <given-names>HI</given-names></name> <name><surname>Charnnarong</surname> <given-names>J</given-names></name> <name><surname>Srikrishna</surname> <given-names>P</given-names></name> <name><surname>Sharon</surname> <given-names>A</given-names></name></person-group>, editors. <article-title>MIT-MANUS: a workstation for manual therapy and training. I</article-title>. <conf-name>Proceedings IEEE International Workshop on Robot and Human Communication</conf-name>. <conf-loc>Tokyo, Japan</conf-loc>: <conf-sponsor>IEEE</conf-sponsor> (<year>1992</year>). p. <fpage>161</fpage>&#x02013;<lpage>5</lpage>.</citation></ref>
<ref id="B6"><label>6</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Morris</surname> <given-names>DM</given-names></name> <name><surname>Taub</surname> <given-names>E</given-names></name></person-group>. <article-title>Constraint-induced therapy approach to restoring function after neurological injury</article-title>. <source>Top Stroke Rehabil</source> (<year>2001</year>) <volume>8</volume>(<issue>3</issue>):<fpage>16</fpage>&#x02013;<lpage>30</lpage>.<pub-id pub-id-type="doi">10.1310/bljx-m89n-ptpy-jdkw</pub-id><pub-id pub-id-type="pmid">14523735</pub-id></citation></ref>
<ref id="B7"><label>7</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Frisoli</surname> <given-names>A</given-names></name> <name><surname>Loconsole</surname> <given-names>C</given-names></name> <name><surname>Bartalucci</surname> <given-names>R</given-names></name> <name><surname>Bergamasco</surname> <given-names>M</given-names></name></person-group>. <article-title>A new bounded jerk on-line trajectory planning for mimicking human movements in robot-aided neurorehabilitation</article-title>. <source>Rob Auton Syst</source> (<year>2013</year>) <volume>61</volume>(<issue>4</issue>):<fpage>404</fpage>&#x02013;<lpage>15</lpage>.<pub-id pub-id-type="doi">10.1016/j.robot.2012.09.003</pub-id></citation></ref>
<ref id="B8"><label>8</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lum</surname> <given-names>PS</given-names></name> <name><surname>Burgar</surname> <given-names>CG</given-names></name> <name><surname>Shor</surname> <given-names>PC</given-names></name> <name><surname>Majmundar</surname> <given-names>M</given-names></name> <name><surname>Van der Loos</surname> <given-names>M</given-names></name></person-group>. <article-title>Robot-assisted movement training compared with conventional therapy techniques for the rehabilitation of upper-limb motor function after stroke</article-title>. <source>Arch Phys Med Rehabil</source> (<year>2002</year>) <volume>83</volume>(<issue>7</issue>):<fpage>952</fpage>&#x02013;<lpage>9</lpage>.<pub-id pub-id-type="doi">10.1053/apmr.2001.33101</pub-id><pub-id pub-id-type="pmid">12098155</pub-id></citation></ref>
<ref id="B9"><label>9</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Masiero</surname> <given-names>S</given-names></name> <name><surname>Armani</surname> <given-names>M</given-names></name> <name><surname>Rosati</surname> <given-names>G</given-names></name></person-group>. <article-title>Upper-limb robot-assisted therapy in rehabilitation of acute stroke patients: focused review and results of new randomized controlled trial</article-title>. <source>J Rehabil Res Dev</source> (<year>2011</year>) <volume>48</volume>(<issue>4</issue>):<fpage>355</fpage>&#x02013;<lpage>66</lpage>.<pub-id pub-id-type="doi">10.1682/JRRD.2010.04.0063</pub-id><pub-id pub-id-type="pmid">21674388</pub-id></citation></ref>
<ref id="B10"><label>10</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fazekas</surname> <given-names>G</given-names></name> <name><surname>Horvath</surname> <given-names>M</given-names></name> <name><surname>Troznai</surname> <given-names>T</given-names></name> <name><surname>Toth</surname> <given-names>A</given-names></name></person-group>. <article-title>Robot-mediated upper limb physiotherapy for patients with spastic hemiparesis: a preliminary study</article-title>. <source>J Rehabil Med</source> (<year>2007</year>) <volume>39</volume>(<issue>7</issue>):<fpage>580</fpage>&#x02013;<lpage>2</lpage>.<pub-id pub-id-type="doi">10.2340/16501977-0087</pub-id><pub-id pub-id-type="pmid">17724559</pub-id></citation></ref>
<ref id="B11"><label>11</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jones</surname> <given-names>CL</given-names></name> <name><surname>Wang</surname> <given-names>F</given-names></name> <name><surname>Morrison</surname> <given-names>R</given-names></name> <name><surname>Sarkar</surname> <given-names>N</given-names></name> <name><surname>Kamper</surname> <given-names>DG</given-names></name></person-group>. <article-title>Design and development of the cable actuated finger exoskeleton for hand rehabilitation following stroke</article-title>. <source>IEEE/ASME Trans Mechatron</source> (<year>2014</year>) <volume>19</volume>(<issue>1</issue>):<fpage>131</fpage>&#x02013;<lpage>40</lpage>.<pub-id pub-id-type="doi">10.1109/TMECH.2012.2224359</pub-id></citation></ref>
<ref id="B12"><label>12</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zanotto</surname> <given-names>D</given-names></name> <name><surname>Rosati</surname> <given-names>G</given-names></name> <name><surname>Minto</surname> <given-names>S</given-names></name> <name><surname>Rossi</surname> <given-names>A</given-names></name></person-group>. <article-title>Sophia-3: a semiadaptive cable-driven rehabilitation device with a tilting working plane</article-title>. <source>IEEE Trans Robot</source> (<year>2014</year>) <volume>30</volume>(<issue>4</issue>):<fpage>974</fpage>&#x02013;<lpage>9</lpage>.<pub-id pub-id-type="doi">10.1109/TRO.2014.2301532</pub-id></citation></ref>
<ref id="B13"><label>13</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gaponov</surname> <given-names>I</given-names></name> <name><surname>Popov</surname> <given-names>D</given-names></name> <name><surname>Lee</surname> <given-names>SJ</given-names></name> <name><surname>Ryu</surname> <given-names>J-H</given-names></name></person-group>. <article-title>Auxilio: a portable cable-driven exosuit for upper extremity assistance</article-title>. <source>Int J Control Autom. Syst</source> (<year>2017</year>) <volume>15</volume>(<issue>1</issue>):<fpage>73</fpage>&#x02013;<lpage>84</lpage>.<pub-id pub-id-type="doi">10.1007/s12555-016-0487-7</pub-id></citation></ref>
<ref id="B14"><label>14</label><citation citation-type="confproc"><person-group person-group-type="editor"><name><surname>Yu</surname> <given-names>W</given-names></name> <name><surname>Rosen</surname> <given-names>J</given-names></name></person-group>, editors. <article-title>A novel linear PID controller for an upper limb exoskeleton</article-title>. <conf-name>49th IEEE Conference on Decision and Control (CDC)</conf-name>. <conf-loc>Atlanta</conf-loc> (<year>2010</year>).</citation></ref>
<ref id="B15"><label>15</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Babaiasl</surname> <given-names>M</given-names></name> <name><surname>Mahdioun</surname> <given-names>SH</given-names></name> <name><surname>Jaryani</surname> <given-names>P</given-names></name> <name><surname>Yazdani</surname> <given-names>M</given-names></name></person-group>. <article-title>A review of technological and clinical aspects of robot-aided rehabilitation of upper-extremity after stroke</article-title>. <source>Disabil Rehabil Assist Technol</source> (<year>2016</year>) <volume>11</volume>(<issue>4</issue>):<fpage>263</fpage>&#x02013;<lpage>80</lpage>.<pub-id pub-id-type="doi">10.3109/17483107.2014.1002539</pub-id><pub-id pub-id-type="pmid">25600057</pub-id></citation></ref>
<ref id="B16"><label>16</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nef</surname> <given-names>T</given-names></name> <name><surname>Mihelj</surname> <given-names>M</given-names></name> <name><surname>Riener</surname> <given-names>R</given-names></name></person-group>. <article-title>ARMin: a robot for patient-cooperative arm therapy</article-title>. <source>Med Biol Eng Comput</source> (<year>2007</year>) <volume>45</volume>(<issue>9</issue>):<fpage>887</fpage>&#x02013;<lpage>900</lpage>.<pub-id pub-id-type="doi">10.1007/s11517-007-0226-6</pub-id><pub-id pub-id-type="pmid">17674069</pub-id></citation></ref>
<ref id="B17"><label>17</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hill</surname> <given-names>J</given-names></name> <name><surname>Fahimi</surname> <given-names>F</given-names></name></person-group>. <article-title>Active disturbance rejection for walking bipedal robots using the acceleration of the upper limbs</article-title>. <source>Robotica</source> (<year>2014</year>) <volume>33</volume>(<issue>2</issue>):<fpage>264</fpage>&#x02013;<lpage>81</lpage>.<pub-id pub-id-type="doi">10.1017/S0263574714000332</pub-id></citation></ref>
<ref id="B18"><label>18</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rahman</surname> <given-names>MH</given-names></name> <name><surname>Rahman</surname> <given-names>MJ</given-names></name> <name><surname>Cristobal</surname> <given-names>OL</given-names></name> <name><surname>Saad</surname> <given-names>M</given-names></name> <name><surname>Kenn&#x000E9;</surname> <given-names>JP</given-names></name> <name><surname>Archambault</surname> <given-names>PS</given-names></name></person-group>. <article-title>Development of a whole arm wearable robotic exoskeleton for rehabilitation and to assist upper limb movements</article-title>. <source>Robotica</source> (<year>2014</year>) <volume>33</volume>(<issue>1</issue>):<fpage>19</fpage>&#x02013;<lpage>39</lpage>.<pub-id pub-id-type="doi">10.1017/S0263574714000034</pub-id></citation></ref>
<ref id="B19"><label>19</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xianzhi</surname> <given-names>J</given-names></name> <name><surname>Zenghuai</surname> <given-names>W</given-names></name> <name><surname>Chao</surname> <given-names>Z</given-names></name> <name><surname>Liangliang</surname> <given-names>Y</given-names></name></person-group>. <article-title>Fuzzy neural network control of the rehabilitation robotic arm driven by pneumatic muscles</article-title>. <source>Ind Robot Int J</source> (<year>2015</year>) <volume>42</volume>(<issue>1</issue>):<fpage>36</fpage>&#x02013;<lpage>43</lpage>.<pub-id pub-id-type="doi">10.1108/IR-07-2014-0374</pub-id></citation></ref>
<ref id="B20"><label>20</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Guga</surname> <given-names>J</given-names></name></person-group>. <article-title>Cyborg tales: the reinvention of the human in the information age</article-title>. In: <person-group person-group-type="editor"><name><surname>Romportl</surname> <given-names>J</given-names></name> <name><surname>Zackova</surname> <given-names>E</given-names></name> <name><surname>Kelemen</surname> <given-names>J</given-names></name></person-group>, editors. <source>Beyond Artificial Intelligence: The Disappearing Human-Machine Divide</source>. <publisher-loc>Cham</publisher-loc>: <publisher-name>Springer International Publishing</publisher-name> (<year>2015</year>). p. <fpage>45</fpage>&#x02013;<lpage>62</lpage>.</citation></ref>
<ref id="B21"><label>21</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Choi</surname> <given-names>S-B</given-names></name> <name><surname>Kim</surname> <given-names>J</given-names></name></person-group>. <article-title>A fuzzy-sliding mode controller for robust tracking of robotic manipulators</article-title>. <source>Mechatronics</source> (<year>1997</year>) <volume>7</volume>(<issue>2</issue>):<fpage>199</fpage>&#x02013;<lpage>216</lpage>.<pub-id pub-id-type="doi">10.1016/S0957-4158(96)00045-1</pub-id></citation></ref>
<ref id="B22"><label>22</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Young</surname> <given-names>KD</given-names></name> <name><surname>Utkin</surname> <given-names>VI</given-names></name> <name><surname>Ozguner</surname> <given-names>U</given-names></name></person-group>. <article-title>A control engineer&#x02019;s guide to sliding mode control</article-title>. <source>IEEE Trans Control Syst Technol</source> (<year>1999</year>) <volume>7</volume>(<issue>3</issue>):<fpage>328</fpage>&#x02013;<lpage>42</lpage>.<pub-id pub-id-type="doi">10.1109/87.761053</pub-id></citation></ref>
<ref id="B23"><label>23</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xu</surname> <given-names>JX</given-names></name> <name><surname>Guo</surname> <given-names>ZQ</given-names></name> <name><surname>Lee</surname> <given-names>TH</given-names></name></person-group>. <article-title>Design and implementation of integral sliding-mode control on an underactuated two-wheeled mobile robot</article-title>. <source>IEEE Trans Ind Electron</source> (<year>2014</year>) <volume>61</volume>(<issue>7</issue>):<fpage>3671</fpage>&#x02013;<lpage>81</lpage>.<pub-id pub-id-type="doi">10.1109/TIE.2013.2282594</pub-id></citation></ref>
<ref id="B24"><label>24</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname> <given-names>Z</given-names></name> <name><surname>Su</surname> <given-names>CY</given-names></name> <name><surname>Wang</surname> <given-names>L</given-names></name> <name><surname>Chen</surname> <given-names>Z</given-names></name> <name><surname>Chai</surname> <given-names>T</given-names></name></person-group>. <article-title>Nonlinear disturbance observer-based control design for a robotic exoskeleton incorporating fuzzy approximation</article-title>. <source>IEEE Trans Ind Electron</source> (<year>2015</year>) <volume>62</volume>(<issue>9</issue>):<fpage>5763</fpage>&#x02013;<lpage>75</lpage>.<pub-id pub-id-type="doi">10.1109/TIE.2015.2447498</pub-id></citation></ref>
<ref id="B25"><label>25</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zi</surname> <given-names>B</given-names></name> <name><surname>Duan</surname> <given-names>BY</given-names></name> <name><surname>Du</surname> <given-names>JL</given-names></name> <name><surname>Bao</surname> <given-names>H</given-names></name></person-group>. <article-title>Dynamic modeling and active control of a cable-suspended parallel robot</article-title>. <source>Mechatronics</source> (<year>2008</year>) <volume>18</volume>(<issue>1</issue>):<fpage>1</fpage>&#x02013;<lpage>12</lpage>.<pub-id pub-id-type="doi">10.1016/j.mechatronics.2007.09.004</pub-id></citation></ref>
<ref id="B26"><label>26</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wen-Hua</surname> <given-names>C</given-names></name> <name><surname>Ballance</surname> <given-names>DJ</given-names></name> <name><surname>Gawthrop</surname> <given-names>PJ</given-names></name> <name><surname>Reilly</surname> <given-names>JO</given-names></name></person-group>. <article-title>A nonlinear disturbance observer for robotic manipulators</article-title>. <source>IEEE Trans Ind Electron</source> (<year>2000</year>) <volume>47</volume>(<issue>4</issue>):<fpage>932</fpage>&#x02013;<lpage>8</lpage>.<pub-id pub-id-type="doi">10.1109/41.857974</pub-id></citation></ref>
<ref id="B27"><label>27</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wen-Hua</surname> <given-names>C</given-names></name></person-group>. <article-title>Disturbance observer based control for nonlinear systems</article-title>. <source>IEEE/ASME Trans Mechatron</source> (<year>2004</year>) <volume>9</volume>(<issue>4</issue>):<fpage>706</fpage>&#x02013;<lpage>10</lpage>.<pub-id pub-id-type="doi">10.1109/TMECH.2004.839034</pub-id></citation></ref>
<ref id="B28"><label>28</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mohammed</surname> <given-names>S</given-names></name> <name><surname>Huo</surname> <given-names>W</given-names></name> <name><surname>Huang</surname> <given-names>J</given-names></name> <name><surname>Rifa&#x000EF;</surname> <given-names>H</given-names></name> <name><surname>Amirat</surname> <given-names>Y</given-names></name></person-group>. <article-title>Nonlinear disturbance observer based sliding mode control of a human-driven knee joint orthosis</article-title>. <source>Rob Auton Syst</source> (<year>2016</year>) <volume>75</volume>(<issue>Pt A</issue>):<fpage>41</fpage>&#x02013;<lpage>9</lpage>.<pub-id pub-id-type="doi">10.1016/j.robot.2014.10.013</pub-id></citation></ref>
<ref id="B29"><label>29</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Erbatur</surname> <given-names>K</given-names></name> <name><surname>&#x000C7;all&#x00131;</surname> <given-names>B</given-names></name></person-group>. <article-title>Fuzzy boundary layer tuning for sliding mode systems as applied to the control of a direct drive robot</article-title>. <source>Soft Comput</source> (<year>2008</year>) <volume>13</volume>(<issue>11</issue>):<fpage>1099</fpage>.<pub-id pub-id-type="doi">10.1007/s00500-008-0383-z</pub-id></citation></ref>
<ref id="B30"><label>30</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wai</surname> <given-names>RJ</given-names></name></person-group>. <article-title>Fuzzy sliding-mode control using adaptive tuning technique</article-title>. <source>IEEE Trans Ind Electron</source> (<year>2007</year>) <volume>54</volume>(<issue>1</issue>):<fpage>586</fpage>&#x02013;<lpage>94</lpage>.<pub-id pub-id-type="doi">10.1109/TIE.2006.888807</pub-id></citation></ref>
<ref id="B31"><label>31</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lee</surname> <given-names>H</given-names></name> <name><surname>Utkin</surname> <given-names>VI</given-names></name></person-group>. <article-title>Chattering suppression methods in sliding mode control systems</article-title>. <source>Annu Rev Control</source> (<year>2007</year>) <volume>31</volume>(<issue>2</issue>):<fpage>179</fpage>&#x02013;<lpage>88</lpage>.<pub-id pub-id-type="doi">10.1016/j.arcontrol.2007.08.001</pub-id></citation></ref>
<ref id="B32"><label>32</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Deshpande</surname> <given-names>VS</given-names></name> <name><surname>Mohan</surname> <given-names>B</given-names></name> <name><surname>Shendge</surname> <given-names>PD</given-names></name> <name><surname>Phadke</surname> <given-names>SB</given-names></name></person-group>. <article-title>Disturbance observer based sliding mode control of active suspension systems</article-title>. <source>J Sound Vib</source> (<year>2014</year>) <volume>333</volume>(<issue>11</issue>):<fpage>2281</fpage>&#x02013;<lpage>96</lpage>.<pub-id pub-id-type="doi">10.1016/j.jsv.2014.01.023</pub-id></citation></ref>
<ref id="B33"><label>33</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xie</surname> <given-names>WF</given-names></name></person-group>. <article-title>Sliding-mode-observer-based adaptive control for servo actuator with friction</article-title>. <source>IEEE Trans Ind Electron</source> (<year>2007</year>) <volume>54</volume>(<issue>3</issue>):<fpage>1517</fpage>&#x02013;<lpage>27</lpage>.<pub-id pub-id-type="doi">10.1109/TIE.2007.894718</pub-id></citation></ref>
<ref id="B34"><label>34</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mukherjee</surname> <given-names>A</given-names></name> <name><surname>Chakravarty</surname> <given-names>A</given-names></name></person-group>. <article-title>Spasticity mechanisms &#x02013; for the clinician</article-title>. <source>Front Neurol</source> (<year>2010</year>) <volume>1</volume>:<fpage>149</fpage>.<pub-id pub-id-type="doi">10.3389/fneur.2010.00149</pub-id></citation></ref>
</ref-list>
</back>
</article>