<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Robot. AI</journal-id>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1534040</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2025.1534040</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Robotics and AI</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Sliding-mode control based on prescribed performance function and its application to a SEA-Based lower limb exoskeleton</article-title>
<alt-title alt-title-type="left-running-head">Zhang et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/frobt.2025.1534040">10.3389/frobt.2025.1534040</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Zhang</surname>
<given-names>Feilong</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/formal-analysis/"/>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Wang</surname>
<given-names>Tian</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/resources/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/visualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Zhang</surname>
<given-names>Liang</given-names>
</name>
<xref ref-type="aff" rid="aff4">
<sup>4</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/resources/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Shi</surname>
<given-names>Enming</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2526717/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/data-curation/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Wang</surname>
<given-names>Chengchao</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2941340/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Li</surname>
<given-names>Ning</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/814017/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/resources/"/>
<role content-type="https://credit.niso.org/contributor-roles/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Lu</surname>
<given-names>Yu</given-names>
</name>
<xref ref-type="aff" rid="aff4">
<sup>4</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/resources/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Zhang</surname>
<given-names>Bi</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2357929/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>State Key Laboratory of Robotics</institution>, <institution>Shenyang Institute of Automation</institution>, <institution>Chinese Academy of Sciences</institution>, <addr-line>Shenyang</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>University of Chinese Academy of Sciences</institution>, <addr-line>Beijing</addr-line>, <country>China</country>
</aff>
<aff id="aff3">
<sup>3</sup>
<institution>The Fourth Affiliated Hospital of China Medical University</institution>, <addr-line>Shenyang</addr-line>, <country>China</country>
</aff>
<aff id="aff4">
<sup>4</sup>
<institution>Department of Rehabilitation Medicine</institution>, <institution>The People&#x2019;s Hospital of Liaoning Province</institution>, <addr-line>Shenyang</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1807895/overview">Gustavo J. G. Lahr</ext-link>, Hospital Israelita Albert Einstein, Brazil</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2581822/overview">Shuchen Ding</ext-link>, Suzhou University of Science and Technology, China</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2646328/overview">Xiaolong Chen</ext-link>, Chongqing University, China</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Tian Wang, <email>wangtian@cmu.edu.cn</email>; Liang Zhang, <email>d1949@lnph.com</email>; Yu Lu, <email>d1848@lnph.com</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>04</day>
<month>03</month>
<year>2025</year>
</pub-date>
<pub-date pub-type="collection">
<year>2025</year>
</pub-date>
<volume>12</volume>
<elocation-id>1534040</elocation-id>
<history>
<date date-type="received">
<day>25</day>
<month>11</month>
<year>2024</year>
</date>
<date date-type="accepted">
<day>06</day>
<month>02</month>
<year>2025</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2025 Zhang, Wang, Zhang, Shi, Wang, Li, Lu and Zhang.</copyright-statement>
<copyright-year>2025</copyright-year>
<copyright-holder>Zhang, Wang, Zhang, Shi, Wang, Li, Lu and Zhang</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>A sliding-mode control based on a prescribed performance function is proposed for discrete-time single-input single-output systems. The controller design aims to maintain the tracking error in a predefined convergence zone described by a performance function. However, due to the fixed structure of the controller, the applicability and universality of this method are limited. To address this issue, we separate the controller into two parts and analyze the principle of the prescribed performance control (PPC) method. Then we can replace the linear part of the controller with model-based control methods to adapt to the specific characteristics of the controlled system. Compared with current works, when the established system model is inaccurate, we can enhance the smoothness or response speed of the system by introducing a penalty constant to alter the system&#x2019;s transient characteristics while the tracking error is within the prescribed domain. Finally, numerical comparison simulations and a lower limb exoskeleton experiment illustrate the established results and the effectiveness of the proposed method.</p>
</abstract>
<kwd-group>
<kwd>prescribed performance</kwd>
<kwd>sliding-mode control</kwd>
<kwd>predefined convergence zone</kwd>
<kwd>lower limb exoskeleton</kwd>
<kwd>transient characteristics</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Robot Design</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Most control methods are performance-based methods. For example, the parameters of the PID are designed either to obtain the desired performance of rise time, maximum overshoot and steady-state error of the unit-step response of the system, or to achieve the desired sheared frequency and phase margin through Nichols plot or Bode diagram. If the performance of higher-order system cannot be guaranteed by PID controller, we can not only introduce the state/output feedback control and self-tuning method to achieve the desired locations of the poles which determine the speed and damping of the system response, but also apply the LQR, minimum variance control and predictive control methods to acquire the optimal control performance (<xref ref-type="bibr" rid="B21">Mir and Senroy, 2020</xref>; <xref ref-type="bibr" rid="B14">Kim and Ahn, 2018</xref>; <xref ref-type="bibr" rid="B27">Tajaddodianfar et al., 2019</xref>; <xref ref-type="bibr" rid="B16">Liang et al., 2019</xref>; <xref ref-type="bibr" rid="B1">Ahmed et al., 2017</xref>; <xref ref-type="bibr" rid="B23">Rosolia and Borrelli, 2017</xref>). Additionally, in consideration of some systems with the slight nonlinearity, parameter uncertainty and even unknown structures, the performance of adaptability is made possible through combining the online estimate algorithm with the above controller according to the certainty equivalence principle (<xref ref-type="bibr" rid="B2">&#xc5;str&#xf6;m and Wittenmark, 2013</xref>; <xref ref-type="bibr" rid="B13">Goodwin and Sin, 2009</xref>; <xref ref-type="bibr" rid="B32">Zhou et al., 2018</xref>; <xref ref-type="bibr" rid="B31">Zheng et al., 2016</xref>; <xref ref-type="bibr" rid="B28">Xi et al., 2024</xref>; <xref ref-type="bibr" rid="B7">Chen et al., 2021</xref>).</p>
<p>Considerable efforts have been made to deal with the design of the prescribed performance controller (PPC) for a kind of output constrained control problem. This methodology originates from (<xref ref-type="bibr" rid="B3">Bechlioulis and Rovithakis, 2008</xref>) and means that the tracking error should converge to an arbitrarily small residual set. Its advantage is that both transient and steady-state performance of the system can be assured, i.e., the convergence rate is no less than a prespecified value and the maximum overshot is less than a small prespecified domain (<xref ref-type="bibr" rid="B4">Bechlioulis and Rovithakis, 2009</xref>; <xref ref-type="bibr" rid="B5">Bechlioulis and Rovithakis, 2011</xref>; <xref ref-type="bibr" rid="B6">Bechlioulis and Rovithakis, 2014</xref>). In addition, a series of state feedback control schemes are proposed in combination with fault tolerance (<xref ref-type="bibr" rid="B12">Gao et al., 2022</xref>), fuzzy adaptive (<xref ref-type="bibr" rid="B7">Chen et al., 2021</xref>; <xref ref-type="bibr" rid="B26">Sui et al., 2021</xref>), finite-time index (<xref ref-type="bibr" rid="B10">Dong and Yang, 2022</xref>; <xref ref-type="bibr" rid="B11">Gao et al., 2021</xref>; <xref ref-type="bibr" rid="B17">Liang et al., 2022</xref>), and neural network finite-time index (<xref ref-type="bibr" rid="B24">Shi et al., 2024</xref>; <xref ref-type="bibr" rid="B9">Deng et al., 2022</xref>) for realization of the PPC.</p>
<p>The aforementioned PPC methods are based on continuous state space model, however, sometimes discrete-time control methods are more difficult to analyze and are more suitable for computer control in industrial setting. A kind of sliding mode control based on ARX model was proposed by <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref> to maintain the tracking error trajectory in a predefined convergence zone described by the performance function. Similarly, (<xref ref-type="bibr" rid="B18">Liu and Yang, 2018</xref>; <xref ref-type="bibr" rid="B19">Liu and Yang, 2019a</xref>; <xref ref-type="bibr" rid="B20">Liu and Yang, 2019b</xref>), propose one class of sliding mode control based on the equivalent dynamic linearization model and introduce the online identification for the adaptability of this class of method in nonlinear systems (<xref ref-type="bibr" rid="B29">Zhang et al., 2020</xref>; <xref ref-type="bibr" rid="B30">Zhang et al., 2021</xref>). Generally speaking, we shall begin with the topic on the certain linear system with ARX model like <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref> for more easily understanding the principle of this class of discrete PPC method (<xref ref-type="bibr" rid="B22">Nguyen et al., 2017</xref>; <xref ref-type="bibr" rid="B18">Liu and Yang, 2018</xref>; <xref ref-type="bibr" rid="B19">Liu and Yang, 2019a</xref>; <xref ref-type="bibr" rid="B20">Liu and Yang, 2019b</xref>), because the adaptability for the uncertainty or nonlinearity is radically introduced by on-line parameters estimation according to certainty equivalence principle <xref ref-type="bibr" rid="B2">&#xc5;str&#xf6;m and Wittenmark, 2013</xref>; <xref ref-type="bibr" rid="B13">Goodwin and Sin, 2009</xref>). In addition, <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref> mainly focuses on the tracking performance, which is determined by performance function, and disregards the transient characteristics which can be changed through the adjustment of the parameters in controller. Actually, the prescribed performance is not the only index of system performance, and many well-known and visible transient performance indexes of the system should be concerned.</p>
<p>This paper proposes a new sliding mode control with a prescribed performance function. To enhance the applicability and universality of the PPC method, we separate the proposed controller into two parts: the linear feedback part and the nonlinear part. The linear part stabilizes the system by placing the poles of the system at the origin point to hold the system output and satisfy the optimal control index. Meanwhile, the actual output zone is enlarged by adding the nonlinear part of the controller, while the output error is still guaranteed within the prescribed zone defined by <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref> and <xref ref-type="bibr" rid="B18">Liu and Yang (2018)</xref>, <xref ref-type="bibr" rid="B19">Liu and Yang (2019a)</xref>, <xref ref-type="bibr" rid="B20">Liu and Yang (2019b)</xref>. More precisely, simulations show that the linear part is the prerequisite for guaranteeing the convergence of tracking error within a predefined arbitrarily small zone. At the same time, the maximum overshot is less than the desired constant.</p>
<p>The main contributions are summarized as follows: i) To address the issue where the linear part of the controller cannot ensure sufficiently small errors under conditions of inaccurate modeling, we modify the denominator of the controller by introducing a penalty constant to tune the system behaviors. In this way, we can guarantee the system&#x2019;s output within the prescribed zone and tune the introduced penalty constant to further improve the other system&#x2019;s transient characteristics, such as smoothness, response speed, overshoot, etc. ii) We replace the linear part of the PPC controller with a dynamic model of the exoskeleton, and propose an incremental PPC controller based on PID &#x2b; dynamics to ensure that the tracking error remains within a predefined region. The proposed control method is then successfully applied on a lower limb exoskeleton.</p>
<p>The rest of the paper is organized as follows: <xref ref-type="sec" rid="s2">Section 2</xref> provides the problem formulation and preliminaries. <xref ref-type="sec" rid="s3">Section 3</xref> introduces the design procedure and stability analysis of the proposed method. <xref ref-type="sec" rid="s4">Section 4</xref> presents simulations to study the PPC method and an experiment to test the controller. The conclusion is given in <xref ref-type="sec" rid="s5">Section 5</xref>.</p>
</sec>
<sec id="s2">
<title>2 Problem formulation and preliminaries</title>
<sec id="s2-1">
<title>2.1 System description</title>
<p>Consider the single-input and single-output discrete-time linear dynamical system (<xref ref-type="disp-formula" rid="e1">Equation 1</xref>) as follow:<disp-formula id="e1">
<mml:math id="m1">
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>where <inline-formula id="inf1">
<mml:math id="m2">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the control input; <inline-formula id="inf2">
<mml:math id="m3">
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the measured output; <inline-formula id="inf3">
<mml:math id="m4">
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the unknown modeling errors and nonlinearities. <inline-formula id="inf4">
<mml:math id="m5">
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi>z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf5">
<mml:math id="m6">
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi>z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> are defined as <xref ref-type="disp-formula" rid="e2">Equation 2</xref>
<disp-formula id="e2">
<mml:math id="m7">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mspace width="0.2em"/>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:msup>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:msup>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mtext>&#x2009;</mml:mtext>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:msup>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mi mathvariant="bold-italic">z</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(2)</label>
</disp-formula>where <italic>n</italic>
<sub>
<italic>a</italic>
</sub> and <italic>n</italic>
<sub>
<italic>b</italic>
</sub> are the orders of system output and control input, respectively.</p>
<p>
<statement content-type="assumption" id="Assumption_1">
<label>Assumption 1</label>
<p>
<italic>The unmodeled dynamics</italic> <inline-formula id="inf6">
<mml:math id="m8">
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is slowly varying with respect to the sampling frequency and the unmodeled dynamics estimation error satisfies the condition that <inline-formula id="inf7">
<mml:math id="m9">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="|" close="|" separators="|">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b6;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, where <inline-formula id="inf8">
<mml:math id="m10">
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is a small positive number.</p>
</statement>
</p>
</sec>
<sec id="s2-2">
<title>2.2 Prescribed performance function</title>
<p>The prescribed performance control method proposed by <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref> and <xref ref-type="bibr" rid="B18">Liu and Yang (2018)</xref>, <xref ref-type="bibr" rid="B19">Liu and Yang (2019a)</xref>, <xref ref-type="bibr" rid="B20">Liu and Yang (2019b)</xref> is designed to ensure adherence to specified tracking error constraints (<xref ref-type="disp-formula" rid="e3">Equation 3</xref>) as follows:<disp-formula id="e3">
<mml:math id="m11">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>where <italic>y</italic>
<sub>
<italic>d</italic>
</sub>(<italic>k</italic>) represents the desired output of the system at the time <italic>k</italic>; <inline-formula id="inf9">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf10">
<mml:math id="m13">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represent the lower and upper bounds, respectively. <inline-formula id="inf11">
<mml:math id="m14">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a bounded and strictly positive decreasing function with the property (<xref ref-type="disp-formula" rid="e4">Equation 4</xref>) as follow:<disp-formula id="e4">
<mml:math id="m15">
<mml:mrow>
<mml:munder>
<mml:mi mathvariant="bold-italic">lim</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x221e;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">&#x221e;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>and have given the performance function and the upper and lower bounds (<xref ref-type="disp-formula" rid="e5">Equations 5</xref>&#x2013;<xref ref-type="disp-formula" rid="e7">7</xref>) as follow:<disp-formula id="e5">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3ba;</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">&#x221e;</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3ba;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
<disp-formula id="e6">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3ba;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3ba;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
<disp-formula id="e7">
<mml:math id="m18">
<mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3ba;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3ba;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>where <inline-formula id="inf12">
<mml:math id="m19">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>&#x221e;</mml:mi>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf13">
<mml:math id="m20">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>&#x3ba;</mml:mi>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>To address the constrained control issue (<xref ref-type="disp-formula" rid="e3">Equation 3</xref>), we transform the tracking error <inline-formula id="inf14">
<mml:math id="m21">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> into an unconstrained equivalent form and give a strictly increasing function <inline-formula id="inf15">
<mml:math id="m22">
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> of a transformed error <inline-formula id="inf16">
<mml:math id="m23">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. Define<disp-formula id="e8">
<mml:math id="m24">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">&#x398;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>The strictly increasing function must satisfy the following conditions (<xref ref-type="disp-formula" rid="e9">Equations 9</xref>, <xref ref-type="disp-formula" rid="e10">10</xref>).<disp-formula id="e9">
<mml:math id="m25">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x398;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
<disp-formula id="e10">
<mml:math id="m26">
<mml:mrow>
<mml:munder>
<mml:mi mathvariant="bold-italic">lim</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x221e;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mi mathvariant="bold-italic">&#x398;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mtext>&#x2009;and&#x2009;</mml:mtext>
<mml:munder>
<mml:mi mathvariant="bold-italic">lim</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x221e;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mi mathvariant="bold-italic">&#x398;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>Due to the above properties of <inline-formula id="inf17">
<mml:math id="m27">
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf18">
<mml:math id="m28">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>&#x221e;</mml:mi>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, the inverse transformation can be obtained by <xref ref-type="disp-formula" rid="e11">Equation 11</xref>
<disp-formula id="e11">
<mml:math id="m29">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x398;</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>With regard to the given tracking error <inline-formula id="inf19">
<mml:math id="m30">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, if <inline-formula id="inf20">
<mml:math id="m31">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is selected such that <inline-formula id="inf21">
<mml:math id="m32">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf22">
<mml:math id="m33">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is bounded, then <inline-formula id="inf23">
<mml:math id="m34">
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> holds and (<xref ref-type="disp-formula" rid="e3">Equation 3</xref>) is guaranteed.</p>
<p>We introduce a strictly increasing function (<xref ref-type="disp-formula" rid="e12">Equation 12</xref>) for control design.<disp-formula id="e12">
<mml:math id="m35">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x398;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:msup>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>Then we have the transformed error <inline-formula id="inf24">
<mml:math id="m36">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c4;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> as follows:<disp-formula id="e13">
<mml:math id="m37">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mi mathvariant="bold-italic">ln</mml:mi>
<mml:mo>&#x2061;</mml:mo>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>When <italic>a</italic> &#x3d; 1 and <italic>b</italic> &#x3d; 2, (<xref ref-type="disp-formula" rid="e13">Equation 13</xref>) will degenerate into the transformed error in <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref>.</p>
<p>The above prescribed performance function design in <xref ref-type="bibr" rid="B18">Liu and Yang (2018)</xref>, <xref ref-type="bibr" rid="B19">Liu and Yang (2019a)</xref>, <xref ref-type="bibr" rid="B20">Liu and Yang (2019b)</xref> is designed for the system without consideration of unmodeled dynamics, then <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref> further modified the tracking error constraint (<xref ref-type="disp-formula" rid="e3">Equation 3</xref>) into<disp-formula id="e14">
<mml:math id="m38">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>Which takes the unmodeled dynamics including the disturbance and nonlinearities and offset error into consideration. <italic>&#x3b4;</italic> is a small constant (<xref ref-type="bibr" rid="B22">Nguyen et al., 2017</xref>).</p>
</sec>
</sec>
<sec id="s3">
<title>3 Prescribed performance control design</title>
<p>Consider the following sliding mode function (<xref ref-type="disp-formula" rid="e15">Equation 15</xref>):<disp-formula id="e15">
<mml:math id="m39">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>where <inline-formula id="inf25">
<mml:math id="m40">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is a variable derived from the transformed error and is defined as <xref ref-type="disp-formula" rid="e16">Equation 16</xref>
<disp-formula id="e16">
<mml:math id="m41">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>Then the reaching condition is given as follows:<disp-formula id="e17">
<mml:math id="m42">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>where <inline-formula id="inf26">
<mml:math id="m43">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x39b;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. In this note, we adopt<disp-formula id="e18">
<mml:math id="m44">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>We can obtain the one step-ahead tracking error as follows<disp-formula id="equ1">
<mml:math id="m45">
<mml:mrow>
<mml:mspace width="-11em"/>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="e19">
<mml:math id="m46">
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>
<disp-formula id="equ2">
<mml:math id="m47">
<mml:mrow>
<mml:mspace width="1.50em"/>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>Here, we define <inline-formula id="inf27">
<mml:math id="m48">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b6;</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> as the estimated unmodeled dynamics. According to the discrete-time perturbation estimation technique (<xref ref-type="bibr" rid="B22">Nguyen et al., 2017</xref>), we can estimate this unknown term by one-step delayed value as follows:<disp-formula id="e20">
<mml:math id="m49">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x2248;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="3.50em"/>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>We define the perturbation estimation error <inline-formula id="inf28">
<mml:math id="m50">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b6;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> as follow<disp-formula id="e21">
<mml:math id="m51">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>
</p>
<p>From <xref ref-type="disp-formula" rid="e17">Equations 17</xref>, <xref ref-type="disp-formula" rid="e18">18</xref>, <xref ref-type="disp-formula" rid="e20">20</xref>, <xref ref-type="disp-formula" rid="e21">21</xref>, we have<disp-formula id="e22">
<mml:math id="m52">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>
</p>
<p>Then we have (<xref ref-type="disp-formula" rid="e23">Equation 23</xref>) by simplifying (<xref ref-type="disp-formula" rid="e22">Equation 22</xref>).<disp-formula id="equ3">
<mml:math id="m53">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="equ4">
<mml:math id="m54">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="e23">
<mml:math id="m55">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:math>
<label>(23)</label>
</disp-formula>where <inline-formula id="inf29">
<mml:math id="m56">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, (<italic>i</italic> &#x3d; 0,&#x22ef;,<italic>n</italic>
<sub>
<italic>a</italic>
</sub>) and <inline-formula id="inf30">
<mml:math id="m57">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, (<italic>j</italic> &#x3d; 0,&#x22ef;,<italic>n</italic>
<sub>
<italic>b</italic>
</sub>). Because the unmodeled dynamics estimation error <inline-formula id="inf31">
<mml:math id="m58">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b6;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is unknown in experiment (<xref ref-type="bibr" rid="B22">Nguyen et al., 2017</xref>), we can obtain the control output (<xref ref-type="disp-formula" rid="e24">Equation 24</xref>) through solving (<xref ref-type="disp-formula" rid="e23">Equation 23</xref>) with the absence of <inline-formula id="inf32">
<mml:math id="m59">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>&#x3b6;</mml:mi>
<mml:mo>&#x223c;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>.<disp-formula id="e24">
<mml:math id="m60">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mrow>
<mml:mfenced open="" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="-0.2em"/>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mrow>
<mml:mfenced open="" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(24)</label>
</disp-formula>
</p>
<p>To further study the principle of controller (<xref ref-type="disp-formula" rid="e24">Equation 24</xref>), we separate the controller into two parts as follows:<disp-formula id="e25">
<mml:math id="m61">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mrow>
<mml:mfenced open="" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(25)</label>
</disp-formula>
<disp-formula id="e26">
<mml:math id="m62">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(26)</label>
</disp-formula>where <inline-formula id="inf33">
<mml:math id="m63">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mtext>linear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> is the linear part which places all the poles of the system to the original point and it can be regarded as one-step-ahead control (OSAC); <inline-formula id="inf34">
<mml:math id="m64">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mtext>nonlinear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> denotes a nonlinear part which keeps system output not beyond the prescribed domain, although it may cause the output of system away from the desired trajectory. We name (<xref ref-type="disp-formula" rid="e24">Equation 24</xref>) by OSAC-PPC and name (<xref ref-type="disp-formula" rid="e25">Equation 25</xref>) by OSAC for conveniently discussion in the simulations.</p>
<p>Then the control law (<xref ref-type="disp-formula" rid="e24">Equation 24</xref>) can be rewritten as <xref ref-type="disp-formula" rid="e27">Equation 27</xref>
<disp-formula id="e27">
<mml:math id="m65">
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mtext mathvariant="bold">linear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mtext mathvariant="bold">nonlinear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(27)</label>
</disp-formula>
</p>
<p>
<statement content-type="theorem" id="Theorem_1">
<label>Theorem 1</label>
<p>Consider the nonlinear system (<xref ref-type="disp-formula" rid="e1">Equation 1</xref>) with sliding control law (<xref ref-type="disp-formula" rid="e24">Equation 24</xref>). If the initial parameters <inline-formula id="inf35">
<mml:math id="m66">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf36">
<mml:math id="m67">
<mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf37">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are properly selected to satisfy <inline-formula id="inf38">
<mml:math id="m69">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, the prescribed performance described by <xref ref-type="disp-formula" rid="e14">Equation 14</xref> will be guaranteed for all <inline-formula id="inf39">
<mml:math id="m70">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>Proof: The proof of Theorem 1 is given in the <xref ref-type="app" rid="app1">Appendix</xref>.</p>
</statement>
</p>
<p>
<statement content-type="remark" id="Remark_1">
<label>Remark 1</label>
<p>Similar to the existing PPC approaches in <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref> and <xref ref-type="bibr" rid="B18">Liu and Yang (2018)</xref>, <xref ref-type="bibr" rid="B19">Liu and Yang (2019a)</xref>, <xref ref-type="bibr" rid="B20">Liu and Yang (2019b)</xref>, this paper discusses a transformed error algorithm combined with a new sliding mode control strategy to guarantee the tracking error converges to a predefined zone. The control law is separated into two parts: the linear part and nonlinear part. The linear part defined as <inline-formula id="inf40">
<mml:math id="m71">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mtext>linear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> in this note is to stabilize the system by placing the poles of the system to origin point for the optimal control performance. The nonlinear part defined as <inline-formula id="inf41">
<mml:math id="m72">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> in this note keeps the output trajectory not crossing the boundaries of the prescribed domain based on the linear part. More precisely, the actual output zone is comparatively enlarged when we add the nonlinear part into the principal linear part of the controller, whereas the output error is still guaranteed within the prescribed zone which is depicted by <inline-formula id="inf42">
<mml:math id="m73">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf43">
<mml:math id="m74">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>&#x221e;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> <inline-formula id="inf44">
<mml:math id="m75">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf45">
<mml:math id="m76">
<mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf46">
<mml:math id="m77">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. In other words, the linear part is the key to guarantee the tracking error convergent to a predefined arbitrarily small zone with convergence rate no less than a preassigned value and the maximum overshoot less than a desired constant. To this end, we can replace the linear part with any other kind of model-based control methods, such as PID, self-tuning control and Model predictive control (MPC), etc., as long as they are able to guarantee the tracking error within a sufficient small range, so as to accommodate the effects caused by nonlinear part for the achievement of the prescribed performance in <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref> and <xref ref-type="bibr" rid="B18">Liu and Yang (2018)</xref>, <xref ref-type="bibr" rid="B19">Liu and Yang (2019a)</xref>, <xref ref-type="bibr" rid="B20">Liu and Yang (2019b)</xref>.</p>
<p>On the other hand, to avoid the estimated parameter <inline-formula id="inf47">
<mml:math id="m78">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>b</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> close to zero or to change the control effect of the linear part, we can modify the OSAC-PPC (24) into (28) with introducing the parameter <italic>&#x3bb;</italic> in denominator as follow:<disp-formula id="e28">
<mml:math id="m79">
<mml:mrow>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3bb;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mover accent="true">
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mo>&#x2206;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(28)</label>
</disp-formula>where <inline-formula id="inf48">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>a</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>a</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>b</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>b</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represent the estimated values of <inline-formula id="inf49">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x22ef;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, respectively. Then the modified controller (<xref ref-type="disp-formula" rid="e28">Equation 28</xref>) has the identical structure with those in <xref ref-type="bibr" rid="B18">Liu and Yang (2018)</xref>, <xref ref-type="bibr" rid="B19">Liu and Yang (2019a)</xref>, <xref ref-type="bibr" rid="B20">Liu and Yang (2019b)</xref>. And we name (<xref ref-type="disp-formula" rid="e28">Equation 28</xref>) by improved OSAC-PPC.</p>
</statement>
</p>
</sec>
<sec id="s4">
<title>4 Experiment and result</title>
<p>
<statement content-type="example" id="Example_1">
<label>Example 1</label>
<p>Consider the system (<xref ref-type="disp-formula" rid="e29">Equation 29</xref>) in <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref>.<disp-formula id="e29">
<mml:math id="m82">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(29)</label>
</disp-formula>where <italic>a</italic>
<sub>1</sub> &#x3d; &#x2212;0.1903, <italic>a</italic>
<sub>2</sub> &#x3d; &#x2212;0.00906, <italic>b</italic>
<sub>1</sub> &#x3d; 0.4906 and <italic>b</italic>
<sub>2</sub> &#x3d; 0.04723. We assume <italic>&#x3b6;</italic>(<italic>k</italic>) &#x3d; 0 at beginning to exhibit the effects of controllers more clearly. All the simulation settings including reference output, convergence zone described by <xref ref-type="disp-formula" rid="e14">Equation 14</xref>, and the controller parameters <italic>T</italic> &#x3d; 0.0005, <inline-formula id="inf50">
<mml:math id="m83">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.05</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf51">
<mml:math id="m84">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>10</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> , <inline-formula id="inf52">
<mml:math id="m85">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>&#x221e;</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.5</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf53">
<mml:math id="m86">
<mml:mrow>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf54">
<mml:math id="m87">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> are chosen in common with <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref>. The proposed OSAC-PPC method (24) choose controller parameter <italic>q</italic> with different values: 300, 200 and 5. To be consistent with <xref ref-type="bibr" rid="B22">Nguyen et al. (2017)</xref>. <xref ref-type="fig" rid="F1">Figure 1</xref> shows the step response comparison between the proposed OSAC-PPC method and the Nguyen&#x2019;s method. Control input of each controller is shown in <xref ref-type="fig" rid="F2">Figure 2</xref>.</p>
</statement>
</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Tracking performance comparisons and convergence zone.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g001.tif"/>
</fig>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Control input of each controller.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g002.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F1">Figure 1</xref> obviously shows that each output of system controlled by these methods is in prescribed zone. From <xref ref-type="fig" rid="F1">Figure 1</xref>, we can see that: i) from the time of [0, 0.02], the tracking error of system controlled by the proposed OSAC-PPC method is smaller than that of Nguyen. Besides, we can change the transient performance by adjusting <italic>q</italic>. When the parameter <italic>q</italic> decreases, the convergence speed and the oscillation of system controlled by proposed method will increase; ii) from the time of [0.06, 0.066], the output of system controlled by the proposed OSAC-PPC method with <italic>q</italic> &#x3d; 5 consistently converges to the desired trajectory; The output of the system controlled by the proposed OSAC-PPC method with <italic>q</italic> &#x3d; 200 passes through the output trajectory of Nguyen&#x2019;s controller; The output of the system controlled by the proposed OSAC-PPC method with <italic>q</italic> &#x3d; 300 is designed so as to be tangent to the actual output zone of Nguyen.</p>
<p>From <xref ref-type="fig" rid="F1">Figure 1</xref>, we can conclude that the tracking error of the proposed method is smaller than that of Nguyen under the same prescribed performance. In addition, by decreasing the controller parameter <italic>q</italic>, we can change the system transient characteristics to obtain a better convergence speed, nevertheless the oscillation is enlarged. Therefore, the proposed OSAC-PPC method is more flexible than Nguyen&#x2019;s controller for introducing the key adjustable parameter <italic>q</italic>. As a result, we have more choices for the system behaviors and transient characteristics.</p>
<p>On the other hand, to further study this kind of prescribed performance method, we choose <inline-formula id="inf55">
<mml:math id="m88">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf56">
<mml:math id="m89">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>&#x221e;</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> with an aim to remove the nonlinear part of the controller, i.e., <inline-formula id="inf57">
<mml:math id="m90">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mtext>nonlinear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>. The output of the system controlled by the only linear part of OSAC-PPC method (<xref ref-type="disp-formula" rid="e24">Equation 24</xref>) [i.e., OSAC (<xref ref-type="disp-formula" rid="e25">Equation 25</xref>)] and Nguyen&#x2019;s method are shown in <xref ref-type="fig" rid="F3">Figure 3</xref>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Tracking performance comparison.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g003.tif"/>
</fig>
<p>From <xref ref-type="fig" rid="F3">Figure 3</xref>, we can see that the system controlled by OSAC (<xref ref-type="disp-formula" rid="e25">Equation 25</xref>) exhibits a better performance even without overshoot in simulation. It is natural for us to conclude that the effectiveness of the proposed method can be separated into two parts: i) the stability of the system is guaranteed by the linear part of the OSAC-PPC controller (<xref ref-type="disp-formula" rid="e24">Equation 24</xref>) whose intrinsic design is for the achievement of the optimal performance. ii) The actual output zone is virtually widened by the nonlinear part of the controller (<xref ref-type="disp-formula" rid="e26">Equation 26</xref>); however, the system is still guaranteed within the prescribed zone depicted by <inline-formula id="inf58">
<mml:math id="m91">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf59">
<mml:math id="m92">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>&#x221e;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf60">
<mml:math id="m93">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>When we change the reference trajectory to <inline-formula id="inf61">
<mml:math id="m94">
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
<mml:msup>
<mml:mn>0</mml:mn>
<mml:mrow>
<mml:mo>&#x2010;</mml:mo>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>, while keeping the controller parameters unchanged, the corresponding tracking performance is depicted in <xref ref-type="fig" rid="F4">Figure 4</xref>. The tracking error is shown in <xref ref-type="fig" rid="F5">Figure 5</xref>, and the control inputs are illustrated in <xref ref-type="fig" rid="F6">Figure 6</xref>.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Tracking performance comparisons and convergence zone.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g004.tif"/>
</fig>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Tracking error and prescribed zone for the error.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g005.tif"/>
</fig>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>The control input of each controller.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g006.tif"/>
</fig>
<p>From <xref ref-type="fig" rid="F4">Figures 4</xref>, <xref ref-type="fig" rid="F5">5</xref>, it can be observed that both the proposed OSAC-PPC method and Nguyen&#x2019;s method keep the system outputs and tracking errors within the prescribed zone. Moreover, the proposed OSAC-PPC method exhibits a smaller tracking error compared to Nguyen&#x2019;s method.</p>
<p>
<statement content-type="example" id="Example_2">
<label>Example 2</label>
<p>This example shows that the improved OSAC-PPC (<xref ref-type="disp-formula" rid="e28">Equation 28</xref>) are more suitable for the case of inaccuracy of estimate parameters. We assume that the inaccurately offline estimated parameters are <inline-formula id="inf62">
<mml:math id="m95">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>a</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>0.3</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf63">
<mml:math id="m96">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>a</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>0.7</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf64">
<mml:math id="m97">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>b</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.1</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf65">
<mml:math id="m98">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>b</mml:mi>
<mml:mo>&#x5e;</mml:mo>
</mml:mover>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.02</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> in Example 1. Then the corresponding unmodeled dynamics will be <xref ref-type="disp-formula" rid="e30">Equation 30</xref>
<disp-formula id="e30">
<mml:math id="m99">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b6;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">0.3</mml:mn>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">0.7</mml:mn>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">0.1</mml:mn>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">0.02</mml:mn>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(30)</label>
</disp-formula>
</p>
<p>The output of the system controlled by Nguyen&#x2019;s controller and improved OSAC-PPC (28) with <italic>&#x3bb;</italic> &#x3d; 0.2 and <italic>&#x3bb;</italic> &#x3d; 1 is shown in <xref ref-type="fig" rid="F7">Figure 7</xref>, respectively. The control input of each controller is shown in <xref ref-type="fig" rid="F8">Figure 8</xref>.</p>
</statement>
</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Tracking performance comparisons and convergence.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g007.tif"/>
</fig>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Control input of each controller.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g008.tif"/>
</fig>
<p>From <xref ref-type="fig" rid="F7">Figure 7</xref>, we can find that the output of the system controlled by Nguyen&#x2019;s controller or improved OSAC-PPC (28) with <italic>&#x3bb;</italic> &#x3d; 0.2 oscillates at the beginning owing to the estimate parameter error. By comparison, when we choose <italic>&#x3bb;</italic> &#x3d; 1, the output oscillation of the system controlled by improved OSAC-PPC (<xref ref-type="disp-formula" rid="e28">Equation 28</xref>) is eliminated. On the other hand, <xref ref-type="fig" rid="F8">Figure 8</xref> also shows that the control input of Nguyen oscillates obviously from beginning to end. By comparison, the oscillation of the control input of improved OSAC-PPC (28) is eliminated through letting <italic>&#x3bb;</italic> &#x3d; 1, since the increment of penalty constant <italic>&#x3bb;</italic> constrains the change of the control output. Owing to the system&#x2019;s transient characteristics can be changed through adjusting the introduced penalty constant <italic>&#x3bb;</italic>, the improved OSAC-PPC (28) are more stable and suitable for the cases of inaccuracy of estimate parameters.</p>
<p>There are many well-known performance indexes for the system, we should not focus on only one index (i.e., prescribed performance) but should consider more system transient indexes such as system convergent speed, smoothness, overshoot and so on. These examples show that some transient performances can be improved by our improvements meanwhile the prescribed performance is still satisfied.</p>
<p>Owing to the system&#x2019;s transient characteristics can be changed through adjusting the introduced penalty constant <italic>&#x3bb;</italic>, Furthermore, we can replace the linear part of improved OSAC-PPC (28) with MPC or self-tuning PID. It will also achieve the comparable performance in the same way.</p>
<p>
<statement content-type="example" id="Example_3">
<label>Example 3</label>
<p>We validate the PPC controller in a three joints SEA-based lower limb exoskeleton system, which is shown in <xref ref-type="fig" rid="F9">Figure 9</xref>. The joints of this system are actively controlled through current loops, with each joint&#x2019;s torque values calculated by the controller and then converted into control inputs. This motor-driven approach enables the exoskeleton to follow the reference trajectories, which are scaled versions of gait cycle joint angles, specifically chosen to test the controller&#x2019;s performance. The exoskeleton operates on an EtherCAT-based motor drive system.</p>
<p>The platform is equipped with two 24 V serial batteries providing the necessary power for the lower limb exoskeleton. The drive module comprises six modular joints, divided equally between the left and right limbs, corresponding to the human body&#x2019;s hip, knee, and ankle joints. Absolute encoders installed at each joint measure the angles of rotation.</p>
<p>
<xref ref-type="fig" rid="F10">Figure 10</xref> illustrates the hardware control architecture of the exoskeleton. The heart of the exoskeleton&#x2019;s control system is an industrial PC (IPC) equipped with an i7 7600U processor running the Ubuntu operating system. This IPC serves as the control center where the core control strategies are implemented. Communication between the IPC and the supervisory computer is established via SSH, with the startup program initiated and control commands sent using TCP communication. The exoskeleton&#x2019;s status information is transmitted using LCM.</p>
</statement>
</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>
<bold>(A)</bold>Three-dimensional modeling of the lower limb exoskeleton robotic system; <bold>(B)</bold>Three joints lower limb exoskeleton system.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g009.tif"/>
</fig>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Exoskeleton hardware control architecture.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g010.tif"/>
</fig>
<p>In terms of exoskeleton control commands, the IPC is connected to the drivers and operates as the EtherCAT master using the IgH EtherCAT Master for Linux, while the drivers function as slaves. The communication between the IPC and the exoskeleton includes sending and receiving control commands and sensor information with a control cycle of 1,000 Hz.</p>
<p>To establish a baseline for comparison, we included two control groups in our study. The first control group employs an incremental PID &#x2b; dynamics controller that we developed, which integrates dynamic feedforward compensation to enhance control performance. The second group uses a traditional incremental PID controller, serving as a baseline to assess the advancements offered by our proposed solutions.</p>
<p>The dynamic model (<xref ref-type="disp-formula" rid="e31">Equations 31</xref>, <xref ref-type="disp-formula" rid="e32">32</xref>) is given by<disp-formula id="e31">
<mml:math id="m100">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">H</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">M</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>,</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">G</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:math>
<label>(31)</label>
</disp-formula>
<disp-formula id="e32">
<mml:math id="m101">
<mml:mrow>
<mml:mi mathvariant="bold-italic">H</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">L</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">M</mml:mi>
<mml:mi mathvariant="bold-italic">R</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(32)</label>
</disp-formula>where, <bold>
<italic>H</italic>
</bold>(<bold>
<italic>q</italic>
</bold>) is the total inertia matrix; <bold>
<italic>B</italic>
</bold> is the inertia matrix of the motor considering the reduction ratio; and <bold>
<italic>S</italic>
</bold> is the motor-link coupling matrix, which is a constant matrix. <bold>
<italic>M</italic>
</bold>
<sub>
<italic>R</italic>
</sub>(<bold>
<italic>q</italic>
</bold>) is the added inertia matrix of the connecting link introduced by the motor (<xref ref-type="bibr" rid="B15">Li et al., 2017</xref>; <xref ref-type="bibr" rid="B8">Chen et al., 2019</xref>; <xref ref-type="bibr" rid="B25">Siciliano and Khatib, 2016</xref>).</p>
<p>The dynamic parameters of links are inaccurately identified and given in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Dynamic parameters of exoskeleton.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Parameters</th>
<th align="center">Hip (1)</th>
<th align="center">Knee (2)</th>
<th align="center">Angle (3)</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">
<italic>m</italic>
<sub>
<italic>i</italic>
</sub>(<italic>kg</italic>)</td>
<td align="center">2.09</td>
<td align="center">1.6</td>
<td align="center">0.55</td>
</tr>
<tr>
<td align="center">
<italic>m</italic>
<sub>
<italic>i</italic>
</sub>
<italic>L</italic>
<sub>
<italic>ci</italic>
</sub>(<italic>kg&#x2022;m</italic>)</td>
<td align="center">0.1567</td>
<td align="center">0.0689</td>
<td align="center">0.0024</td>
</tr>
<tr>
<td align="center">
<italic>L</italic>
<sub>
<italic>i</italic>
</sub>(<italic>m</italic>)</td>
<td align="center">0.37</td>
<td align="center">0.36</td>
<td align="center">&#x2217;</td>
</tr>
<tr>
<td align="center">
<italic>J</italic>
<sub>
<italic>i</italic>
</sub>(<italic>kg&#x2022;m</italic>
<sup>2</sup>)</td>
<td align="center">&#x2212;0.304</td>
<td align="center">0.0002</td>
<td align="center">0.0097</td>
</tr>
<tr>
<td align="center">
<italic>f</italic>
<sub>
<italic>ci</italic>
</sub>(<italic>Nm</italic>)</td>
<td align="center">0.0847</td>
<td align="center">0.6758</td>
<td align="center">1.7567</td>
</tr>
<tr>
<td align="center">
<italic>f</italic>
<sub>
<italic>vi</italic>
</sub>(<italic>Nm&#x2022;s/rad</italic>)</td>
<td align="center">&#x2212;3.2967</td>
<td align="center">&#x2212;3.7335</td>
<td align="center">&#x2212;12.2408</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Since the leading coefficient of control input is an identity matrix, we can describe the linear part of the controller as<disp-formula id="e33">
<mml:math id="m102">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mtext>linear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:mi>I</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">H</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mi>M</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">G</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">H</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">S</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">S</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mo>&#xa8;</mml:mo>
</mml:mover>
<mml:mi>M</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mrow>
<mml:mfenced open="" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">G</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(33)</label>
</disp-formula>where, <inline-formula id="inf66">
<mml:math id="m103">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:mi>P</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>g</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>k</mml:mi>
<mml:mi>P</mml:mi>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>k</mml:mi>
<mml:mi>P</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>k</mml:mi>
<mml:mi>P</mml:mi>
<mml:mn>3</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf67">
<mml:math id="m104">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:mi>I</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>g</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi>k</mml:mi>
<mml:mi>I</mml:mi>
<mml:mn>1</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>k</mml:mi>
<mml:mi>I</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>k</mml:mi>
<mml:mi>I</mml:mi>
<mml:mn>3</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>Meanwhile, the nonlinear part can be described as<disp-formula id="e34">
<mml:math id="m105">
<mml:mrow>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mtext mathvariant="bold">nonlinear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msubsup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msubsup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msubsup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msubsup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msup>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msubsup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(34)</label>
</disp-formula>where, <inline-formula id="inf68">
<mml:math id="m106">
<mml:mrow>
<mml:msup>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>i</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> represent the parameters for <italic>i</italic>-th joint.</p>
<p>Then we propose an incremental PID &#x2b; dynamics based PPC controller as <xref ref-type="disp-formula" rid="e35">Equation 35</xref>
<disp-formula id="e35">
<mml:math id="m107">
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mtext mathvariant="bold">linear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mtext mathvariant="bold">nonlinear</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(35)</label>
</disp-formula>
</p>
<p>The controllers used for comparison are incremental PID &#x2b; dynamics feedforward control (<xref ref-type="disp-formula" rid="e33">Equation 33</xref>), and incremental PID (<xref ref-type="disp-formula" rid="e36">Equation 36</xref>).<disp-formula id="e36">
<mml:math id="m108">
<mml:mrow>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mtext mathvariant="bold">PID</mml:mtext>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:mi mathvariant="bold-italic">P</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:mi mathvariant="bold-italic">I</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(36)</label>
</disp-formula>
</p>
<p>It should be noted that the incremental PID &#x2b; dynamics-based PPC controller is obtained by summing the PID &#x2b; dynamics feedforward compensation controller (<xref ref-type="disp-formula" rid="e33">Equation 33</xref>) with the nonlinear part (<xref ref-type="disp-formula" rid="e34">Equation 34</xref>). Both controllers use dynamics feedforward compensation in differential form.</p>
<p>The controller parameters are given by <xref ref-type="table" rid="T2">Table 2</xref>. The sampling time <italic>T</italic> &#x3d; 0.001<italic>s.</italic> <xref ref-type="fig" rid="F11">Figure 11</xref> shows the tracking performance of each joint of the exoskeleton. <xref ref-type="fig" rid="F12">Figure 12</xref> shows the tracking error of each joint and <xref ref-type="fig" rid="F13">Figure 13</xref> shows the enlarged view of <xref ref-type="fig" rid="F12">Figure 12</xref>. The control input of each joint is shown in <xref ref-type="fig" rid="F14">Figure 14</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Controller parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Parameters</th>
<th align="center">Joint 1</th>
<th align="center">Joint 2</th>
<th align="center">Joint 3</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">
<italic>q</italic>
<sup>
<italic>i</italic>
</sup>
</td>
<td align="center">5</td>
<td align="center">5</td>
<td align="center">5</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf69">
<mml:math id="m109">
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.001</td>
<td align="center">0.001</td>
<td align="center">0.001</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf70">
<mml:math id="m110">
<mml:mrow>
<mml:msubsup>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf71">
<mml:math id="m111">
<mml:mrow>
<mml:msubsup>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">1</td>
<td align="center">1</td>
<td align="center">1</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf72">
<mml:math id="m112">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c1;</mml:mi>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">2</td>
<td align="center">2</td>
<td align="center">2</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf73">
<mml:math id="m113">
<mml:mrow>
<mml:msubsup>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>&#x221e;</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">0.05</td>
<td align="center">0.05</td>
<td align="center">0.03</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf74">
<mml:math id="m114">
<mml:mrow>
<mml:msubsup>
<mml:mi>k</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">300</td>
<td align="center">300</td>
<td align="center">400</td>
</tr>
<tr>
<td align="center">
<inline-formula id="inf75">
<mml:math id="m115">
<mml:mrow>
<mml:msubsup>
<mml:mi>k</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>i</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">3</td>
<td align="center">1.5</td>
<td align="center">4</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Tracking performance comparisons.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g011.tif"/>
</fig>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Tracking error and its convergence zone.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g012.tif"/>
</fig>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>Enlarged view of <xref ref-type="fig" rid="F12">Figure 12</xref>.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g013.tif"/>
</fig>
<fig id="F14" position="float">
<label>FIGURE 14</label>
<caption>
<p>Control input of each controller.</p>
</caption>
<graphic xlink:href="frobt-12-1534040-g014.tif"/>
</fig>
<p>From <xref ref-type="fig" rid="F11">Figure 11</xref>, it is evident that compared to incremental PID, both incremental PID &#x2b; dynamics-based PPC controller and incremental PID &#x2b; dynamics controller significantly enhance the tracking accuracy of the three joints. This indicates that our designed differential form of dynamics-based feedforward effectively compensates for the accuracy deficiencies caused by the low stiffness and elastic characteristics of the SEA. From <xref ref-type="fig" rid="F12">Figures 12</xref>, <xref ref-type="fig" rid="F13">13</xref>, we can observe that the system controlled by the incremental PID &#x2b; dynamics-based PPC controller does not perform superior to the incremental PID &#x2b; dynamics controller. However, the tracking errors for both remain within the prescribed zone. The design of the PPC is not intended to enhance the controller&#x2019;s performance; rather, control accuracy and response time might be reduced due to the prescribed performance index or constraint of the tracking error. Despite this, the method ensures that errors are maintained within the prescribed zone limits.</p>
</sec>
<sec sec-type="conclusion" id="s5">
<title>5 Conclusion</title>
<p>In this paper, we propose a discrete-time sliding-mode control method based on prescribed performance control method to cope with a kind of tracking error constrained problem in the discrete-time dynamical system. By separating controller into two parts, we analyzed the principle of a family of PPC methods which aim to ensure that the tracking error converges to a predefined region. Moreover, we give some alternative improvements for the linear part of the controller for its alterable performance and yet not to impact the premise of prescribed performance. Simulations and experiments are provided to validate the established results and the effectiveness of the proposed method.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s6">
<title>Data availability statement</title>
<p>The datasets presented in this article are not readily available because The data that support the findings of this study are available on request from the author, upon reasonable request. Requests to access the datasets should be directed to Feilong Zhang, <email>zhangfeilong@sia.cn</email>.</p>
</sec>
<sec sec-type="author-contributions" id="s7">
<title>Author contributions</title>
<p>FZ: Conceptualization, Formal Analysis, Investigation, Methodology, Writing&#x2013;original draft. TW: Project administration, Resources, Validation, Visualization, Writing&#x2013;review and editing. LZ: Funding acquisition, Project administration, Resources, Validation, Writing&#x2013;review and editing. ES: Data curation, Software, Supervision, Writing&#x2013;review and editing. CW: Methodology, Software, Writing&#x2013;review and editing. NL: Project administration, Resources, Supervision, Writing&#x2013;review and editing. YL: Funding acquisition, Project administration, Resources, Validation, Writing&#x2013;review and editing. BZ: Conceptualization, Funding acquisition, Methodology, Project administration, Writing&#x2013;original draft, Writing&#x2013;review and editing.</p>
</sec>
<sec sec-type="funding-information" id="s8">
<title>Funding</title>
<p>The author(s) declare that financial support was received for the research, authorship, and/or publication of this article. This work is supported by the National Natural Science Foundation of China under Grants 62473361 and 62403457, and is also supported by the Natural Science Foundation of Liaoning Province under Grant 2023-MSLH-117.</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="ai-statement" id="s10">
<title>Generative AI statement</title>
<p>The author(s) declare that no Generative AI was used in the creation of this manuscript</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ahmed</surname>
<given-names>A. A.</given-names>
</name>
<name>
<surname>Koh</surname>
<given-names>B. K.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>Y. I.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>A comparison of finite control set and continuous control set model predictive control schemes for speed control of induction motors</article-title>. <source>IEEE Trans. Industrial Inf.</source> <volume>14</volume> (<issue>4</issue>), <fpage>1334</fpage>&#x2013;<lpage>1346</lpage>. <pub-id pub-id-type="doi">10.1109/tii.2017.2758393</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>&#xc5;str&#xf6;m</surname>
<given-names>K. J.</given-names>
</name>
<name>
<surname>Wittenmark</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Adaptive control [M]</article-title>. <source>Cour. Corp.</source> </citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bechlioulis</surname>
<given-names>C. P.</given-names>
</name>
<name>
<surname>Rovithakis</surname>
<given-names>G. A.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>Robust adaptive control of feedback linearizable MIMO nonlinear systems with prescribed performance</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>53</volume> (<issue>9</issue>), <fpage>2090</fpage>&#x2013;<lpage>2099</lpage>. <pub-id pub-id-type="doi">10.1109/tac.2008.929402</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bechlioulis</surname>
<given-names>C. P.</given-names>
</name>
<name>
<surname>Rovithakis</surname>
<given-names>G. A.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Adaptive control with guaranteed transient and steady state tracking error bounds for strict feedback systems</article-title>. <source>Automatica</source> <volume>45</volume> (<issue>2</issue>), <fpage>532</fpage>&#x2013;<lpage>538</lpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2008.08.012</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bechlioulis</surname>
<given-names>C. P.</given-names>
</name>
<name>
<surname>Rovithakis</surname>
<given-names>G. A.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Robust partial-state feedback prescribed performance control of cascade systems with unknown nonlinearities</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>56</volume> (<issue>9</issue>), <fpage>2224</fpage>&#x2013;<lpage>2230</lpage>. <pub-id pub-id-type="doi">10.1109/tac.2011.2157399</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bechlioulis</surname>
<given-names>C. P.</given-names>
</name>
<name>
<surname>Rovithakis</surname>
<given-names>G. A.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>A low-complexity global approximation-free control scheme with prescribed performance for unknown pure feedback systems</article-title>. <source>Automatica</source> <volume>50</volume> (<issue>4</issue>), <fpage>1217</fpage>&#x2013;<lpage>1226</lpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2014.02.020</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Tao</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Tao</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Fuzzy adaptive nonsingular fixed-time attitude tracking control of quadrotor UAVs</article-title>. <source>IEEE Trans. Aerosp. Electron. Syst.</source> <volume>57</volume> (<issue>5</issue>), <fpage>2864</fpage>&#x2013;<lpage>2877</lpage>. <pub-id pub-id-type="doi">10.1109/taes.2021.3067610</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Adaptive sliding control for lower exoskeleton robot driven by the series elastic actuator</article-title>,&#x201d; in <source>2019 IEEE international conference on mechatronics and automation (ICMA)</source>. <publisher-name>IEEE</publisher-name>, <fpage>2439</fpage>&#x2013;<lpage>2444</lpage>.</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Deng</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Yao</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Neural network-based adaptive asymptotic prescribed performance tracking control of hydraulic manipulators</article-title>. <source>IEEE Trans. Syst. man, Cybern. Syst.</source> <volume>53</volume> (<issue>1</issue>), <fpage>285</fpage>&#x2013;<lpage>295</lpage>. <pub-id pub-id-type="doi">10.1109/tsmc.2022.3178626</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dong</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Finite-time prescribed performance control for space circumnavigation mission with input constraints and measurement uncertainties</article-title>. <source>IEEE Trans. Aerosp. Electron. Syst.</source> <volume>58</volume> (<issue>4</issue>), <fpage>3209</fpage>&#x2013;<lpage>3222</lpage>. <pub-id pub-id-type="doi">10.1109/taes.2022.3148356</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Jing</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Dimirovski</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Finite-time prescribed performance control for spacecraft attitude tracking</article-title>. <source>IEEE/ASME Trans. Mechatronics</source> <volume>27</volume> (<issue>5</issue>), <fpage>3087</fpage>&#x2013;<lpage>3098</lpage>.</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gao</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Finite-time fault-tolerant prescribed performance control of connected vehicles with actuator saturation</article-title>. <source>IEEE Trans. Veh. Technol.</source> <volume>72</volume> (<issue>2</issue>), <fpage>1438</fpage>&#x2013;<lpage>1448</lpage>. <pub-id pub-id-type="doi">10.1109/tvt.2022.3209802</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Goodwin</surname>
<given-names>G. C.</given-names>
</name>
<name>
<surname>Sin</surname>
<given-names>K. S.</given-names>
</name>
</person-group> (<year>2009</year>). <source>Adaptive filtering prediction and control</source>. <publisher-name>Dover Publications, Inc</publisher-name>.</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kim</surname>
<given-names>S. K.</given-names>
</name>
<name>
<surname>Ahn</surname>
<given-names>C. K.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Self-tuning proportional-type performance recovery property output voltage-tracking algorithm for DC&#x2013;DC boost converter</article-title>. <source>IEEE Trans. Industrial Electron.</source> <volume>66</volume> (<issue>4</issue>), <fpage>3167</fpage>&#x2013;<lpage>3175</lpage>. <pub-id pub-id-type="doi">10.1109/tie.2018.2849982</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Pan</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Multi-modal control scheme for rehabilitation robotic exoskeletons</article-title>. <source>Int. J. Robotics Res.</source> <volume>36</volume> (<issue>5-7</issue>), <fpage>759</fpage>&#x2013;<lpage>777</lpage>. <pub-id pub-id-type="doi">10.1177/0278364917691111</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liang</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Minimum-variance recursive filtering for two-dimensional systems with degraded measurements: boundedness and monotonicity</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>64</volume> (<issue>10</issue>), <fpage>4153</fpage>&#x2013;<lpage>4166</lpage>. <pub-id pub-id-type="doi">10.1109/tac.2019.2895245</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wong</surname>
<given-names>P. K.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Ding</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Fixed-time prescribed performance path-following control for autonomous vehicle with complete unknown parameters</article-title>. <source>IEEE Trans. Industrial Electron.</source> <volume>70</volume> (<issue>8</issue>), <fpage>8426</fpage>&#x2013;<lpage>8436</lpage>. <pub-id pub-id-type="doi">10.1109/tie.2022.3210544</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>G. H.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Performance-based data-driven model-free adaptive sliding mode control for a class of discrete-time nonlinear processes</article-title>. <source>J. Process Control</source> <volume>68</volume>, <fpage>186</fpage>&#x2013;<lpage>194</lpage>. <pub-id pub-id-type="doi">10.1016/j.jprocont.2018.06.006</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>G. H.</given-names>
</name>
</person-group> (<year>2019a</year>). <article-title>Prescribed performance model-free adaptive integral sliding mode control for discrete-time nonlinear systems</article-title>. <source>IEEE Trans. neural Netw. Learn. Syst.</source> <volume>30</volume> (<issue>7</issue>), <fpage>2222</fpage>&#x2013;<lpage>2230</lpage>. <pub-id pub-id-type="doi">10.1109/tnnls.2018.2881205</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>G. H.</given-names>
</name>
</person-group> (<year>2019b</year>). <article-title>Data-driven adaptive sliding mode control of nonlinear discrete-time systems with prescribed performance</article-title>. <source>IEEE Trans. Syst. Man, Cybern. Syst.</source> <volume>49</volume> (<issue>12</issue>), <fpage>2598</fpage>&#x2013;<lpage>2604</lpage>. <pub-id pub-id-type="doi">10.1109/tsmc.2017.2779564</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mir</surname>
<given-names>A. S.</given-names>
</name>
<name>
<surname>Senroy</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Self-tuning neural predictive control scheme for ultrabattery to emulate a virtual synchronous machine in autonomous power systems</article-title>. <source>IEEE Trans. neural Netw. Learn. Syst.</source> <volume>31</volume> (<issue>1</issue>), <fpage>136</fpage>&#x2013;<lpage>147</lpage>. <pub-id pub-id-type="doi">10.1109/tnnls.2019.2899904</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nguyen</surname>
<given-names>M. L.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Discrete-time quasi-sliding-mode control with prescribed performance function and its application to piezo-actuated positioning systems</article-title>. <source>IEEE Trans. Industrial Electron.</source> <volume>65</volume> (<issue>1</issue>), <fpage>942</fpage>&#x2013;<lpage>950</lpage>. <pub-id pub-id-type="doi">10.1109/tie.2017.2708024</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rosolia</surname>
<given-names>U.</given-names>
</name>
<name>
<surname>Borrelli</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Learning model predictive control for iterative tasks. a data-driven control framework</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>63</volume> (<issue>7</issue>), <fpage>1883</fpage>&#x2013;<lpage>1896</lpage>. <pub-id pub-id-type="doi">10.1109/tac.2017.2753460</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shi</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Xie</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Silvestre</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Event-Triggered quantitative prescribed performance neural adaptive control for autonomous underwater vehicles</article-title>. <source>IEEE Trans. Syst. Man, Cybern. Syst.</source> <volume>54</volume>, <fpage>3381</fpage>&#x2013;<lpage>3392</lpage>. <pub-id pub-id-type="doi">10.1109/tsmc.2024.3357252</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Siciliano</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Khatib</surname>
<given-names>O.</given-names>
</name>
</person-group> (<year>2016</year>). <source>Robotics and the handbook[M]//Springer handbook of robotics</source>. <publisher-loc>Cham</publisher-loc>: <publisher-name>Springer International Publishing</publisher-name>, <fpage>1</fpage>&#x2013;<lpage>6</lpage>.</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sui</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>C. L. P.</given-names>
</name>
<name>
<surname>Tong</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Finite-time adaptive fuzzy prescribed performance control for high-order stochastic nonlinear systems</article-title>. <source>IEEE Trans. Fuzzy Syst.</source> <volume>30</volume> (<issue>7</issue>), <fpage>2227</fpage>&#x2013;<lpage>2240</lpage>. <pub-id pub-id-type="doi">10.1109/tfuzz.2021.3077317</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tajaddodianfar</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Moheimani</surname>
<given-names>S. O. R.</given-names>
</name>
<name>
<surname>Randall</surname>
<given-names>J. N.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Scanning tunneling microscope control: a self-tuning PI controller based on online local barrier height estimation</article-title>. <source>IEEE Trans. Control Syst. Technol.</source> <volume>27</volume> (<issue>5</issue>), <fpage>2004</fpage>&#x2013;<lpage>2015</lpage>. <pub-id pub-id-type="doi">10.1109/tcst.2018.2844781</pub-id>
</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xi</surname>
<given-names>R. P.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>H. G.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Land Li</surname>
<given-names>Y. H.</given-names>
</name>
</person-group> (<year>2024</year>). <article-title>Adaptive command filtered control for a class of random nonlinear systems under model-based event-triggered control design</article-title>. <source>IEEE Trans. Syst. Man, Cybern. Syst.</source> <volume>54</volume>, <fpage>5074</fpage>&#x2013;<lpage>5084</lpage>. <pub-id pub-id-type="doi">10.1109/TSMC.2024.3389994</pub-id>
</citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Ju</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Adaptive robust decoupling control of multi-arm space robots using time-delay estimation technique</article-title>. <source>Nonlinear Dyn.</source> <volume>100</volume> (<issue>3</issue>), <fpage>2449</fpage>&#x2013;<lpage>2467</lpage>. <pub-id pub-id-type="doi">10.1007/s11071-020-05615-5</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Tong</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ju</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Attitude decoupling control of semifloating space robots using time-delay estimation and supertwisting control</article-title>. <source>IEEE Trans. Aerosp. Electron. Syst.</source> <volume>57</volume> (<issue>6</issue>), <fpage>4280</fpage>&#x2013;<lpage>4295</lpage>. <pub-id pub-id-type="doi">10.1109/taes.2021.3094626</pub-id>
</citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zheng</surname>
<given-names>D. D.</given-names>
</name>
<name>
<surname>Xie</surname>
<given-names>W. F.</given-names>
</name>
<name>
<surname>Chai</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Fu</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Identification and trajectory tracking control of nonlinear singularly perturbed systems</article-title>. <source>IEEE Trans. Industrial Electron.</source> <volume>64</volume> (<issue>5</issue>), <fpage>3737</fpage>&#x2013;<lpage>3747</lpage>. <pub-id pub-id-type="doi">10.1109/tie.2016.2645139</pub-id>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhou</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Chai</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Data-driven robust M-LS-SVR-based NARX modeling for estimation and control of molten iron quality indices in blast furnace ironmaking</article-title>. <source>IEEE Trans. neural Netw. Learn. Syst.</source> <volume>29</volume> (<issue>9</issue>), <fpage>4007</fpage>&#x2013;<lpage>4021</lpage>. <pub-id pub-id-type="doi">10.1109/tnnls.2017.2749412</pub-id>
</citation>
</ref>
</ref-list>
<app-group>
<app id="app1">
<title>Proof: Appendix of Theorem 1</title>
<p>If the tracking error <inline-formula id="inf76">
<mml:math id="m116">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> satisfies <inline-formula id="inf77">
<mml:math id="m117">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>k</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> at any time <italic>k</italic>, through the proposed controller (<xref ref-type="disp-formula" rid="e24">Equation 24</xref>), we want to demonstrate that one step ahead tracking error <inline-formula id="inf78">
<mml:math id="m118">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> also satisfies the prescribed performance control: <inline-formula id="inf79">
<mml:math id="m119">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. Thereafter, the control algorithm can be repeated in the next sampling cycle.</p>
<p>To demonstrate this result, based on <xref ref-type="disp-formula" rid="e18">Equations 18</xref>&#x2013;<xref ref-type="disp-formula" rid="e21">21</xref>, <xref ref-type="disp-formula" rid="e23">23</xref>, we have<disp-formula id="eA1">
<mml:math id="m120">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">g</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3be;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(A1)</label>
</disp-formula>
</p>
<p>From <xref ref-type="disp-formula" rid="eA1">Equations 21</xref>, <xref ref-type="disp-formula" rid="e21">A1</xref>, we can obtain <xref ref-type="disp-formula" rid="e22">Equation A2</xref>.<disp-formula id="eA2">
<mml:math id="m121">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
<label>(A2)</label>
</disp-formula>
</p>
<p>Obviously, <inline-formula id="inf80">
<mml:math id="m122">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x39b;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x39b;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a function with respect to <inline-formula id="inf81">
<mml:math id="m123">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> and is monotonic increasing with <inline-formula id="inf82">
<mml:math id="m124">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>. Therefore, we have<disp-formula id="equ5">
<mml:math id="m125">
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:munder>
<mml:mi>lim</mml:mi>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mi>&#x221e;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x39b;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi>&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>q</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">&#x39b;</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi>&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="eA3">
<mml:math id="m126">
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
<label>(A3)</label>
</disp-formula>
</p>
<p>With the help of <xref ref-type="disp-formula" rid="eA1">Equations 21</xref>, <xref ref-type="disp-formula" rid="e21">A1</xref>, we have <xref ref-type="disp-formula" rid="e24">Equation A4</xref>.<disp-formula id="eA4">
<mml:math id="m127">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3e;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
<label>(A4)</label>
</disp-formula>
</p>
<p>Similar to the proof process of (<xref ref-type="disp-formula" rid="eA3">Equation A3</xref>), we can infer that<disp-formula id="eA5">
<mml:math id="m128">
<mml:mrow>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3e;</mml:mo>
<mml:munder>
<mml:mi mathvariant="bold-italic">lim</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mrow>
</mml:munder>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x39b;</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
<label>(A5)</label>
</disp-formula>
</p>
<p>From (<xref ref-type="disp-formula" rid="eA3">Equations A3</xref>, <xref ref-type="disp-formula" rid="eA5">A5</xref>), it can be concluded that<disp-formula id="eA6">
<mml:math id="m129">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:munder accentunder="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>_</mml:mo>
</mml:munder>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3c7;</mml:mi>
<mml:mo>&#xaf;</mml:mo>
</mml:mover>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
</mml:mrow>
</mml:math>
<label>(A6)</label>
</disp-formula>
</p>
</app>
</app-group>
</back>
</article>