<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Robot. AI</journal-id>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/frobt.2017.00002</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>Distributed Fault-Tolerant Control for Networked Robots in the Presence of Recoverable/Unrecoverable Faults and Reactive Behaviors</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Arrichiello</surname> <given-names>Filippo</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="cor1">&#x0002A;</xref>
<uri xlink:href="http://frontiersin.org/people/u/223975"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Marino</surname> <given-names>Alessandro</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://frontiersin.org/people/u/243559"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Pierri</surname> <given-names>Francesco</given-names></name>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
<uri xlink:href="http://frontiersin.org/people/u/244443"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Department of Electrical and Information Engineering, University of Cassino and Southern Lazio</institution>, <addr-line>Cassino</addr-line>, <country>Italy</country></aff>
<aff id="aff2"><sup>2</sup><institution>Department of Information and Electrical Engineering and Applied Mathematics, University of Salerno</institution>, <addr-line>Salerno</addr-line>, <country>Italy</country></aff>
<aff id="aff3"><sup>3</sup><institution>School of Engineering, University of Basilicata</institution>, <addr-line>Potenza</addr-line>, <country>Italy</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Yongping Pan, National University of Singapore, Singapore</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Qiuxuan Wu, Hangzhou Dianzi University, China; Mohamed Hamdy, Menoufia University, Egypt; Xiwang Dong, Beihang University, China</p></fn>
<corresp content-type="corresp" id="cor1">&#x0002A;Correspondence: Filippo Arrichiello, <email>f.arrichiello&#x00040;unicas.it</email></corresp>
<fn fn-type="other" id="fn001"><p>Specialty section: This article was submitted to Robotic Control Systems, a section of the journal Frontiers in Robotics and AI</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>21</day>
<month>02</month>
<year>2017</year>
</pub-date>
<pub-date pub-type="collection">
<year>2017</year>
</pub-date>
<volume>4</volume>
<elocation-id>2</elocation-id>
<history>
<date date-type="received">
<day>06</day>
<month>10</month>
<year>2016</year>
</date>
<date date-type="accepted">
<day>17</day>
<month>01</month>
<year>2017</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2017 Arrichiello, Marino and Pierri.</copyright-statement>
<copyright-year>2017</copyright-year>
<copyright-holder>Arrichiello, Marino and Pierri</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>The paper presents an architecture for distributed control of multi-robot systems with an integrated fault detection, isolation, and recovery strategy. The proposed solution is based on a distributed observer-controller schema where each robot, by communicating only with its direct neighbors, is able to estimate the overall state of the system; such an estimate is then used by the controllers of each robot to achieve global missions as, for example, centroid and formation tracking. The information exchanged among the observers is also used to compute residual vectors that allow each robot to detect failures on anyone of the teammates, even if not in direct communication. The proposed strategy considers both recoverable and unrecoverable actuator faults as well as it properly manages the possible activation of reactive local control behaviors of the robots (e.g., the activation of obstacle avoidance strategy), which generate control inputs different from those required by the global mission control. In particular, when the robots are subject to recoverable faults, those are managed at a local level by computing a proper compensating control action. On the other side, when the robots are subject to unrecoverable faults, the faults are isolated from anyone of the teammates by means of a distributed fault detection and isolation strategy; then, the faulty robots are removed from the team and the mission is rearranged. The proposed strategy is validated via numerical simulations where the system properly identifies and manages the different cases of recoverable and unrecoverable actuator faults, as well as it manages the activation of local reactive control in an integrated case study.</p>
</abstract>
<kwd-group>
<kwd>networked robots</kwd>
<kwd>multi-robot systems</kwd>
<kwd>fault-tolerant control</kwd>
<kwd>distributed control</kwd>
<kwd>fault detection</kwd>
</kwd-group>
<counts>
<fig-count count="10"/>
<table-count count="0"/>
<equation-count count="55"/>
<ref-count count="37"/>
<page-count count="12"/>
<word-count count="11218"/>
</counts>
</article-meta>
</front>
<body>
<sec id="S1" sec-type="introduction">
<label>1</label> <title>Introduction</title>
<p>Networked multi-robot systems pose challenging problems due to the need of integrating and controlling multiple entities to achieve a common objective. The integration among the robots, often performed via a communication network, allows the cooperation and the coordination of multiple, sometimes heterogeneous, nodes and it may allow to accomplish tasks otherwise impossible for a single robot.</p>
<p>Communication and control architectures for multi-robot systems may span from centralized to distributed architectures. In the first case, one node (e.g., one of the teammates) is able to communicate with all the other nodes and to take decision for the overall team. However, limited communication capabilities, in term of ranges or bandwidth, and limited computational power could make impossible both the communication among all the robots and the adoption of a centralized control strategy. Moreover, the central unit may represent a weakness in terms of reliability since its failure may compromise the overall system.</p>
<p>In distributed systems [see, for example, Bullo et al. (<xref ref-type="bibr" rid="B9">2009</xref>) and Mesbahi and Egerstedt (<xref ref-type="bibr" rid="B21">2010</xref>)], each robot communicates only with a subset of its teammates and it must take its own decisions only on the base of the received information and of the data from local sensors. Distributed control strategies for multi-robot systems are often based on the so-called consensus task (Olfati-Saber et al., <xref ref-type="bibr" rid="B23">2007</xref>) where, on the basis of only neighbor-to-neighbor information exchange, the robots are required to reach an agreement on a common value regarding a specific variable, exogenous or depending on the state of the single robot (Ren and Beard, <xref ref-type="bibr" rid="B26">2008</xref>). The consensus problem has been mostly investigated for systems characterized by a first-order integrator (Olfati-Saber and Murray, <xref ref-type="bibr" rid="B24">2004</xref>; Cao et al., <xref ref-type="bibr" rid="B11">2008</xref>), or a second-order integrator (Hong et al., <xref ref-type="bibr" rid="B17">2008</xref>; Yu et al., <xref ref-type="bibr" rid="B34">2010</xref>), but some works involving systems with high-order dynamics are also present in the literature (Tuna, <xref ref-type="bibr" rid="B30">2008</xref>; Wang et al., <xref ref-type="bibr" rid="B31">2008</xref>). More in general, the problem of distributed control of multi-robot systems is aimed at achieving a global task (e.g., controlling the geometrical centroid and formation of a team of mobile robots) using only local information and interactions. In Belta and Kumar (<xref ref-type="bibr" rid="B8">2004</xref>), a partially decentralized algorithm is proposed to control the network centroid, the variance and the orientation of the system. Many approaches adopt decentralized observers in order to estimate the collective behavior, as in Smith and Hadaegh (<xref ref-type="bibr" rid="B27">2007</xref>) where a linear state-feedback control is proposed, or as in Yang et al. (<xref ref-type="bibr" rid="B33">2008</xref>) where such an estimate, in conjunction with a local controller, is adopted to minimize a cost function depending on the state of the whole system and aimed at controlling the robots&#x02019; formation. An observer-controller scheme for the distributed tracking of time-varying global task variables has been developed in Antonelli et al. (<xref ref-type="bibr" rid="B1">2013</xref>, <xref ref-type="bibr" rid="B2">2014</xref>). Time-varying formation control problems for general linear multiagent systems with switching directed topologies have been recently studied in Dong and Hu (<xref ref-type="bibr" rid="B13">2016</xref>).</p>
<p>The size of distributed robotic systems may be large and, consequently, the probability of failures of some of the teammates may increase. Despite distributed systems present a potential robustness to faults, the failure of one or more robots, if not properly handled, might jeopardize the task execution. Thus, fault detection and isolation (FDI) strategies become more and more important. Indeed, the detection of faulty robots may allow to exploit the intrinsic redundancy of multi-robot systems in such a way to accomplish the assigned tasks also in the case of failure of one or more units. To the aim, suitable fault accommodation strategies could be considered to correctly handle this situation. Several FDI strategies for single unit systems both in continuous (Zhang et al., <xref ref-type="bibr" rid="B36">2002</xref>) or discrete-time (Caccavale et al., <xref ref-type="bibr" rid="B10">2013</xref>) have been proposed in the literature, but only in the last years the fault diagnosis for multi-robot systems has been object of wider attention from the research community. In Wang et al. (<xref ref-type="bibr" rid="B32">2009</xref>), a centralized approach is presented where a central station, aimed at detecting and isolating faults over the whole system, collects information about actuators and sensors coming from each robot. A comparison between a centralized (with a central unit collecting all the information), semi-decentralized (with information exchange only between neighboring robots), and fully decentralized (in which each robot only knows its own state) FDI approaches is presented in Meskin and Khorasani (<xref ref-type="bibr" rid="B22">2009</xref>). Observer-based decentralized solutions for detecting and isolating faults in interconnected subsystems are presented in Ferrari et al. (<xref ref-type="bibr" rid="B15">2009</xref>) and Zhang and Zhang (<xref ref-type="bibr" rid="B37">2012</xref>) where a bank of local adaptive observers, using only measurements and information from neighboring subsystems, are proposed. Observer-based approaches for overlapping linear systems can be found in Stankovic et al. (<xref ref-type="bibr" rid="B28">2010</xref>) where local observers are adopted to detect faults on the non-overlapping parts, while a consensus-like strategy is adopted for the overlapping parts.</p>
<p>Usually, distributed FDI schemes allow the detection of faults involving the same robot or its direct neighbors, namely, a direct communication between the faulty teammate and the detecting robot is required. For example, the work in Davoodi et al. (<xref ref-type="bibr" rid="B12">2014</xref>) presents a FDI approach for distributed and heterogeneous networked systems where each robot can detect and isolate not only its own faults but also the faults of its direct neighbors. Such limit is overcome in Arrichiello et al. (<xref ref-type="bibr" rid="B7">2015</xref>), in which we proposed a distributed FDI algorithm for networked robots where each robot is able to detect faults occurring on any other teammate, even if not in direct communication. In particular, the FDI solution in Arrichiello et al. (<xref ref-type="bibr" rid="B7">2015</xref>) builds on a distributed controller-observer schema presented in Antonelli et al. (<xref ref-type="bibr" rid="B1">2013</xref>, <xref ref-type="bibr" rid="B2">2014</xref>) where, by means of a local observer, each robot, modeled with a continuous first-order integrator dynamics, estimates the overall state of the team and uses such an estimate to compute its local control input to achieve global tasks. Such approach is extended in Arrichiello et al. (<xref ref-type="bibr" rid="B7">2015</xref>) where the same information exchanged by the local observers is used to compute residual vectors whose aim is to allow the detection and the isolation of actuator faults occurring on any robot of the team. A recovery strategy aimed at removing the faulty robot from the team, based on the estimate of the maximum detection time, was developed and presented in Arrichiello et al. (<xref ref-type="bibr" rid="B4">2014a</xref>,<xref ref-type="bibr" rid="B5">b</xref>), while in Arrichiello et al. (<xref ref-type="bibr" rid="B6">2014c</xref>) we extended the strategy also to manage local reactive controls on board each robot to handle possible emerging situations as, for example, the presence of unexpected obstacles. In Marino and Pierri (<xref ref-type="bibr" rid="B19">2015</xref>) and Marino et al. (<xref ref-type="bibr" rid="B20">2015</xref>), we consider a multi-robot system characterized by a more general and discrete-time linear dynamics.</p>
<p>In this work, we extend the conference papers (Arrichiello et al., <xref ref-type="bibr" rid="B4">2014a</xref>,<xref ref-type="bibr" rid="B5">b</xref>,<xref ref-type="bibr" rid="B6">c</xref>) by presenting a unified distributed fault-tolerant control (DFTC) approach composed of a distributed observer-controller strategy to achieve global mission, of a fault detection, identification, and recovery (FDIR) strategy to manage unrecoverable faults, of a local fault estimator to accommodate recoverable faults; moreover, the proposed architecture results robust to the activation of local behaviors not included in the global control strategy. Furthermore, with respect to those conference papers, here we provide further analytical details, we consider the case of noisy state measurements, and we improve the numerical validation by providing an integrated case study concerning multi-robot formation control where recoverable/unrecoverable faults and activation of local reactive behavior occur.</p>
<sec id="S1-1">
<label>1.1</label> <title>Distributed Fault-Tolerant Control Architecture</title>
<p>The architecture of the Distributed Fault-Tolerant Control approach is depicted in Figure <xref ref-type="fig" rid="F1">1</xref>, and it consists of the following blocks:
<list list-type="bullet">
<list-item><p><italic>Observer Block</italic>: Each robot runs a consensus-based observer that uses only local information and a suitable vector received from the direct neighbors to estimate the state of the overall system.</p></list-item>
<list-item><p><italic>Controller Block</italic>: Each robot computes the control input to achieve a global mission on the base of a state-feedback control law that uses the local estimate of the overall system state performed by the observer block.</p></list-item>
<list-item><p><italic>Local Supervisor Block</italic>: A local supervisor might activate a reactive control to manage emergency situations, as obstacle avoidance, that are not taken into consideration by the global mission controller.</p></list-item>
<list-item><p><italic>FDIR Block</italic>: Using the same information exchanged by the observer block for the overall state estimation, each robot computes a set of residual vectors that are sensitive to faults affecting anyone of the robots, even if not in direct communication. The residual vectors are used to detect and isolate faulty robots by considering a set of adaptive thresholds, defined on the basis of the residual dynamics. After the faulty robots have been detected and isolated, they are removed by the team referring to a decentralized recovery policy based on the estimate of the maximum detection time.</p></list-item>
<list-item><p><italic>Local Fault Estimator Block</italic>: Each robot runs a local estimator to detect faults and, possibly, to try accommodate them at a local level.</p></list-item>
</list></p>
<fig position="float" id="F1">
<label>Figure 1</label>
<caption><p><bold>Overall schema of the distributed fault-tolerant control strategy</bold>.</p></caption>
<graphic xlink:href="frobt-04-00002-g001.tif"/>
</fig>
<p>The paper is organized as follows. Section <xref ref-type="sec" rid="S2">2</xref> summarizes some basic notation of the vectors used in the rest of the paper. Section <xref ref-type="sec" rid="S3">3</xref> introduces the modeling of the single robot, of the collective system, and of the intra-robots communication. Section <xref ref-type="sec" rid="S4">4</xref> presents the decentralized observer-controller scheme, and it discusses the convergence analysis of the observer errors. Section <xref ref-type="sec" rid="S5">5</xref> describes the fault detection and isolation algorithm, and the recovery strategy. Section <xref ref-type="sec" rid="S6">6</xref> shows the results of numerical simulations and, finally, Section <xref ref-type="sec" rid="S7">7</xref> presents some conclusions and future works.</p>
</sec>
</sec>
<sec id="S2">
<label>2</label> <title>Notation</title>
<p>Let us introduce the some basic notation adopted throughout the rest of the paper. The generic variable relative to the <italic>i</italic>-th robot will be denoted as <italic><bold>v</bold><sub>i</sub></italic>, while the corresponding collective variable, i.e., a stacked vector collecting the variables <italic><bold>v</bold><sub>i</sub></italic> for all the robots, will be denoted without any subscript/superscript; namely, <inline-formula><mml:math id="M1"><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">v</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="2.56804pt" class="tmspace"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">v</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="2.56804pt" class="tmspace"/><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mspace width="2.56804pt" class="tmspace"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">v</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:math></inline-formula> where <italic>N</italic> is the number of robots. The estimate of collective variable <bold><italic>v</italic></bold> locally made by the <italic>i</italic>-th robot is denoted as <inline-formula><mml:math id="M2"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula>, while the collection of the estimation vectors of the different robots is denoted as <inline-formula><mml:math id="M3"><mml:mrow><mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>&#x022C6;</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:msup><mml:mo stretchy='false'>[</mml:mo><mml:mn>1</mml:mn></mml:msup><mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mtext>T</mml:mtext></mml:msup><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mn>2</mml:mn></mml:msup><mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mtext>T</mml:mtext></mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mn>&#x02026;</mml:mn><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mi>N</mml:mi></mml:msup><mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mtext>T</mml:mtext></mml:msup><mml:mo stretchy='false'>]</mml:mo></mml:mrow><mml:mtext>T</mml:mtext></mml:msup></mml:mrow></mml:math></inline-formula>. The estimation error performed by <italic>i</italic>-th robot is denoted as <inline-formula><mml:math id="M4"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>v</mml:mi><mml:msup><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula>, while the collection of the estimation errors of the different robots is expressed as <inline-formula><mml:math id="M5"><mml:mrow><mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mo>&#x022C6;</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:msup><mml:mo stretchy='false'>[</mml:mo><mml:mn>1</mml:mn></mml:msup><mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mtext>T</mml:mtext></mml:msup><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mn>2</mml:mn></mml:msup><mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mtext>T</mml:mtext></mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mn>&#x02026;</mml:mn><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mi>n</mml:mi></mml:msup><mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">v</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mtext>T</mml:mtext></mml:msup><mml:mo stretchy='false'>]</mml:mo></mml:mrow><mml:mtext>T</mml:mtext></mml:msup></mml:mrow></mml:math></inline-formula>. Finally, the vector <bold><italic>v</italic></bold>&#x0002A; represents <inline-formula><mml:math id="M6"><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">v</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02297;</mml:mo><mml:mtext mathvariant="bold-italic">v</mml:mtext></mml:math></inline-formula> where <bold>1</bold><italic><sub>N</sub></italic> is the (<italic>N</italic>&#x02009;&#x000D7;&#x02009;1) vector of ones and &#x02297; denotes the Kroneker product operator.</p>
</sec>
<sec id="S3">
<label>3</label> <title>Modeling</title>
<p>Let us consider a multi-robot system composed of <italic>N</italic> robots, each of them characterized by the following dynamics (<italic>i</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2,&#x02009;&#x02026;,&#x02009;<italic>N</italic>)
<disp-formula id="E1"><label>(1)</label><mml:math id="M7"><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003D5;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003BE;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <bold><italic>x</italic></bold><italic><sub>i</sub></italic>&#x02009;&#x02208;&#x02009;&#x0211B;<italic><sup>n</sup></italic> and <bold><italic>u</italic></bold><italic><sub>i</sub></italic>&#x02009;&#x02208;&#x02009;&#x0211B;<italic><sup>n</sup></italic> denote, respectively, the <italic>i</italic>-th robot&#x02019;s state and input, <inline-formula><mml:math id="M8"><mml:mi mathvariant="bold-italic">&#x003D5;</mml:mi></mml:math></inline-formula><italic><sub>i</sub></italic>&#x02009;&#x02208;&#x02009;&#x0211B;<italic><sup>n</sup></italic> is an additive actuator fault term that is zero in healthy conditions and <inline-formula><mml:math id="M9"><mml:mi mathvariant="bold-italic">&#x003BE;</mml:mi></mml:math></inline-formula><sub>i</sub>(<italic>t</italic>, <bold><italic>x</italic></bold><italic><sub>i</sub></italic>)&#x02009;&#x02208;&#x02009;&#x0211B;<italic><sup>n</sup></italic> is a term collecting the model uncertainties and disturbances. The following assumptions on the single robot&#x02019;s model hold:</p>
<p><sc><bold>assumption</bold> 1</sc>. <italic>The model uncertainties</italic> <bold><italic>&#x003BE;</italic></bold><italic><sub>i</sub></italic>(<italic>t</italic>, <bold><italic>x</italic></bold><italic><sub>i</sub></italic>) <italic>are assumed to be norm bounded by a known constant term</italic> <inline-formula><mml:math id="M10"><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003BE;</mml:mi><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:math></inline-formula>, <italic>assumed equal for each robot, i.e</italic>.,
<disp-formula id="E2"><label>(2)</label><mml:math id="M11"><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003BE;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003BE;</mml:mi><mml:mo>&#x000AF;</mml:mo></mml:mover><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-rel">&#x02200;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-rel">&#x02200;</mml:mo><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>2</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>N</mml:mi><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p><sc><bold>assumption</bold></sc> <bold>2</bold>. <italic>Each robot has direct access only to a noisy measure</italic> <bold><italic>x</italic></bold><italic><sub>m,i</sub></italic> <italic>of its own state, i.e</italic>.,
<disp-formula id="E3"><label>(3)</label><mml:math id="M12"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003B7;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mo class="MathClass-rel">&#x0221E;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
<italic>where</italic> <bold><italic>&#x003B7;</italic></bold><sub><italic>i</italic></sub>&#x02009;&#x02208;&#x02009;&#x0211B;<italic><sup>n</sup></italic> <italic>is the measurement additive noise supposed to be norm bounded by a known positive scalar</italic> <inline-formula><mml:math id="M13"><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003B7;</mml:mi><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:math></inline-formula>, <italic>assumed equal for each robot, i.e</italic>.,
<disp-formula id="E4"><label>(4)</label><mml:math id="M14"><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003B7;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003B7;</mml:mi><mml:mo>&#x000AF;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mo class="MathClass-rel">&#x0221E;</mml:mo><mml:mspace width="0.5em"/><mml:mo class="MathClass-rel">&#x02200;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-rel">&#x02200;</mml:mo><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>2</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>N</mml:mi><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>Let us define the collective variables of the system as the vectors collecting the variables of all the robots of the network, as
<disp-formula id="E5"><label>(5)</label><mml:math id="M15"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="left" class="align-odd"><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left" class="align-odd"><mml:mtext mathvariant="bold-italic">u</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left" class="align-odd"><mml:mi mathvariant="bold-italic">&#x003D5;</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">&#x003D5;</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">&#x003D5;</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">&#x003D5;</mml:mtext></mml:mrow><mml:mrow><mml:mn>N</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left" class="align-odd"><mml:mi mathvariant="bold-italic">&#x003BE;</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">&#x003BE;</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">&#x003BE;</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">&#x003BE;</mml:mtext></mml:mrow><mml:mrow><mml:mn>N</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="left" class="align-odd"><mml:mi mathvariant="bold-italic">&#x003B7;</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">&#x003B7;</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">&#x003B7;</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="0.5em"/><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mspace width="0.5em"/><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">&#x003B7;</mml:mtext></mml:mrow><mml:mrow><mml:mn>N</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup><mml:mo class="MathClass-punc">.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>On the basis of the single robot dynamics [equation (<xref ref-type="disp-formula" rid="E1">1</xref>)], the collective dynamics is expressed as
<disp-formula id="E6"><label>(6)</label><mml:math id="M16"><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">u</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi mathvariant="bold-italic">&#x003D5;</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi mathvariant="bold-italic">&#x003BE;</mml:mi><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
while the collective noisy measurement of the system state is
<disp-formula id="E7"><label>(7)</label><mml:math id="M17"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>m</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mi mathvariant="bold-italic">&#x003B7;</mml:mi><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<sec id="S3-2">
<label>3.1</label> <title>Communication Modeling</title>
<p>As common in multi-robot systems [see, e.g., Godsil and Royle (<xref ref-type="bibr" rid="B16">2001</xref>), Fax and Murray (<xref ref-type="bibr" rid="B14">2004</xref>), and Olfati-Saber and Murray (<xref ref-type="bibr" rid="B24">2004</xref>)], the information exchange among the robots can be modeled referring to graph theory approaches. Indeed, the robot network can be described as a graph <inline-formula><mml:math id="M18"><mml:mi mathvariant="script">G</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi mathvariant="script">E</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi mathvariant="script">V</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula> characterized by its topology, where &#x1D4B1; is a set of indexes labeling the <italic>N</italic> vertices (nodes) representing the robots, and <inline-formula><mml:math id="M19"><mml:mi mathvariant="script">E</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi mathvariant="script">V</mml:mi><mml:mo class="MathClass-bin">&#x000D7;</mml:mo><mml:mi mathvariant="script">V</mml:mi></mml:math></inline-formula> is the set of edges (arcs) representing the communications between robots; i.e., robot <italic>i</italic> and robot <italic>j</italic> can communicate only if there is an arc between node <italic>i</italic> and node <italic>j</italic>. Thus, the <italic>i</italic>-th robot receives information only from its neighbors <inline-formula><mml:math id="M20"><mml:msub><mml:mrow><mml:mi mathvariant="script">N</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">j</mml:mtext><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:mi mathvariant="script">V</mml:mi><mml:mo class="MathClass-punc">:</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:mi mathvariant="script">E</mml:mi></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow></mml:math></inline-formula>. The cardinality of <inline-formula><mml:math id="M21"><mml:msub><mml:mrow><mml:mi mathvariant="script">N</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the in-degree of node <italic>i</italic>, i.e., <inline-formula><mml:math id="M22"><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>&#x0007C;</mml:mn><mml:msub><mml:mrow><mml:mi mathvariant="script">N</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mn>&#x0007C;</mml:mn><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. Moreover, the cardinality of the set of nodes receiving information from node <italic>i</italic> represents the out-degree of node <italic>i</italic>, i.e., <inline-formula><mml:math id="M23"><mml:msub><mml:mrow><mml:mi>D</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ki</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. If all the communication links among the robots are bi-directional, the graph is called <italic>undirected</italic> (i.e., (<italic>i,&#x02009;j</italic>)&#x02009;&#x02208;&#x02009;&#x02130;&#x02009;&#x021D2;&#x02009;(<italic>j,&#x02009;i</italic>)&#x02009;&#x02208;&#x02009;&#x02130;) otherwise, the graph is called <italic>directed</italic>. An undirected graph is called <italic>connected</italic> if there is an undirected path between every pair of distinct nodes. A directed graph is called <italic>strongly connected</italic> if any two distinct nodes of the graph can be connected via a directed path, i.e., a path that follows the direction of the edges of the graph. A node of a directed graph is named balanced if its in-degree and its out-degree are equal; a directed graph is called <italic>balanced</italic> if each node of the graph is balanced. Any undirected graph is balanced.</p>
<p>From the mathematical point of view, the graph topology can be represented by the (<italic>N</italic>&#x02009;&#x000D7;&#x02009;<italic>N</italic>) adjacency matrix
<disp-formula id="E47"><mml:math id="M24"><mml:mtext mathvariant="bold-italic">A</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow><mml:mo class="MathClass-punc">:</mml:mo><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ii</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="{" close=""><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mn>1</mml:mn></mml:mtd><mml:mtd class="array" columnalign="left"><mml:mtext>if</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:mi mathvariant="script">E</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mn>0</mml:mn></mml:mtd><mml:mtd class="array" columnalign="left"><mml:mtext>otherwise</mml:mtext><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:math></disp-formula>
where <italic>a<sub>ij</sub></italic>&#x02009;&#x0003D;&#x02009;1 if there exists an arc from vertex <italic>j</italic> to vertex <italic>i</italic>. Adiacency matrix is symmetric in the case of undirect graph. The communication topology can be also characterized by the (<italic>N</italic>&#x02009;&#x000D7;&#x02009;<italic>N</italic>) Laplacian matrix (Ren and Beard, <xref ref-type="bibr" rid="B26">2008</xref>; Mesbahi and Egerstedt, <xref ref-type="bibr" rid="B21">2010</xref>) defined as
<disp-formula id="E48"><mml:math id="M25"><mml:mtext mathvariant="bold-italic">L</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow><mml:mo class="MathClass-punc">:</mml:mo><mml:msub><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ii</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>j</mml:mi><mml:mo class="MathClass-rel">&#x02260;</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mspace width="1em" class="quad"/><mml:msub><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>a</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ij</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x02260;</mml:mo><mml:mi>j</mml:mi><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>The Laplacian matrix has some useful properties that make it very popular in the field of multi-robot systems and that will be exploited in the following paper. More in detail, all the eigenvalues of the matrix <bold><italic>L</italic></bold> have real parts equal to or greater than zero (i.e., Re(&#x003BB;<italic><sub>i</sub></italic>)&#x02009;&#x02265;&#x02009;0, &#x02200;<italic>i</italic>); moreover, <bold><italic>L</italic></bold> exhibits at least one zero eigenvalue with the <italic>N</italic>&#x02009;&#x000D7;&#x02009;1 vector of all ones <bold>1</bold><italic><sub>N</sub></italic> as the corresponding right eigenvector. It holds that rank(<bold><italic>L</italic></bold>)&#x02009;&#x02264;&#x02009;<italic>N</italic>&#x02009;&#x02212;&#x02009;1, in particular it results rank(<bold><italic>L</italic></bold>)&#x02009;&#x0003D;&#x02009;<italic>N</italic>&#x02009;&#x02212;&#x02009;1 if and only if the directed graph is strongly connected. The <italic>N</italic> eigenvalues of <bold><italic>L</italic></bold> can be ordered such that
<disp-formula id="E49"><mml:math id="M26"><mml:mn>0</mml:mn><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mn>&#x003BB;</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mtext>Re</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003BB;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mtext>Re</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003BB;</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">;</mml:mo></mml:math></disp-formula>
thus, Re(&#x003BB;<sub>2</sub>) is greater than zero if and only if the graph is strongly connected; for this reason, &#x003BB;<sub>2</sub> is defined as the algebraic connectivity of the graph. For a balanced directed graph (and, thus, for an undirected graph), <bold>1</bold><italic><sub>N</sub></italic> is also a left eigenvector of <bold><italic>L</italic></bold>, i.e., <inline-formula><mml:math id="M27"><mml:msubsup><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mtext mathvariant="bold-italic">L</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msubsup><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:math></inline-formula>. Finally, if the graph is undirected, the Laplacian is symmetric and positive semidefinite.</p>
<p>The following assumptions about the communication hold:
<list list-type="bullet">
<list-item><p>each robot does not know the topology of the overall communication graph but it only knows who are its neighbors.</p></list-item>
<list-item><p>the graph topology is assumed fixed, i.e., there are no communication links that can appear or disappear over the time.</p></list-item>
</list></p>
</sec>
</sec>
<sec id="S4">
<label>4</label> <title>Decentralized Observer-Controller Scheme</title>
<p>The robots are required to achieve a <italic>global</italic> mission, i.e., a mission depending on the collective state <bold><italic>x</italic></bold> of the overall team. However, since the collective state measurement is not available to the robots, a distributed observer-controller scheme is adopted in which, for each robot, a local observer provides a local estimate of the collective state, <inline-formula><mml:math id="M28"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula>; then, the controller computes the robot input in a pseudo-centralized manner on the base of the estimated collective state (Antonelli et al., <xref ref-type="bibr" rid="B1">2013</xref>, <xref ref-type="bibr" rid="B2">2014</xref>; Arrichiello et al., <xref ref-type="bibr" rid="B7">2015</xref>).</p>
<p>In addition to the global mission, each robot must achieve also <italic>local</italic> (reactive) tasks to take into account unexpected events such as the presence of obstacles along its path. The switching between global behavior and reactive behavior is handled by a <italic>Local Supervisor</italic> according to the current scenario.</p>
<sec id="S4-3">
<label>4.1</label> <title>Nominal Control Input</title>
<p>The control input of the <italic>i</italic>-th robot has the following form
<disp-formula id="E8"><label>(8)</label><mml:math id="M29"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <inline-formula><mml:math id="M30"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> is the control input that allows to achieve the global task, depending on the estimate of the collective input, while <inline-formula><mml:math id="M31"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula> (<italic>k</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;&#x02026;,&#x02009;<italic>m<sub>i</sub></italic>) are a set of <italic>m<sub>i</sub></italic> local reactive control inputs, and <inline-formula><mml:math id="M32"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. The parameters &#x003B1;<italic><sub>i,h</sub></italic> (<italic>h</italic>&#x02009;&#x0003D;&#x02009;0,&#x02009;&#x02026;,&#x02009;<italic>m<sub>i</sub></italic>) are scalar gains such that:
<list list-type="bullet">
<list-item><p><inline-formula><mml:math id="M33"><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn><mml:mspace width="0.5em" class="nbsp"/><mml:mtext>or&#x02009;</mml:mtext><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-rel">&#x02200;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-rel">&#x02200;</mml:mo><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>;</p></list-item>
<list-item><p><inline-formula><mml:math id="M34"><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:math></inline-formula>;</p></list-item>
</list>
in other words, at each time instant only one of them is 1 and all the others are equal to 0. Thus, the input terms on the right side of equation (<xref ref-type="disp-formula" rid="E8">8</xref>) are mutually exclusive control inputs, and each robot selects the value of gains &#x003B1;<italic><sub>i,h</sub></italic> on the basis of its own state and of the external environment.</p>
<sec id="S4-3-1">
<label>4.1.1</label> <title>The Global Mission Controller</title>
<p>In the proposed approach, the global objective for the team of robots is expressed via a task function <inline-formula><mml:math id="M35"><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> depending on the collective state as
<disp-formula id="E9"><label>(9)</label><mml:math id="M36"><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">Jx</mml:mtext><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <inline-formula><mml:math id="M37"><mml:mtext mathvariant="bold-italic">J</mml:mtext><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi><mml:mo class="MathClass-bin">&#x000D7;</mml:mo><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> is a constant matrix; thus,
<disp-formula id="E10"><label>(10)</label><mml:math id="M38"><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">J</mml:mtext><mml:mover accent='true'><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>A common example of global tasks of this form is that of assigning desired time-varying references to the team centroid and the relative formation. In this case, the task function becomes
<disp-formula id="E11"><label>(11)</label><mml:math id="M39"><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtable class="array"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">Jx</mml:mtext><mml:mo class="MathClass-punc">,</mml:mo><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">J</mml:mtext><mml:mover accent='true'><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <inline-formula><mml:math id="M40"><mml:mtext mathvariant="bold-italic">J</mml:mtext><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi><mml:mo class="MathClass-bin">&#x000D7;</mml:mo><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, <bold><italic>&#x003C3;</italic></bold><sub>1</sub> and <bold><italic>&#x003C3;</italic></bold><sub>2</sub> are the centroid and formation task functions defined as:
<disp-formula id="E12"><label>(12)</label><mml:math id="M41"><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:mfrac><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
with <inline-formula><mml:math id="M42"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo class="MathClass-bin">&#x000D7;</mml:mo><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> the corresponding Jacobian matrix (Antonelli et al., <xref ref-type="bibr" rid="B1">2013</xref>);
<disp-formula id="E13"><label>(13)</label><mml:math id="M43"><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
with <inline-formula><mml:math id="M44"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>N</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi>n</mml:mi><mml:mo class="MathClass-bin">&#x000D7;</mml:mo><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> the corresponding Jacobian matrix (Antonelli et al., <xref ref-type="bibr" rid="B1">2013</xref>). A centralized solution for such kind of global task can be obtained by computing the global collective input <bold><italic>u</italic></bold><italic><sub>g</sub></italic> as
<disp-formula id="E14"><label>(14)</label><mml:math id="M45"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">u</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02020;</mml:mo></mml:mrow></mml:msup><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <bold><italic>&#x003C3;</italic></bold><italic><sub>d</sub></italic> is the desired value of the task function, <inline-formula><mml:math id="M46"><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">&#x003C3;</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula> is the task error, <inline-formula><mml:math id="M47"><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02020;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> is the pseudo-inverse of the Jacobian matrix, and <italic>k<sub>c</sub></italic> is a constant positive gain.</p>
<p>In a distributed scenario, since the single robots do not know the collective state of the system, each of them uses its collective state estimate <inline-formula><mml:math id="M48"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula> in order to compute an estimate of the collective input as
<disp-formula id="E15"><label>(15)</label><mml:math id="M49"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">u</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:msup><mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent='true'><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02020;</mml:mo></mml:mrow></mml:msup><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent='true'><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <inline-formula><mml:math id="M50"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">&#x003C3;</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi mathvariant="bold-italic">&#x003C3;</mml:mi><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> is the estimate of the task error.</p>
<p>Then, the robot <italic>i</italic> computes its own input <inline-formula><mml:math id="M51"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mtext>&#x02009;</mml:mtext><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> in equation (<xref ref-type="disp-formula" rid="E8">8</xref>) selecting the relative component from <inline-formula><mml:math id="M52"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, i.e.,
<disp-formula id="E16"><label>(16)</label><mml:math id="M53"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="bold">&#x00393;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mover accent='true'><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <bold>&#x00393;</bold><italic><sub>i</sub></italic> is the (<italic>n</italic>&#x02009;&#x000D7;&#x02009;<italic>Nn</italic>) selection matrix that extracts the components of the <italic>i</italic>-th robot from a collective vector
<disp-formula id="E50"><mml:math id="M54"><mml:msub><mml:mrow><mml:mi mathvariant="bold">&#x00393;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd columnalign="center"><mml:mrow><mml:msub><mml:mi>O</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd columnalign="center"><mml:mn>&#x02026;</mml:mn></mml:mtd><mml:mtd columnalign="center"><mml:mrow><mml:munder><mml:munder><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mrow><mml:mi>i</mml:mi><mml:mtext>th node</mml:mtext></mml:mrow></mml:munder></mml:mrow></mml:mtd><mml:mtd columnalign="center"><mml:mn>&#x02026;</mml:mn></mml:mtd><mml:mtd columnalign="center"><mml:mrow><mml:msub><mml:mi>O</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:mrow><mml:mo class="MathClass-rel">.</mml:mo></mml:math></disp-formula></p>
</sec>
<sec id="S4-3-2">
<label>4.1.2</label> <title>The Local Reactive Behavior</title>
<p>A part from collaborating with the teammates to achieve the global mission, each robot is responsible of its own safety. This means that it can activate, if necessary, reactive behaviors, e.g., to prevent obstacles along its path. Reactive behaviors are local control inputs that are activated and deactivated by a local supervisor depending only on the robot own state, <bold><italic>x</italic></bold><italic><sub>i</sub></italic>, and on information from onboard sensors (e.g., cameras, rangefinders, etc.). As an example, in the presence of an obstacle in the advancing direction, the goal of the obstacle avoidance reactive task is that of computing an input <italic><bold>u</bold><sub>l</sub></italic><sub>,1</sub> aimed at keeping the robot at a safe distance, <italic>d</italic>&#x02009;&#x0003E;&#x02009;0, from the obstacle, whose position, <inline-formula><mml:math id="M55"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, can be obtained by onboard sensors. Therefore, the task function can be written as
<disp-formula id="E51"><mml:math id="M56"><mml:msub><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:mi mathvariant="fraktur">R</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>d</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mover accent='true'><mml:mi>r</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi mathvariant="fraktur">R</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo class="MathClass-bin">&#x000D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <bold><italic>J</italic></bold><italic><sub>l</sub></italic><sub>,1</sub> is the task Jacobian matrix, and
<disp-formula id="E52"><mml:math id="M57"><mml:mover accent='true'><mml:mi>r</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo></mml:mrow></mml:mfrac></mml:math></disp-formula>
is the unit vector aligned with the obstacle-to-vehicle direction. According to null space-based behavioral control approach presented in Antonelli et al. (<xref ref-type="bibr" rid="B3">2008</xref>), the obstacle avoidance is obtained by means of the following expression of <inline-formula><mml:math id="M58"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>
<disp-formula id="E17"><label>(17)</label><mml:math id="M59"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02020;</mml:mo></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mi>d</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where &#x003B8;<sub>1</sub> is a positive scalar gain. Thus, when an obstacle is detected by robot <italic>i</italic> and it is closer than a threshold value, the local supervisor activates the obstacle avoidance behavior (i.e., according to equation (<xref ref-type="disp-formula" rid="E8">8</xref>), it sets &#x003B1;<italic><sub>i</sub></italic><sub>,1</sub>&#x02009;&#x0003D;&#x02009;1 and &#x003B1;<italic><sub>i</sub></italic><sub>,0</sub>&#x02009;&#x0003D;&#x02009;0). Hence, the input to the robot <italic>i</italic> would become <bold><italic>u</italic></bold><italic><sub>i</sub></italic>&#x02009;&#x0003D;&#x02009;<bold><italic>u</italic></bold><italic><sub>l,</sub></italic><sub>1</sub>. However, since by adopting the control input [equation (<xref ref-type="disp-formula" rid="E17">17</xref>)], the global task would be totally neglected, the local input can be improved by adding the global task as secondary task, in such a way the robot still tries to achieve it while avoiding the obstacle (primary task) (Antonelli et al., <xref ref-type="bibr" rid="B3">2008</xref>). Thus, equation (<xref ref-type="disp-formula" rid="E17">17</xref>) can be replaced by
<disp-formula id="E18"><label>(18)</label><mml:math id="M60"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02020;</mml:mo></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mn>&#x003B8;</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mi>d</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mo class="MathClass-rel">&#x0007C;</mml:mo></mml:mrow></mml:mfenced><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">N</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></disp-formula>
where the global input vector <inline-formula><mml:math id="M61"><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula> is projected into the null space of matrix <bold><italic>J</italic></bold><italic><sub>l</sub></italic><sub>,1</sub> by means of matrix
<disp-formula id="E53"><mml:math id="M62"><mml:mtext mathvariant="bold-italic">N</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">I</mml:mtext></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02020;</mml:mo></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">J</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">I</mml:mtext></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
</sec>
</sec>
<sec id="S4-4">
<label>4.2</label> <title>State Observer</title>
<p>As seen in Section <xref ref-type="sec" rid="S4-3-1">4.1.1</xref>, to compute the global input <bold><italic>u</italic></bold><italic><sub>g,i</sub></italic>, each robot needs an estimate of the collective state. To this aim, the decentralized observer first proposed in Arrichiello et al. (<xref ref-type="bibr" rid="B7">2015</xref>) and then modified in Arrichiello et al. (<xref ref-type="bibr" rid="B6">2014c</xref>) can be adopted. In particular, the observer on board the generic robot <italic>i</italic>-th computes the estimate of the collective state <bold><italic>x</italic></bold> as follows
<disp-formula id="E19"><label>(19)</label><mml:math id="M63"><mml:mrow><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi>o</mml:mi></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mstyle displaystyle='true'><mml:munder><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msub><mml:mn>&#x1D4A9;</mml:mn><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:mi>j</mml:mi></mml:msup><mml:mover accent='true'><mml:mi>y</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:msup><mml:mo>&#x02212;</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mi>y</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mo>&#x0220F;</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:msup><mml:mo>&#x02212;</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mi>y</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:msup><mml:mo>+</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:msub><mml:mover accent='true'><mml:mi>u</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mi>g</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mtext>&#x000393;</mml:mtext><mml:mi>i</mml:mi><mml:mtext>T</mml:mtext></mml:msubsup><mml:mtext>&#x00394;</mml:mtext><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
where <bold><italic>y</italic></bold> is an auxiliary variable defined as
<disp-formula id="E20"><label>(20)</label><mml:math id="M64"><mml:mtext mathvariant="bold-italic">y</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">x</mml:mtext><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:mtext mathvariant="bold-italic">u</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi>d</mml:mi><mml:mn>&#x003C4;</mml:mn><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
that results useful both for state estimation and for diagnosis purposes discussed in the following section; <italic>k<sub>o</sub></italic> is a positive scalar gain; <bold>&#x003A0;</bold><italic><sub>i</sub></italic> is the (<italic>Nn</italic>&#x02009;&#x000D7;&#x02009;<italic>Nn</italic>) matrix defined as <inline-formula><mml:math id="M65"><mml:msub><mml:mo mathvariant="bold">&#x0220F;</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="bold">&#x00393;</mml:mi><mml:mi>i</mml:mi><mml:mtext>T</mml:mtext></mml:msubsup><mml:msub><mml:mi mathvariant="bold">&#x00393;</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:math></inline-formula>, that selects only the components of the <italic>i-</italic>th robot;
<disp-formula id="E21"><label>(21)</label><mml:math id="M66"><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable columnalign='left'><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mstyle displaystyle='true'><mml:mrow><mml:msubsup><mml:mo mathvariant="italic">&#x0222B;</mml:mo><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:mrow><mml:mi>t</mml:mi></mml:msubsup><mml:mrow><mml:mi>u</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003C4;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mrow></mml:mstyle><mml:mi>d</mml:mi><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mi>y</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:msup><mml:mo>=</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>&#x02212;</mml:mo><mml:mstyle displaystyle='true'><mml:mrow><mml:msubsup><mml:mo mathvariant="italic">&#x0222B;</mml:mo><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mn>0</mml:mn></mml:msub></mml:mrow><mml:mi>t</mml:mi></mml:msubsup><mml:mrow><mml:msup><mml:mo stretchy='false'>(</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:msub><mml:mover accent='true'><mml:mi>u</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mi>g</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003C4;</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="bold">&#x00393;</mml:mi><mml:mi>i</mml:mi><mml:mtext>T</mml:mtext></mml:msubsup><mml:mn>&#x00394;</mml:mn><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mi>d</mml:mi><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:mrow></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>
where <italic>t</italic><sub>0</sub> is the initial time instant; <inline-formula><mml:math id="M67"><mml:mn>&#x00394;</mml:mn><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> takes into account the possibility to activate the reactive local control and it is given by
<disp-formula id="E22"><label>(22)</label><mml:math id="M68"><mml:mn>&#x00394;</mml:mn><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>0</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfenced><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mrow><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:munderover></mml:mstyle></mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p><sc><bold>remark</bold></sc> <bold>4.1</bold>. <italic>It is worth highlighting that the definition of</italic> <bold><italic>y</italic></bold><italic><sub>m</sub> makes use of the real input [equation (<xref ref-type="disp-formula" rid="E16">16</xref>)] (global or reactive), while the estimate</italic> <inline-formula><mml:math id="M69"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula><italic>takes into account only the estimated global input</italic> <inline-formula><mml:math id="M70"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula><italic>for robots different from i-th and, thanks to the additive term &#x00394;</italic><bold><italic>u</italic></bold><italic><sub>i</sub>, the real input for the i-th robot. In this way, the reactive behaviors cannot be confused with faults by other robots in the team, despite they affect the global mission</italic>.</p>
<p>Moreover, the selection matrix <bold>&#x003A0;</bold><italic><sub>i</sub></italic> allows to select only the <italic>i</italic>-th components from global variables as <bold><italic>y</italic></bold>. This ensures that equation (<xref ref-type="disp-formula" rid="E19">19</xref>) can be implemented on a distributed system since each robot only uses variable components locally available.</p>
<p>Let us define the collective estimated variables
<disp-formula id="E23"><label>(23)</label><mml:math id="M71"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mo class="MathClass-open">[</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mo class="MathClass-op">&#x02026;</mml:mo></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mo class="MathClass-open">[</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mo class="MathClass-op">&#x02026;</mml:mo></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mn class="MathClass-open">[</mml:mn></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:msup><mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:msup><mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mo class="MathClass-op">&#x02026;</mml:mo></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:msup><mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow><mml:mn class="MathClass-close">]</mml:mn></mml:mrow><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
and the collective vectors
<disp-formula id="E24"><label>(24)</label><mml:math id="M72"><mml:mtable><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>&#x022C6;</mml:mo></mml:msup></mml:mrow></mml:mtd><mml:mtd columnalign="left" class="align-odd"><mml:mo>=</mml:mo><mml:msub><mml:mn mathvariant="bold">1</mml:mn><mml:mi>N</mml:mi></mml:msub><mml:mo>&#x02297;</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mi>&#x0211B;</mml:mi><mml:mrow><mml:msup><mml:mi>N</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>&#x022C6;</mml:mo></mml:msup></mml:mrow></mml:mtd><mml:mtd columnalign="left" class="align-odd"><mml:mo>=</mml:mo><mml:msub><mml:mn mathvariant="bold">1</mml:mn><mml:mi>N</mml:mi></mml:msub><mml:mo>&#x02297;</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mi>&#x0211B;</mml:mi><mml:mrow><mml:msup><mml:mi>N</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>&#x022C6;</mml:mo></mml:msup></mml:mrow></mml:mtd><mml:mtd columnalign="left" class="align-odd"><mml:mo>=</mml:mo><mml:msub><mml:mn mathvariant="bold">1</mml:mn><mml:mi>N</mml:mi></mml:msub><mml:mo>&#x02297;</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mi>&#x0211B;</mml:mi><mml:mrow><mml:msup><mml:mi>N</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">&#x003B7;</mml:mi><mml:mo>&#x022C6;</mml:mo></mml:msup></mml:mrow></mml:mtd><mml:mtd columnalign="left" class="align-odd"><mml:mo>=</mml:mo><mml:msub><mml:mn mathvariant="bold">1</mml:mn><mml:mi>N</mml:mi></mml:msub><mml:mo>&#x02297;</mml:mo><mml:mi mathvariant="bold-italic">&#x003B7;</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mi>&#x0211B;</mml:mi><mml:mrow><mml:msup><mml:mi>N</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">&#x003BE;</mml:mi><mml:mo>&#x022C6;</mml:mo></mml:msup></mml:mrow></mml:mtd><mml:mtd columnalign="left" class="align-odd"><mml:mo>=</mml:mo><mml:msub><mml:mn mathvariant="bold">1</mml:mn><mml:mi>N</mml:mi></mml:msub><mml:mo>&#x02297;</mml:mo><mml:mi mathvariant="bold-italic">&#x003BE;</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mi>&#x0211B;</mml:mi><mml:mrow><mml:msup><mml:mi>N</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">&#x003D5;</mml:mi><mml:mo>&#x022C6;</mml:mo></mml:msup></mml:mrow></mml:mtd><mml:mtd columnalign="left" class="align-odd"><mml:mo>=</mml:mo><mml:msub><mml:mn mathvariant="bold">1</mml:mn><mml:mi>N</mml:mi></mml:msub><mml:mo>&#x02297;</mml:mo><mml:mi mathvariant="bold-italic">&#x003D5;</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mi>&#x0211B;</mml:mi><mml:mrow><mml:msup><mml:mi>N</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mrow><mml:mrow><mml:mn>&#x00394;</mml:mn><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>&#x022C6;</mml:mo></mml:mrow></mml:mrow></mml:mtd><mml:mtd columnalign="left" class="align-odd"><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>[</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mn mathvariant="bold">&#x00393;</mml:mn><mml:mn>1</mml:mn><mml:mtext>T</mml:mtext></mml:msubsup><mml:mn>&#x00394;</mml:mn><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mtext>T</mml:mtext></mml:msup><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi mathvariant="bold">&#x00393;</mml:mi><mml:mn>1</mml:mn><mml:mtext>T</mml:mtext></mml:msubsup><mml:mn>&#x00394;</mml:mn><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mtext>T</mml:mtext></mml:msup><mml:mo>&#x022EF;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msubsup><mml:mi mathvariant="bold">&#x00393;</mml:mi><mml:mn>1</mml:mn><mml:mtext>T</mml:mtext></mml:msubsup><mml:mn>&#x00394;</mml:mn><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>N</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mtext>T</mml:mtext></mml:msup><mml:mo stretchy='false'>]</mml:mo></mml:mrow><mml:mtext>T</mml:mtext></mml:msup><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mo>&#x0211B;</mml:mo><mml:mrow><mml:msup><mml:mi>N</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
where &#x02297; denotes the Kronecker product operator. By taking into account equations (<xref ref-type="disp-formula" rid="E19">19</xref>), (<xref ref-type="disp-formula" rid="E23">23</xref>), and (<xref ref-type="disp-formula" rid="E24">24</xref>), the collective state estimation dynamics is
<disp-formula id="E25"><label>(25)</label><mml:math id="M73"><mml:mrow><mml:msup><mml:mover accent='true'><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mrow><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mo>&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003A0;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003A0;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B7;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>&#x00394;</mml:mn><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003BE;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <inline-formula><mml:math id="M74"><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">L</mml:mtext><mml:mo class="MathClass-bin">&#x02297;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">I</mml:mtext></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula><mml:math id="M75"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> and
<disp-formula id="E26"><label>(26)</label><mml:math id="M76"><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003A0;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext>diag</mml:mtext><mml:mfenced separators="" open="{" close="}"><mml:mrow><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003A0;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003A0;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>The dynamics of the collective state estimation error <inline-formula><mml:math id="M77"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> is given by
<disp-formula id="E27"><label>(27)</label><mml:math id="M78"><mml:mrow><mml:msup><mml:mover accent='true'><mml:mover accent='true'><mml:mi>x</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mrow><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mo>&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003BE;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>&#x00394;</mml:mn><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>In the previous works (Arrichiello et al., <xref ref-type="bibr" rid="B6">2014c</xref>, <xref ref-type="bibr" rid="B7">2015</xref>), it has been proven that with the observer [equation (<xref ref-type="disp-formula" rid="E25">25</xref>)], in the absence of faults, measurement noise, and model uncertainties, the collective state estimation error <inline-formula><mml:math id="M79"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> exponentially converges to the origin if no robots are adopting a reactive control (i.e., <inline-formula><mml:math id="M80"><mml:msub><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-rel">&#x02200;</mml:mo><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x02260;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> in equation (<xref ref-type="disp-formula" rid="E8">8</xref>) and &#x02200;<italic><sub>i</sub></italic>).</p>
<p>To prove the convergence of <inline-formula><mml:math id="M81"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula>, the exponential convergence to the origin of <inline-formula><mml:math id="M82"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> is first proven by the following theorem</p>
<p><sc><bold>theorem</bold></sc> <bold>1.</bold> <italic>In the presence of a strongly connected directed communication graph (or connected undirected graph) and in the absence of faults (<bold><italic>&#x003D5;</italic></bold>&#x02009;&#x0003D;&#x02009;</italic><bold>0</bold><italic>), measurement noise, and model uncertainties (</italic><inline-formula><mml:math id="M83"><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B7;</mml:mn></mml:mstyle></mml:math></inline-formula>&#x02009;&#x0003D;&#x02009;<bold>&#x003BE;</bold>&#x02009;&#x0003D;&#x02009;<bold>0</bold><italic>)</italic>, <inline-formula><mml:math id="M84"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> <italic>is exponentially convergent to the origin with the observer [equation (<xref ref-type="disp-formula" rid="E25">25</xref>)], independent from the local control input</italic>, <bold><italic>u</italic></bold><italic><sub>i</sub> (i&#x02009;&#x0003D;&#x02009;1,&#x02009;&#x02026;,&#x02009;N), applied by the robots. Furthermore, in the presence of bounded measurement noise and model uncertainty</italic>, <inline-formula><mml:math id="M85"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula><italic>is globally uniformly ultimately bounded</italic>.</p>
<p>Then, based on the previous theorem, also the convergence of <inline-formula><mml:math id="M86"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> in the absence of reactive behaviors is stated by the following.</p>
<p><sc><bold>theorem</bold></sc> <bold>2.</bold> <italic>In the presence of a strongly connected directed communication graph (or connected undirected graph) and in the absence of faults (<bold><italic>&#x003D5;</italic></bold>&#x02009;&#x0003D;&#x02009;</italic><bold><italic>0</italic></bold><italic>), measurement noise, and model uncertainties (</italic><bold><italic>&#x003B7;</italic></bold>&#x02009;&#x0003D;&#x02009;<bold>&#x003BE;</bold><italic>&#x02009;&#x0003D;&#x02009;</italic><bold>0</bold><italic>), with the observer in [equation (<xref ref-type="disp-formula" rid="E25">25</xref>)], the stacked vector of the collective state estimation errors</italic> <inline-formula><mml:math id="M87"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula><italic>is exponentially convergent to the origin. Moreover, in the presence of bounded measurement noise and model uncertainty</italic>, <inline-formula><mml:math id="M88"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula><italic>is globally uniformly ultimately bounded</italic>.</p>
<p>The complete proofs of both the theorems can be found in Arrichiello et al. (<xref ref-type="bibr" rid="B6">2014c</xref>) and Arrichiello et al. (<xref ref-type="bibr" rid="B7">2015</xref>) and they are not reported here for the sake of brevity.</p>
<p><sc><bold>remark</bold></sc> <bold>4.2.</bold> <italic>Different from</italic> <inline-formula><mml:math id="M89"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula>, <italic>in the presence of reactive behaviors, the convergence of</italic> <inline-formula><mml:math id="M90"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> <italic>to zero cannot be guaranteed even in the absence of faults and disturbances, since</italic> <inline-formula><mml:math id="M91"><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>&#x00394;</mml:mn><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> <italic>does not converge to zero</italic>.</p>
</sec>
</sec>
<sec id="S5">
<label>5</label> <title>Fault Tolerant Strategy</title>
<p>In this section, we present the proposed strategy to handle recoverable and unrecoverable actuator faults occurring on any robot of the team. In the presence of a fault, the first step is to decide if the robot objective can be achieved in spite of its occurrence by opportunely reconfiguring the control input. In this case, it is possible to classify the fault as <italic>recoverable</italic> (Staroswiecki, <xref ref-type="bibr" rid="B29">2008</xref>) (e.g., a bias between the commanded input and the actual one), and active fault-tolerant strategies can be <italic>locally</italic> activated by single robots, that locally modifies the nominal control law [equation (<xref ref-type="disp-formula" rid="E16">16</xref>)] so as to accommodate the fault by compensating the effects of the fault on its dynamics. Regarding <italic>non-recoverable</italic> faults (e.g., permanent actuator failure) active strategies are not available, but in multi-robot system the intrinsic redundancy can be exploited in order to define a passive fault tolerance strategy aimed at removing the faulty vehicle from the team and rescheduling the mission needs.</p>
<sec id="S5-5">
<label>5.1</label> <title>Recoverable Faults: Local Fault Estimate and Accommodation</title>
<p>In the presence of recoverable faults, an active fault tolerance approach is pursued, i.e., the nominal control law [equation (<xref ref-type="disp-formula" rid="E8">8</xref>)] is reconfigured by adding a compensation term, <inline-formula><mml:math id="M92"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. Thus, the new input vector <inline-formula><mml:math id="M93"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, given by
<disp-formula id="E28"><label>(28)</label><mml:math id="M94"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
is adopted instead of equation (<xref ref-type="disp-formula" rid="E8">8</xref>). In equation (<xref ref-type="disp-formula" rid="E28">28</xref>), <bold><italic>u</italic></bold><italic><sub>i</sub></italic> has the same form than in equation (<xref ref-type="disp-formula" rid="E8">8</xref>), while the adaptive term <inline-formula><mml:math id="M95"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> provides an estimate of the fault, in such a way to compensate its effect on the robot dynamics.</p>
<p>In order to estimate the fault <bold><italic>&#x003D5;</italic></bold><italic><sub>i</sub></italic>, a local state observer is designed as in Arrichiello et al. (<xref ref-type="bibr" rid="B5">2014b</xref>) and Zhang et al. (<xref ref-type="bibr" rid="B35">2013</xref>)
<disp-formula id="E29"><label>(29)</label><mml:math id="M96"><mml:msub><mml:mover accent='true'><mml:mi>z</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">K</mml:mtext><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>m</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">z</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <inline-formula><mml:math id="M97"><mml:mtext mathvariant="bold-italic">K</mml:mtext><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo class="MathClass-bin">&#x000D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> is a symmetric and positive definite gain matrix. The update law for the fault estimation is given by
<disp-formula id="E30"><label>(30)</label><mml:math id="M98"><mml:msub><mml:mover accent='true'><mml:mover accent='true'><mml:mi>&#x003D5;</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">G</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">K</mml:mtext><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <bold><italic>e</italic></bold><italic><sub>i</sub></italic>(<italic>t</italic>)&#x02009;&#x0003D;&#x02009;<bold><italic>x</italic></bold><italic><sub>i</sub></italic>&#x02009;&#x02212;&#x02009;<bold><italic>z</italic></bold><italic><sub>i</sub></italic> and <inline-formula><mml:math id="M99"><mml:mtext mathvariant="bold-italic">G</mml:mtext><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo class="MathClass-bin">&#x000D7;</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> is a symmetric positive matrix gain to be designed.</p>
<p><sc><bold>remark</bold></sc> <bold>5.1.</bold> <italic>From</italic> equation (<xref ref-type="disp-formula" rid="E30">30</xref>), <italic>it can be recognized that the on-line fault estimator has the following expression</italic>
<disp-formula id="E31"><label>(31)</label><mml:math id="M100"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">G</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">K</mml:mtext><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi>d</mml:mi><mml:mn>&#x003C4;</mml:mn></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
<italic>where</italic> <italic>t<sub>f,i</sub></italic> <italic>is the fault occurrence instant. The integral term allows to achieve an asymptotic estimate of a constant fault while, in the presence of time-varying faults, it can be proven that the estimation error is bounded</italic>.</p>
<p>From the robot dynamics [equation (<xref ref-type="disp-formula" rid="E1">1</xref>)] and the new control law [equation (<xref ref-type="disp-formula" rid="E28">28</xref>)] with the update law [equation (<xref ref-type="disp-formula" rid="E30">30</xref>)], it holds
<disp-formula id="E32"><label>(32)</label><mml:math id="M151"><mml:msub><mml:mover accent='true'><mml:mi>e</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext mathvariant="bold-italic">K</mml:mtext><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext mathvariant="bold-italic">K</mml:mtext><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B7;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003BE;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext mathvariant="bold-italic">K</mml:mtext><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext mathvariant="bold-italic">K</mml:mtext><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B7;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003BE;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
where <inline-formula><mml:math id="M152"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is the fault estimation error. In the absence of faults, it can be easily seen that, in the absence of measurement noise <bold><italic>&#x003B7;</italic></bold><italic><sub>i</sub></italic> and disturbances <bold><italic>&#x003BE;</italic></bold><italic><sub>i</sub></italic>, the estimate <inline-formula><mml:math id="M101"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is zero, provided that the initial observer error is zero. On the other side, in the presence of measurement noise and disturbances, the estimate <inline-formula><mml:math id="M102"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is different from zero even in the absence of faults and converges to <bold><italic>K<bold><italic>&#x003B7;</italic></bold></italic></bold><italic><sub>i</sub></italic>&#x02009;&#x02212;&#x02009;<bold><italic>&#x003BE;</italic></bold><italic><sub>i</sub></italic>.</p>
<p>By introducing the collective vectors of errors <bold><italic>e</italic></bold> &#x0003D; <inline-formula><mml:math id="M153"><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and fault estimations <inline-formula><mml:math id="M154"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, from equations (<xref ref-type="disp-formula" rid="E30">30</xref>) and (<xref ref-type="disp-formula" rid="E39">32</xref>) it holds
<disp-formula id="E33"><label>(33)</label><mml:math id="M103"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mover accent='true'><mml:mi>e</mml:mi><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">I</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02297;</mml:mo><mml:mtext mathvariant="bold-italic">K</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">I</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02297;</mml:mo><mml:mtext mathvariant="bold-italic">K</mml:mtext></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B7;</mml:mn></mml:mstyle><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold">1</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02297;</mml:mo><mml:mstyle mathvariant="bold"><mml:mn>&#x003BE;</mml:mn></mml:mstyle><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E34"><label>(34)</label><mml:math id="M104"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mover accent='true'><mml:mover accent='true'><mml:mi>&#x003D5;</mml:mi><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mo>&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">I</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02297;</mml:mo><mml:msup><mml:mrow><mml:mtext mathvariant="bold-italic">G</mml:mtext></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002D9;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext mathvariant="bold-italic">e</mml:mtext></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>As reported in Section <xref ref-type="sec" rid="S4-4">4.2</xref>, the estimation error of the collective state coming from observer [equation (<xref ref-type="disp-formula" rid="E25">25</xref>)], without local fault estimation [equation (<xref ref-type="disp-formula" rid="E30">30</xref>)], is exponential convergent to zero in the absence of faults, disturbances, and measurement noise and under the assumption of a connected undirected graph, while in the presence of bounded disturbances and measurement noise, <inline-formula><mml:math id="M155"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula> is globally uniformly ultimately bounded (Arrichiello et al., <xref ref-type="bibr" rid="B5">2014b</xref>, <xref ref-type="bibr" rid="B7">2015</xref>).</p>
<p>In the presence of a recoverable fault and the adaptive fault observer [equation (<xref ref-type="disp-formula" rid="E29">29</xref>)] with the update law [equation (<xref ref-type="disp-formula" rid="E30">30</xref>)], it has been proven in Arrichiello et al. (<xref ref-type="bibr" rid="B5">2014b</xref>) that, under the assumptions of connected undirected communication graph and fault velocity bounded with a known bound, the estimation errors <inline-formula><mml:math id="M156"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula>, <inline-formula><mml:math id="M105"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup></mml:math></inline-formula>, and <inline-formula><mml:math id="M106"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:math></inline-formula> are all uniformly ultimately bounded, as well as the task-tracking errors <bold><italic><inline-formula><mml:math id="M157"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003C3;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula></italic></bold> (<italic>l</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2). Here, the proof is not reported for the sake of brevity.</p>
</sec>
<sec id="S5-6">
<label>5.2</label> <title>Non-Recoverable Faults</title>
<p>In the presence of non-recoverable faults, the intrinsic redundancy of a multi-robot system is exploited in order to accomplish the mission in spite of the faulty teammates. To this aim, a passive fault tolerance strategy is designed aimed at removing the faulty robots from the team, and at allowing the remaining vehicles to reconfigure themselves. To this purpose, a two-stage procedure is designed: at first, a fault detection and isolation strategy, developed as in Arrichiello et al. (<xref ref-type="bibr" rid="B7">2015</xref>) and reported in the following for the sake of completeness, is adopted to make each robot able to detect the occurrence of a fault and to recognize the faulty vehicle even if not in direct communication; then, the faulty vehicle is removed from the team by suitably resizing the exchanged vectors.</p>
<sec id="S5-6-3">
<label>5.2.1</label> <title>Fault Detection and Isolation</title>
<p>In order to detect the occurrence of a fault and isolate the faulty vehicle, let us define the following residual vector for the <italic>i</italic>-th robot (Arrichiello et al., <xref ref-type="bibr" rid="B7">2015</xref>)
<disp-formula id="E35"><label>(35)</label><mml:math id="M0"><mml:mrow><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mi>i</mml:mi></mml:msup><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle='true'><mml:munder><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>&#x02208;</mml:mo><mml:msub><mml:mi>&#x1D4A9;</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mi>j</mml:mi></mml:msup><mml:mover accent='true'><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:msup><mml:mo>&#x02212;</mml:mo><mml:mi>i</mml:mi></mml:msup><mml:mover accent='true'><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mn mathvariant="bold">&#x0220F;</mml:mn><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mover accent='true'><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>&#x0005E;</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>;</mml:mo></mml:mrow></mml:math></disp-formula>
it is worth noticing that the computation of the above quantity does not require additional information exchange since it makes use of the same terms used by the state observer [equation (<xref ref-type="disp-formula" rid="E19">19</xref>)]. The vector <italic><sup>i</sup></italic><bold><italic>r</italic></bold> can be seen as a stacked vector, i.e., <inline-formula><mml:math id="M107"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mtext mathvariant="bold-italic">r</mml:mtext><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mo class="MathClass-open">[</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mspace width="2.56804pt" class="tmspace"/></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="2.56804pt" class="tmspace"/><mml:msup><mml:mrow><mml:mo class="MathClass-op">&#x02026;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, where each component <inline-formula><mml:math id="M108"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> represents the residual computed by robot <italic>i</italic> relative to robot <italic>k</italic> and allows the robot <italic>i</italic> to monitor the healthy state of robot <italic>k</italic>. After some algebraic manipulations [see Arrichiello et al. (<xref ref-type="bibr" rid="B7">2015</xref>) for details], it is possible to rewrite the residual component <italic><sup>i</sup></italic><bold><italic>r</italic></bold><italic><sub>k</sub></italic> as the sum of two contributions: the first term, <italic><sup>i</sup></italic><bold><italic>h</italic></bold><italic><sub>k</sub></italic>, depending on the observer dynamics and on the presence of noise and disturbances; the second term, <italic><sup>i</sup></italic><bold><italic>f</italic></bold> <italic><sub>k</sub></italic>, depending on the fault <bold><italic>&#x003D5;</italic></bold><italic><sub>k</sub></italic>, i.e.,
<disp-formula id="E36"><label>(36)</label><mml:math id="M158"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mtext>&#x02009;</mml:mtext><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">h</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mtext>&#x02009;</mml:mtext><mml:msup><mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">f</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
with
<disp-formula id="E37"><label>(37)</label><mml:math id="M159"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">h</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x00393;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003A0;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B7;</mml:mn></mml:mstyle><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x00393;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mfenced separators="" open="[" close=""><mml:mrow><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfenced><mml:mfenced separators="" open="" close="]"><mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mo class="MathClass-op" mathvariant="italic">&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msup><mml:mspace width="0.3em" class="thinspace"/><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold">1</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02297;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003BE;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003A0;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003B7;</mml:mn></mml:mstyle><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfenced><mml:mi>d</mml:mi><mml:mn>&#x003C4;</mml:mn></mml:mrow></mml:mfenced></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E38"><label>(38)</label><mml:math id="M109"><mml:mtable><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">f</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x00393;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mo class="MathClass-op" mathvariant="italic">&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msup><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msub><mml:mrow><mml:mtext mathvariant="bold">1</mml:mtext></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02297;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003C4;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfenced><mml:mi>d</mml:mi><mml:mn>&#x003C4;</mml:mn><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
where vector <inline-formula><mml:math id="M110"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mo class="MathClass-open">[</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup><mml:mspace width="2.56804pt" class="tmspace"/><mml:msup><mml:mrow><mml:mo class="MathClass-op">&#x02026;</mml:mo></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msup><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0211B;</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">Nn</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> collects the estimation errors <inline-formula><mml:math id="M111"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> of all the observers, and <inline-formula><mml:math id="M112"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext mathvariant="bold-italic">L</mml:mtext><mml:mo class="MathClass-bin">&#x02297;</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">I</mml:mtext></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>&#x003A0;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>.</p>
<p>From equations (<xref ref-type="disp-formula" rid="E37">37</xref>) to (<xref ref-type="disp-formula" rid="E38">38</xref>), it can be argued that each residual component <italic><sup>i</sup></italic><bold><italic>r</italic></bold><italic><sub>k</sub></italic>, <italic>i</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2,&#x02009;&#x02026;,&#x02009;<italic>N</italic>, is sensitive only to fault occurring on robot <italic>k</italic> and is insensitive to all the other faults [see Arrichiello et al. (<xref ref-type="bibr" rid="B7">2015</xref>) for details]. Thus, a fault <bold><italic>&#x003D5;</italic></bold><italic><sub>k</sub></italic> affecting the robot <italic>k</italic> is detected and isolated by the robot <italic>i</italic> if
<disp-formula id="E39"><label>(39)</label><mml:math id="M113"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:mfenced separators="" open="{" close=""><mml:mrow><mml:mtable equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mo class="MathClass-rel">&#x02203;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">:</mml:mo><mml:mspace width="1em" class="quad"/></mml:mtd><mml:mtd class="array" columnalign="left"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0003E;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:mo class="MathClass-rel">&#x02200;</mml:mo><mml:mi>l</mml:mi><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>2</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>N</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>l</mml:mi><mml:mo class="MathClass-rel">&#x02260;</mml:mo><mml:mi>k</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-rel">&#x02200;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mspace width="1em" class="quad"/></mml:mtd><mml:mtd class="array" columnalign="left"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x02264;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
where <italic>t<sub>f</sub></italic>&#x02009;&#x0003E;&#x02009;0 is the instant at which the fault occurs and <italic><sup>i</sup>&#x003BC;<sub>j</sub></italic>(<italic>t</italic>) (&#x02200;<italic><sub>i,j</sub></italic>) are suitable adaptive thresholds. The use of thresholds is necessary to avoid false alarms since, due to the measurement noise and model uncertainties, the residuals are always different from zero even in the absence of faults. In Arrichiello et al. (<xref ref-type="bibr" rid="B7">2015</xref>), the following expression for <italic><sup>i</sup>&#x003BC;<sub>k</sub></italic> has been derived
<disp-formula id="E40"><label>(40)</label><mml:math id="M114"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msqrt><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msqrt><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003B4;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:mfenced separators="" open="(" close=""><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:mi>&#x003BA;</mml:mi><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>&#x003BB;</mml:mn><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mfenced separators="" open="" close=")"><mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mfrac><mml:mrow><mml:mi>&#x003BA;</mml:mi><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B7;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msqrt><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msqrt><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mn>&#x003BE;</mml:mn></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mn>&#x003BB;</mml:mn></mml:mrow></mml:mfrac><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mn>1</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>&#x003BB;</mml:mn><mml:mi>t</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow><mml:msup><mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003B4;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B7;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
where <italic><sup>i</sup>&#x003B4;<sub>k</sub></italic> is 1 if <italic>i</italic>&#x02009;&#x0003D;&#x02009;<italic>k</italic> and 0 otherwise, <inline-formula><mml:math id="M115"><mml:mover accent='true'><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:math></inline-formula> and <inline-formula><mml:math id="M116"><mml:mover accent='true'><mml:mi>&#x003BE;</mml:mi><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:math></inline-formula> are the bounds defined in equations (<xref ref-type="disp-formula" rid="E2">2</xref>) and (<xref ref-type="disp-formula" rid="E4">4</xref>), while <italic>&#x003BA;</italic> an &#x003BB; are positive scalars such that
<disp-formula id="E41"><label>(41)</label><mml:math id="M117"><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:mtext>&#x02009;</mml:mtext><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mi>&#x003BA;</mml:mi><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>&#x003BB;</mml:mn><mml:mi>t</mml:mi></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula>
that always exist since <inline-formula><mml:math id="M118"><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>o</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">L</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula> is Hurwitz.</p>
<p><sc><bold>remark</bold></sc> <bold>5.2</bold>. <italic>It is worth noticing that, in the presence of a recoverable fault on robot l, residuals</italic> <italic><sup>i</sup></italic><bold><italic>r</italic></bold><italic><sub>l</sub></italic>, <italic>i</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2,&#x02009;&#x02026;,&#x02009;<italic>N</italic>, <italic>can exceed their threshold during the transient phase needed to the adaptive term</italic> <inline-formula><mml:math id="M119"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> <italic>in</italic> equation (<xref ref-type="disp-formula" rid="E30">30</xref>) <italic>to converge to the fault. To avoid these false alarms, the decision about a fault can be taken only if the thresholds is exceeded for a certain time window. This is a quite standard approach in decision-making scheme design, see, e.g</italic>., Pierri et al. (<xref ref-type="bibr" rid="B25">2008</xref>)<italic>for further details</italic>.</p>
</sec>
<sec id="S5-6-4">
<label>5.2.2</label> <title>Fault Recovery via Exclusion of the Faulty Vehicle</title>
<p>In order to accomplish the team mission in spite of the presence of a non-recoverable fault, the faulty vehicle must be excluded from the team and the task function references must be replanned. The adopted detection and isolation strategy allows each robot to isolate the faulty teammate but, since each robot detects the fault asynchronously from each other, the problem is to determine the time instant from which the faulty vehicle must be excluded.</p>
<p>More in detail, the exclusion of a faulty vehicle requires each robot to change the dimension of all the involved variables; that is, each healthy robot must resize the estimate of the collective state vector (<inline-formula><mml:math id="M120"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula>), the input vector (<inline-formula><mml:math id="M121"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">u</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula>), and the auxiliary variable vector <inline-formula><mml:math id="M122"><mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula> that is exchanged with the neighbors. The vectors&#x02019; dimensions become (<italic>N&#x02009;&#x02212;&#x02009;</italic>1)<italic>n</italic> instead of <italic>Nn</italic>.</p>
<p>Since the detection time instant <italic>t</italic> in equation (<xref ref-type="disp-formula" rid="E39">39</xref>) is different for each robot, problems can arise if the vector resizing is not synchronized. For example, let us suppose that the <italic>i</italic>th vehicle has detected a fault on robot <italic>l</italic>th (i.e., <inline-formula><mml:math id="M123"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn></mml:math></inline-formula> exceeds the thresholds <italic><sup>i</sup>&#x003BC;<sub>l</sub></italic>) at time <italic>t<sub>i</sub></italic>, and it resizes the vector <inline-formula><mml:math id="M124"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula> to be sent to its neighbors. Supposing that one or more of these neighbors has not yet detected the fault, they would receive a reduced size vector from the neighbor <italic>i</italic> but they have not any information about the faulty teammate, so they do not know which components to remove from their collective state estimate. To avoid this issue, all the robots must have already detected and isolated the faulty vehicle before starting to exchange the reduced size vector. To this purpose, let us define the time <italic><sup>i</sup>t<sub>d</sub></italic> as the first instant at which <inline-formula><mml:math id="M125"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0003E;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> in equation (<xref ref-type="disp-formula" rid="E39">39</xref>), i.e.,
<disp-formula id="E54"><mml:math id="M126"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:munder accentunder="true"><mml:mrow><mml:mtext>min</mml:mtext></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:munder><mml:mtext>&#x02009;</mml:mtext><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow><mml:mo class="MathClass-punc">:</mml:mo><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0003E;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula>
and the detection delay of robot <italic>i</italic>, <italic><sup>i</sup></italic>&#x00394;<italic>t<sub>d</sub></italic>&#x02009;&#x0003D;&#x02009;<italic><sup>i</sup>t<sub>d</sub></italic>&#x02009;&#x02212;&#x02009;<italic>t<sub>f</sub></italic>, as the time occurring from the fault occurrence and its detection/isolation by vehicle <italic>i</italic>th.</p>
<p>Based on the previous considerations, the following steps for removing the faulty robot have to be developed:
<list list-type="bullet">
<list-item><p>each robot estimates the maximum detection delay, i.e.,
<disp-formula id="E42"><label>(42)</label><mml:math id="M127"><mml:mn>&#x00394;</mml:mn><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mtext>max</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mtext>ma</mml:mtext><mml:msup><mml:mrow><mml:msub><mml:mrow><mml:mtext>x</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:mn>&#x00394;</mml:mn><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula></p></list-item>
<list-item><p>the first robot that detects the fault occurrence sends the reduced size vectors starting from time <italic><sup>j</sup>t<sub>d</sub></italic>&#x02009;&#x0002B;&#x02009;&#x00394;<italic>t<sub>d</sub></italic><sub>,max</sub>,</p></list-item>
<list-item><p>the other robots, once received the reduced-order vector <inline-formula><mml:math id="M128"><mml:msup><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msup><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">y</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula>, have already complete knowledge about the faulty robot and can resize correctly their own estimates.</p></list-item>
</list></p>
<p>In sum, the resize of the estimates of the collective variables is possible after the time instant
<disp-formula id="E43"><label>(43)</label><mml:math id="M129"><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:munder accentunder="true"><mml:mrow><mml:mtext>min</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:munder><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>&#x00394;</mml:mn><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mtext>max</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>Thus, the problem is how to get a reliable estimate of &#x00394;<italic>t<sub>d,</sub></italic><sub>max</sub>.</p>
</sec>
<sec id="S5-6-5">
<label>5.2.3</label> <title>Estimate of the Maximum Detection Delay</title>
<p>In order to estimate &#x00394;<italic>t<sub>d,</sub></italic><sub>max</sub>, a detection time analysis should be performed. In general, the detection time depends both on the fault dynamics and on the residuals dynamics. First of all, let us consider, on the base of equation (<xref ref-type="disp-formula" rid="E36">36</xref>), that the part of the residual not depending by the fault is below its threshold, i.e. <inline-formula><mml:math id="M130"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">h</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x02264;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, and thus, in the presence of a fault, the following chain of inequalities can be written
<disp-formula id="E44"><label>(44)</label><mml:math id="M131"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">f</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo class="MathClass-bin">&#x0002B;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">h</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">f</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">h</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">f</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>The fault detection by the robot <italic>i</italic> occurs if <inline-formula><mml:math id="M132"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x0003E;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula>, hence, from equation (<xref ref-type="disp-formula" rid="E44">44</xref>) a sufficient detectability condition can be defined as
<disp-formula id="E45"><label>(45)</label><mml:math id="M133"><mml:mo class="MathClass-rel">&#x02203;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">:</mml:mo><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">f</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mo class="MathClass-rel">&#x02265;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:math></disp-formula> and thus
<disp-formula id="E46"><label>(46)</label><mml:math id="M134"><mml:mo class="MathClass-rel">&#x02203;</mml:mo><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">:</mml:mo><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">f</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:msup><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mi>&#x003BC;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo></mml:math></disp-formula></p>
<p>Equation (<xref ref-type="disp-formula" rid="E46">46</xref>) could be adopted to compute an estimate of the maximum detection time and, thus, of &#x00394;<italic>t<sub>d,</sub></italic><sub>max</sub>. Such an estimate will be quite conservative since it is based on a sufficient detectability condition and on thresholds also computed from conservative bounds. However, since the fault dynamics is included in equation (<xref ref-type="disp-formula" rid="E46">46</xref>), it is not possible to have an estimate of &#x00394;<italic>t<sub>d,</sub></italic><sub>max</sub> valid for any possible fault, but a time detection analysis can be made only for limited class of faults. More in detail, a possible solution for this problem has been developed in Arrichiello et al. (<xref ref-type="bibr" rid="B4">2014a</xref>), where the maximum detection delay was computed for constant faults. By using the same arguments as in Arrichiello et al. (<xref ref-type="bibr" rid="B4">2014a</xref>) and the results in Keliris et al. (<xref ref-type="bibr" rid="B18">2013</xref>), the time detection analysis can be easily extended to other faults <bold><italic>&#x003D5;</italic></bold><italic><sub>i</sub></italic>, provided that <inline-formula><mml:math id="M135"><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn><mml:mo class="MathClass-rel">&#x0003E;</mml:mo><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003D5;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover></mml:math></inline-formula> for a time sufficient for the fault detection, with <inline-formula><mml:math id="M136"><mml:mover accent='true'><mml:mi>&#x003D5;</mml:mi><mml:mo>&#x000AF;</mml:mo></mml:mover></mml:math></inline-formula> opportunely large.</p>
</sec>
</sec>
</sec>
<sec id="S6">
<label>6</label> <title>Numerical Simulations</title>
<p>In this section, we present a numerical simulation case study where a team of 4 robots (<italic>N</italic>&#x02009;&#x0003D;&#x02009;4), using the proposed distributed fault-tolerant control approach, moves in a plane (<italic>n</italic>&#x02009;&#x0003D;&#x02009;2) keeping an assigned formation. During the execution of the mission some of the robots are subject to recoverable faults, unrecoverable faults, as well as reactive behavior activations due to obstacle avoidance.</p>
<p>Gains <italic>k<sub>c</sub></italic>, <italic>k<sub>o</sub></italic>, <bold><italic>K</italic></bold>, and <bold><italic>G</italic></bold> in equations (<xref ref-type="disp-formula" rid="E15">15</xref>), (<xref ref-type="disp-formula" rid="E19">19</xref>), (<xref ref-type="disp-formula" rid="E29">29</xref>), and (<xref ref-type="disp-formula" rid="E30">30</xref>) were, respectively, set to <italic>k<sub>c</sub></italic>&#x02009;&#x0003D;&#x02009;4, <italic>k<sub>o</sub></italic>&#x02009;&#x0003D;&#x02009;6, <bold><italic>K</italic></bold>&#x02009;&#x0003D;&#x02009;3<bold><italic>I</italic></bold><sub>2</sub>, and <bold><italic>G</italic></bold>&#x02009;&#x0003D;&#x02009;0.01<bold><italic>I</italic></bold><sub>2</sub>. The measurement noise <bold><italic>&#x003B7;</italic></bold><italic><sub>i</sub></italic> in equation (<xref ref-type="disp-formula" rid="E3">3</xref>) is assumed to be bounded by 0.001&#x02009;m <inline-formula><mml:math id="M137"><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003B7;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>001</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula>, while the process noise in equation (<xref ref-type="disp-formula" rid="E1">1</xref>) is bounded by 0.005&#x02009;m/s (<inline-formula><mml:math id="M138"><mml:mover accent="false" class="mml-overline"><mml:mrow><mml:mi>&#x003BE;</mml:mi></mml:mrow><mml:mo accent="true">&#x000AF;</mml:mo></mml:mover><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>005</mml:mn></mml:math></inline-formula> in equation (<xref ref-type="disp-formula" rid="E2">2</xref>)). The directed network topology shown in Figure <xref ref-type="fig" rid="F2">2</xref> is assumed for the information exchange.</p>
<fig position="float" id="F2">
<label>Figure 2</label>
<caption><p><bold>Communication graph</bold>.</p></caption>
<graphic xlink:href="frobt-04-00002-g002.tif"/>
</fig>
<p>The desired path of the centroid <bold><italic>&#x003C3;</italic></bold><sub>1,</sub><italic><sub>d</sub></italic>(<italic>t</italic>) is reported in Figure <xref ref-type="fig" rid="F3">3</xref> (dashed blue line), while the desired formation <bold><italic>&#x003C3;</italic></bold><sub>2,</sub><italic><sub>d</sub></italic>(<italic>t</italic>) is constant and it corresponds to a regular polygon formation of side 0.5&#x02009;m around the desired centroid. During the simulation, two faults of different nature are considered. In detail, a recoverable fault occurs on robot 2 at <italic>t<sub>f</sub></italic><sub>,2</sub>&#x02009;&#x0003D;&#x02009;19&#x02009;s and it has the following expression:
<disp-formula id="E55"><mml:math id="M139"><mml:mtable columnalign="left" class="align-star"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfenced separators="" open="{" close=""><mml:mrow><mml:mtable equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>0</mml:mn></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo><mml:mspace width="1em" class="quad"/></mml:mtd><mml:mtd class="array" columnalign="left"><mml:mtext>for</mml:mtext><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd class="array" columnalign="left"><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>3</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>35</mml:mn></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup><mml:mrow><mml:mn class="MathClass-open">(</mml:mn><mml:mrow><mml:mn>1</mml:mn><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:mi>t</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>45</mml:mn></mml:mrow></mml:mfrac></mml:mrow></mml:msup></mml:mrow><mml:mn class="MathClass-close">)</mml:mn></mml:mrow><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd><mml:mtd class="array" columnalign="left"><mml:mtext>for</mml:mtext><mml:mi>t</mml:mi><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mi>f</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mfenced></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<fig position="float" id="F3">
<label>Figure 3</label>
<caption><p><bold>Path followed by the robots in the numerical case study</bold>. The dashed green and red lines, respectively, show the paths of healthy vehicles and vehicles subject to faults; the blue line represents the desired centroid path. The team configuration at three intermediate instants 22.8, 38, and 53.2&#x02009;s is shown (black circles) together with the initial (crosses) and final (diamonds) configurations.</p></caption>
<graphic xlink:href="frobt-04-00002-g003.tif"/>
</fig>
<p>A non-recoverable fault on robot 1, consisting in a complete stop of the robot, is assumed occurring at <italic>t<sub>f</sub></italic><sub>,1</sub>&#x02009;&#x0003D;&#x02009;41.8&#x02009;s. The vehicle paths are shown in Figure <xref ref-type="fig" rid="F3">3</xref> (green dashed lines for healthy robots 3 and 4, and red lines for robots 1 and 2 subject to faults). Figure <xref ref-type="fig" rid="F4">4</xref> shows the components of <inline-formula><mml:math id="M140"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003D5;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003D5;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:math></inline-formula> and its estimate <inline-formula><mml:math id="M141"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003D5;</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>&#x003D5;</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mtext>T</mml:mtext></mml:mrow></mml:msup></mml:math></inline-formula> performed by the local fault estimator on board robot 2; the figure also shows that, depending on the local observer gains, the measurement and process noise affects the fault estimates. In this sense, based on equation (<xref ref-type="disp-formula" rid="E1">1</xref>) the process noise is seen as a (bounded) fault affecting the robot dynamics.</p>
<fig position="float" id="F4">
<label>Figure 4</label>
<caption><p><bold>Fault <bold><italic>&#x003D5;</italic></bold><sub>2</sub> on vehicle 2 starting at instant <italic>t<sub>f</sub></italic><sub>,2</sub>&#x02009;&#x0003D;&#x02009;19&#x02009;s and its estimation</bold> <inline-formula><mml:math id="M142"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003D5;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:math></inline-formula><bold><sub>2</sub></bold>.</p></caption>
<graphic xlink:href="frobt-04-00002-g004.tif"/>
</fig>
<p>Figure <xref ref-type="fig" rid="F5">5</xref> shows the residuals calculated by each robot of the team and relative to the faulty robot 1. In detail, the residual norms <inline-formula><mml:math id="M143"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn></mml:math></inline-formula> (<italic>i</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2,&#x02009;3,&#x02009;4) (continuous blue lines) and the corresponding thresholds (dashed green lines) are plotted. The plots also show that, being the fault unrecoverable, all the residuals are kept below the corresponding threshold as long as the fault is not affecting the robot, while the residuals computed by each robot overcome the thresholds after the fault occurrence even if the faulty robot has not a direct communication link with all the teammates.</p>
<fig position="float" id="F5">
<label>Figure 5</label>
<caption><p><bold>Norm of residuals <italic><sup>i</sup>r</italic><sub>1</sub> (<italic>i</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2,&#x02009;3,&#x02009;4) (solid lines) as calculated by vehicle <italic>i</italic> and relative to vehicle 1 subject to unrecoverable fault at <italic>t<sub>f</sub></italic><sub>,1</sub>&#x02009;&#x0003D;&#x02009;41.8&#x02009;s</bold>. Dashed green lines are the corresponding thresholds used for FDIR strategy.</p></caption>
<graphic xlink:href="frobt-04-00002-g005.tif"/>
</fig>
<p>Figures <xref ref-type="fig" rid="F6">6</xref>&#x02013;<xref ref-type="fig" rid="F8">8</xref> show that the residuals relative to other robots, namely, <inline-formula><mml:math id="M144"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:msup><mml:mrow><mml:mn class="MathClass-rel">&#x0007C;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mtext mathvariant="bold-italic">r</mml:mtext></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mn class="MathClass-rel">&#x0007C;&#x0007C;</mml:mn></mml:math></inline-formula> (<italic>i</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2,&#x02009;3,&#x02009;4 and <italic>j&#x02009;</italic>&#x02260;&#x02009;1), do not overcome the corresponding thresholds; this means that no fault is detected on robots 2, 3, 4. In particular, with regard to robot 2, that is affected by a recoverable fault after <italic>t<sub>f</sub></italic><sub>,2</sub>&#x02009;&#x0003D;&#x02009;19&#x02009;s, the residuals do not overcome the threshold since the fault is <italic>locally</italic> compensated by the controller according to the strategy in Section <xref ref-type="sec" rid="S5-5">5.1</xref>, and it does not need to be <italic>globally</italic> detected and recovered.</p>
<fig position="float" id="F6">
<label>Figure 6</label>
<caption><p><bold>Norm of residuals <italic><sup>i</sup>r</italic><sub>2</sub> (<italic>i</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2,&#x02009;3,&#x02009;4) (solid lines) as calculated by vehicle <italic>i</italic> and relative to the vehicle 2 subject to a recoverable fault at <italic>t<sub>f</sub></italic><sub>,2</sub>&#x02009;&#x0003D;&#x02009;30.4&#x02009;s</bold>. Dashed green lines are the corresponding thresholds used for FDIR strategy.</p></caption>
<graphic xlink:href="frobt-04-00002-g006.tif"/>
</fig>
<fig position="float" id="F7">
<label>Figure 7</label>
<caption><p><bold>Norm of residuals <italic><sup>i</sup>r</italic><sub>3</sub> (<italic>i</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2,&#x02009;3,&#x02009;4) (solid lines) as calculated by vehicle <italic>i</italic> and relative to the healthy vehicle 3</bold>. Dashed green lines are the corresponding thresholds used for FDIR strategy.</p></caption>
<graphic xlink:href="frobt-04-00002-g007.tif"/>
</fig>
<fig position="float" id="F8">
<label>Figure 8</label>
<caption><p><bold>Norm of residuals <italic><sup>i</sup>r</italic><sub>4</sub> (<italic>i</italic>&#x02009;&#x0003D;&#x02009;1,&#x02009;2,&#x02009;3,&#x02009;4) (solid lines) as calculated by vehicle <italic>i</italic> and relative to the healthy vehicle 4</bold>. Dashed green lines are the corresponding thresholds used for FDIR strategy.</p></caption>
<graphic xlink:href="frobt-04-00002-g008.tif"/>
</fig>
<p>It is worth noticing from Figure <xref ref-type="fig" rid="F3">3</xref> that the robots are also able to avoid obstacles along their paths via the activation of local reactive behaviors, and that, as shown in Figures <xref ref-type="fig" rid="F5">5</xref>&#x02013;<xref ref-type="fig" rid="F8">8</xref>, the activation of the local behaviors do not effect the residual components. Concerning the FDIR strategy described in Section <xref ref-type="sec" rid="S5-6-4">5.2.2</xref>, Figure <xref ref-type="fig" rid="F3">3</xref> shows that, after the exclusion of robot 1, the formation is rearranged according to a regular triangular formation. The maximum detection time &#x00394;<italic>t<sub>d,</sub></italic><sub>max</sub> in equation (<xref ref-type="disp-formula" rid="E42">42</xref>) is set to 5&#x02009;s.</p>
<p>In Figure <xref ref-type="fig" rid="F9">9</xref>, the norms of the state estimation error <inline-formula><mml:math id="M145"><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mo class="MathClass-rel">&#x02225;</mml:mo></mml:math></inline-formula> (top) and the task errors <inline-formula><mml:math id="M146"><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003C3;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo></mml:math></inline-formula> and <inline-formula><mml:math id="M147"><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mover accent="false"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003C3;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo></mml:math></inline-formula> (bottom) are shown. The figure shows that these errors grow during the obstacle avoidance and the fault detection phases and decreases toward a neighborhood of the origin in normal conditions. Finally, Figure <xref ref-type="fig" rid="F10">10</xref> reports the control input <bold><italic>u</italic></bold><italic><sub>i</sub></italic> (&#x02200;<italic>i</italic>) in equation (<xref ref-type="disp-formula" rid="E1">1</xref>). The top plot is relative to robot 1 that is affected by a non-recoverable fault; thus, the input becomes zero after the fault occurrence. Concerning the other plots, the discontinuities on the inputs is due to the faulty robot exclusion and formation rearrangement.</p>
<fig position="float" id="F9">
<label>Figure 9</label>
<caption><p><bold>(Top) Norm of the state estimation error</bold> <inline-formula><mml:math id="M148"><mml:mstyle mathvariant="bold-italic"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:mn class="MathClass-rel" mathvariant="bold">&#x0007C;</mml:mn></mml:mstyle><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold-italic">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op" mathvariant="bold">&#x002DC;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mo class="MathClass-bin" mathvariant="bold">&#x022C6;</mml:mo></mml:mrow></mml:msup><mml:mstyle mathvariant="bold-italic"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:mn class="MathClass-rel" mathvariant="bold">&#x0007C;</mml:mn></mml:mstyle></mml:math></inline-formula><bold>; (Bottom) norm of the task errors</bold> <inline-formula><mml:math id="M149"><mml:mstyle mathvariant="bold-italic"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:mn class="MathClass-rel" mathvariant="bold">&#x0007C;</mml:mn></mml:mstyle><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003C3;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op" mathvariant="bold">&#x002DC;</mml:mo></mml:mover></mml:math></inline-formula><bold><sub>1</sub><italic>&#x0007C;&#x0007C;</italic>(green line) and</bold> <inline-formula><mml:math id="M150"><mml:mstyle mathvariant="bold-italic"><mml:mn class="MathClass-rel">&#x0007C;</mml:mn><mml:mn class="MathClass-rel" mathvariant="bold">&#x0007C;</mml:mn></mml:mstyle><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold-italic"><mml:mn>&#x003C3;</mml:mn></mml:mstyle></mml:mrow><mml:mo class="MathClass-op" mathvariant="bold">&#x002DC;</mml:mo></mml:mover></mml:math></inline-formula><bold><sub>2</sub></bold><bold><italic>&#x0007C;&#x0007C;</italic></bold><bold>(blue line)</bold>. Dashed black lines are in correspondence of activation/deactivation of obstacle avoidance reactive behavior, occurrence of unrecoverable fault at <italic>t<sub>f</sub></italic><sub>,1</sub> and faulty vehicle removal.</p></caption>
<graphic xlink:href="frobt-04-00002-g009.tif"/>
</fig>
<fig position="float" id="F10">
<label>Figure 10</label>
<caption><p><bold>Control input <italic>u<sub>i</sub></italic> in equation (<xref ref-type="disp-formula" rid="E1">1</xref>) &#x02200;<italic>i</italic></bold>.</p></caption>
<graphic xlink:href="frobt-04-00002-g010.tif"/>
</fig>
</sec>
<sec id="S7">
<label>7</label> <title>Conclusion</title>
<p>In this paper, a distributed fault-tolerant control strategy for networked robots was presented. The proposed approach builds on a distributed controller-observer architecture, a fault detection, isolation and recovery strategy for unrecoverable faults, and a local fault estimation and compensation for recoverable faults. The proposed approach also results robust to the activation of reactive behaviors acting at local levels and not included in the global control strategy.</p>
<p>The proposed architecture allows to manage in an integrated manner the different issues related to distributed formation control and fault management, while keeping limited the communication burden; i.e., the information exchanged among neighbors for state estimation purposes are also used for fault management without further requirements. The approach was successfully tested via numerical simulations, and the results of a single integrated case study involving the occurrence of the different kinds of faults as well as the activation of reactive behaviors was presented to validate the approach.</p>
</sec>
<sec id="S8">
<title>Author Contributions</title>
<p>All authors listed have made substantial, direct, and intellectual contribution to the work and approved it for publication.</p>
</sec>
<sec id="S9">
<title>Conflict of Interest Statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
</body>
<back>
<ref-list>
<title>References</title>
<ref id="B1"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Antonelli</surname> <given-names>G.</given-names></name> <name><surname>Arrichiello</surname> <given-names>F.</given-names></name> <name><surname>Caccavale</surname> <given-names>F.</given-names></name> <name><surname>Marino</surname> <given-names>A.</given-names></name></person-group> (<year>2013</year>). <article-title>A decentralized controller-observer scheme for multi-agent weighted centroid tracking</article-title>. <source>IEEE Trans. Aut. Control</source> <volume>58</volume>, <fpage>1310</fpage>&#x02013;<lpage>1316</lpage>.<pub-id pub-id-type="doi">10.1109/TAC.2012.2220032</pub-id></citation></ref>
<ref id="B2"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Antonelli</surname> <given-names>G.</given-names></name> <name><surname>Arrichiello</surname> <given-names>F.</given-names></name> <name><surname>Caccavale</surname> <given-names>F.</given-names></name> <name><surname>Marino</surname> <given-names>A.</given-names></name></person-group> (<year>2014</year>). <article-title>Decentralized time-varying formation control for multi-robot systems</article-title>. <source>Int. J. Robot. Res.</source> <volume>33</volume>, <fpage>1029</fpage>&#x02013;<lpage>1043</lpage>.<pub-id pub-id-type="doi">10.1177/0278364913519149</pub-id></citation></ref>
<ref id="B3"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Antonelli</surname> <given-names>G.</given-names></name> <name><surname>Arrichiello</surname> <given-names>F.</given-names></name> <name><surname>Chiaverini</surname> <given-names>S.</given-names></name></person-group> (<year>2008</year>). <article-title>The null-space-based behavioral control for autonomous robotic systems</article-title>. <source>J. Intell. Service Robot.</source> <volume>1</volume>, <fpage>27</fpage>&#x02013;<lpage>39</lpage>.<pub-id pub-id-type="doi">10.1007/s11370-007-0002-3</pub-id></citation></ref>
<ref id="B4"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Arrichiello</surname> <given-names>F.</given-names></name> <name><surname>Marino</surname> <given-names>A.</given-names></name> <name><surname>Pierri</surname> <given-names>F.</given-names></name></person-group> (<year>2014a</year>). &#x0201C;<article-title>A decentralized fault tolerant control strategy for multi-robot systems</article-title>,&#x0201D; in <conf-name>Proceedings 19th World Congress of the International Federation of Automatic Control</conf-name> (<conf-loc>Cape Town, South Africa</conf-loc>), <fpage>6642</fpage>&#x02013;<lpage>6647</lpage>.</citation></ref>
<ref id="B5"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Arrichiello</surname> <given-names>F.</given-names></name> <name><surname>Marino</surname> <given-names>A.</given-names></name> <name><surname>Pierri</surname> <given-names>F.</given-names></name></person-group> (<year>2014b</year>). &#x0201C;<article-title>Distributed fault detection and recovery for networked robots</article-title>,&#x0201D; in <source>IEEE/RSJ International Conf. on Intelligent Robots and Systems</source> (<publisher-loc>Chicago, IL</publisher-loc>), <fpage>3734</fpage>&#x02013;<lpage>3739</lpage>.</citation></ref>
<ref id="B6"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Arrichiello</surname> <given-names>F.</given-names></name> <name><surname>Marino</surname> <given-names>A.</given-names></name> <name><surname>Pierri</surname> <given-names>F.</given-names></name></person-group> (<year>2014c</year>). &#x0201C;<article-title>Distributed fault-tolerant strategy for networked robots with both cooperative and reactive controls</article-title>,&#x0201D; in <conf-name>2014 IEEE International Conference on Information and Automation (ICIA)</conf-name> (<conf-loc>Harbin, China</conf-loc>: <conf-sponsor>IEEE</conf-sponsor>), <fpage>677</fpage>&#x02013;<lpage>682</lpage>.</citation></ref>
<ref id="B7"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Arrichiello</surname> <given-names>F.</given-names></name> <name><surname>Marino</surname> <given-names>A.</given-names></name> <name><surname>Pierri</surname> <given-names>F.</given-names></name></person-group> (<year>2015</year>). <article-title>Observer-based decentralized fault detection and isolation strategy for networked multirobot systems</article-title>. <source>IEEE Trans. Control Syst. Technol.</source> <volume>23</volume>, <fpage>1465</fpage>&#x02013;<lpage>1476</lpage>.<pub-id pub-id-type="doi">10.1109/TCST.2014.2377175</pub-id></citation></ref>
<ref id="B8"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Belta</surname> <given-names>C.</given-names></name> <name><surname>Kumar</surname> <given-names>V.</given-names></name></person-group> (<year>2004</year>). <article-title>Abstraction and control of groups of robots</article-title>. <source>IEEE Trans. Robot.</source> <volume>20</volume>, <fpage>865</fpage>&#x02013;<lpage>875</lpage>.<pub-id pub-id-type="doi">10.1109/TRO.2004.829498</pub-id></citation></ref>
<ref id="B9"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Bullo</surname> <given-names>F.</given-names></name> <name><surname>Cort&#x000E9;s</surname> <given-names>J.</given-names></name> <name><surname>Mart&#x000ED;nez</surname> <given-names>S.</given-names></name></person-group> (<year>2009</year>). <source>Distributed Control of Robotic Networks. Applied Mathematics Series</source>. <publisher-loc>Princeton, NJ</publisher-loc>: <publisher-name>Princeton University Press</publisher-name>.</citation></ref>
<ref id="B10"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Caccavale</surname> <given-names>F.</given-names></name> <name><surname>Marino</surname> <given-names>A.</given-names></name> <name><surname>Muscio</surname> <given-names>G.</given-names></name> <name><surname>Pierri</surname> <given-names>F.</given-names></name></person-group> (<year>2013</year>). <article-title>Discrete-time framework for fault diagnosis in robotic manipulators</article-title>. <source>IEEE Trans. Control Syst. Technol.</source> <volume>21</volume>, <fpage>1858</fpage>&#x02013;<lpage>1873</lpage>.<pub-id pub-id-type="doi">10.1109/TCST.2012.2212196</pub-id></citation></ref>
<ref id="B11"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Cao</surname> <given-names>M.</given-names></name> <name><surname>Morse</surname> <given-names>A. S.</given-names></name> <name><surname>Anderson</surname> <given-names>B. D.</given-names></name></person-group> (<year>2008</year>). <article-title>Reaching a consensus in a dynamically changing environment: a graphical approach</article-title>. <source>SIAM J. Control Optim.</source> <volume>47</volume>, <fpage>575</fpage>&#x02013;<lpage>600</lpage>.<pub-id pub-id-type="doi">10.1137/060657005</pub-id></citation></ref>
<ref id="B12"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Davoodi</surname> <given-names>M.</given-names></name> <name><surname>Khorasani</surname> <given-names>K.</given-names></name> <name><surname>Talebi</surname> <given-names>H.</given-names></name> <name><surname>Momeni</surname> <given-names>H.</given-names></name></person-group> (<year>2014</year>). <article-title>Distributed fault detection and isolation filter design for a network of heterogeneous multiagent systems</article-title>. <source>IEEE Trans. Control Syst. Technol.</source> <volume>22</volume>, <fpage>1061</fpage>&#x02013;<lpage>1069</lpage>.<pub-id pub-id-type="doi">10.1109/TCST.2013.2264507</pub-id></citation></ref>
<ref id="B13"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dong</surname> <given-names>X.</given-names></name> <name><surname>Hu</surname> <given-names>G.</given-names></name></person-group> (<year>2016</year>). <article-title>Time-varying formation control for general linear multi-agent systems with switching directed topologies</article-title>. <source>Automatica</source> <volume>73</volume>, <fpage>47</fpage>&#x02013;<lpage>55</lpage>.<pub-id pub-id-type="doi">10.1016/j.automatica.2016.06.024</pub-id></citation></ref>
<ref id="B14"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fax</surname> <given-names>J.</given-names></name> <name><surname>Murray</surname> <given-names>R.</given-names></name></person-group> (<year>2004</year>). <article-title>Information flow and cooperative control of vehicle formations</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>49</volume>, <fpage>1465</fpage>&#x02013;<lpage>1476</lpage>.<pub-id pub-id-type="doi">10.1109/TAC.2004.834433</pub-id></citation></ref>
<ref id="B15"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ferrari</surname> <given-names>R.</given-names></name> <name><surname>Parisini</surname> <given-names>T.</given-names></name> <name><surname>Polycarpou</surname> <given-names>M.</given-names></name></person-group> (<year>2009</year>). <article-title>Distributed fault diagnosis with overlapping decomposition: an adaptive approximation approach</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>54</volume>, <fpage>794</fpage>&#x02013;<lpage>799</lpage>.<pub-id pub-id-type="doi">10.1109/TAC.2008.2009591</pub-id></citation></ref>
<ref id="B16"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Godsil</surname> <given-names>C.</given-names></name> <name><surname>Royle</surname> <given-names>G.</given-names></name></person-group> (<year>2001</year>). <source>Algebraic Graph Theory. Graduate Texts in Mathematics</source>. <publisher-loc>New York</publisher-loc>: <publisher-name>Springer</publisher-name>.</citation></ref>
<ref id="B17"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hong</surname> <given-names>Y.</given-names></name> <name><surname>Chen</surname> <given-names>G.</given-names></name> <name><surname>Bushnell</surname> <given-names>L.</given-names></name></person-group> (<year>2008</year>). <article-title>Distributed observers design for leader-following control of multi-agent networks</article-title>. <source>Automatica</source> <volume>44</volume>, <fpage>846</fpage>&#x02013;<lpage>850</lpage>.<pub-id pub-id-type="doi">10.1016/j.automatica.2007.07.004</pub-id></citation></ref>
<ref id="B18"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Keliris</surname> <given-names>C.</given-names></name> <name><surname>Polycarpou</surname> <given-names>M. M.</given-names></name> <name><surname>Parisini</surname> <given-names>T.</given-names></name></person-group> (<year>2013</year>). <article-title>A distributed fault detection filtering approach for a class of interconnected continuous-time nonlinear systems</article-title>. <source>IEEE Trans. Automat. Contr.</source> <volume>58</volume>, <fpage>2032</fpage>&#x02013;<lpage>2047</lpage>.<pub-id pub-id-type="doi">10.1109/TAC.2013.2253231</pub-id></citation></ref>
<ref id="B19"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Marino</surname> <given-names>A.</given-names></name> <name><surname>Pierri</surname> <given-names>F.</given-names></name></person-group> (<year>2015</year>). &#x0201C;<article-title>Discrete-time distributed control and fault diagnosis for a class of linear systems</article-title>,&#x0201D; in <source>IEEE/RSJ International Conf. on Intelligent Robots and Systems (IROS)</source> (<publisher-loc>Hamburg, Germany</publisher-loc>), <fpage>2974</fpage>&#x02013;<lpage>2979</lpage>.</citation></ref>
<ref id="B20"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Marino</surname> <given-names>A.</given-names></name> <name><surname>Pierri</surname> <given-names>F.</given-names></name> <name><surname>Chiacchio</surname> <given-names>P.</given-names></name> <name><surname>Chiaverini</surname> <given-names>S.</given-names></name></person-group> (<year>2015</year>). &#x0201C;<article-title>Distributed fault detection and accommodation for a class of discrete-time linear systems</article-title>,&#x0201D; in <source>Proceeding of the IEEE International Conf. on Information and Automation</source>, (<publisher-loc>Lijiang, China</publisher-loc>), <fpage>469</fpage>&#x02013;<lpage>474</lpage>.</citation></ref>
<ref id="B21"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Mesbahi</surname> <given-names>M.</given-names></name> <name><surname>Egerstedt</surname> <given-names>M.</given-names></name></person-group> (<year>2010</year>). <source>Graph Theoretic Methods in Multiagent Networks</source>. <publisher-loc>Princeton, NJ</publisher-loc>: <publisher-name>Princeton University Press</publisher-name>.</citation></ref>
<ref id="B22"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Meskin</surname> <given-names>N.</given-names></name> <name><surname>Khorasani</surname> <given-names>K.</given-names></name></person-group> (<year>2009</year>). <article-title>Actuator fault detection and isolation for a network of unmanned vehicles</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>54</volume>, <fpage>835</fpage>&#x02013;<lpage>840</lpage>.<pub-id pub-id-type="doi">10.1109/TAC.2008.2009675</pub-id></citation></ref>
<ref id="B23"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Olfati-Saber</surname> <given-names>R.</given-names></name> <name><surname>Fax</surname> <given-names>J.</given-names></name> <name><surname>Murray</surname> <given-names>R.</given-names></name></person-group> (<year>2007</year>). <article-title>Consensus and cooperation in networked multi-agent systems</article-title>. <source>Proc. IEEE</source> <volume>95</volume>, <fpage>215</fpage>&#x02013;<lpage>233</lpage>.<pub-id pub-id-type="doi">10.1109/JPROC.2006.887293</pub-id></citation></ref>
<ref id="B24"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Olfati-Saber</surname> <given-names>R.</given-names></name> <name><surname>Murray</surname> <given-names>R.</given-names></name></person-group> (<year>2004</year>). <article-title>Consensus problems in networks of agents with switching topology and time-delays</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>49</volume>, <fpage>1520</fpage>&#x02013;<lpage>1533</lpage>.<pub-id pub-id-type="doi">10.1109/TAC.2004.834113</pub-id></citation></ref>
<ref id="B25"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pierri</surname> <given-names>F.</given-names></name> <name><surname>Paviglianiti</surname> <given-names>G.</given-names></name> <name><surname>Caccavale</surname> <given-names>F.</given-names></name> <name><surname>Mattei</surname> <given-names>M.</given-names></name></person-group> (<year>2008</year>). <article-title>Observer-based sensor fault detection and isolation for chemical batch reactors</article-title>. <source>Eng. Appl. Artif. Intell.</source> <volume>21</volume>, <fpage>1204</fpage>&#x02013;<lpage>1216</lpage>.<pub-id pub-id-type="doi">10.1016/j.engappai.2008.02.002</pub-id></citation></ref>
<ref id="B26"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Ren</surname> <given-names>W.</given-names></name> <name><surname>Beard</surname> <given-names>R.</given-names></name></person-group> (<year>2008</year>). <source>Distributed Consensus in Multi-vehicle Cooperative Control. Communications and Control Engineering</source>. <publisher-loc>Berlin</publisher-loc>: <publisher-name>Springer</publisher-name>.</citation></ref>
<ref id="B27"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Smith</surname> <given-names>R.</given-names></name> <name><surname>Hadaegh</surname> <given-names>F.</given-names></name></person-group> (<year>2007</year>). <article-title>Closed-loop dynamics of cooperative vehicle formations with parallel estimators and communication</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>52</volume>, <fpage>1404</fpage>&#x02013;<lpage>1414</lpage>.<pub-id pub-id-type="doi">10.1109/TAC.2007.902735</pub-id></citation></ref>
<ref id="B28"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Stankovic</surname> <given-names>S.</given-names></name> <name><surname>Ilic</surname> <given-names>N.</given-names></name> <name><surname>Djurovic</surname> <given-names>Z.</given-names></name> <name><surname>Stankovic</surname> <given-names>M.</given-names></name> <name><surname>Johansson</surname> <given-names>K.</given-names></name></person-group> (<year>2010</year>). &#x0201C;<article-title>Consensus based overlapping decentralized fault detection and isolation</article-title>,&#x0201D; in <source>Conf. on Control and Fault-Tolerant Systems</source> (<publisher-loc>Nice, France</publisher-loc>), <fpage>570</fpage>&#x02013;<lpage>575</lpage>.</citation></ref>
<ref id="B29"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Staroswiecki</surname> <given-names>M.</given-names></name></person-group> (<year>2008</year>). <article-title>On fault handling in control systems</article-title>. <source>Int. J. Control Automation Syst.</source> <volume>6</volume>, <fpage>296</fpage>&#x02013;<lpage>305</lpage>.</citation></ref>
<ref id="B30"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tuna</surname> <given-names>S. E.</given-names></name></person-group> (<year>2008</year>). <article-title>Synchronizing linear systems via partial-state coupling</article-title>. <source>Automatica</source> <volume>44</volume>, <fpage>2179</fpage>&#x02013;<lpage>2184</lpage>.<pub-id pub-id-type="doi">10.1016/j.automatica.2008.01.004</pub-id></citation></ref>
<ref id="B31"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>J.</given-names></name> <name><surname>Cheng</surname> <given-names>D.</given-names></name> <name><surname>Hu</surname> <given-names>X.</given-names></name></person-group> (<year>2008</year>). <article-title>Consensus of multi-agent linear dynamic systems</article-title>. <source>Asian J. Control</source> <volume>10</volume>, <fpage>144</fpage>&#x02013;<lpage>155</lpage>.<pub-id pub-id-type="doi">10.1002/asjc.15</pub-id></citation></ref>
<ref id="B32"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname> <given-names>Y.</given-names></name> <name><surname>Ye</surname> <given-names>H.</given-names></name> <name><surname>Ding</surname> <given-names>S.</given-names></name> <name><surname>Cheng</surname> <given-names>Y.</given-names></name> <name><surname>Zhang</surname> <given-names>P.</given-names></name> <name><surname>Wang</surname> <given-names>G.</given-names></name></person-group> (<year>2009</year>). <article-title>Fault detection of networked control systems with limited communication</article-title>. <source>Int. J. Control</source> <volume>82</volume>, <fpage>1344</fpage>&#x02013;<lpage>1356</lpage>.<pub-id pub-id-type="doi">10.1080/00207170802558967</pub-id></citation></ref>
<ref id="B33"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yang</surname> <given-names>P.</given-names></name> <name><surname>Freeman</surname> <given-names>R.</given-names></name> <name><surname>Lynch</surname> <given-names>K.</given-names></name></person-group> (<year>2008</year>). <article-title>Multi-agent coordination by decentralized estimation and control</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>53</volume>, <fpage>2480</fpage>&#x02013;<lpage>2496</lpage>.<pub-id pub-id-type="doi">10.1109/TAC.2008.2006925</pub-id></citation></ref>
<ref id="B34"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yu</surname> <given-names>W.</given-names></name> <name><surname>Chen</surname> <given-names>G.</given-names></name> <name><surname>Cao</surname> <given-names>M.</given-names></name> <name><surname>Kurths</surname> <given-names>J.</given-names></name></person-group> (<year>2010</year>). <article-title>Second-order consensus for multiagent systems with directed topologies and nonlinear dynamics</article-title>. <source>IEEE Trans. Syst. Man Cybern. B Cybern.</source> <volume>40</volume>, <fpage>881</fpage>&#x02013;<lpage>891</lpage>.<pub-id pub-id-type="doi">10.1109/TSMCB.2009.2031624</pub-id><pub-id pub-id-type="pmid">19900852</pub-id></citation></ref>
<ref id="B35"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>K.</given-names></name> <name><surname>Jiang</surname> <given-names>B.</given-names></name> <name><surname>Shi</surname> <given-names>P.</given-names></name></person-group> (<year>2013</year>). <source>Observer-Based Fault Estimation and Accomodation for Dynamic Systems</source>. <publisher-loc>Berlin, Heidelberg</publisher-loc>: <publisher-name>Springer</publisher-name>.</citation></ref>
<ref id="B36"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>X.</given-names></name> <name><surname>Polycarpou</surname> <given-names>M.</given-names></name> <name><surname>Parisini</surname> <given-names>T.</given-names></name></person-group> (<year>2002</year>). <article-title>A robust detection and isolation scheme for abrupt and incipient faults in nonlinear systems</article-title>. <source>IEEE Trans. Automatic Control</source> <volume>47</volume>, <fpage>576</fpage>&#x02013;<lpage>593</lpage>.<pub-id pub-id-type="doi">10.1109/9.995036</pub-id></citation></ref>
<ref id="B37"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>X.</given-names></name> <name><surname>Zhang</surname> <given-names>Q.</given-names></name></person-group> (<year>2012</year>). <article-title>Distributed fault diagnosis in a class of interconnected nonlinear uncertain systems</article-title>. <source>Int. J. Control</source> <volume>85</volume>, <fpage>1644</fpage>&#x02013;<lpage>1662</lpage>.<pub-id pub-id-type="doi">10.1080/00207179.2012.696146</pub-id></citation></ref>
</ref-list>
</back>
</article>