<?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">1271748</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2023.1271748</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>Model-free control for autonomous prevention of adverse events in robotics</article-title>
<alt-title alt-title-type="left-running-head">Narayan and Majewicz Fey</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/frobt.2023.1271748">10.3389/frobt.2023.1271748</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Narayan</surname>
<given-names>Meenakshi</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1432864/overview"/>
<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/validation/"/>
<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 contrib-type="author">
<name>
<surname>Majewicz Fey</surname>
<given-names>Ann</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</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/supervision/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Robotics and Automation Lab</institution>, <institution>Department of Engineering Technology</institution>, <institution>Miami University</institution>, <addr-line>Middletown</addr-line>, <addr-line>OH</addr-line>, <country>United States</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Human-Enabled Robotic Technology Lab</institution>, <institution>Department of Mechanical Engineering</institution>, <institution>University of Texas at Austin</institution>, <addr-line>Austin</addr-line>, <addr-line>TX</addr-line>, <country>United States</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/447084/overview">&#xd6;nder Tutsoy</ext-link>, Adana Science and Technology University, T&#xfc;rkiye</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/472563/overview">Sunan Huang</ext-link>, National University of Singapore, Singapore</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2557770/overview">Muk U</ext-link>, National University of Computer and Emerging Sciences, Pakistan</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Meenakshi Narayan, <email>narayam3@miamioh.edu</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>05</day>
<month>01</month>
<year>2024</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>10</volume>
<elocation-id>1271748</elocation-id>
<history>
<date date-type="received">
<day>02</day>
<month>08</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>11</day>
<month>12</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2024 Narayan and Majewicz Fey.</copyright-statement>
<copyright-year>2024</copyright-year>
<copyright-holder>Narayan and Majewicz Fey</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>
<bold>Introduction:</bold> Preventive control is a critical feature in autonomous technology to ensure safe system operations. One application where safety is most important is robot-assisted needle interventions. During incisions into a tissue, adverse events such as mechanical buckling of the needle shaft and tissue displacements can occur on encounter with stiff membranes causing potential damage to the organ.</p>
<p>
<bold>Methods:</bold> To prevent these events before they occur, we propose a new control subroutine that autonomously chooses a) a reactive mechanism to stop the insertion procedure when a needle buckling or a severe tissue displacement event is predicted and b) an adaptive mechanism to continue the insertion procedure through needle steering control when a mild tissue displacement is detected. The subroutine is developed using a model-free control technique due to the nonlinearities of the unknown needle-tissue dynamics. First, an improved version of the model-free adaptive control (IMFAC) is developed by computing a fast time-varying partial pseudo derivative analytically from the dynamic linearization equation to enhance output convergence and robustness against external disturbances.</p>
<p>
<bold>Results and Discussion:</bold> Comparing IMFAC and MFAC algorithms on simulated nonlinear systems in MATLAB, IMFAC shows 20% faster output convergence against arbitrary disturbances. Next, IMFAC is integrated with event prediction algorithms from prior work to prevent adverse events during needle insertions in real time. Needle insertions in gelatin tissues with known environments show successful prevention of needle buckling and tissue displacement events. Needle insertions in biological tissues with unknown environments are performed using live fluoroscopic imaging as ground truth to verify timely prevention of adverse events. Finally, statistical ANOVA analysis on all insertion data shows the robustness of the prevention algorithm to various needles and tissue environments. Overall, the success rate of preventing adverse events in needle insertions through adaptive and reactive control was 95%, which is important toward achieving safety in robotic needle interventions.</p>
</abstract>
<kwd-group>
<kwd>model-free adaptive control</kwd>
<kwd>prevention of adverse events</kwd>
<kwd>minimally invasive surgery</kwd>
<kwd>autonomous robots</kwd>
<kwd>robotic needle steering</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Robotic Control Systems</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1 Introduction</title>
<p>Autonomous robots can perform complex tasks without human intervention using sensing, estimation, and control methodologies with the goal of improving the quality, efficiency, and safety of a system. These systems have vast applications in healthcare, commercial industries, transportation, aerospace, and defense. However, achieving human-like capabilities of dealing with high unpredictability, rapidly changing environments, and predicting adverse scenarios in a timely and safe fashion has been somewhat elusive for fully autonomous systems. Therefore, developing a combined approach of predictive control with adverse event prevention models, adaptive learning, decision making, and human&#x2013;robot interaction techniques is an important step toward achieving smart and safe autonomy in various sectors of manufacturing, aerospace, and healthcare (<xref ref-type="bibr" rid="B45">Schwarting et al., 2018</xref>; <xref ref-type="bibr" rid="B38">Reis et al., 2021</xref>; <xref ref-type="bibr" rid="B52">Walter et al., 2022</xref>).</p>
<p>An application area where safety is of utmost importance during autonomous behavior is in the field of robot-assisted minimally invasive surgery (RMIS). In RMIS, incision tools are maneuvered by a robot to assist surgeons in performing surgical operations more accurately while maintaining smaller incision cuts and improving patient outcomes (<xref ref-type="bibr" rid="B36">Poon et al., 2018</xref>; <xref ref-type="bibr" rid="B20">Khandalavala et al., 2019</xref>). Despite many research efforts to develop robotic systems for medicine, such as the da Vinci (Intuitive Surgical Inc., Sunnyvale, CA), Senhance (TransEnterix, Morrisville, NC, United States), and Flex<sup>&#xae;</sup> (Medrobotics Corp., Raynham, MA, United States) robotic systems, an effective commercial system for deep-tissue needle insertion has not yet been realized due to complex needle&#x2013;tissue interactions and the frequency of adverse events (<xref ref-type="bibr" rid="B30">Misra et al., 2010a</xref>; <xref ref-type="bibr" rid="B26">Majewicz et al., 2012</xref>). One such event is the buckling of a needle shaft that occurs due to rapid increase in frictional forces when the needle encounters a hard membrane or an obstacle (<xref ref-type="bibr" rid="B32">Narayan et al., 2018a</xref>). On further insertion, buckling could lead to tissue ruptures (<xref ref-type="bibr" rid="B12">Gruijthuijsen et al., 2018</xref>). Another event that could prevent surgeons from reaching desired targets within the tissue is the tissue deformation and displacements caused by the insertion forces of the needle (<xref ref-type="bibr" rid="B35">Oldfield et al., 2015</xref>). To address these difficulties, several steering control methods and novel needle designs have been proposed that accurately control the needle tip to reach desired targets (<xref ref-type="bibr" rid="B13">Hadjerci et al., 2016</xref>; <xref ref-type="bibr" rid="B47">Sprang et al., 2016</xref>; <xref ref-type="bibr" rid="B25">Li et al., 2017b</xref>; <xref ref-type="bibr" rid="B9">Fallahi et al., 2017</xref>). There have been efforts to autonomously predict adverse situations and correct for faults using sensor readings in unmanned vehicles (<xref ref-type="bibr" rid="B18">Huang et al., 2022</xref>; <xref ref-type="bibr" rid="B42">Ryu et al., 2022</xref>); however, much work is still needed for safe autonomous predictions of adverse events in robotic surgery. While reducing targeting errors is almost a solved problem, preventing and controlling adverse events such as needle buckling and tissue displacements before occurrence still remain a significant challenge to be addressed in real time (<xref ref-type="bibr" rid="B22">Leibinger et al., 2016</xref>; <xref ref-type="bibr" rid="B8">de Baere et al., 2022</xref>). With appropriate prediction and control subroutines, these adverse events can be prevented before they occur and damage to the tissue could be reduced, as demonstrated in <xref ref-type="fig" rid="F1">Figure 1</xref>.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Importance of control for timely prevention of adverse events in robotic needle interventions. <bold>(A)</bold> When the tissue is stationary and the needle is inserted at time, <italic>t</italic>
<sub>1</sub>. <bold>(B)</bold> On further insertion, when the needle encounters an obstacle or the tissue starts displacing by <italic>l</italic>
<sub>1</sub> at time, <italic>t</italic>
<sub>2</sub> &#x3e; <italic>t</italic>
<sub>1</sub>. <bold>(C)</bold> With no control, the needle either buckles or the tissue displaces further by <italic>l</italic>
<sub>2</sub> &#x3e; <italic>l</italic>
<sub>1</sub>, causing severe displacements of the tissue. However, with preventive control, needle buckling or tissue displacement is prevented.</p>
</caption>
<graphic xlink:href="frobt-10-1271748-g001.tif"/>
</fig>
<p>In prior work, we developed novel sensor forecasting algorithms based on which needle buckling events were predicted before occurrence (<xref ref-type="bibr" rid="B33">Narayan and Fey, 2020</xref>). Furthermore, with unknown needle&#x2013;tissue interaction dynamics and computation complexities, implementing model-based or learning-based controllers would be challenging (<xref ref-type="bibr" rid="B24">Li et al., 2017a</xref>). Therefore, we implement a model-free adaptive control (MFAC) technique (<xref ref-type="bibr" rid="B16">Hou and Jin, 2011</xref>) for steering control of needles and minimizing adverse events. This technique relies on the principle of linearizing a nonlinear system with a single parameter called the pseudo partial derivative (PPD) parameter which is <italic>slowly</italic> time varying in nature. However, this technique is not robust to changes in system parameters which affect real-time stability and output convergence. Two key contributions of this paper are: 1) developing an improved version of MFAC called improved model-free adaptive control (IMFAC) for general nonlinear systems by introducing <italic>fast</italic> time-varying PPD to guarantee continuous real-time stability, output convergence, and robustness against any external disturbance and 2) developing an action subroutine that integrates IMFAC with prior adverse event prediction methods (<xref ref-type="bibr" rid="B33">Narayan and Fey, 2020</xref>) to autonomously prevent needle buckling and tissue displacement events during robotic needle interventions.</p>
<p>This paper is structured as follows: <xref ref-type="sec" rid="s2">Section 2</xref> discusses the literature for adverse event prevention methods and data-driven control models related to robot-assisted needle insertions. <xref ref-type="sec" rid="s3">Section 3</xref> discusses the theoretical development of IMFAC, stability analysis, and simulation tests on a general class of nonlinear systems. <xref ref-type="sec" rid="s4">Section 4</xref> summarizes control algorithms to prevent adverse events. <xref ref-type="sec" rid="s5">Section 5</xref> discusses experimental methods. <xref ref-type="sec" rid="s6">Section 6</xref> discusses adverse event prevention results during needle insertions in gelatin and biological tissues. Finally, <xref ref-type="sec" rid="s7">Section 7</xref> concludes the paper.</p>
</sec>
<sec id="s2">
<title>2 Related work</title>
<p>This section discusses existing methods to prevent adverse events specific to robotic needle interventions, as well as state-of-the-art data-driven control methods.</p>
<sec id="s2-1">
<title>2.1 Prevention and control of adverse events</title>
<p>Over the years, several strategies have been implemented to avoid adverse events within the tissue, such as needle buckling and target displacements (<xref ref-type="bibr" rid="B41">Rossa and Tavakoli, 2017</xref>). For example, to prevent needle buckling events as a result of increases in the needle&#x2013;tissue interaction forces, novel designs for steerable needles were developed. The designs increase the critical buckling force of the needle shaft and eventually reduce insertion forces on the needle during insertions (<xref ref-type="bibr" rid="B53">Webster et al., 2006</xref>; <xref ref-type="bibr" rid="B50">Van De Berg et al., 2017</xref>). However, these methods do not provide real-time buckling control. It is more important to track the difference between insertion force and critical buckling force relative to the needle position in the tissue, rather than just the critical buckling force (<xref ref-type="bibr" rid="B50">Van De Berg et al., 2017</xref>; <xref ref-type="bibr" rid="B19">Hulburt et al., 2019</xref>). For this purpose, needle&#x2013;tissue biomechanics models are used to derive a relationship between insertion forces and needle displacements (<xref ref-type="bibr" rid="B48">Tang et al., 2007</xref>; <xref ref-type="bibr" rid="B31">Misra et al., 2010b</xref>; <xref ref-type="bibr" rid="B43">Sakes et al., 2016</xref>). However, biomechanics models require prior information of tissue properties, which is challenging for intra-operative procedures when tissue environments are unknown. Similarly, imaging techniques (<xref ref-type="bibr" rid="B1">Abolhassani et al., 2006</xref>; <xref ref-type="bibr" rid="B13">Hadjerci et al., 2016</xref>; <xref ref-type="bibr" rid="B25">Li et al., 2017b</xref>), mechanical devices and probes as tissue constraints (<xref ref-type="bibr" rid="B6">Brown et al., 2010</xref>; <xref ref-type="bibr" rid="B21">Kobayashi et al., 2012</xref>), and path planners (<xref ref-type="bibr" rid="B51">Vrooijink and Abayazid, 2014</xref>; <xref ref-type="bibr" rid="B25">Li et al., 2017b</xref>; <xref ref-type="bibr" rid="B8">de Baere et al., 2022</xref>) have been implemented to control the deformations and displacements of the tissue. Though these methods have shown success in achieving accurate target placement of the needle tip, they rely on finite element and biomehanics models. Accurate characterization of needle&#x2013;tissue dynamics can be time consuming, and thus, it can be challenging to implement real-time control (<xref ref-type="bibr" rid="B41">Rossa and Tavakoli, 2017</xref>; <xref ref-type="bibr" rid="B4">Barnoy et al., 2022</xref>).</p>
<p>Recently, research groups have taken inspiration from parasitic invertebrates such as wasp ovipositor and mosquito to design needles that can penetrate solid substrates easily. Inspired by the mechanism of the ovipositor, a thin needle composed of several wires sliding alongside the other was developed to maneuver needles with high curvatures while minimizing impact on the surrounding tissues (<xref ref-type="bibr" rid="B47">Sprang et al., 2016</xref>; <xref ref-type="bibr" rid="B44">Scali et al., 2017</xref>). Similarly, <xref ref-type="bibr" rid="B23">Li et al. (2020)</xref> developed a needle-cannula system that mimics the mosquito proboscis mechanism of incremental motions to reduce tissue deformations and displacements during insertion. They also used harpoon notches at the needle tip to reduce needle&#x2013;tissue frictional forces (<xref ref-type="bibr" rid="B23">Li et al., 2020</xref>). These bio-inspired mechanisms of needle insertions can generally improve maneuverability, while reducing critical needle&#x2013;tissue interaction events such as needle buckling, tissue deformations, target displacement, and needle deflections. However, they have complicated designs and require several fixtures to prevent buckling of individual wires. Furthermore, a systematic study to select design parameters is required, which usually change due to varying heterogeneous tissue substrate (<xref ref-type="bibr" rid="B22">Leibinger et al., 2016</xref>; <xref ref-type="bibr" rid="B28">Matheson and Rodriguez y Baena, 2020</xref>).</p>
<p>These limitations call for alternative solutions that do not depend on needle designs and unknown tissue structures, such as model-free techniques. Thus, optimizing on needle insertions while minimizing adverse events in real time using data-driven control techniques would be the focus of this work.</p>
</sec>
<sec id="s2-2">
<title>2.2 Data-driven control methods</title>
<p>In the last decade, much attention has been given to the application of data-driven control techniques for modeling complex nonlinear processes (<xref ref-type="bibr" rid="B2">Aboua&#xef;ssa and Chouraqui, 2019</xref>). The common classical technique being the proportional, integral, and derivative (PID) controller has shown to be generalizable to many systems and finds applications in most regulatory-based process control industries (<xref ref-type="bibr" rid="B3">&#xc5;str&#xf6;m and H&#xe4;gglund, 1995</xref>; <xref ref-type="bibr" rid="B29">McMillan, 2012</xref>). However, tuning of the gains is performed offline and is affected by process disturbances and the time-varying behavior of the system. This makes PID less robust and challenging to implement in real time. To address these issues, intelligent PID was proposed to predict dynamic system behavior through estimation techniques and online numerical differentiator, eliminating offline tuning and prior identification procedure (<xref ref-type="bibr" rid="B10">Fliess and Join, 2009</xref>). Yet, its performance is limited by issues of sensor noise, sampling rates, and computation power as the size of data increases (<xref ref-type="bibr" rid="B16">Hou and Jin, 2011</xref>).</p>
<p>There has been increasing interest in unconventional control strategies such as neural networks, fuzzy logic, and genetic algorithms (<xref ref-type="bibr" rid="B49">Thomas and Poongodi, 2009</xref>; <xref ref-type="bibr" rid="B15">Heidari et al., 2013</xref>; <xref ref-type="bibr" rid="B14">He et al., 2015</xref>; <xref ref-type="bibr" rid="B5">Bing et al., 2018</xref>; <xref ref-type="bibr" rid="B11">Glida et al., 2021</xref>). Neural network control is based on learning from the mapping between system input&#x2013;output data, whereas fuzzy control is based on learning from past experience and expert knowledge to predict and control system behavior (<xref ref-type="bibr" rid="B2">Aboua&#xef;ssa and Chouraqui, 2019</xref>). Genetic algorithms tune control models based on stochastic optimization techniques that mimic biological evolution (<xref ref-type="bibr" rid="B39">Rodr&#xed;guez-Abreo et al., 2020</xref>). The advantage is that these methods do not require any mathematical model of the system; however, determining parameters that accurately satisfy system behavior can be computationally expensive. Moreover, methods to identify system stability with learning models are still yet to be developed and fully analyzed (<xref ref-type="bibr" rid="B46">Singh and Sukavanam, 2012</xref>). Efforts have been made to develop learning-based control techniques with low computation complexity, to optimize needle insertions in tissue while minimizing undesired needle deflections and tissue displacements (<xref ref-type="bibr" rid="B7">Buzurovic et al., 2010</xref>; <xref ref-type="bibr" rid="B40">Rossa et al., 2017</xref>; <xref ref-type="bibr" rid="B37">Pratt and Petruska, 2022</xref>). Yet, their methods do not entail prevention of these events before occurrence.</p>
<p>An alternative technique to control any complex nonlinear system without using learning models is MFAC (<xref ref-type="bibr" rid="B16">Hou and Jin, 2011</xref>). This technique uses the dynamic linearization principle to simplify the system nonlinearities and requires only system input&#x2013;output data. Due to the ability to perform stability analysis online, simplified mathematical models, and robustness against external disturbances, MFAC finds applications in unmanned aerial vehicles, automated manufacturing, and mobile robots (<xref ref-type="bibr" rid="B17">Hou and Jin, 2019</xref>). Recently, <xref ref-type="bibr" rid="B24">Li et al. (2017a)</xref> derived a model-free adaptive control from Kalman filter techniques to predict needle buckling and control positions of a flexible robot. However, they have not provided a mechanism yet to minimize an adverse event when it occurs. To the best of our knowledge, model-free adaptive control has not yet been implemented on robotic systems that could control needle&#x2013;tissue interactions while preventing or minimizing adverse events in real time.</p>
</sec>
</sec>
<sec id="s3">
<title>3 Improved model-free adaptive control</title>
<p>In the original MFAC framework, the online stability of a system depends on the choice of system and control parameters (<xref ref-type="bibr" rid="B16">Hou and Jin, 2011</xref>). Since these parameters are tuned offline, real-time robustness against system uncertainties and output convergence cannot be guaranteed. Therefore, online tuning of control parameters is implemented with MFAC to improve real-time output convergence and stability in the presence of unexpected disturbances, and we name this technique as IMFAC. This section focuses on the formulation of IMFAC and parametric selection methods through theoretical analysis of stability and output convergence.</p>
<sec id="s3-1">
<title>3.1 Derivation</title>
<p>If a discrete-time nonlinear system with output <italic>y</italic> and input <italic>u</italic>
<sub>
<italic>c</italic>
</sub> satisfies the <italic>Lipschitz</italic> condition<disp-formula id="e1">
<mml:math id="m1">
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2264;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:math>
<label>(1)</label>
</disp-formula>for timestamps <italic>k</italic>
<sub>
<italic>i</italic>
</sub> &#x2260; <italic>k</italic>
<sub>
<italic>j</italic>
</sub> and <italic>i</italic>, <italic>j</italic> &#x3e; 0, then the nonlinear system can be approximated as a dynamic linearization model,<disp-formula id="e2">
<mml:math id="m2">
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(2)</label>
</disp-formula>where &#x398;<sub>
<italic>c</italic>
</sub> is a slow time-varying parameter called PPD that compresses system nonlinearity. This approximation is useful in predicting the output of a nonlinear system without using dynamic models. PPD is a scalar for single-input single-output (SISO) systems and a vector for multi-input multi-output (MIMO) systems. For tracking and regulation-based control, the following quadratic cost function is employed to obtain control effort, &#x394;<italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic>), as a function of prediction errors, <italic>y</italic>&#x2a; &#x2212; <italic>y</italic>(<italic>k</italic> &#x2b; 1):<disp-formula id="e3">
<mml:math id="m3">
<mml:msub>
<mml:mrow>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(3)</label>
</disp-formula>where <italic>y</italic>&#x2a; is the desired output of the system. The weighting factor <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub> &#x3e; 0 restricts &#x394;<italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) and, thus, is an important tuning parameter for output convergence and system stability. Substituting <italic>y</italic>(<italic>k</italic> &#x2b; 1) from Eq. <xref ref-type="disp-formula" rid="e2">2</xref> and minimizing Eq. <xref ref-type="disp-formula" rid="e3">3</xref> with respect to <italic>u</italic>
<sub>
<italic>c</italic>
</sub>, the optimal input for tracking is computed as<disp-formula id="e4">
<mml:math id="m4">
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(4)</label>
</disp-formula>where &#x398;<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) is determined using numerical approximation methods due to unknown system dynamics. The following cost function is used to obtain an approximate &#x398;<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) by minimizing the error between the modeled output from Eq. <xref ref-type="disp-formula" rid="e2">2</xref> and observed output, <italic>y</italic>(<italic>k</italic>):<disp-formula id="e5">
<mml:math id="m5">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>.</mml:mo>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>The second term in the cost function ensures robustness against system nonlinearity. Minimizing this cost with respect to &#x398;<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) yields<disp-formula id="e6">
<mml:math id="m6">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<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:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<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:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:math>
<label>(6)</label>
</disp-formula>where &#x394;<italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) &#x3d; <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) &#x2212; <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic> &#x2212; 1). However, Eq. <xref ref-type="disp-formula" rid="e6">6</xref> is not robust to process errors such as arbitrary initialization of system parameters, which affect output convergence. This issue is resolved when &#x398;<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) is assigned as a <italic>rapid</italic> time-varying parameter<disp-formula id="e7">
<mml:math id="m7">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mtext>If&#x2009;</mml:mtext>
<mml:mspace width="0.17em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3e;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>.</mml:mo>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>The <italic>Lipschitz</italic> constant, <inline-formula id="inf1">
<mml:math id="m8">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, is chosen from the theoretical analysis of system stability and output convergence. Finally, Eqs <xref ref-type="disp-formula" rid="e2">2</xref>&#x2013;<xref ref-type="disp-formula" rid="e7">7</xref> are computed iteratively. This technique is similar to the existing framework (<xref ref-type="bibr" rid="B16">Hou and Jin, 2011</xref>); however, the novelty lies in the introduction of the <italic>rapid</italic> varying PPD and the methods of initializing control parameters, (<italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub>, &#x398;<sub>
<italic>c</italic>
</sub>(0)), and system parameters, (<italic>u</italic>
<sub>
<italic>c</italic>
</sub>(0), <italic>y</italic>(0)), for continuous real-time stability discussed in <xref ref-type="sec" rid="s3-2">Section 3.2</xref>.</p>
</sec>
<sec id="s3-2">
<title>3.2 Stability analysis and parameter initialization</title>
<p>In the traditional MFAC scheme, &#x398;<sub>
<italic>c</italic>
</sub>(0), <italic>y</italic>(0), <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(0), and <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub> are hand-tuned using trial and error methods which can be tedious. This issue can be resolved if a systematic approach to parametric initialization is followed under certain assumptions of the system stated below.</p>
<p>
<statement content-type="assumption" id="Assumption_1">
<label>Assumption 1</label>
<p>
<italic>The nonlinear system</italic> (1) <italic>satisfies a special case of Lipschitz condition for all</italic> <italic>k</italic> &#x3e; 0:<disp-formula id="e8">
<mml:math id="m9">
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(8)</label>
</disp-formula>
<italic>where</italic> <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) &#x2260; <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic> &#x2212; 1) <italic>and</italic> <inline-formula id="inf2">
<mml:math id="m10">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
<italic>. Therefore,</italic> &#x7c;&#x398;<sub>
<italic>c</italic>
</sub>&#x7c; &#x2208; (0, 1).</p>
<p>This assumption holds for a class of systems that cannot move beyond the commanded external force, unless affected by disturbance factors. For example, in robotic needle steering, a tissue cannot displace beyond the needle insertion velocity unless affected by other factors such as patient breathing. This condition resembles the bounded-input bounded-output stability where energy in the system output cannot increase beyond the energy levels in the system inputs according to energy conservation law. Hence, the absolute values of &#x398;<sub>
<italic>c</italic>
</sub> from Eq. <xref ref-type="disp-formula" rid="e2">2</xref> are also bounded between 0 and 1 according to Eq. <xref ref-type="disp-formula" rid="e8">8</xref>.</p>
<p>Next, the sign of &#x398;<sub>
<italic>c</italic>
</sub> depends on the system response to inputs, which is stated in the following assumption.</p>
</statement>
</p>
<p>
<statement content-type="assumption" id="Assumption_2">
<label>Assumption 2</label>
<p>
<italic>If system output changes in the same direction as the inputs, then</italic> &#x398;<sub>
<italic>c</italic>
</sub> &#x2208; (0, 1)<italic>. Otherwise,</italic> &#x398;<sub>
<italic>c</italic>
</sub> &#x2208; (&#x2212;1, 0).</p>
<p>This assumption holds for systems whose outputs are affected by multiple inputs. For example, if two inputs (say, <italic>u</italic>
<sub>
<italic>c</italic>1</sub> and <italic>u</italic>
<sub>
<italic>c</italic>2</sub>) influence an output such that an increase in <italic>u</italic>
<sub>
<italic>c</italic>1</sub> and decrease in <italic>u</italic>
<sub>
<italic>c</italic>2</sub> drive the system to desired outputs, then 0 &#x3c; &#x398;<sub>
<italic>c</italic>
</sub>(0) &#x3c; 1 for <italic>u</italic>
<sub>
<italic>c</italic>1</sub> and &#x2212;1 &#x3c; &#x398;<sub>
<italic>c</italic>
</sub>(0) &#x3c; 0 for <italic>u</italic>
<sub>
<italic>c</italic>2</sub>.</p>
<p>Third, if initial values of the system input and output are assigned close to the operating points, then output convergence is guaranteed.</p>
</statement>
</p>
<p>
<statement content-type="assumption" id="Assumption_3">
<label>Assumption 3</label>
<p>
<italic>Output convergence,</italic> <inline-formula id="inf3">
<mml:math id="m11">
<mml:munder>
<mml:mrow>
<mml:mi>lim</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi>&#x221e;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2192;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, <italic>is guaranteed if</italic> &#x2212;<italic>a</italic> &#x3c; <italic>y</italic>(0) &#x3c; <italic>a</italic> <italic>and</italic> <inline-formula id="inf4">
<mml:math id="m12">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3c;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> <italic>such that</italic> &#x7c;<italic>y</italic>&#x2a; &#x2212; <italic>y</italic>(0)&#x7c; &#x2192; 0 <italic>for some</italic> <italic>a</italic> &#x3e; 0<italic>,</italic> <inline-formula id="inf5">
<mml:math id="m13">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula>.</p>
<p>The operating points <inline-formula id="inf6">
<mml:math id="m14">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are usually identified during prior simulations. For physical systems, they are easily identified as safe operating limits provided by the system manufacturer.</p>
<p>Finally, output convergence also depends on the range of the input weighting factor, <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub>, stated as follows.</p>
</statement>
</p>
<p>
<statement content-type="assumption" id="Assumption_4">
<label>Assumption 4</label>
<p>
<italic>If system</italic> (1) <italic>is controlled for a regulation problem, then there exists a minimum value,</italic> <inline-formula id="inf7">
<mml:math id="m15">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> <italic>such that</italic> &#x7c;<italic>y</italic>&#x2a; &#x2212; <italic>y</italic>(<italic>k</italic> &#x2b; 1)&#x7c; &#x2192; 0 <italic>for all</italic> <italic>k</italic> <italic>and</italic> <inline-formula id="inf8">
<mml:math id="m16">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>
<italic>. There also exists a maximum value,</italic> <inline-formula id="inf9">
<mml:math id="m17">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, <italic>above which the system settles but with steady-state errors.</italic>
</p>
<p>Proof. The proof is straightforward where the boundedness property of <inline-formula id="inf10">
<mml:math id="m18">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> from <xref ref-type="statement" rid="Assumption_1">Assumption 1</xref> is used to maintain both system stability and convergence. If the steady-state error is defined as<disp-formula id="e9">
<mml:math id="m19">
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(9)</label>
</disp-formula>then substituting <italic>y</italic>(<italic>k</italic> &#x2b; 1) in Eq. <xref ref-type="disp-formula" rid="e9">9</xref> from Eq. <xref ref-type="disp-formula" rid="e1">1</xref>, we have<disp-formula id="e10">
<mml:math id="m20">
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>Substituting &#x394;<italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) from Eq. <xref ref-type="disp-formula" rid="e4">4</xref> in Eq. <xref ref-type="disp-formula" rid="e10">10</xref> and from the absolute value theorem,<disp-formula id="e11">
<mml:math id="m21">
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2264;</mml:mo>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>.</mml:mo>
</mml:math>
<label>(11)</label>
</disp-formula>
</p>
<p>Now, using the boundedness of &#x398;<sub>
<italic>c</italic>
</sub> from <xref ref-type="statement" rid="Assumption_2">Assumption 2</xref>, we know that<disp-formula id="e12">
<mml:math id="m22">
<mml:mn>0</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>.</mml:mo>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>Since <inline-formula id="inf11">
<mml:math id="m23">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> cannot exceed 1 from Eqs <xref ref-type="disp-formula" rid="e11">11</xref>, <xref ref-type="disp-formula" rid="e12">12</xref>, we assume <inline-formula id="inf12">
<mml:math id="m24">
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>.</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula> as the maximum limit to find <inline-formula id="inf13">
<mml:math id="m25">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>. Then, using the general concept of quadratic equation, <inline-formula id="inf14">
<mml:math id="m26">
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, we have<disp-formula id="e13">
<mml:math id="m27">
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2264;</mml:mo>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mo>&#x2264;</mml:mo>
<mml:mfenced open="|" close="|">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msqrt>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>.</mml:mo>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>Hence, <inline-formula id="inf15">
<mml:math id="m28">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.25</mml:mn>
</mml:math>
</inline-formula> using the relation, <inline-formula id="inf16">
<mml:math id="m29">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msqrt>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula> in Eq. <xref ref-type="disp-formula" rid="e13">13</xref>. Finding an exact maximum value, <inline-formula id="inf17">
<mml:math id="m30">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, is not important, as <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub> &#x3e; 1 leads to lower rising times and larger steady-state errors for many systems (<xref ref-type="bibr" rid="B16">Hou and Jin, 2011</xref>). Since many real-time applications require fast rising time and low steady-state errors, <inline-formula id="inf18">
<mml:math id="m31">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula> is considered. Furthermore, &#x394;<italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic>) needs to be constrained as most actuators have finite excitation. Thus, <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub> can be chosen arbitrarily in the range <inline-formula id="inf19">
<mml:math id="m32">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> to balance between constrained inputs and tracking errors.</p>
</statement>
</p>
</sec>
<sec id="s3-3">
<title>3.3 Simulation tests</title>
<p>The improved framework (IMFAC) is validated on two test nonlinear systems to compare performance with MFAC (<xref ref-type="bibr" rid="B16">Hou and Jin, 2011</xref>). All equations are coded in the MATLAB<sup>&#xae;</sup> 2018Rb environment and tested on simulated SISO and MIMO nonlinear systems. The algorithms are compared using the same initial conditions and control parameters.</p>
<p>For a SISO system with some nonlinear input&#x2013;output model,<disp-formula id="e14">
<mml:math id="m33">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="">
<mml:mrow>
<mml:mtable class="cases">
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mfrac>
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>y</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>;</mml:mo>
<mml:mspace width="1em"/>
<mml:mi>k</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>500</mml:mn>
<mml:mspace width="1em"/>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mfrac>
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>y</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<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:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>y</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>;</mml:mo>
<mml:mspace width="1em"/>
<mml:mi>k</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>500</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>round</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>500</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="1em"/>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>Let the initial conditions of the system be <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(1) &#x3d; <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(2) &#x3d; 0 and <italic>y</italic>(1) &#x3d; <italic>y</italic>(2) &#x3d; 0 with a constant reference output as <italic>y</italic>&#x2a; &#x3d; 0.5. The output of the system is expected to change at <italic>k</italic> &#x3d; 500, 750 according to Eq. <xref ref-type="disp-formula" rid="e14">14</xref>, and thus, some disturbances due to these transitions are expected. Simulation results of SISO are shown in <xref ref-type="fig" rid="F2">Figures 2A, B</xref>, where solid green plots correspond to IMFAC, dashed red plots correspond to original MFAC, and the dash&#x2013;dot blue plot is the reference signal. For <inline-formula id="inf20">
<mml:math id="m34">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.1</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, IMFAC converged to the desired value within <italic>k</italic> &#x3d; 790 after disturbance at <italic>k</italic> &#x3d; 750, while MFAC showed lack of output convergence due to sustained oscillations (upper plot of <xref ref-type="fig" rid="F2">Figure 2A</xref>). When &#x7c;&#x398;<sub>
<italic>c</italic>
</sub>&#x7c; &#x3e; 1, IMFAC showed faster convergence at the disturbances, whereas MFAC showed slower convergence at <italic>k</italic> &#x3d; 830 after disturbance at <italic>k</italic> &#x3d; 750 (upper plot of <xref ref-type="fig" rid="F2">Figure 2B</xref>). For the same control parameters and initial conditions, IMFAC showed better stability and faster convergence due to the corrective action of the <italic>rapid</italic> time-varying PPD, compared to MFAC with <italic>slow</italic> time-varying PPD (lower plots of <xref ref-type="fig" rid="F2">Figures 2A, B</xref>).</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Simulation results on test nonlinear systems: <bold>(A,B)</bold> SISO system showing stable response and faster convergence of improved MFAC (solid green, upper plots) even when <inline-formula id="inf21">
<mml:math id="m35">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> or &#x7c;&#x398;<sub>
<italic>c</italic>
</sub>&#x7c; &#x3e; 1, due to the <italic>rapid</italic> time-varying behavior of &#x398;<sub>
<italic>c</italic>
</sub> (solid blue, lower plots). <bold>(C)</bold> MIMO system response through the directional control of inputs (<italic>u</italic>
<sub>
<italic>c</italic>1</sub>, <italic>u</italic>
<sub>
<italic>c</italic>2</sub>) and initial &#x398;<sub>
<italic>c</italic>
</sub>, where the output is controlled by increasing <italic>u</italic>
<sub>
<italic>c</italic>1</sub> with positive &#x398;<sub>
<italic>c</italic>
</sub> and decreasing <italic>u</italic>
<sub>
<italic>c</italic>2</sub> with negative &#x398;<sub>
<italic>c</italic>
</sub>. <bold>(D)</bold> Stability analysis comparing improved MFAC (blue diamond) and original MFAC (red cross) for different <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub> and initial &#x398;<sub>
<italic>c</italic>
</sub>.</p>
</caption>
<graphic xlink:href="frobt-10-1271748-g002.tif"/>
</fig>
<p>We consider a two-input (<italic>u</italic>
<sub>
<italic>c</italic>1</sub>, <italic>u</italic>
<sub>
<italic>c</italic>2</sub>) one-output (<italic>y</italic>) MIMO system with some nonlinear model in Eq. <xref ref-type="disp-formula" rid="e15">15</xref>.<disp-formula id="e15">
<mml:math id="m36">
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mi>y</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>3</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>5</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:math>
<label>(15)</label>
</disp-formula>where <inline-formula id="inf22">
<mml:math id="m37">
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>. Arbitrary initial conditions of the system are <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(1) &#x3d; <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(2) &#x3d; [0.5,0.6]<sup>
<italic>T</italic>
</sup>, <italic>y</italic>(1) &#x3d; 0, <italic>y</italic>(2) &#x3d; 0.9, and &#x398;<sub>
<italic>c</italic>
</sub>(1) &#x3d; [0.5, &#x2212;0.2]. Let <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>1</sub> &#x3d; <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>2</sub> &#x3d; <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub> &#x3d; 0.5 for each input. We can have <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>1</sub> &#x2260; <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>2</sub>; however, for the ease of validating <xref ref-type="statement" rid="Assumption_2">Assumption 2</xref>, we choose <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>1</sub> &#x3d; <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>2</sub>. A constant reference trajectory close to zero (<italic>y</italic>&#x2a; &#x3d; 0.01) is considered since ideal <italic>y</italic>&#x2a; &#x3d; 0 would cause control inputs to be zero which cannot drive the system to desired outputs. Therefore, <italic>near</italic> zero reference is used to simulate stationary or minimum movement of the system. Simulation results show that negative &#x398;<sub>
<italic>c</italic>2</sub> &#x3d; &#x2212;0.2 decreases <italic>u</italic>
<sub>
<italic>c</italic>2</sub> and positive &#x398;<sub>
<italic>c</italic>1</sub> &#x3d; 0.5 increases <italic>u</italic>
<sub>
<italic>c</italic>1</sub>, which drive the system to the desired output (<italic>y</italic>&#x2a; &#x3d; 0.01), see <xref ref-type="fig" rid="F2">Figure 2C</xref>. It should be noted that initial &#x398;<sub>
<italic>c</italic>
</sub> can be assigned to control the system inputs in the desired direction only if there is basic knowledge about system response to the inputs.</p>
<p>Finally, the performance of IMFAC is compared with original MFAC in terms of frequency of unstable events computed as the number of occurrences of &#x7c;&#x394;<italic>y</italic>(<italic>k</italic> &#x2b; 1)&#x7c; &#x3e; &#x7c;&#x394;<italic>u</italic>
<sub>
<italic>c</italic>
</sub>(<italic>k</italic>)&#x7c; per simulation time, for different values of control parameters (<italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub> and &#x398;<sub>
<italic>c</italic>
</sub>) as shown in <xref ref-type="fig" rid="F2">Figure 2D</xref>. The blue diamond plot (IMFAC) for <inline-formula id="inf23">
<mml:math id="m38">
<mml:mi>&#x3bb;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.1</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> shows that system stability was not affected by arbitrary initialization of <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub> and other disturbances. Otherwise, these results show the comparable performance of IMFAC with MFAC using a systematic approach to parameter initialization. On average, the convergence time of IMFAC was 20% faster than that of MFAC. This shows that irrespective of the control parameters and initial conditions, system stability and fast output convergence are always achieved with IMFAC.</p>
</sec>
<sec id="s3-4">
<title>3.4 Application to robotic needle steering</title>
<p>The MIMO system in <xref ref-type="sec" rid="s3-3">Section 3.3</xref> is similar to the needle intervention applications where tissue motion, <italic>y</italic> &#x3d; <italic>l</italic>, is controlled by two inputs: a) insertion velocity <italic>&#x3bd;</italic> and b) duty-cycle factor as a measure of the number of needle shaft rotations per insertion, <italic>D</italic>. Tissue motion can be minimized with a decrease in insertion velocity and increase in the duty-cycle factor. Therefore, stationary tissue is desired (<italic>l</italic>&#x2a; &#x2192; 0.01) during needle insertion procedures. Through appropriate selection of parameters (<italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub>, &#x398;<sub>
<italic>c</italic>
</sub>), IMFAC can minimize tissue motions during needle insertions as shown in <xref ref-type="fig" rid="F3">Figure 3</xref>. The input&#x2013;output equations of the SISO and MIMO systems from <xref ref-type="sec" rid="s3-3">Section 3.3</xref> are used only for simulation purpose to validate the control algorithms and are not available in real time. For real-time needle insertion experiments in unknown tissues, <italic>l</italic> is obtained from position sensor measurements, and inputs are the user-defined steering control inputs, <italic>&#x3bd;</italic> and <italic>D</italic>. Based on the previous MIMO simulation results, initial values of &#x398;<sub>
<italic>c</italic>
</sub> &#x3d; [0.5,&#x2212;0.2]<sup>
<italic>T</italic>
</sup> and same <italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub> &#x3d; 0.5 will be used for both the inputs (<italic>&#x3bd;</italic> and <italic>D</italic>) for all needle insertions. Initial values of the inputs are commanded by a user. The range or operating points of these inputs is decided by the maximum rating of the motors used to drive the needle following <xref ref-type="statement" rid="Assumption_3">Assumption 3</xref>. Since the output (tissue displacement) is zero when excitation (insertion inputs) is zero for needle&#x2013;tissue systems, we will assume zero initial values, <italic>l</italic>(0) &#x3d; 0, for all needle insertions. The next section will discuss application of IMFAC to prevent adverse events during needle insertions in a tissue.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Model-free control to minimize tissue motion <italic>l</italic>.</p>
</caption>
<graphic xlink:href="frobt-10-1271748-g003.tif"/>
</fig>
</sec>
</sec>
<sec id="s4">
<title>4 Prevention of adverse events</title>
<p>In this section, we first summarize the methods to predict adverse events using a previously developed sensor data forecasting technique called compact-form dynamic linearization model-free prediction (CFDL-MFP) (<xref ref-type="bibr" rid="B33">Narayan and Fey, 2020</xref>). We then develop optimal needle steering algorithms using IMFAC and detection algorithms from the work of <xref ref-type="bibr" rid="B34">Narayan et al. (2018b)</xref> for the overall prevention of adverse events.</p>
<sec id="s4-1">
<title>4.1 Prediction of adverse events from sensor data forecasts</title>
<p>Let the time series data obtained from a sensor at current time <italic>k</italic> be <italic>S</italic>(<italic>k</italic>). The steps to generate sensor data forecasts, <inline-formula id="inf24">
<mml:math id="m39">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, for some future prediction horizon, <italic>N</italic>, using CFDL-MFP are<disp-formula id="e16">
<mml:math id="m40">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>.</mml:mo>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>The data vector <italic>S</italic> represents sensor data. For example, previous <italic>N</italic> samples of force data measured from a force sensor at time instant <italic>k</italic> are represented as <italic>S</italic>
<sub>
<italic>N</italic>
</sub>(<italic>k</italic>), and <inline-formula id="inf25">
<mml:math id="m41">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> represents <italic>N</italic>-step ahead forecasts of force data at the next time instant <italic>k</italic> &#x2b; 1. The forecast parameters &#x394;<italic>U</italic>
<sub>
<italic>N</italic>
</sub>(<italic>k</italic>) and <inline-formula id="inf26">
<mml:math id="m42">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are computed following the procedure in our previous work (<xref ref-type="bibr" rid="B33">Narayan and Fey, 2020</xref>):<disp-formula id="e17">
<mml:math id="m43">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x25e6;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x25e6;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x25e6;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
<mml:mo>.</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x25e6;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>,</mml:mo>
</mml:math>
<label>(17)</label>
</disp-formula>where &#x25e6; is array element-wise operation, <inline-formula id="inf27">
<mml:math id="m44">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is an <italic>N</italic>-dimension vector of ones, and <inline-formula id="inf28">
<mml:math id="m45">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. The sensor data <italic>S</italic>
<sub>
<italic>N</italic>
</sub>(<italic>k</italic>) contain previous <italic>N</italic> observed data points, and the reference vector <inline-formula id="inf29">
<mml:math id="m46">
<mml:msubsup>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is the running average of the observed data points.</p>
<p>Forecasts of force sensor data are generated when a slight increase in force is detected, and if force forecasts show patterns of rapid increase, then needle buckling is predicted (<xref ref-type="bibr" rid="B33">Narayan and Fey, 2020</xref>). Similarly, tissue displacements can be predicted using forecasts of tissue position data. Tissue displacement is characterized based on the intensity of motion such as mild tissue displacement (MTD) and severe tissue displacement (STD). STD occurs when the needle tip stops moving relative to the tissue frame (<xref ref-type="bibr" rid="B32">Narayan et al., 2018a</xref>). To predict STD before occurrence, <italic>N</italic>-step forecasts of the tissue position relative to fixed frame <inline-formula id="inf30">
<mml:math id="m47">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">twN</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and the needle-tip position relative to fixed frame <inline-formula id="inf31">
<mml:math id="m48">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">nwN</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> are generated using Eqs <xref ref-type="disp-formula" rid="e16">16</xref>, <xref ref-type="disp-formula" rid="e17">17</xref>. It should be noted that <italic>l</italic>
<sub>
<italic>tw</italic>
</sub> and <italic>l</italic>
<sub>
<italic>nw</italic>
</sub> are the Euclidean norm of 3D positions measured from position sensors <inline-formula id="inf32">
<mml:math id="m49">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf33">
<mml:math id="m50">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, respectively. The norm of the needle-tip position relative to the tissue frame is obtained as <italic>l</italic>
<sub>
<italic>nt</italic>
</sub> &#x3d; <italic>l</italic>
<sub>
<italic>nw</italic>
</sub> &#x2212; <italic>l</italic>
<sub>
<italic>tw</italic>
</sub>, and <inline-formula id="inf34">
<mml:math id="m51">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">twN</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">nwN</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ntN</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are the forecasts of the corresponding position norms. STD events are then predicted using these norm position forecasts with the sigmoid slope detection methods in Eq. <xref ref-type="disp-formula" rid="e18">18</xref>.<disp-formula id="e18">
<mml:math id="m52">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>180</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>;</mml:mo>
<mml:mspace width="1em"/>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1,2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>;</mml:mo>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">twN</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">nwN</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ntN</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>;</mml:mo>
<mml:mspace width="1em"/>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>,</mml:mo>
</mml:math>
<label>(18)</label>
</disp-formula>
<disp-formula id="equ1">
<mml:math id="m53">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mtext>If&#x2009;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3e;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mtext>&#x2009;OR&#x2009;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mtext>&#x2009;Then&#x2009;</mml:mtext>
<mml:mfenced open="{" close="">
<mml:mrow>
<mml:mtable class="cases">
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mtext>If&#x2009;</mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>;</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="right">
<mml:mtext>&#x2009;STD&#x2009;predicted</mml:mtext>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mtext>Else&#x2009;</mml:mtext>
<mml:mspace width="1em"/>
<mml:mspace width="1em"/>
<mml:mspace width="1em"/>
<mml:mspace width="1em"/>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="right">
<mml:mtext>MTD&#x2009;predicted</mml:mtext>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mspace width="1em"/>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>
</p>
<p>The needle insertion distance <inline-formula id="inf35">
<mml:math id="m54">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is linearly projected into the prediction horizon <italic>N</italic>. The thresholds <italic>m</italic>
<sub>1</sub> and <italic>m</italic>
<sub>2</sub> are experimentally determined (<xref ref-type="bibr" rid="B34">Narayan et al., 2018b</xref>).</p>
</sec>
<sec id="s4-2">
<title>4.2 Real-time prevention algorithm</title>
<p>To prevent critical events such as needle buckling and STD before they occur, it is necessary for the robot to respond immediately to the prediction algorithms. For this purpose, reactive control is implemented where the robot stops and retracts the needle when buckling is predicted, and the robot stops insertion when STD is predicted to avoid potential damage to the tissue. However, when a mild event such as MTD is detected, adaptive control (IMFAC) computes optimal steering inputs (insertion velocity and duty cycle) to steer needles such that the occurrence of mild events is minimized and severe events are prevented. This strategy ensures continuity of the insertion procedure which otherwise is disrupted by reactive control. A complete event prevention algorithm with a combination of reactive and adaptive control is shown in <xref ref-type="fig" rid="F4">Figure 4</xref>.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Flowchart for the overall prevention of adverse events. Critical events such as STD and needle buckling are prevented using reactive control (e.g., robot stop and retract needle). When mild events are detected, needle insertions continue through optimal steering control from IMFAC to prevent potential severe events before occurrence.</p>
</caption>
<graphic xlink:href="frobt-10-1271748-g004.tif"/>
</fig>
<p>
<statement content-type="algorithm" id="Algorithm_1">
<label>Algorithm 1</label>
<p>Adverse event prevention.<list list-type="simple">
<list-item>
<p>
<bold>Require:</bold> Axial force sensor <italic>f</italic>
<sub>
<italic>a</italic>
</sub>(<italic>k</italic>), 3D needle-tip sensor <inline-formula id="inf36">
<mml:math id="m55">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, 3D tissue sensor <inline-formula id="inf37">
<mml:math id="m56">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, prediction horizon <italic>N</italic>, total insertion distance <italic>s</italic>, commanded insertion velocity <italic>&#x3bd;</italic>, and commanded duty-cycle factor <italic>D</italic>.</p>
</list-item>
<list-item>
<p>1:&#x2003; <italic>k</italic> &#x2190; 0</p>
</list-item>
<list-item>
<p>2:&#x2003; Initialize IMFAC parameters (<italic>&#x3bb;</italic>
<sub>
<italic>c</italic>
</sub>, &#x398;<sub>
<italic>c</italic>
</sub>(0), <italic>u</italic>
<sub>
<italic>c</italic>
</sub>(0) &#x3d; [<italic>&#x3bd;</italic>,<italic>D</italic>]<sup>
<italic>T</italic>
</sup>, <italic>l</italic>
<sub>
<italic>tw</italic>
</sub>(0))</p>
</list-item>
<list-item>
<p>3:&#x2003; Initialize CFDL-MFP parameters</p>
</list-item>
<list-item>
<p>4:&#x2003; PredictionFlag &#x2190; 0</p>
</list-item>
<list-item>
<p>5:&#x2003; <bold>while</bold> <italic>s</italic>(<italic>k</italic>) &#x3c; <italic>s</italic> <bold>do</bold>
</p>
</list-item>
<list-item>
<p>6:&#x2003;&#x2003;<italic>l</italic>(<italic>k</italic>) &#x2190; Norm<inline-formula id="inf38">
<mml:math id="m57">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>; <inline-formula id="inf39">
<mml:math id="m58">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mo>&#x20d7;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>7:&#x2003;&#x2003;<inline-formula id="inf40">
<mml:math id="m59">
<mml:msubsup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2190;</mml:mo>
</mml:math>
</inline-formula> <italic>OptimalMean</italic>
<inline-formula id="inf41">
<mml:math id="m60">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>l</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>; <italic>l</italic> &#x3d; (<italic>l</italic>
<sub>
<italic>nw</italic>
</sub>, <italic>l</italic>
<sub>
<italic>tw</italic>
</sub>)</p>
</list-item>
<list-item>
<p>8:&#x2003;&#x2003;<italic>k</italic>
<sub>
<italic>f</italic>
</sub>, <italic>k</italic>
<sub>
<italic>b</italic>
</sub> &#x2190; <italic>CheckBuckling</italic>
<inline-formula id="inf42">
<mml:math id="m61">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>9:&#x2003;&#x2003;<bold>if</bold> <italic>k</italic> &#x3d; <italic>k</italic>
<sub>
<italic>f</italic>
</sub> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>10:&#x2003;&#x2003;&#x2003;Force increase alert</p>
</list-item>
<list-item>
<p>11:&#x2003;&#x2003;&#x2003;<inline-formula id="inf43">
<mml:math id="m62">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
</mml:math>
</inline-formula>CFDL-MFP<inline-formula id="inf44">
<mml:math id="m63">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>12:&#x2003;&#x2003;&#x2003;PredictionFlag &#x2190; <italic>CheckBuckling</italic>
<inline-formula id="inf45">
<mml:math id="m64">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>13:&#x2003;&#x2003;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>14:&#x2003;&#x2003;<bold>if</bold> PredictionFlag OR <italic>k</italic> &#x3d; <italic>k</italic>
<sub>
<italic>b</italic>
</sub> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>15:&#x2003;&#x2003;&#x2003;Buckling predicted/detected: Insertion stopped and needle retracted</p>
</list-item>
<list-item>
<p>16:&#x2003;&#x2003;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>17:&#x2003;&#x2003;(<italic>k</italic>
<sub>
<italic>m</italic>
</sub>, <italic>k</italic>
<sub>
<italic>s</italic>
</sub>) &#x2190; <italic>CheckTD</italic>
<inline-formula id="inf46">
<mml:math id="m65">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>s</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>18:&#x2003;&#x2003;<bold>if</bold> <italic>k</italic> &#x3d; <italic>k</italic>
<sub>
<italic>m</italic>
</sub> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>19:&#x2003;&#x2003;&#x2003;MTD detected</p>
</list-item>
<list-item>
<p>20:&#x2003;&#x2003;<inline-formula id="inf47">
<mml:math id="m66">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">twN</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">nwN</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
</mml:math>
</inline-formula>CFDL-MFP<inline-formula id="inf48">
<mml:math id="m67">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>21:&#x2003;&#x2003;PredictionFlag &#x2190; <italic>CheckTD</italic>
<inline-formula id="inf49">
<mml:math id="m68">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">twN</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">nwN</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>22:&#x2003;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>23:&#x2003;<bold>if</bold> PredictionFlag OR <italic>k</italic> &#x3d; <italic>k</italic>
<sub>
<italic>s</italic>
</sub> <bold>then</bold>
</p>
</list-item>
<list-item>
<p>24:&#x2003;&#x2003;&#x2003;STD predicted/detected: Insertion stopped</p>
</list-item>
<list-item>
<p>25:&#x2003;&#x2003;<bold>else</bold>
</p>
</list-item>
<list-item>
<p>26:&#x2003;&#x2003;&#x2003;<inline-formula id="inf50">
<mml:math id="m69">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2190;</mml:mo>
</mml:math>
</inline-formula> IMFAC<inline-formula id="inf51">
<mml:math id="m70">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x398;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>
</p>
</list-item>
<list-item>
<p>27:&#x2003;&#x2003;<bold>end if</bold>
</p>
</list-item>
<list-item>
<p>28:&#x2003;&#x2003;<italic>k</italic> &#x2190; <italic>k</italic> &#x2b; 1</p>
</list-item>
<list-item>
<p>29:&#x2003; <bold>end while</bold>
</p>
</list-item>
</list>
</p>
</statement>
</p>
<p>The pseudo code for adverse event prevention is presented in <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>. The code is an integration of the proposed methods with the previous event detection, sensor forecasting (CFDL-MFP), and prediction algorithms (<xref ref-type="bibr" rid="B32">Narayan et al., 2018a</xref>; <xref ref-type="bibr" rid="B33">Narayan and Fey, 2020</xref>). The inputs to the algorithm are the filtered sensor data at current time <italic>k</italic>, CFDL-MFP prediction horizon <italic>N</italic>, user-commanded initial needle insertion velocity <italic>&#x3bd;</italic>, and duty-cycle factor <italic>D</italic>. Before iteration, the IMFAC control parameters are initialized according to <xref ref-type="sec" rid="s3-2">Section 3.2</xref>, and the initial event prediction flag is set to zero, see steps 3&#x2013;4. The total insertion distance <italic>s</italic> is user-defined prior to the insertion procedure. Encoder readings <italic>s</italic>(<italic>k</italic>) are used to check if the measured insertion distance reached user-defined <italic>s</italic>, see step 5. All sensor data are filtered in real time using the Kalman filtering scheme from the work of <xref ref-type="bibr" rid="B34">Narayan et al. (2018b)</xref>. For every iteration, the Euclidean norm of 3D position sensors and optimal mean forces <inline-formula id="inf52">
<mml:math id="m71">
<mml:msubsup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are computed, since CFDL-MFP and detection algorithms work on univariate time series data, see steps 6&#x2013;7. The <italic>Optimal Mean</italic> function is the running average of the observed sensor data (<xref ref-type="bibr" rid="B32">Narayan et al., 2018a</xref>). Checks for needle buckling detection are performed for every <italic>k</italic>, see step 8. If a force increase is alerted by the detection algorithm, <italic>N</italic>-step forecasts of force data <inline-formula id="inf53">
<mml:math id="m72">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are generated with CFDL-MFP and the buckling prediction algorithm checks for any buckling event using the force sensor forecasts (<xref ref-type="bibr" rid="B33">Narayan and Fey, 2020</xref>). If buckling is predicted, the robot stops insertions and needle is retracted, see steps 9&#x2013;16. Similarly, checks for tissue displacement detection are performed, see step 17. If MTD is detected (<italic>k</italic> &#x3d; <italic>k</italic>
<sub>
<italic>m</italic>
</sub>), the displacement prediction algorithm checks for STD events. When STD is predicted, the robot stops insertions, see steps 18&#x2013;24. Otherwise, steering control inputs for the needle are continuously updated until the end of insertion distance <italic>s</italic> to minimize or prevent further displacements of the tissue, see steps 25&#x2013;29. The algorithm is executed in a multi-threaded framework to ensure simultaneous prediction and prevention of adverse events in real time.</p>
</sec>
</sec>
<sec id="s5">
<title>5 Experimental methods</title>
<p>This section describes in detail the robot hardware setup and protocols used to validate the adverse event prevention algorithm during needle insertions in artificial and biological tissues.</p>
<sec id="s5-1">
<title>5.1 Robot and setup</title>
<p>The needle steering robot for needle insertion experiments is shown in <xref ref-type="fig" rid="F5">Figure 5A</xref>. The robot is controlled with a Dell Inspiron 15 Gaming Laptop through custom C&#x2b;&#x2b; multi-threaded application (QT Creator 4.6.0) on Ubuntu Linux 16.04. The code manages low-level PID motor control and the execution of duty-cycled flipping algorithms to enable different needle steering directions (<xref ref-type="bibr" rid="B27">Majewicz et al., 2014</xref>). The robot is equipped with a 6-axis force&#x2013;torque sensor (Nano-17, ATI Inc.) at the needle base to track axial forces due to needle&#x2013;tissue interaction and an electromagnetic (EM) tracker (trakSTAR, NDI Inc.) to track needle-tip position. Data from these sensors are streamed at 50 Hz similar to (<xref ref-type="bibr" rid="B34">Narayan et al., 2018b</xref>). <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref> is coded as modules in Python 3.5 and interfaced with a low-level motor control code in QT Creator C&#x2b;&#x2b; through pybind11, an open-source Python-C&#x2b;&#x2b; wrapper that calls Python modules from C&#x2b;&#x2b; directly enabling multi-threaded operations. Real-time plotting of sensor data and prediction results of <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref> during needle insertions are displayed on QT GUI using the QCustomPlot library.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Experimental setup: <bold>(A)</bold> Needle steering robot with force and EM sensors. <bold>(B,C)</bold> Gelatin tissues (<italic>T</italic>
<sub>1</sub>, <italic>T</italic>
<sub>2</sub>) on a slippery platform smeared with soap water to elicit adverse events. <bold>(D,E)</bold> Prebent-tip needle (<italic>N</italic>
<sub>1</sub>) for insertions in all tissues and the straight bevel needle (<italic>N</italic>
<sub>2</sub>) for insertions in <italic>T</italic>
<sub>1</sub> and <italic>T</italic>
<sub>2</sub>. <bold>(F)</bold> Goat liver (<italic>T</italic>
<sub>3</sub>) on a non-slippery platform to validate event prevention algorithms. <bold>(G)</bold> Fluoroscopic imaging to track adverse events during insertions in <italic>T</italic>
<sub>3</sub>.</p>
</caption>
<graphic xlink:href="frobt-10-1271748-g005.tif"/>
</fig>
</sec>
<sec id="s5-2">
<title>5.2 Gelatin tissues to simulate adverse events</title>
<p>A homogeneous gelatin tissue of stiffness 60 kPa (1:3 gelatin to sugar in 500 mL water) and dimensions 14 &#xd7; 8 &#xd7; 7.5 cm was created to validate tissue displacement prevention methods from <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>. The tissue is placed on a platform smeared with soap water to simulate a slippery surface for the sliding motion of the tissue, as shown in <xref ref-type="fig" rid="F5">Figure 5B</xref>. For short-hand notation, let this sample be denoted as <italic>T</italic>
<sub>1</sub>. Another gelatin sample of varying stiffness 60 and 20 kPa (1:3 gelatin to sugar in 1000 mL water) was created by embedding an obstacle to validate needle buckling prevention methods in heterogeneous tissue with a known environment. To prevent damage to the needle and the EM needle position sensor, a standard rectangular Scotch-Brite dish scrubber of thickness 0.7 cm is used as an obstacle. The 20 kPa region is on one side of the obstacle at 7.1 cm from a short edge, and the stiffer 60 kPa region is on the other side of the obstacle at 6 cm from the opposite short edge as shown in <xref ref-type="fig" rid="F5">Figure 5C</xref>. This tissue denoted as <italic>T</italic>
<sub>2</sub> is also placed on the slippery platform to validate <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref> during buckling and tissue displacement events. For more details on gelatin preparation methods, refer to the work of <xref ref-type="bibr" rid="B32">Narayan et al. (2018a)</xref>. Both <italic>T</italic>
<sub>1</sub> and <italic>T</italic>
<sub>2</sub> are used for experiments within 12 h of refrigeration. A trakSTAR sensor was taped on the surface of these tissues to track displacements.</p>
</sec>
<sec id="s5-3">
<title>5.3 Steerable needles</title>
<p>Two steerable needles with different dimensions and tips are used to validate the proposed prevention methods for robustness to needle types. The first steerable needle (<italic>N</italic>
<sub>1</sub>) shown in <xref ref-type="fig" rid="F5">Figures 5D</xref> is made from a hollow nitinol tube with dimensions 250 mm length, 0.8 mm OD, and 0.6 mm ID and a 30&#xb0; prebent tip of 4 mm length (<xref ref-type="bibr" rid="B27">Majewicz et al., 2014</xref>). For integration with the robot, an EM needle tracker was inserted into the hollow end of the needle and secured with Luer locks. The second needle (<italic>N</italic>
<sub>2</sub>) is a clinically available prostrate seeding needle with a stiff hollow tubing of length 175 mm and thickness 1.27 mm. A stainless steel wire of thickness 1.2 mm was cut into a small piece of length 10 mm and inserted into the tip of the hollow seeding tube such that 5 mm was jutting out of the tube and the rest 5 mm was inside the tube. The tip was ground to create a bevel angle of 60&#xb0; to enable cutting through the tissue. Another EM needle tracker was inserted into the hollow end of the needle and secured with Luer locks for integration with the robot similar to <italic>N</italic>
<sub>1</sub>, as shown in <xref ref-type="fig" rid="F5">Figure 5E</xref>.</p>
</sec>
<sec id="s5-4">
<title>5.4 Insertion protocol in gelatin and biological tissues</title>
<p>To specifically evaluate IMFAC control and tissue displacement prevention methods against different needle types, a total of 30 insertions with prebent needle <italic>N</italic>
<sub>1</sub> and six insertions with straight needle <italic>N</italic>
<sub>2</sub> were performed in tissue <italic>T</italic>
<sub>1</sub>. To validate both buckling prevention and tissue displacement prevention algorithms against various needle and tissue types, a total of 10 insertions with needle <italic>N</italic>
<sub>1</sub> and four insertions with <italic>N</italic>
<sub>2</sub> were performed in tissue <italic>T</italic>
<sub>2</sub>. These insertions were performed using four initial user-commanded insertion velocities (0.25,0.5,1,1.5)cm/s, and three initial user-commanded duty cycle (0,50,100)%. Videos of the insertions were recorded using an iPhone 11 camera focused on the top surface of the tissue and a digital camera (Sony W800/B20MP 5X Optical Zoom) focused on the overall robot-tissue setup. The videos were used as ground truth for verification of the prevention algorithms. For viewing and analysis, motion images were generated in MATLAB at 30 frames per second and overlaid using Adobe Photoshop CC 2020.</p>
<p>Around 16 needle insertions were performed with the <italic>ex vivo</italic> goat liver tissue labeled as <italic>T</italic>
<sub>3</sub> in <xref ref-type="fig" rid="F5">Figure 5F</xref> at the University of Texas Southwestern Medical Center. The liver tissue was placed on a clean platform. Live fluoroscopic videos were collected using a 9-in XRII OEC series 9600 fluoroscope (X-ray source and CCD camera) and saved with a Canopus ADVC 110 frame grabber, as shown in <xref ref-type="fig" rid="F5">Figure 5G</xref>. The fluoroscopic videos were used as ground truth to check if adverse events were detected or prevented using <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>.</p>
</sec>
</sec>
<sec sec-type="results|discussion" id="s6">
<title>6 Results and discussion</title>
<p>A good result of an optimal needle steering in the event of a mild tissue displacement is shown in <xref ref-type="fig" rid="F6">Figures 6A&#x2013;C</xref>. As the prebent needle <italic>N</italic>
<sub>1</sub> steered within the tissue <italic>T</italic>
<sub>1</sub>, MTD was detected in the direction of the tip showing curved tissue motion from the motion image in <xref ref-type="fig" rid="F6">Figure 6A</xref>. Each motion image was generated by overlaying three frames of motion above the other to show the translation displacement of the tissue and insertion or retraction motions of the needle. As soon as MTD was detected at 11.5 s (pink-shaded region) from <xref ref-type="fig" rid="F6">Figure 6B</xref>, optimal steering inputs were calculated such that MTD stopped for short periods of time as can be seen in the discontinuities around 20 s from <xref ref-type="fig" rid="F6">Figure 6C</xref>. The insertion procedure completed with reduced insertion velocity (blue plot) and increased duty-cycle (green plot) as no severe events were predicted. It should be noted that the insertion inputs were constrained where the velocity cannot reduce below 0.25 cm/s nor increase beyond 1.5 cm/s due to motor ratings. Similarly, there are only limited duty-cycled steering options between 0% and 100%. If the needle was inserted with the lowest insertion velocity and MTD was detected, then the duty-cycle increased to reduce tissue motion.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Results in gelatin tissues: <bold>(A&#x2013;C)</bold> Motion image and plots showing controlled needle insertions with the prebent needle (<italic>N</italic>
<sub>1</sub>) in tissue <italic>T</italic>
<sub>1</sub> to minimize tissue motion, by changing needle insertion velocity and duty cycle (tip orientations) during the detection of MTD. <bold>(D&#x2013;F)</bold> Motion image and plots showing the retraction of the straight needle (<italic>N</italic>
<sub>2</sub>) at the obstacle in <italic>T</italic>
<sub>2</sub>, and buckling was predicted. <bold>(G&#x2013;I)</bold> Motion image and plots showing controlled needle insertions with needle <italic>N</italic>
<sub>1</sub> in tissue <italic>T</italic>
<sub>2</sub> during MTD, followed by reactive control (robot stopped insertion) when severe displacement (STD) was predicted.</p>
</caption>
<graphic xlink:href="frobt-10-1271748-g006.tif"/>
</fig>
<p>Buckling prediction results in tissues with embedded obstacle <italic>T</italic>
<sub>2</sub> are shown in <xref ref-type="fig" rid="F6">Figures 6D&#x2013;F</xref>. The motion images are obtained by overlaying two frames above the other to show the insertion and retraction motions of the needle during a predicted event. The frames corresponding to the interaction of the needle tip at the obstacle and the final retraction step are overlaid for better visibility since overlaying more than two images causes blur. In all the plots shown, buckling events were predicted at those timestamps when a force increase (not shown) was alerted by the detection algorithms as soon as the needle tip touched the obstacle, and the needle retracted as soon as a buckling was predicted at this time of force increase alert at 6.7 s. Using <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref>, the robot stopped insertions and the needle was retracted by 2 cm. The retraction distance of 2 cm was chosen arbitrarily. This choice would depend on the path planning algorithms based on preoperative data or the operating surgeon. Results in the 20 kPa region of tissue <italic>T</italic>
<sub>2</sub> show that prediction algorithms are robust to tissue environments and that they solely depend only on the force readings. However, the limitation is that sometimes, force does not increase even on encounter with an obstacle. In this case, the algorithms would neither detect nor predict any buckling event, explained in the next paragraph.</p>
<p>An example of an optimal needle steering with reactive control is shown in <xref ref-type="fig" rid="F6">Figures 6G&#x2013;I</xref>. When <italic>N</italic>
<sub>1</sub> was inserted into tissue <italic>T</italic>
<sub>1</sub>, MTD was detected at 27.2 s as soon as the tip approached the obstacle. Optimal steering inputs were calculated to reduce MTD, but the robot stopped motion as severe displacement of the tissue was predicted, represented by the yellow-shaded plot. It should be noted that buckling of the needle shaft was expected as soon as the tip encountered the obstacle; however, instead of a rapid force increase, a mild displacement was detected which resulted in severe displacement. Therefore, even when the needle appeared to have buckled, the axial force did not increase rapidly as expected, which caused both the buckling prediction and detection algorithms to fail. However, the overall procedure worked because of a displacement prediction and the insertion stopped on time. This example shows the advantage of developing unified methods for adverse event predictions.</p>
<p>Another example of a unified prediction is shown in <xref ref-type="fig" rid="F7">Figure 7</xref>. When the needle <italic>N</italic>
<sub>1</sub> was inserted for 0% duty cycle, the needle became curved due to the high stiffness of the tissue. Moreover, since the surface was slippery, mild displacements were detected as the needle steered further into the tissue. Due to the high steering curvature of the 0% duty-cycled needle, a buckling was predicted and a slight bend of the needle shaft can be seen in the motion image. Even though this could be a false buckling alarm, it is still safer to stop the needle as it gives time to the operating surgeon to decide if the insertion procedure should continue or stop.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Optimal needle steering control with buckling prevention: <bold>(A)</bold> Motion image showing optimal needle insertions in gelatin <italic>T</italic>
<sub>1</sub> to minimize MTD and prevent needle buckling. <bold>(B)</bold> Control inputs change when MTD is detected to avoid STD. <bold>(C)</bold> Normalized position plots of the needle and tissue showing MTD detections. <bold>(D)</bold> Buckling predicted due to which the robot stops insertion and retracts the needle.</p>
</caption>
<graphic xlink:href="frobt-10-1271748-g007.tif"/>
</fig>
<p>Validation results in the <italic>ex vivo</italic> goat liver <italic>T</italic>
<sub>3</sub> are shown in <xref ref-type="fig" rid="F8">Figure 8</xref>. The prebent needle <italic>N</italic>
<sub>1</sub> was used for all insertions in <italic>T</italic>
<sub>3</sub>. The timestamps of the live fluoroscopic videos match the timestamps of the real-time plots of the predicted adverse events, confirming the timely prevention of these events in heterogeneous tissues. All insertion data in gelatin and goat liver tissues with both the types of needles were combined for statistical analysis. The Kruskal&#x2013;Wallis statistical method was performed on the data to study the effectiveness and robustness of the prevention algorithm against different needles and tissue environments. Prevention rate is computed as the ratio of the number of adverse events prevented to the total number of insertions for each tissue sample and needle type (blue diamond bars), see <xref ref-type="fig" rid="F9">Figure 9A</xref>. Similarly, the detected event rate (red cross bars) is the ratio of the number of adverse events detected by the total number of insertions for each tissue sample and needle type, and the rate of no events is computed as the ratio of the number of insertions with no adverse events detected or predicted by the total number of insertions for each tissue sample and needle type (green square bars). Error bar plots show that the largest percentage of the needle insertions was optimized for control and prevention of adverse events (blue diamond bars). According to the two-way ANOVA analysis from <xref ref-type="fig" rid="F9">Figure 9B</xref>, prevention rates did not depend on the needle or tissue type nor the needle-tissue interaction effects (<italic>p</italic> &#x3e; 0.01), proving the robustness of the algorithms. The rate of detected events shows that early prediction of adverse events was not successful; however, the robot still stopped the insertion procedure through a reactive control mechanism on detection of the adverse event. The rate of controlled needle insertions (prevented events) in the goat liver was comparable to the rate of the detected events because of the local deformations of the tissue which were detected as severe tissue displacement events. Tissue deformation is a separate problem that is not covered in this work; however, real-time tissue mapping could be used to obtain control inputs for optimal needle steering with minimal tissue deformation and motion.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Prevention of adverse events in biological tissue: <bold>(A&#x2013;C)</bold> Fluoroscopic motion image and plots showing controlled insertions with the change in insertion velocity and duty cycle (tip orientation) during MTD, followed by reactive control (robot stopped insertion) when STD was predicted. <bold>(D&#x2013;F)</bold> Motion images and plots showing needle retraction when a drastic increase in force was predicted.</p>
</caption>
<graphic xlink:href="frobt-10-1271748-g008.tif"/>
</fig>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Performance of adverse event prevention algorithm: <bold>(A)</bold> Adverse event occurrence rates for different needles and tissue environments. <bold>(B)</bold> ANOVA analysis screenshot from MATLAB showing the effect of needle&#x2013;tissue interactions. <bold>(C)</bold> Percentage of insertions controlled or aborted to prevent adverse events.</p>
</caption>
<graphic xlink:href="frobt-10-1271748-g009.tif"/>
</fig>
<p>To study the effectiveness of the adverse event prevention algorithm to robotic needle steering applications, needle insertions were grouped into a) completed insertions with an optimal steering mechanism to prevent severe adverse events, b) aborted insertions due to the prediction or detection of a severe event, and c) completed insertions with no adverse events predicted or detected. The bar plots in <xref ref-type="fig" rid="F9">Figure 9C</xref> show that the majority of needle insertions were aborted due to the reactive control mechanism of <xref ref-type="statement" rid="Algorithm_1">Algorithm 1</xref> which prevented severe events such as STD and needle buckling. In about 25% of the needle insertions, MTD was detected and optimal steering inputs were continuously updated to complete the insertion procedure while minimizing MTD and preventing severe events. About less than 10% of the needle insertions did not encounter any adverse events, which shows that reactive and adaptive control mechanisms are important to be considered in robot-assisted needle procedures to ensure patient safety.</p>
<p>A major limitation of this study is that there were no targets assigned to evaluate the accuracy and time of the insertion procedure. Steering control inputs should be optimal not only in minimizing adverse events but also in procedural time; that is, time taken for the needle to reach desired targets, while also minimizing adverse events simultaneously, needs to be extensively studied and is a scope for future work. This work is a significant step to ensure procedural safety through data-driven techniques. When combined with efficient computer vision and tactile feedback techniques, our prediction and control methods can significantly improve patient safety and reduce procedural time and effort for the operating surgeon.</p>
</sec>
<sec id="s7">
<title>7 Conclusion and future work</title>
<p>We improved the existing model-free adaptive control technique (IMFAC) for general nonlinear systems to ensure continuous system stability and robustness against changes in system parameters and external disturbances. Comparing the simulation results with existing MFAC, IMFAC was more stable and robust to arbitrary values of system and control parameters. Then, we developed a preventive control subroutine by integrating IMFAC with previously developed event prediction methods from the work of <xref ref-type="bibr" rid="B33">Narayan and Fey (2020)</xref> to minimize adverse events in real time. Choice between reactive and adaptive control techniques was autonomous depending on the severity of the event. The robot implemented reactive methods such as needle retraction and stopped insertions when a needle buckling or a severe tissue displacement was predicted. During a mild tissue displacement, the robot adaptively steered the needle into the tissue to minimize and prevent future severe displacements so that continuity of the insertion procedure is ensured. Statistical results across different tissues and needles show robustness and generalizability of our algorithms to incision tool types and unknown tissue environments.</p>
<p>Since the algorithms rely on sensor data, the prediction and prevention subroutines might fail if a sensor gets faulty, resulting in more severe adverse events and injuries to the tissue. To address this issue, future work will focus on integrating augmented visual feedback techniques with our data-driven models. Moreover, the technique would also help identify the source of adverse events so that more intelligent actions can be implemented to ensure better continuity and safety of the procedure.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s8">
<title>Data availability statement</title>
<p>The raw data supporting the conclusion of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s9">
<title>Author contributions</title>
<p>MN: conceptualization, formal analysis, investigation, methodology, validation, writing&#x2013;original draft, and writing&#x2013;review and editing. AM: funding acquisition, project administration, resources, supervision, and writing&#x2013;review and editing.</p>
</sec>
<sec sec-type="funding-information" id="s10">
<title>Funding</title>
<p>The authors declare that no financial support was received for the research, authorship, and/or publication of this article.</p>
</sec>
<ack>
<p>The authors thank Amanda McLerran and the UTSW Animal Resource Center for providing access to the X-ray system used for these experiments.</p>
</ack>
<sec sec-type="COI-statement" id="s11">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s12">
<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>Abolhassani</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Patel</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Moallem</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2006</year>). <article-title>Control of soft tissue deformation during robotic needle insertion</article-title>. <source>Minim. Invasive Ther. Allied Technol.</source> <volume>15</volume>, <fpage>165</fpage>&#x2013;<lpage>176</lpage>. <pub-id pub-id-type="doi">10.1080/13645700600771645</pub-id>
</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Aboua&#xef;ssa</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Chouraqui</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>On the control of robot manipulator: a model-free approach</article-title>. <source>J. Comput. Sci.</source> <volume>31</volume>, <fpage>6</fpage>&#x2013;<lpage>16</lpage>. <pub-id pub-id-type="doi">10.1016/j.jocs.2018.12.011</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>&#xc5;str&#xf6;m</surname>
<given-names>K. J.</given-names>
</name>
<name>
<surname>H&#xe4;gglund</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>1995</year>). <source>PID controllers: theory, design, and tuning</source>, <volume>2</volume>. <publisher-loc>Triangle Park, NC</publisher-loc>: <publisher-name>Instrument society of America Research</publisher-name>.</citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Barnoy</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Erin</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Raval</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Pryor</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Mair</surname>
<given-names>L. O.</given-names>
</name>
<name>
<surname>Weinberg</surname>
<given-names>I. N.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). <article-title>Control of magnetic surgical robots with model-based simulators and reinforcement learning</article-title>. <source>IEEE Trans. Med. Robotics Bionics</source> <volume>4</volume>, <fpage>945</fpage>&#x2013;<lpage>956</lpage>. <pub-id pub-id-type="doi">10.1109/tmrb.2022.3214426</pub-id>
</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bing</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Meschede</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>R&#xf6;hrbein</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Knoll</surname>
<given-names>A. C.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>A survey of robotics control based on learning-inspired spiking neural networks</article-title>. <source>Front. neurorobotics</source> <volume>12</volume>, <fpage>35</fpage>. <pub-id pub-id-type="doi">10.3389/fnbot.2018.00035</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Brown</surname>
<given-names>P. J.</given-names>
</name>
<name>
<surname>Tan</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Stitzel</surname>
<given-names>J. D.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Displacement control device for dynamic tissue deformation in mri-biomed 2010</article-title>. <source>Biomed. Sci. Instrum.</source> <volume>46</volume>, <fpage>99</fpage>&#x2013;<lpage>104</lpage>.</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Buzurovic</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Podder</surname>
<given-names>T. K.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Prediction control for brachytherapy robotic system</article-title>. <source>J. Robotics</source> <volume>2010</volume>, <fpage>1</fpage>&#x2013;<lpage>10</lpage>. <pub-id pub-id-type="doi">10.1155/2010/581840</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>de Baere</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Roux</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Noel</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Delpla</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Deschamps</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Varin</surname>
<given-names>E.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). <article-title>Robotic assistance for percutaneous needle insertion in the kidney: preclinical proof on a swine animal model</article-title>. <source>Eur. Radiol. Exp.</source> <volume>6</volume>, <fpage>13</fpage>. <pub-id pub-id-type="doi">10.1186/s41747-022-00265-1</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fallahi</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Rossa</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Sloboda</surname>
<given-names>R. S.</given-names>
</name>
<name>
<surname>Usmani</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Tavakoli</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Sliding-based image-guided 3d needle steering in soft tissue</article-title>. <source>Control Eng. Pract.</source> <volume>63</volume>, <fpage>34</fpage>&#x2013;<lpage>43</lpage>. <pub-id pub-id-type="doi">10.1016/j.conengprac.2017.04.001</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fliess</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Join</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>Model-free control and intelligent pid controllers: towards a possible trivialization of nonlinear control?</article-title> <source>IFAC Proc. Vol.</source> <volume>42</volume>, <fpage>1531</fpage>&#x2013;<lpage>1550</lpage>. <pub-id pub-id-type="doi">10.3182/20090706-3-fr-2004.00256</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Glida</surname>
<given-names>H. E.</given-names>
</name>
<name>
<surname>Abdou</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Chelihi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sentouh</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Perozzi</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Optimal model-free fuzzy logic control for autonomous unmanned aerial vehicle</article-title>. <source>Proc. Institution Mech. Eng. Part G J. Aerosp. Eng.</source>, <fpage>09544100211025379</fpage>.</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gruijthuijsen</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Colchester</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Devreker</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Javaux</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Maneas</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Noimark</surname>
<given-names>S.</given-names>
</name>
<etal/>
</person-group> (<year>2018</year>). <article-title>Haptic guidance based on all-optical ultrasound distance sensing for safer minimally invasive fetal surgery</article-title>. <source>J. Med. Robotics Res.</source> <volume>3</volume>, <fpage>1841001</fpage>. <pub-id pub-id-type="doi">10.1142/s2424905x18410015</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hadjerci</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Hafiane</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Morette</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Novales</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Vieyres</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Delbos</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Assistive system based on nerve detection and needle navigation in ultrasound images for regional anesthesia</article-title>. <source>Expert Syst. Appl.</source> <volume>61</volume>, <fpage>64</fpage>&#x2013;<lpage>77</lpage>. <pub-id pub-id-type="doi">10.1016/j.eswa.2016.05.002</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>He</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Ge</surname>
<given-names>S. S.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Chew</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Ng</surname>
<given-names>Y. S.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Neural network control of a rehabilitation robot by state and output feedback</article-title>. <source>J. Intelligent Robotic Syst.</source> <volume>80</volume>, <fpage>15</fpage>&#x2013;<lpage>31</lpage>. <pub-id pub-id-type="doi">10.1007/s10846-014-0150-6</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Heidari</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Piltan</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Shamsodini</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Heidari</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Zahmatkesh</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Design new nonlinear controller with parallel fuzzy inference system compensator to control of continuum robot manipulator</article-title>. <source>Int. J. Control Automation</source> <volume>6</volume>, <fpage>115</fpage>&#x2013;<lpage>134</lpage>.</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hou</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Jin</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2011</year>). <article-title>Data-driven model-free adaptive control for a class of mimo nonlinear discrete-time systems</article-title>. <source>IEEE Trans. Neural Netw.</source> <volume>22</volume>, <fpage>2173</fpage>&#x2013;<lpage>2188</lpage>. <pub-id pub-id-type="doi">10.1109/tnn.2011.2176141</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Hou</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Jin</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2019</year>). <source>Model free adaptive control: theory and applications</source>. <publisher-loc>Boca Raton, Florida</publisher-loc>: <publisher-name>CRC Press</publisher-name>.</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Huang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Liao</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Teo</surname>
<given-names>R. S. H.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Fault tolerant control of quadrotor based on sensor fault diagnosis and recovery information</article-title>. <source>Machines</source> <volume>10</volume>, <fpage>1088</fpage>. <pub-id pub-id-type="doi">10.3390/machines10111088</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hulburt</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Booth</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Pan</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Brown</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Characterization of spinal needle buckling behavior</article-title>. <source>J. Med. Devices</source> <volume>13</volume>. <pub-id pub-id-type="doi">10.1115/1.4043920</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Khandalavala</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Shimon</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Flores</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Armijo</surname>
<given-names>P. R.</given-names>
</name>
<name>
<surname>Oleynikov</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Emerging surgical robotic technology: a progression toward microbots</article-title>. <source>Ann. Laparosc. Endosc. Surg.</source> <volume>5</volume>, <fpage>3</fpage>&#x2013;<lpage>18</lpage>. <pub-id pub-id-type="doi">10.21037/ales.2019.10.02</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kobayashi</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Suzuki</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Kato</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Hatano</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Konishi</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Hashizume</surname>
<given-names>M.</given-names>
</name>
<etal/>
</person-group> (<year>2012</year>). <article-title>Enhanced targeting in breast tissue using a robotic tissue preloading-based needle insertion system</article-title>. <source>IEEE Trans. Robotics</source> <volume>28</volume>, <fpage>710</fpage>&#x2013;<lpage>722</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2012.2183055</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Leibinger</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Oldfield</surname>
<given-names>M. J.</given-names>
</name>
<name>
<surname>Rodriguez y Baena</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Minimally disruptive needle insertion: a biologically inspired solution</article-title>. <source>Interface focus</source> <volume>6</volume>, <fpage>20150107</fpage>. <pub-id pub-id-type="doi">10.1098/rsfs.2015.0107</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>A. D.</given-names>
</name>
<name>
<surname>Putra</surname>
<given-names>K. B.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Montgomery</surname>
<given-names>J. S.</given-names>
</name>
<name>
<surname>Shih</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Mosquito proboscis-inspired needle insertion to reduce tissue deformation and organ displacement</article-title>. <source>Sci. Rep.</source> <volume>10</volume>, <fpage>12248</fpage>&#x2013;<lpage>12314</lpage>. <pub-id pub-id-type="doi">10.1038/s41598-020-68596-w</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Kang</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Branson</surname>
<given-names>D. T.</given-names>
</name>
<name>
<surname>Dai</surname>
<given-names>J. S.</given-names>
</name>
</person-group> (<year>2017a</year>). <article-title>Model-free control for continuum robots based on an adaptive kalman filter</article-title>. <source>IEEE/ASME Trans. Mechatronics</source> <volume>23</volume>, <fpage>286</fpage>&#x2013;<lpage>297</lpage>. <pub-id pub-id-type="doi">10.1109/tmech.2017.2775663</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Jiang</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Liang</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2017b</year>). <article-title>Modeling of path planning and needle steering with path tracking in anatomical soft tissues for minimally invasive surgery</article-title>. <source>Med. Eng. Phys.</source> <volume>41</volume>, <fpage>35</fpage>&#x2013;<lpage>45</lpage>. <pub-id pub-id-type="doi">10.1016/j.medengphy.2017.01.006</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Majewicz</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Marra</surname>
<given-names>S. P.</given-names>
</name>
<name>
<surname>Vledder</surname>
<given-names>M. G.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Choti</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Song</surname>
<given-names>D. Y.</given-names>
</name>
<etal/>
</person-group> (<year>2012</year>). <article-title>Behavior of tip-steerable needles in <italic>ex vivo</italic> and <italic>in vivo</italic> tissue</article-title>. <source>IEEE Trans. Biomed. Eng.</source> <volume>59</volume>, <fpage>2705</fpage>&#x2013;<lpage>2715</lpage>. <pub-id pub-id-type="doi">10.1109/tbme.2012.2204749</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Majewicz</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Siegel</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Stanley</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Okamura</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Evaluation of duty-cycled spinning algorithms for robotically-driven steerable needles</article-title>,&#x201d; in <conf-name>Proceedings of the IEEE International Conference on Robotics and Automation</conf-name>, <conf-loc>Hong Kong, China</conf-loc>, <conf-date>June 2014</conf-date>. <pub-id pub-id-type="doi">10.1109/ICRA.2014.6907725</pub-id>
</citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Matheson</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Rodriguez y Baena</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Biologically inspired surgical needle steering: technology and application of the programmable bevel-tip needle</article-title>. <source>Biomimetics</source> <volume>5</volume>, <fpage>68</fpage>. <pub-id pub-id-type="doi">10.3390/biomimetics5040068</pub-id>
</citation>
</ref>
<ref id="B29">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>McMillan</surname>
<given-names>G. K.</given-names>
</name>
</person-group> (<year>2012</year>). &#x201c;<article-title>Industrial applications of pid control</article-title>,&#x201d; in <source>PID control in the third millennium</source> (<publisher-loc>Berlin, Germany</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>415</fpage>&#x2013;<lpage>461</lpage>.</citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Misra</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Reed</surname>
<given-names>K. B.</given-names>
</name>
<name>
<surname>Schafer</surname>
<given-names>B. W.</given-names>
</name>
<name>
<surname>Ramesh</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Okamura</surname>
<given-names>A. M.</given-names>
</name>
</person-group> (<year>2010a</year>). <article-title>Mechanics of flexible needles robotically steered through soft tissue</article-title>. <source>Int. J. Robot. Res.</source> <volume>29</volume>, <fpage>1640</fpage>&#x2013;<lpage>1660</lpage>. <pub-id pub-id-type="doi">10.1177/0278364910369714</pub-id>
</citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Misra</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Reed</surname>
<given-names>K. B.</given-names>
</name>
<name>
<surname>Schafer</surname>
<given-names>B. W.</given-names>
</name>
<name>
<surname>Ramesh</surname>
<given-names>K. T.</given-names>
</name>
<name>
<surname>Okamura</surname>
<given-names>a. M.</given-names>
</name>
</person-group> (<year>2010b</year>). <article-title>Mechanics of flexible needles robotically steered through soft tissue</article-title>. <source>Int. J. Robotics Res.</source> <volume>29</volume>, <fpage>1640</fpage>&#x2013;<lpage>1660</lpage>. <pub-id pub-id-type="doi">10.1177/0278364910369714</pub-id>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Narayan</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Choti</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Fey</surname>
<given-names>A. M.</given-names>
</name>
</person-group> (<year>2018a</year>). <article-title>Data-driven detection of needle buckling events in robotic needle steering</article-title>. <source>J. Med. Robotics Res.</source> <volume>04</volume>, <fpage>1850005</fpage>. <pub-id pub-id-type="doi">10.1142/s2424905x18500058</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Narayan</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Fey</surname>
<given-names>A. M.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Developing a novel force forecasting technique for early prediction of critical events in robotics</article-title>. <source>PloS one</source> <volume>15</volume>, <fpage>e0230009</fpage>. <pub-id pub-id-type="doi">10.1371/journal.pone.0230009</pub-id>
</citation>
</ref>
<ref id="B34">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Narayan</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Fey</surname>
<given-names>A. M.</given-names>
</name>
<name>
<surname>Choti</surname>
<given-names>M. A.</given-names>
</name>
</person-group> (<year>2018b</year>). &#x201c;<article-title>Data-driven detection of adverse events in robotic needle steering</article-title>,&#x201d; in <conf-name>Proceedings of the 2018 International Symposium on Medical Robotics (ISMR)</conf-name>, <conf-loc>Atlanta, GA, USA</conf-loc>, <conf-date>March 2018</conf-date>, <fpage>1</fpage>&#x2013;<lpage>6</lpage>. <pub-id pub-id-type="doi">10.1109/ISMR.2018.8333297</pub-id>
</citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Oldfield</surname>
<given-names>M. J.</given-names>
</name>
<name>
<surname>Leibinger</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Seah</surname>
<given-names>T. E. T.</given-names>
</name>
<name>
<surname>y Baena</surname>
<given-names>F. R.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Method to reduce target motion through needle&#x2013;tissue interactions</article-title>. <source>Ann. Biomed. Eng.</source> <volume>43</volume>, <fpage>2794</fpage>&#x2013;<lpage>2803</lpage>. <pub-id pub-id-type="doi">10.1007/s10439-015-1329-0</pub-id>
</citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Poon</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Lim</surname>
<given-names>C. M.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Evolution of robotic systems for transoral head and neck surgery</article-title>. <source>Oral Oncol.</source> <volume>87</volume>, <fpage>82</fpage>&#x2013;<lpage>88</lpage>. <pub-id pub-id-type="doi">10.1016/j.oraloncology.2018.10.020</pub-id>
</citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pratt</surname>
<given-names>R. L.</given-names>
</name>
<name>
<surname>Petruska</surname>
<given-names>A. J.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Empirically comparing magnetic needle steering models using expectation-maximization</article-title>. <source>Robotics</source> <volume>11</volume>, <fpage>49</fpage>. <pub-id pub-id-type="doi">10.3390/robotics11020049</pub-id>
</citation>
</ref>
<ref id="B38">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Reis</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Cohen</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Mel&#xe3;o</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Costa</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Jorge</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>High-tech defense industries: developing autonomous intelligent systems</article-title>. <source>Appl. Sci.</source> <volume>11</volume>, <fpage>4920</fpage>. <pub-id pub-id-type="doi">10.3390/app11114920</pub-id>
</citation>
</ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rodr&#xed;guez-Abreo</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Garcia-Guendulain</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Hern&#xe1;ndez-Alvarado</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Flores Rangel</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Fuentes-Silva</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Genetic algorithm-based tuning of backstepping controller for a quadrotor-type unmanned aerial vehicle</article-title>. <source>Electronics</source> <volume>9</volume>, <fpage>1735</fpage>. <pub-id pub-id-type="doi">10.3390/electronics9101735</pub-id>
</citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rossa</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Lehmann</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Sloboda</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Usmani</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Tavakoli</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>A data-driven soft sensor for needle deflection in heterogeneous tissue using just-in-time modelling</article-title>. <source>Med. Biol. Eng. Comput.</source> <volume>55</volume>, <fpage>1401</fpage>&#x2013;<lpage>1414</lpage>. <pub-id pub-id-type="doi">10.1007/s11517-016-1599-1</pub-id>
</citation>
</ref>
<ref id="B41">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rossa</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Tavakoli</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Issues in closed-loop needle steering</article-title>. <source>Control Eng. Pract.</source> <volume>62</volume>, <fpage>55</fpage>&#x2013;<lpage>69</lpage>. <pub-id pub-id-type="doi">10.1016/j.conengprac.2017.03.004</pub-id>
</citation>
</ref>
<ref id="B42">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ryu</surname>
<given-names>S.-G.</given-names>
</name>
<name>
<surname>Jeong</surname>
<given-names>J. J.</given-names>
</name>
<name>
<surname>Shim</surname>
<given-names>D. H.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Sensor data prediction in missile flight tests</article-title>. <source>Sensors</source> <volume>22</volume>, <fpage>9410</fpage>. <pub-id pub-id-type="doi">10.3390/s22239410</pub-id>
</citation>
</ref>
<ref id="B43">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sakes</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Dodou</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Breedveld</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Buckling prevention strategies in nature as inspiration for improving percutaneous instruments: a review</article-title>. <source>Bioinspiration Biomimetics</source> <volume>11</volume>, <fpage>021001</fpage>. <pub-id pub-id-type="doi">10.1088/1748-3190/11/2/021001</pub-id>
</citation>
</ref>
<ref id="B44">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Scali</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Pusch</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Breedveld</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Dodou</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Ovipositor-inspired steerable needle: design and preliminary experimental evaluation</article-title>. <source>Bioinspiration Biomimetics</source> <volume>13</volume>, <fpage>016006</fpage>. <pub-id pub-id-type="doi">10.1088/1748-3190/aa92b9</pub-id>
</citation>
</ref>
<ref id="B45">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Schwarting</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Alonso-Mora</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Rus</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Planning and decision-making for autonomous vehicles</article-title>. <source>Annu. Rev. Control, Robotics, Aut. Syst.</source> <volume>1</volume>, <fpage>187</fpage>&#x2013;<lpage>210</lpage>. <pub-id pub-id-type="doi">10.1146/annurev-control-060117-105157</pub-id>
</citation>
</ref>
<ref id="B46">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Singh</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Sukavanam</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Simulation and stability analysis of neural network based control scheme for switched linear systems</article-title>. <source>ISA Trans.</source> <volume>51</volume>, <fpage>105</fpage>&#x2013;<lpage>110</lpage>. <pub-id pub-id-type="doi">10.1016/j.isatra.2011.08.004</pub-id>
</citation>
</ref>
<ref id="B47">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sprang</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Breedveld</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Dodou</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Wasp-inspired needle insertion with low net push force</article-title>. <source>Conf. Biomim. Biohybrid Syst.</source>, <fpage>307</fpage>&#x2013;<lpage>318</lpage>.</citation>
</ref>
<ref id="B48">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Tang</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>He</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2007</year>). &#x201c;<article-title>Magnetic force aided compliant needle navigation and needle performance analysis</article-title>,&#x201d; in <conf-name>Proceedings of the 2007 IEEE International Conference on Robotics and Biomimetics (ROBIO)</conf-name>, <conf-loc>Sanya, China</conf-loc>, <conf-date>December 2007</conf-date>, <fpage>612</fpage>&#x2013;<lpage>616</lpage>. <pub-id pub-id-type="doi">10.1109/ROBIO.2007.4522232</pub-id>
</citation>
</ref>
<ref id="B49">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Thomas</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Poongodi</surname>
<given-names>D. P.</given-names>
</name>
</person-group> (<year>2009</year>). &#x201c;<article-title>Position control of dc motor using genetic algorithm based pid controller</article-title>,&#x201d; in <conf-name>Proceedings of the world congress on engineering</conf-name>, <conf-loc>London, UK</conf-loc>, <conf-date>July, 20009</conf-date>, <fpage>1</fpage>&#x2013;<lpage>3</lpage>.</citation>
</ref>
<ref id="B50">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Van De Berg</surname>
<given-names>N. J.</given-names>
</name>
<name>
<surname>De Jong</surname>
<given-names>T. L.</given-names>
</name>
<name>
<surname>Van Gerwen</surname>
<given-names>D. J.</given-names>
</name>
<name>
<surname>Dankelman</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Van Den Dobbelsteen</surname>
<given-names>J. J.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>The influence of tip shape on bending force during needle insertion</article-title>. <source>Sci. Rep.</source> <volume>7</volume>, <fpage>40477</fpage>. <pub-id pub-id-type="doi">10.1038/srep40477</pub-id>
</citation>
</ref>
<ref id="B51">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Vrooijink</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Abayazid</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Patil</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Alterovitz</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Misra</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Needle path planning and steering in a three-dimensional non-static environment using two-dimensional ultrasound images</article-title>. <source>Int. J. Robotics Res.</source> <volume>33</volume>, <fpage>1361</fpage>&#x2013;<lpage>1374</lpage>. <pub-id pub-id-type="doi">10.1177/0278364914526627</pub-id>
</citation>
</ref>
<ref id="B52">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Walter</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Bexten</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Felsch</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Shysh</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Elkmann</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Safety considerations for autonomous, modular robotics in aerospace manufacturing</article-title>. <source>Front. Robotics AI</source> <volume>9</volume>, <fpage>1024594</fpage>. <pub-id pub-id-type="doi">10.3389/frobt.2022.1024594</pub-id>
</citation>
</ref>
<ref id="B53">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Webster</surname>
<given-names>R. J.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Cowan</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Chirikjian</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Okamura</surname>
<given-names>A. M.</given-names>
</name>
</person-group> (<year>2006</year>). <article-title>Nonholonomic modeling of needle steering</article-title>. <source>Int. J. Robotics Res.</source> <volume>25</volume>, <fpage>509</fpage>&#x2013;<lpage>525</lpage>. <pub-id pub-id-type="doi">10.1177/0278364906065388</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>