<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Robot. AI</journal-id>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">782783</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2022.782783</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>Non-Smooth Control Barrier Navigation Functions for STL Motion Planning</article-title>
<alt-title alt-title-type="left-running-head">Zehfroosh and Tanner</alt-title>
<alt-title alt-title-type="right-running-head">Non-Smooth Control Barrier Navigation Functions</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Zehfroosh</surname>
<given-names>Ashkan</given-names>
</name>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/525704/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Tanner</surname>
<given-names>Herbert G.</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/134145/overview"/>
</contrib>
</contrib-group>
<aff>
<institution>Department of Mechanical Engineering</institution>, <institution>University of Delaware</institution>, <addr-line>Newark</addr-line>, <addr-line>DE</addr-line>, <country>United States</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1195897/overview">Lars Lindemann</ext-link>, University of Pennsylvania, United States</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/256318/overview">Elias B. Kosmatopoulos</ext-link>, Democritus University of Thrace, Greece</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/243688/overview">Ryan K. Williams</ext-link>, Virginia Tech, United States</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Ashkan Zehfroosh, <email>ashkanz@udel.edu</email>
</corresp>
<fn fn-type="other">
<p>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>13</day>
<month>04</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>9</volume>
<elocation-id>782783</elocation-id>
<history>
<date date-type="received">
<day>24</day>
<month>09</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>28</day>
<month>02</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2022 Zehfroosh and Tanner.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Zehfroosh and Tanner</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>This paper reports on a new approach to Signal Temporal Logic (STL) control synthesis, that 1) utilizes a navigation function as the basis to construct a Control Barrier Function (CBF), and 2) composes navigation function-based barrier functions using nonsmooth mappings to encode Boolean operations between the predicates that those barrier functions encode. Because of these two key features, the reported approach 1) covers a larger fragment of STL compared to existing approaches, 2) alleviates the computational cost associated with evaluation of the control law for the system in existing STL control barrier function methodologies, and 3) simultaneously relaxes some of the conservativeness of smooth combinations of barrier functions as a means of implementing Boolean operators. The paper demonstrates the efficacy of this new approach with three simulation case studies, one aiming at illustrating how complex STL motion planning specification can be realized, the second highlights the less-conservativeness of the approach in comparison to the existing methods, and another that shows how this technology can be brought to bear to push the envelope in the context of human-robot social interaction.</p>
</abstract>
<kwd-group>
<kwd>signal temporal logic</kwd>
<kwd>robot motion planning</kwd>
<kwd>control barrier function</kwd>
<kwd>navigation function</kwd>
<kwd>autonomous systems</kwd>
</kwd-group>
<contract-sponsor id="cn001">National Science Foundation<named-content content-type="fundref-id">10.13039/100000001</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>As soon as an infant starts moving she begins to perceive the world in fundamentally different ways (<xref ref-type="bibr" rid="B15">Higgins et al., 1996</xref>). This is because children&#x2019;s spatial knowledge (how to move in space, avoid obstacles, estimate distances, find hidden objects, and decide which surfaces can bear weight) depends on their ability to locomote (<xref ref-type="bibr" rid="B7">Campos et al., 2000</xref>; <xref ref-type="bibr" rid="B10">Clearfield, 2004</xref>). Infants make mental models by computing spatial relations between their own body and other moving objects (<xref ref-type="bibr" rid="B13">Goksun et al., 2010</xref>). Children with motor disabilities are therefore at a developmental disadvantage. Access to power mobility is typically available after the age of 4 or 5 and without early intervention, most of these children will have permanently lost the constant and daily richness of the early years. Infant motor delays can thus have lifelong social and economical consequences, not only for the families, but also for the society as a whole.</p>
<p>In robotic-assisted enriched pediatric rehabilitation environments for infants with motor disabilities, our group has been utilizing robots as a means of encouraging infants to stay engaged in active game-play, in which they explore their environment as well as the capabilities of their own bodies (<xref ref-type="bibr" rid="B17">Kokkoni et al., 2020</xref>). In the context of this type of human-robot interaction, preliminary work (<xref ref-type="bibr" rid="B32">Zehfroosh et al., 2017</xref>; <xref ref-type="bibr" rid="B33">Zehfroosh and Tanner, 2019</xref>) has offered some evidence that in this context, appropriate and effective robot reactions to children behavior are modeled more effectively by temporal (as opposed to static, propositional) logic. In contrast to other branches of temporal logic that like Linear Temporal Logic (LTL), STL is interpreted over continuous-time signals (<xref ref-type="bibr" rid="B26">Maler and Nickovic, 2004</xref>) while still capturing timing constraints associated with complex tasks. This feature makes STL an even more appropriate choice for defining robot tasks within time-limited pediatric motor rehabilitation sessions.</p>
<p>Motion planning with STL specifications is known to be hard and usually leads to computationally demanding solutions (<xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas, 2018</xref>). The starting thread of work on STL motion planning relies on a computationally demanding mixed-integer linear programming process (<xref ref-type="bibr" rid="B28">Raman et al., 2014</xref>; <xref ref-type="bibr" rid="B30">Sadraddini and Belta, 2015</xref>; <xref ref-type="bibr" rid="B25">Liu et al., 2017</xref>). The computational complexity of these methods makes real-time implementation particularly challenging, especially in the presence of dynamic obstacles (<xref ref-type="bibr" rid="B14">Gundana and Kress-Gazit, 2021</xref>). Not surprisingly, <xref ref-type="bibr" rid="B16">Jones et al. (2019)</xref> pre-compute the control before execution to overcome real-time implementation issues, at the cost of sensitivity to run-time disturbances.</p>
<p>
<xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref> reduced the computational burden of STL motion-planning through a CBF based methodology (<xref ref-type="bibr" rid="B1">Ames et al., 2019</xref>). Their method can account for a fragment of STL that includes conjunctions in the predicates or the temporal operators. The control design involves the solution of a Quadratic Programming (QP) problem at each motion planning step. Subsequent extensions of this CBF-based STL motion planning method were made along the directions of multi-agent systems with conflicting local specifications (<xref ref-type="bibr" rid="B20">Lindemann and Dimarogonas, 2019a</xref>), and dynamically coupled multi-agent systems (<xref ref-type="bibr" rid="B19">Lindemann and Dimarogonas, 2020</xref>).</p>
<p>In this existing STL control design framework, combining predicates and encoding them by (smooth) CBFs introduces a degree of conservatism. This is because of the way the CBF that incorporates the different predicates is constructed, as an exponential summation of component CBFs. Interestingly, one can compose CBF using nonsmooth operators (<xref ref-type="bibr" rid="B12">Glotfelter et al., 2017</xref>). Naturally, this comes at the cost of introducing a level of analytical complexity that makes analysis and control design more challenging. Nonsmooth CBFs formulations now exist for time-varying problem instantiations, where different predicates are combined in the form of pointwise minima and maxima of sets of component CBFs (<xref ref-type="bibr" rid="B11">Glotfelter et al., 2019</xref>).</p>
<p>Nonsmooth CBFs can relax the conservativeness of predicate composition, but currently share the same method for computing control laws as do smooth CBFs for STL motion planning synthesis (<xref ref-type="bibr" rid="B12">Glotfelter et al., 2017</xref>), i.e., solving a QP problem at each iteration of the control loop. Currently, the only STL motion planning method that circumvents the computational burden of solving a optimization problem at every iteration is the funnel-based procedure that provides continuous-time control laws (<xref ref-type="bibr" rid="B24">Lindemann et al., 2017</xref>; <xref ref-type="bibr" rid="B22">Lindemann and Dimarogonas, 2019b</xref>, <xref ref-type="bibr" rid="B23">2021</xref>). The downside of the aforementioned approach is that it covers a much smaller fragment of STL</p>
<p>This paper is the first to utilize nonsmooth CBFs in STL motion planning and control, circumventing, at least in part, computational control design problems by utilizing navigation functions (<xref ref-type="bibr" rid="B29">Rimon and Koditschek, 1992</xref>). Within this new framework, the reported methodology provides directly closed-form control laws that result in a feasible and safe robot paths. This new method 1) considerably alleviates the computation burden related to the solution of a QP optimization problem for attaining control input at every time step, 2) covers a larger class of STL (those that include disjunctions) compared to the existing barrier-function based methods and 3) relaxes some of the conservatism associated with existing CBF composition operations by under-approximating of the minimum operator for the sake of smoothness. What is more, the proposed method allows the incorporation of both attractive and repulsive for the system regions within the same analytical expression, thus reducing the size of the STL specification for a desired task. For clarity of exposition, the present paper describes the methodology as it applies to <italic>sphere world</italic> environments, with pathways to extensions to star world (<xref ref-type="bibr" rid="B18">Li and Tanner, 2018</xref>), as well as time-varying robot workspaces (<xref ref-type="bibr" rid="B31">Sun and Tanner, 2015</xref>; <xref ref-type="bibr" rid="B8">Chen et al., 2020</xref>) readily available.</p>
<p>The rest of this paper is organized as follows: It starts by some technical preliminaries on both STL semantics and non-smooth CBF. <xref ref-type="sec" rid="s3">Section 3</xref> introduces the problem of interest in the paper by specifying the fragment of STL specifications that motion planning need to be done for. Control barrier navigation functions are presented in <xref ref-type="sec" rid="s3">Section 4</xref> as a solution to the problem, where both their construction steps as well as the control input computation procedure are elaborated. Finally, <xref ref-type="sec" rid="s5">Section 5</xref> offers simulation results that illustrate the performance of the technical approach.</p>
</sec>
<sec id="s2">
<title>2 Technical Preliminaries</title>
<p>This section introduces necessary mathematical background needed for the subsequent technical discussion. The section briefly reviews STL non-smooth CBFs, and some known results that will be utilized in following sections. Before these concepts are introduced, let us present the technical terminology for the systems at hand. To that end, let <inline-formula id="inf1">
<mml:math id="m1">
<mml:mi>x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> denote the state of a dynamical system with input <inline-formula id="inf2">
<mml:math id="m2">
<mml:mi>u</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">U</mml:mi>
<mml:mo>&#x2282;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, and let its dynamics be in the form<disp-formula id="e1">
<mml:math id="m3">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(1)</label>
</disp-formula>and assume that functions <inline-formula id="inf3">
<mml:math id="m4">
<mml:mi>f</mml:mi>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2192;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> and <inline-formula id="inf4">
<mml:math id="m5">
<mml:mi>g</mml:mi>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2192;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> are locally Lipschitz continuous.</p>
<p>When every solution to (<xref ref-type="disp-formula" rid="e1">1</xref>) which starts in a set stays there, then this set is said to be <italic>forward invariant</italic> relative to (<xref ref-type="disp-formula" rid="e1">1</xref>). Specifically, we say that a set <inline-formula id="inf5">
<mml:math id="m6">
<mml:mi mathvariant="script">C</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is forward invariant with respect to (<xref ref-type="disp-formula" rid="e1">1</xref>) if <inline-formula id="inf6">
<mml:math id="m7">
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<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:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mspace width="0.28em"/>
<mml:mo>&#x21d2;</mml:mo>
<mml:mspace width="0.28em"/>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf7">
<mml:math id="m8">
<mml:mo>&#x2200;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:mi>t</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2282;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>.</p>
<table-wrap id="T4" position="float">
<table>
<tbody valign="top">
<tr>
<td align="left">(<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#x3bc;</italic>
</td>
<td align="center">iff</td>
<td align="center">
<italic>h</italic> (<italic>x</italic>, <italic>t</italic>) &#x2264; 0</td>
</tr>
<tr>
<td align="left">(<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#xac; &#x3c6;</italic>
</td>
<td align="center">iff</td>
<td align="center">
<inline-formula id="inf17">
<mml:math id="m21">
<mml:mo>&#xac;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x22a7;</mml:mo>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>
</td>
</tr>
<tr>
<td align="left">(<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#x3c6;</italic>
<sub>1</sub> &#x2227; <italic>&#x3c6;</italic>
<sub>2</sub>
</td>
<td align="center">iff</td>
<td align="center">(<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#x3c6;</italic>
<sub>1</sub> and (<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#x3c6;</italic>
<sub>2</sub>
</td>
</tr>
<tr>
<td align="left">(<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#x3c6;</italic>
<sub>1</sub> &#x2228; <italic>&#x3c6;</italic>
<sub>2</sub>
</td>
<td align="center">iff</td>
<td align="center">(<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#x3c6;</italic>
<sub>1</sub> or (<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#x3c6;</italic>
<sub>2</sub>
</td>
</tr>
<tr>
<td align="left">(<italic>x</italic>, <italic>t</italic>)&#x22a7;&#x2662;<sub>[<italic>a</italic>,<italic>b</italic>]</sub> <italic>&#x3c6;</italic>
</td>
<td align="center">iff</td>
<td align="center">
<italic>&#x2203; t</italic>
<sub>1</sub> &#x2208; [<italic>t</italic> &#x2b; <italic>a</italic>, <italic>t</italic> &#x2b; <italic>b</italic>] s.t. (<italic>x</italic>, <italic>t</italic>
<sub>1</sub>)&#x22a7;<italic>&#x3c6;</italic>
</td>
</tr>
<tr>
<td align="left">(<italic>x</italic>, <italic>t</italic>)&#x22a7;&#x25a1;<sub>[<italic>a</italic>,<italic>b</italic>]</sub> <italic>&#x3c6;</italic>
</td>
<td align="center">iff</td>
<td align="center">
<italic>&#x2200; t</italic>
<sub>1</sub> &#x2208; [<italic>t</italic> &#x2b; <italic>a</italic>, <italic>t</italic> &#x2b; <italic>b</italic>], (<italic>x</italic>, <italic>t</italic>
<sub>1</sub>)&#x22a7;<italic>&#x3c6;</italic>
</td>
</tr>
<tr>
<td align="left">(<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#x3c6;</italic>
<sub>1</sub> <italic>U</italic>
<sub>[<italic>a</italic>,<italic>b</italic>]</sub> <italic>&#x3c6;</italic>
<sub>2</sub>
</td>
<td align="center">iff</td>
<td align="center">
<italic>&#x2203; t</italic>
<sub>2</sub> &#x2208; [<italic>t</italic> &#x2b; <italic>a</italic>, <italic>t</italic> &#x2b; <italic>b</italic>] s.t. (<italic>x</italic>, <italic>t</italic>
<sub>2</sub>)&#x22a7;<italic>&#x3c6;</italic>
<sub>2</sub> and <italic>&#x2200; t</italic>
<sub>1</sub> &#x2208; [<italic>t</italic> &#x2b; <italic>a</italic>, <italic>t</italic>
<sub>2</sub>], (<italic>x</italic>, <italic>t</italic>
<sub>1</sub>)&#x22a7;<italic>&#x3c6;</italic>
<sub>1</sub>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>There can be cases where the (closed loop) right hand side of (<xref ref-type="disp-formula" rid="e1">1</xref>) needs to be discontinuous in <italic>x</italic>&#x2014;and therefore cannot be locally Lipschitz. In these cases, both the expression of dynamics, as well as the trajectories of the system, need to be understood in a more general sense. One option for expressing dynamics with <italic>input discontinuities</italic> is by utilizing <italic>differential inclusions</italic> expressed in the form of the Filippov set-valued map, where one would write <italic>F</italic> [&#x22c5;]<disp-formula id="e2">
<mml:math id="m9">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mspace width="0.17em"/>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
</mml:mrow>
<mml:mo>&#x304;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:munder>
<mml:mrow>
<mml:mi>lim</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi>&#x221e;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="0.28em"/>
<mml:mi>S</mml:mi>
<mml:mo>&#x220c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2192;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(2)</label>
</disp-formula>using <inline-formula id="inf8">
<mml:math id="m10">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
</mml:mrow>
<mml:mo>&#x304;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> to express the convex closure of a set, and <italic>S</italic> to denote a Lebesgue zero-measure set where <italic>f</italic> &#x2b; <italic>g u</italic> is discontinuous.</p>
<p>The solutions of (<xref ref-type="disp-formula" rid="e2">2</xref>) can be understood in a number of ways, and are generally not unique. One notion of solution is in the sense of Carath&#xe9;odory; if the Filippov set is nonempty, compact, and convex, and the set-valued map <italic>x</italic>&#x21a6;<italic>F</italic> (<italic>t</italic>, <italic>x</italic>) is upper-semicontinuous while the set-valued map <italic>t</italic>&#x21a6;<italic>F</italic> (<italic>t</italic>, <italic>x</italic>) is measurable, then it is known that such Carath&#xe9;odory solutions for (<xref ref-type="disp-formula" rid="e2">2</xref>)exist (<xref ref-type="bibr" rid="B5">Bacciotti and Rosier, 2005</xref>). A Carath&#xe9;odory solution to (<xref ref-type="disp-formula" rid="e2">2</xref>) on an interval <inline-formula id="inf9">
<mml:math id="m11">
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2282;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is an absolutely continuous map <italic>x</italic>(<italic>t</italic>) such that <inline-formula id="inf10">
<mml:math id="m12">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> satisfies (<xref ref-type="disp-formula" rid="e2">2</xref>) for almost all <italic>t</italic> &#x2208; [<italic>t</italic>
<sub>0</sub>, <italic>t</italic>
<sub>1</sub>]. In what follows, solutions to (<xref ref-type="disp-formula" rid="e2">2</xref>) are understood in this way. Similarly, we say that a set <inline-formula id="inf11">
<mml:math id="m13">
<mml:mi mathvariant="script">C</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is forward invariant with respect to (<xref ref-type="disp-formula" rid="e2">2</xref>) if every Carath&#xe9;odory solution of (<xref ref-type="disp-formula" rid="e2">2</xref>) starting from <inline-formula id="inf12">
<mml:math id="m14">
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<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:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<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:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> satisfies <inline-formula id="inf13">
<mml:math id="m15">
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> for almost all <italic>t</italic> &#x2208; [<italic>t</italic>
<sub>0</sub>, <italic>t</italic>
<sub>1</sub>].</p>
<sec id="s2-1">
<title>2.1 Signal Temporal Logic</title>
<p>Signal temporal logic (STL) is a temporal logic formalism that involves logical <italic>predicates</italic>, denoted <italic>&#x3bc;</italic>, whose truth values are evaluated over continuous signals. In this particular case, the continuous signals are the system&#x2019;s state trajectories at time <italic>t</italic>, namely <italic>x</italic>(<italic>t</italic>). The predicates assume their logical valuates based on a (continuous) <italic>predicate function</italic> <inline-formula id="inf14">
<mml:math id="m16">
<mml:mi>h</mml:mi>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> as in<disp-formula id="e3">
<mml:math id="m17">
<mml:mi>&#x3bc;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="">
<mml:mrow>
<mml:mtable class="cases">
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mi mathvariant="normal">r</mml:mi>
<mml:mi mathvariant="normal">u</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mtext>if&#x2009;</mml:mtext>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">l</mml:mi>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mtext>if&#x2009;</mml:mtext>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(3)</label>
</disp-formula>Based on such predicates, an STL <italic>formula</italic> <italic>&#x3c6;</italic> can be recursively defined as<disp-formula id="equ1">
<mml:math id="m18">
<mml:mi>&#x3c6;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mo>:</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mi mathvariant="normal">r</mml:mi>
<mml:mi mathvariant="normal">u</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:mi>&#x3bc;</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:mo>&#xac;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mi>&#x3c6;</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2227;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2228;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2662;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:mi>&#x3c6;</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mo>&#x25a1;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:mi>&#x3c6;</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>where <inline-formula id="inf15">
<mml:math id="m19">
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> with <italic>a</italic> &#x2264; <italic>b</italic> are timing bounds, <italic>&#xac;</italic> represents negation, &#x2227; expresses conjunction, &#x2228; denotes disjunction, &#x2662; stands for <italic>eventually</italic>, &#x25a1; stands for <italic>always</italic> and <italic>U</italic> denotes the <italic>until</italic> temporal operator (<xref ref-type="bibr" rid="B26">Maler and Nickovic, 2004</xref>).</p>
<p>If a solution <inline-formula id="inf16">
<mml:math id="m20">
<mml:mi>x</mml:mi>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> of (<xref ref-type="disp-formula" rid="e1">1</xref>) satisfies an STL specification <italic>&#x3c6;</italic> at time <italic>t</italic>, then we write (<italic>x</italic>, <italic>t</italic>)&#x22a7;<italic>&#x3c6;</italic>. The STL semantics are recursively given by the above (top of this page) rules.</p>
</sec>
<sec id="s2-2">
<title>2.2 Nonsmooth Control Barrier Functions</title>
<p>A CBF enables controller synthesis for dynamic systems in a way that ensures that if the system starts inside a set, it will never leave that set, rendering the set forward invariant with respect to the dynamics of system. A CBF can characterize the set of allowable control inputs that guarantee forward invariance of certain regions for a dynamical system at hand. The required control input is picked from a set defined in terms of the CBF for example by solving an optimization problem in a sampled-data fashion (<xref ref-type="bibr" rid="B2">Ames et al., 2016</xref>).</p>
<p>Nonsmooth CBFs allow more flexibility in the encoding of state constraints and specifications compared to their smooth counterparts. The utilization of such functions typically leads to consideration of the dynamics of the system in the form (<xref ref-type="disp-formula" rid="e2">2</xref>), primarily due to the discontinuities introduced by the control law <italic>u</italic> when it depends on the gradient of a nonsmooth CBF In fact, since the latter are nonsmooth, their gradient cannot be defined everywhere in the usual way. At points of nondifferentiability, one can understand their gradient as a set, rather than a singleton vector, and express it using the concept of the <italic>generalized gradient</italic>, which in finite dimensional spaces enjoys the following concrete characterization as <xref ref-type="other" rid="theorem_1">Theorem 1</xref>
</p>
<p>
<statement content-type="theorem" id="theorem_1">
<label>THEOREM 1</label>
<p>[(<xref ref-type="bibr" rid="B9">Clarke, 1990</xref>, Theorem 2.5.1)]. <italic>Consider a locally Lipschitz function</italic> <inline-formula id="inf18">
<mml:math id="m22">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<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:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula>
<italic>. Let</italic> <italic>S</italic> <italic>be any set of Lebesgue measure zero in</italic> <inline-formula id="inf19">
<mml:math id="m23">
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> <italic>and</italic> <inline-formula id="inf20">
<mml:math id="m24">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> <italic>denote the zero-measure set where</italic> <inline-formula id="inf21">
<mml:math id="m25">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> <italic>is non-differentiable. Then, with</italic> <inline-formula id="inf22">
<mml:math id="m26">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
</mml:mrow>
<mml:mo>&#x304;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mi>A</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <italic>denoting the closure of the convex hull of set</italic> <italic>A</italic>
<italic>, the generalized gradient</italic> <inline-formula id="inf23">
<mml:math id="m27">
<mml:mi>&#x2202;</mml:mi>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <italic>of</italic> <inline-formula id="inf24">
<mml:math id="m28">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> <italic>at point</italic> (<italic>x</italic>, <italic>t</italic>) <italic>can be written in terms of the limits of sequences</italic> (<italic>x</italic>
<sub>
<italic>i</italic>
</sub>, <italic>t</italic>
<sub>
<italic>i</italic>
</sub>) &#x2192; (<italic>x</italic>, <italic>t</italic>) <italic>as follows</italic>
<disp-formula id="e4">
<mml:math id="m29">
<mml:mi>&#x2202;</mml:mi>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
</mml:mrow>
<mml:mo>&#x304;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:munder>
<mml:mrow>
<mml:mi>lim</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi>&#x221e;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>:</mml:mo>
<mml:mi>S</mml:mi>
<mml:mo>&#x222a;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x220c;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2192;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(4)</label>
</disp-formula>Examples of nonsmooth functions include the point-wise minimum or maximum of a finite collection of locally Lipschitz functions. Indeed, these specific nonsmooth functions are of particular interest in the context of STL synthesis because they can capture the conjunction and disjunction of a number of predicates, when each of the latter is expressed by its own component CBF</p>
<p>In particular, suppose <inline-formula id="inf25">
<mml:math id="m30">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>max</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, where each <inline-formula id="inf26">
<mml:math id="m31">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is Lipschitz near (<italic>x</italic>, <italic>t</italic>) (i.e., locally Lipschitz around (<italic>x</italic>, <italic>t</italic>)). Then <inline-formula id="inf27">
<mml:math id="m32">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> is Lipschitz near (<italic>x</italic>, <italic>t</italic>), and if one denotes <italic>I</italic> (<italic>x</italic>, <italic>t</italic>) the set of indices <italic>i</italic> for which <inline-formula id="inf28">
<mml:math id="m33">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> then (<xref ref-type="bibr" rid="B9">Clarke, 1990</xref>, Proposition 2.3.12):<disp-formula id="e5">
<mml:math id="m34">
<mml:mi>&#x2202;</mml:mi>
<mml:munder>
<mml:mrow>
<mml:mi>max</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:munder>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2286;</mml:mo>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>I</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(5)</label>
</disp-formula>with equality holding if <inline-formula id="inf29">
<mml:math id="m35">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is regular at <italic>x</italic> for all <italic>i</italic> &#x2208; <italic>I</italic> (<italic>x</italic>, <italic>t</italic>), in which case <inline-formula id="inf30">
<mml:math id="m36">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> is also regular. Similarly, if <inline-formula id="inf31">
<mml:math id="m37">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and each <inline-formula id="inf32">
<mml:math id="m38">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is Lipschitz near (<italic>x</italic>, <italic>t</italic>), then again, <inline-formula id="inf33">
<mml:math id="m39">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> is Lipschitz near (<italic>x</italic>, <italic>t</italic>), and<disp-formula id="e6">
<mml:math id="m40">
<mml:mi>&#x2202;</mml:mi>
<mml:munder>
<mml:mrow>
<mml:mi>min</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:munder>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2286;</mml:mo>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>I</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(6)</label>
</disp-formula>with equality holding now if <inline-formula id="inf34">
<mml:math id="m41">
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is regular at <italic>x</italic> for all <italic>i</italic> &#x2208; <italic>I</italic> (<italic>x</italic>, <italic>t</italic>), in which case <inline-formula id="inf35">
<mml:math id="m42">
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> is regular too.</p>
<p>Note that although the pairwise maximum of a finite set of continuously differentiable functions is regular, the pairwise minimum function may not be. Nonetheless, if all <inline-formula id="inf36">
<mml:math id="m43">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> are differentiable at <italic>x</italic>, at least the generalized gradient can be computed in both cases in an expedient manner.</p>
<p>When either the dynamics of a system or the gradient of a function is set valued, the Lie (directional) derivative of the function along the solutions of the system will also be set-valued. Strong (<xref ref-type="bibr" rid="B4">Bacciotti and Ceragioli, 1999</xref>) and weak (<xref ref-type="bibr" rid="B3">Bacciotti and Ceragioli, 2006</xref>; <xref ref-type="bibr" rid="B12">Glotfelter et al., 2017</xref>) versions of set-valued Lie derivatives have been introduced depending on the regularity of the function being differentiated. In this paper we utilize the weak version, at the expense of more relaxed convergence conditions, because we need to consider generalized gradients of functions that may not be regular.</p>
<p>With &#x27e8;&#x22c5;, &#x22c5;&#x27e9; denoting the inner product of two vectors, the weak set-valued Lie derivative of a scalar locally Lipschitz function <inline-formula id="inf37">
<mml:math id="m44">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> is now defined as<disp-formula id="e7">
<mml:math id="m45">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="script">L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
<mml:mo stretchy="false">&#x2223;</mml:mo>
<mml:mo>&#x2203;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>F</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2203;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:mi>&#x3be;</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>&#x2202;</mml:mi>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.28em"/>
<mml:mtext>&#x2009;s.t.&#x2009;</mml:mtext>
<mml:mspace width="0.28em"/>
<mml:mrow>
<mml:mo>&#x2329;</mml:mo>
<mml:mo>&#x3be;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>&#x3bd;</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
<mml:mo>]</mml:mo>
</mml:mrow>
<mml:mo>&#x232a;</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(7)</label>
</disp-formula>The following lemma <xref ref-type="other" rid="lemma_1">(Lemma 1)</xref> links time derivative of function <inline-formula id="inf38">
<mml:math id="m46">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> along the solutions of (<xref ref-type="disp-formula" rid="e2">2</xref>) to the weak set-valued Lie derivative of <inline-formula id="inf39">
<mml:math id="m47">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>:</p>
</statement>
</p>
<p>
<statement content-type="lemma" id="lemma_1">
<label>LEMMA 1</label>
<p>[cf. (<xref ref-type="bibr" rid="B11">Glotfelter et al., 2019</xref>)]. <italic>Consider a Carath&#xe9;odory solution</italic> <inline-formula id="inf40">
<mml:math id="m48">
<mml:mi>x</mml:mi>
<mml:mo>:</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#x2282;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> <italic>to the differential inclusion</italic> (<xref ref-type="disp-formula" rid="e2">2</xref>)<italic>, and let</italic> <inline-formula id="inf41">
<mml:math id="m49">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mo>:</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> <italic>be a locally Lipschitz function. Then,</italic>
<disp-formula id="e8">
<mml:math id="m50">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="script">L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mtext>a.e.</mml:mtext>
</mml:math>
<label>(8)</label>
</disp-formula>For a locally Lipschitz scalar function <inline-formula id="inf42">
<mml:math id="m51">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> with <inline-formula id="inf43">
<mml:math id="m52">
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#x2282;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, consider the associated set<disp-formula id="equ2">
<mml:math id="m53">
<mml:mi mathvariant="script">C</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x2223;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>,</mml:mo>
<mml:mspace width="0.28em"/>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>Now the notion of forward invariance can be linked to the concept of CBF through the following definition (<xref ref-type="other" rid="definition_1">Definitions 1,2</xref>):</p>
</statement>
</p>
<p>
<statement content-type="definition" id="definition_1">
<label>DEFINITION 1</label>
<p>[cf. (<xref ref-type="bibr" rid="B12">Glotfelter et al., 2017</xref>, Def. 4) and (<xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas, 2018</xref>, Def. 3)]. <italic>A continuous scalar function</italic> <inline-formula id="inf44">
<mml:math id="m54">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> <italic>where</italic> <inline-formula id="inf45">
<mml:math id="m55">
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#x2282;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> <italic>is a candidate nonsmooth</italic> <italic>CBF</italic> <italic>if for all</italic> <inline-formula id="inf46">
<mml:math id="m56">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
</mml:math>
</inline-formula>
<italic>, there exists a Carath&#xe9;odory solution to</italic> (<xref ref-type="disp-formula" rid="e2">2</xref>) <italic>such that</italic> <inline-formula id="inf47">
<mml:math id="m57">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
</mml:math>
</inline-formula> <italic>for all</italic> <italic>t</italic> &#x2208; [0, <italic>t</italic>&#x2032;]<italic>.</italic>
</p>
</statement>
</p>
<p>
<statement content-type="definition" id="definition_2">
<label>DEFINITION 2</label>
<p>[cf. (<xref ref-type="bibr" rid="B12">Glotfelter et al., 2017</xref>, Def. 3) and (<xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas, 2018</xref>, Def. 2)]. <italic>A continuous candidate nonsmooth</italic> <italic>CBF</italic> <inline-formula id="inf48">
<mml:math id="m58">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> <italic>where</italic> <inline-formula id="inf49">
<mml:math id="m59">
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#x2282;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> <italic>is a valid nonsmooth</italic> <italic>CBF</italic> <italic>for</italic> (<xref ref-type="disp-formula" rid="e2">2</xref>)<italic>, if for any</italic> <inline-formula id="inf50">
<mml:math id="m60">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
</mml:math>
</inline-formula> <italic>there exists a class-</italic>
<inline-formula id="inf51">
<mml:math id="m61">
<mml:mi mathvariant="script">KL</mml:mi>
</mml:math>
</inline-formula> <italic>function</italic> <inline-formula id="inf52">
<mml:math id="m62">
<mml:mi>&#x3b2;</mml:mi>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> <italic>such that</italic>
<disp-formula id="equ3">
<mml:math id="m63">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mi>&#x3b2;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
</disp-formula>
<italic>for all Carath&#xe9;odory solutions of</italic> (<xref ref-type="disp-formula" rid="e2">2</xref>) <italic>starting from</italic> <italic>x</italic> (0)<italic>.</italic>
</p>
<p>The following theorem gives a useful equivalent condition for a valid CBF</p>
</statement>
</p>
<p>
<statement content-type="theorem" id="theorem_2">
<label>THEOREM 2</label>
<p>[cf. (<xref ref-type="bibr" rid="B12">Glotfelter et al., 2017</xref>, Thm. 2)]. <italic>Let</italic> <inline-formula id="inf53">
<mml:math id="m64">
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#x2282;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> <italic>be an open and connected set, and</italic> <inline-formula id="inf54">
<mml:math id="m65">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> <italic>a locally Lipschitz candidate nonsmooth</italic> <italic>CBF</italic> <italic>If there exists a locally Lipschitz extended class-</italic>
<inline-formula id="inf55">
<mml:math id="m66">
<mml:mi mathvariant="script">K</mml:mi>
</mml:math>
</inline-formula> <italic>function</italic> <inline-formula id="inf56">
<mml:math id="m67">
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> <italic>such that</italic>
<disp-formula id="e9">
<mml:math id="m68">
<mml:mi>min</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="script">L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="" close=")">
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mo>&#x2200;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(9)</label>
</disp-formula>
<italic>then</italic> <inline-formula id="inf57">
<mml:math id="m69">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> <italic>is a valid non-smooth</italic> <italic>CBF</italic> <italic>for</italic> (<xref ref-type="disp-formula" rid="e2">2</xref>)<italic>.</italic>
</p>
<p>In the special case where the differential inclusion (<xref ref-type="disp-formula" rid="e2">2</xref>) reduces to a singleton and <italic>g</italic>(<italic>x</italic>)<italic>g</italic>(<italic>x</italic>)<sup>&#x22ba;</sup> is positive definite (so that a simple feedback transformation can bring (<xref ref-type="disp-formula" rid="e1">1</xref>) to the form <inline-formula id="inf58">
<mml:math id="m70">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>u</mml:mi>
</mml:math>
</inline-formula>), a straightforward application of <xref ref-type="statement" rid="theorem_2">Theorem 2</xref> leads to <xref ref-type="other" rid="c00ollary_1">Corollary 1</xref>
</p>
</statement>
</p>
<p>
<statement content-type="corollary" id="c00ollary_1">
<label>COROLLARY 1</label>
<p>
<italic>A candidate non-smooth</italic> <italic>CBF</italic> <inline-formula id="inf59">
<mml:math id="m71">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <italic>is a valid non-smooth</italic> <italic>CBF</italic> <italic>for</italic> (<xref ref-type="disp-formula" rid="e1">1</xref>) <italic>if there exists a locally Lipschitz extended class-</italic>
<inline-formula id="inf60">
<mml:math id="m72">
<mml:mi mathvariant="script">K</mml:mi>
</mml:math>
</inline-formula> <italic>function</italic> <inline-formula id="inf61">
<mml:math id="m73">
<mml:mi>&#x3b1;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> <italic>such that</italic>
<disp-formula id="equ4">
<mml:math id="m74">
<mml:munder>
<mml:mrow>
<mml:mi>sup</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">U</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>In other words, for a valid non-smooth CBF there is always a control input <italic>u</italic> to make the set <inline-formula id="inf62">
<mml:math id="m75">
<mml:mi mathvariant="script">C</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> forward invariant.</p>
</statement>
</p>
</sec>
</sec>
<sec id="s3">
<title>3 Problem Statement</title>
<p>This paper considers the following fragment of STL<disp-formula id="e10a">
<mml:math id="m76">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>&#x3c8;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mo>:</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mi mathvariant="normal">r</mml:mi>
<mml:mi mathvariant="normal">u</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:mi>&#x3bc;</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2227;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2228;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(10a)</label>
</disp-formula>
<disp-formula id="e10b">
<mml:math id="m77">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>&#x3c6;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mo>:</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2662;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:mi>&#x3c8;</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mo>&#x25a1;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:mi>&#x3c8;</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2227;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2228;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(10b)</label>
</disp-formula>where formulae <italic>&#x3c8;</italic>
<sub>1</sub> and <italic>&#x3c8;</italic>
<sub>2</sub> are of the type defined in (<xref ref-type="disp-formula" rid="e10a">10a</xref>), and formulae <italic>&#x3c6;</italic>
<sub>1</sub>, <italic>&#x3c6;</italic>
<sub>2</sub> are of the type defined in (<xref ref-type="disp-formula" rid="e10b">10b</xref>). This is a larger class of STL compared to <xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref> as it allows for disjunctions in the predicates or the temporal operators.</p>
<p>We make similar assumptions (<xref ref-type="other" rid="assumption_1">Assumptions 1,2</xref>) on the trajectories and the nature of the term <italic>g</italic>(<italic>x</italic>) in (<xref ref-type="disp-formula" rid="e1">1</xref>):</p>
<p>
<statement content-type="assumption" id="assumption_1">
<label>ASSUMPTION 1</label>
<p>(<xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref>). <italic>For an</italic> <italic>STL</italic> <italic>formula</italic> <italic>&#x3c6;</italic> <italic>as defined by</italic> (<xref ref-type="disp-formula" rid="e10b">10b</xref>)<italic>, there exists a constant</italic> <italic>C</italic> &#x2265; 0 <italic>such that</italic> (<italic>x</italic>, 0)&#x22a7;<italic>&#x3c6;</italic> &#x21d2; &#x2016;<italic>x</italic>(<italic>t</italic>)&#x2016; &#x2264; <italic>C &#x2200; t</italic> &#x2265; 0<italic>.</italic>
</p>
<p>In other words, satisfaction of formula <italic>&#x3c6;</italic> guarantees a bounded trajectory.</p>
</statement>
</p>
<p>
<statement content-type="assumption" id="assumption_2">
<label>ASSUMPTION 2</label>
<p>[<xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref>]. <italic>The vector function</italic> <italic>g</italic>(<italic>x</italic>) <italic>in</italic> (<xref ref-type="disp-formula" rid="e1">1</xref>) <italic>is such that</italic> <italic>g</italic>(<italic>x</italic>)<italic>g</italic>(<italic>x</italic>)<sup>&#x22ba;</sup> <italic>is positive definite for all</italic> <inline-formula id="inf63">
<mml:math id="m78">
<mml:mi>x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
</mml:math>
</inline-formula>
<italic>.</italic>
</p>
<p>Now, the problem under consideration of this paper can be stated as <xref ref-type="other" rid="problem_1">Problem 1</xref>
</p>
</statement>
</p>
<p>
<statement content-type="problem" id="problem_1">
<label>PROBLEM 1</label>
<p>
<italic>Find an input control law</italic> <italic>u</italic>(<italic>x</italic>, <italic>t</italic>) <italic>that guarantees the solution(s)</italic> <inline-formula id="inf64">
<mml:math id="m79">
<mml:mi>x</mml:mi>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> <italic>of</italic> (<xref ref-type="disp-formula" rid="e2">2</xref>) <italic>starting from</italic> <italic>x</italic>
<sub>0</sub> &#x3d; <italic>x</italic>(0) <italic>be such that</italic> (<italic>x</italic>, 0)&#x22a7;<italic>&#x3c6;</italic>
<italic>.</italic>
</p>
</statement>
</p>
</sec>
<sec id="s4">
<title>4 Technical Approach</title>
<p>This section introduces a time-varying and nonsmooth CBF that is constructed following the original principles of navigation functions set forth by <xref ref-type="bibr" rid="B29">Rimon and Koditschek (1992)</xref>. The reported construction leverages the navigation function properties of the CBF to yield a direct method for obtaining the control law <italic>u</italic> in (<xref ref-type="disp-formula" rid="e2">2</xref>) that is guaranteed to satisfy the desired STL specification.</p>
<sec id="s4-1">
<title>4.1 Navigation Functions as Control Barrier Functions</title>
<p>This section borrows primarily from <xref ref-type="bibr" rid="B31">Sun and Tanner (2015)</xref>, based on the foundation of <italic>sphere world</italic> navigation functions of <xref ref-type="bibr" rid="B29">Rimon and Koditschek (1992)</xref>, to construct a time-varying CBF with navigation function properties. While <xref ref-type="bibr" rid="B31">Sun and Tanner (2015)</xref> allow for time-varying destination configurations, and <xref ref-type="bibr" rid="B8">Chen et al. (2020)</xref> consider time-varying obstacle locations, here the construction of the navigation function component of the CBF is itself time-invariant, just as in the original methodology (<xref ref-type="bibr" rid="B29">Rimon and Koditschek, 1992</xref>), although time-varying extensions appear plausible (<xref ref-type="bibr" rid="B31">Sun and Tanner, 2015</xref>; <xref ref-type="bibr" rid="B8">Chen et al., 2020</xref>).</p>
<p>An STL specification consists of logical predicates <italic>&#x3bc;</italic> as in (<xref ref-type="disp-formula" rid="e3">3</xref>) that can be interpreted as different regions of interest in the state space of the dynamical system at hand, which need to be visited or avoided at particular time periods. Working in a sphere world, all regions of interest (those that a robot needs to approach or those it needs to avoid) are assumed to have spherical shapes. This assumption does not limit the generality of the approach since both <xref ref-type="bibr" rid="B29">Rimon and Koditschek (1992)</xref> for the time-invariant case, as well as <xref ref-type="bibr" rid="B18">Li and Tanner (2018)</xref> for the case of time-varying destinations, show that diffeomorphic transformations can extend navigation function properties from sphere to (forests of) star worlds.</p>
<p>The key feature of the construction of <xref ref-type="bibr" rid="B31">Sun and Tanner (2015)</xref> that is adopted here is the non-point destination. Specifically, instead of the target of navigation being the convergence to a single point, <xref ref-type="bibr" rid="B31">Sun and Tanner (2015)</xref> allow for a destination <italic>manifold</italic> in the shape of a spherical shell, which is the zero level set of the function<disp-formula id="e11">
<mml:math id="m80">
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mspace width="5.69046pt"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(11)</label>
</disp-formula>which serves as the predicate function encoding logical predicate <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>. In the above, one distinguishes the predicate function&#x2019;s center <inline-formula id="inf65">
<mml:math id="m81">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and its radius <italic>r</italic>
<sub>
<italic>i</italic>
</sub>. Consistent with STL semantics (<xref ref-type="disp-formula" rid="e3">3</xref>), <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub> is true when <italic>h</italic>
<sub>
<italic>i</italic>
</sub>(<italic>x</italic>) &#x2264; 0 and false otherwise. Regions of the robot&#x2019;s workspace that always need to be avoided can be encoded as (static) obstacles and incorporated all together in a specific functional representation inspired by <xref ref-type="bibr" rid="B29">Rimon and Koditschek (1992)</xref>. Specifically, assuming that the implicit representation of each one of those isolated (obstacle) regions is defined as a function<disp-formula id="equ5">
<mml:math id="m82">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>ob</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>ob</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mspace width="2em"/>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>M</mml:mi>
<mml:mspace width="5.69046pt"/>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>where <inline-formula id="inf66">
<mml:math id="m83">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>ob</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf67">
<mml:math id="m84">
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mtext>ob</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> denote the center and radius of each undesirable spherical (obstacle) region. Our understanding is that obstacles are being avoided as long as <italic>&#x3b6;</italic>
<sub>
<italic>i</italic>
</sub>(<italic>x</italic>) &#x3e; 0. Similarly, the boundary of the workspace itself is captured by the function<disp-formula id="equ6">
<mml:math id="m85">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ws</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>ws</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mspace width="5.69046pt"/>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>where <italic>x</italic>
<sub>ws</sub> and <italic>r</italic>
<sub>ws</sub> stand for the center and radius of the workspace, respectively. Given these constructs and the fact that all obstacles are assumed to be disjoint, the combined obstacle representation can take the form<disp-formula id="equ7">
<mml:math id="m86">
<mml:mi>&#x3b6;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x220f;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>and with that, a navigation function <italic>&#x3d5;</italic>
<sub>
<italic>i</italic>
</sub>(<italic>x</italic>) can be explicitly constructed for predicate <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub> as<disp-formula id="e12">
<mml:math id="m87">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3b6;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:mi>&#x3ba;</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mspace width="5.69046pt"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(12)</label>
</disp-formula>with <italic>&#x3ba;</italic> &#x3d; 2<italic>n</italic> for <inline-formula id="inf68">
<mml:math id="m88">
<mml:mi>n</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">N</mml:mi>
</mml:math>
</inline-formula> in the role of a positive tuning constant which be set sufficiently high to guarantee navigation function properties for (<xref ref-type="disp-formula" rid="e12">12</xref>). Note that for all <italic>x</italic> that do not satisfy <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>, it is 0 &#x3c; <italic>&#x3d5;</italic>
<sub>
<italic>i</italic>
</sub>(<italic>x</italic>) &#x2264; 1, and &#x2207;<italic>&#x3d5;</italic>(<italic>x</italic>) is non-zero almost everywhere (with the exception of a finite number <italic>M</italic> of isolated critical points).</p>
<p>The following examples illustrate how (<xref ref-type="disp-formula" rid="e12">12</xref>) can be used to construct a time-varying nonsmooth CBF <inline-formula id="inf69">
<mml:math id="m89">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> that can encode a <italic>combination</italic> of predicates <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>.</p>
<p>
<statement content-type="example" id="example_1">
<label>EXAMPLE 1</label>
<p>
<italic>Consider the</italic> <italic>STL</italic> <italic>formula</italic> <italic>&#x3c6;</italic> &#x3d; &#x2662;<sub>[<italic>a</italic>,<italic>b</italic>]</sub>
<italic>&#x3bc;</italic>
<sub>1</sub>
<italic>. If</italic> <italic>&#x3d5;</italic>
<sub>1</sub>(<italic>x</italic>) <italic>is defined as in</italic> (<xref ref-type="disp-formula" rid="e12">12</xref>) <italic>with</italic> <italic>h</italic>
<sub>
<italic>i</italic>
</sub>(<italic>x</italic>) <italic>being the predicate function for</italic> <italic>&#x3bc;</italic>
<sub>1</sub>
<italic>, then a</italic> <italic>CBF</italic> <italic>that captures</italic> <italic>&#x3c6;</italic> <italic>as a specification can be constructed in the form</italic> <inline-formula id="inf70">
<mml:math id="m90">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
<italic>, where</italic> <inline-formula id="inf71">
<mml:math id="m91">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <italic>is a nondecreasing function satisfying</italic> <italic>c</italic>
<sub>1</sub>(0) &#x3d; 0 <italic>and</italic> <italic>c</italic>
<sub>1</sub>(<italic>t</italic>&#x2032;) &#x3d; 1 <italic>for some</italic> <italic>t</italic>&#x2032; &#x2208; [<italic>a</italic>, <italic>b</italic>]<italic>. Then for</italic> <italic>c</italic>
<sub>1</sub>(<italic>t</italic>&#x2032;) &#x3d; 1<italic>,</italic> <inline-formula id="inf72">
<mml:math id="m92">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula> <italic>when</italic> <inline-formula id="inf73">
<mml:math id="m93">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula>
<italic>, which in turn happens only when</italic> <inline-formula id="inf74">
<mml:math id="m94">
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula>
<italic>, implying that</italic> <italic>&#x3bc;</italic>
<sub>1</sub> <italic>is true.</italic>
</p>
</statement>
</p>
<p>
<statement content-type="example" id="example_2">
<label>EXAMPLE 2</label>
<p>
<italic>Consider the</italic> <italic>STL</italic> <italic>formula</italic> <italic>&#x3c6;</italic> &#x3d; <italic>&#x3c6;</italic>
<sub>1</sub> &#x2227; <italic>&#x3c6;</italic>
<sub>2</sub> <italic>where</italic> <inline-formula id="inf75">
<mml:math id="m95">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2662;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> <italic>and</italic> <inline-formula id="inf76">
<mml:math id="m96">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo>&#x25a1;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>
<italic>. Start off by constructing a separate</italic> <italic>CBF</italic> <italic>for each of the two component formulae:</italic> <inline-formula id="inf77">
<mml:math id="m97">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <italic>for</italic> <italic>&#x3c6;</italic>
<sub>1</sub>
<italic>, exactly as in</italic> <xref ref-type="statement" rid="example_1">
<italic>Example</italic> 1</xref>
<italic>, and</italic> <inline-formula id="inf78">
<mml:math id="m98">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <italic>for</italic> <italic>&#x3c6;</italic>
<sub>2</sub>
<italic>, where</italic> <inline-formula id="inf79">
<mml:math id="m99">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <italic>is a nondecreasing function with</italic> <italic>c</italic>
<sub>2</sub>(0) &#x3d; 0 <italic>and</italic> <italic>c</italic>
<sub>2</sub>(<italic>t</italic>&#x2032;) &#x3d; 1 <italic>for all</italic> <italic>t</italic>&#x2032; &#x2208; [<italic>a</italic>
<sub>2</sub>, <italic>b</italic>
<sub>2</sub>]<italic>.</italic>
<xref ref-type="fn" rid="fn1">
<sup>1</sup>
</xref> <italic>The</italic> <italic>CBF</italic> <italic>that expresses</italic> <italic>&#x3c6;</italic> <italic>can now be formulated as a pointwise minimum of</italic> <inline-formula id="inf80">
<mml:math id="m100">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> <italic>and</italic> <inline-formula id="inf81">
<mml:math id="m101">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>
<italic>, i.e.,</italic> <inline-formula id="inf82">
<mml:math id="m102">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>1</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>2</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
<italic>.</italic>
</p>
</statement>
</p>
<p>
<statement content-type="example" id="example_3">
<label>EXAMPLE 3</label>
<p>
<italic>Consider the</italic> <italic>STL</italic> <italic>formula</italic> <italic>&#x3c6;</italic> &#x3d; <italic>&#x3c6;</italic>
<sub>1</sub> &#x2228; <italic>&#x3c6;</italic>
<sub>2</sub> <italic>where</italic> <italic>&#x3c6;</italic>
<sub>1</sub> <italic>and</italic> <italic>&#x3c6;</italic>
<sub>2</sub> <italic>are as in</italic> <xref ref-type="statement" rid="example_2">
<italic>Example</italic> 2</xref>
<italic>.</italic> <italic>CBF</italic>
<italic>s</italic> <inline-formula id="inf83">
<mml:math id="m103">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <italic>and</italic> <inline-formula id="inf84">
<mml:math id="m104">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> <italic>for</italic> <italic>&#x3c6;</italic>
<sub>1</sub> <italic>and</italic> <italic>&#x3c6;</italic>
<sub>2</sub> <italic>are constructed exactly as in</italic> <xref ref-type="statement" rid="example_2">
<italic>Example</italic> 2</xref>
<italic>. However, this time the overall</italic> <italic>CBF</italic> <italic>is formulated as a pointwise maximum of</italic> <inline-formula id="inf85">
<mml:math id="m105">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> <italic>and</italic> <inline-formula id="inf86">
<mml:math id="m106">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>
<italic>, i.e.,</italic> <inline-formula id="inf87">
<mml:math id="m107">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>max</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>1</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>2</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
<italic>.</italic>
</p>
<p>The construction of the CBF based on navigation function (<xref ref-type="disp-formula" rid="e12">12</xref>) provides number of advantages compared to existing CBF-based STL motion planning methods [e.g., (<xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas, 2018</xref>)]; First note that since the navigation function can encode unsafe regions (obstacles) through <italic>&#x3b6;</italic>(<italic>x</italic>), it obviates the need for the explicit definition of additional logical predicates corresponds to such unsafe regions, thus reducing the size of the STL specification. This reduction in the size of STL is particularly useful if this method is used in conjunction with a reactive STL (event-based STL) motion planning methodology (<xref ref-type="bibr" rid="B14">Gundana and Kress-Gazit, 2021</xref>) that includes a prior higher-level automata synthesis step. Another advantage of the nonsmooth formulation is that not only paves the way for covering larger class of STL compared to those considered by <xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref>, but also eliminates the conservatism associated with under-approximation of minimum operator for the sake of smoothness (see <xref ref-type="sec" rid="s5-2">Section 5.2</xref>). Yet another advantage of control barrier navigation functions is related to a reduction of the computational load required for determining control inputs (see <xref ref-type="sec" rid="s4-2">Section 4.2</xref>).</p>
<p>Based on the idea illustrated in <xref ref-type="statement" rid="example_1">Examples 1</xref>, <xref ref-type="statement" rid="example_2">2</xref> and <xref ref-type="statement" rid="example_3">3</xref>, the following sections present the development of a three-step process to produce CBFs that encode general specifications in the STL fragment (<xref ref-type="disp-formula" rid="e10a">10</xref>).</p>
</statement>
</p>
<sec id="s4-1-1">
<title>4.1.1 STL Specifications With no Conjunctions and Disjunctions</title>
<p>This section describes how to construct a CBF for an STL specification that does not involve conjunctions and disjuctions of predicates and temporal operators.</p>
<p>If this STL specification in question is of the form &#x2662;<sub>[<italic>a</italic>,<italic>b</italic>]</sub>
<italic>&#x3bc;</italic>
<sub>1</sub> then the CBF can be constructed as<disp-formula id="e13">
<mml:math id="m108">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3d5;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(13)</label>
</disp-formula>where <inline-formula id="inf88">
<mml:math id="m109">
<mml:mi>c</mml:mi>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is a non-decreasing function with <italic>c</italic> (0) &#x3d; 0 and <italic>c</italic> (<italic>t</italic>&#x2032;) &#x3d; 1 for some <italic>t</italic>&#x2032; &#x2208; [<italic>a</italic>, <italic>b</italic>].</p>
<p>If the specification has the form &#x25a1;<sub>[<italic>a</italic>,<italic>b</italic>]</sub>
<italic>&#x3bc;</italic>, the CBF can have the same general form <inline-formula id="inf89">
<mml:math id="m110">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3d5;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>c</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, only now the non-decreasing function <inline-formula id="inf90">
<mml:math id="m111">
<mml:mi>c</mml:mi>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is such that <italic>c</italic> (0) &#x3d; 0 and <italic>c</italic> (<italic>t</italic>&#x2032;) &#x3d; 1 for all <italic>t</italic>&#x2032; &#x2208; [<italic>a</italic>, <italic>b</italic>].</p>
<p>The remaining case refers to specifications of the form <italic>&#x3bc;</italic>
<sub>1</sub> <italic>U</italic>
<sub>[<italic>a</italic>,<italic>b</italic>]</sub> <italic>&#x3bc;</italic>
<sub>2</sub>, for which the CBF is constructed as<disp-formula id="e14">
<mml:math id="m112">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(14)</label>
</disp-formula>Where once again <inline-formula id="inf91">
<mml:math id="m113">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> for <italic>i</italic> &#x2208; {1, 2} as in (<xref ref-type="disp-formula" rid="e13">13</xref>), with <inline-formula id="inf92">
<mml:math id="m114">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> a non-decreasing function satisfying <italic>c</italic>
<sub>2</sub> (0) &#x3d; 0 and <italic>c</italic>
<sub>2</sub> (<italic>t</italic>&#x2032;) &#x3d; 1 for some <italic>t</italic>&#x2032; &#x2208; [<italic>a</italic>, <italic>b</italic>], while <inline-formula id="inf93">
<mml:math id="m115">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is a non-decreasing function satisfying <italic>c</italic>
<sub>1</sub> (0) &#x3d; 0 and <italic>c</italic>
<sub>1</sub> (<italic>t</italic>&#x2033;) &#x3d; 1 for all <italic>t</italic>&#x2033; &#x2208; [<italic>a</italic>, <italic>t</italic>&#x2032;].</p>
</sec>
<sec id="s4-1-2">
<title>4.1.2 STL Specifications With no Conjunctions or Disjunctions Between Temporal Operators</title>
<p>This section refers to STL specifications that may have conjunctions and disjunctions involving predicates but not temporal operators. We assume that the formulae inside a temporal operator has been written in Conjunction Normal Form (CNF), i.e., <inline-formula id="inf94">
<mml:math id="m116">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2228;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2228;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2227;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2228;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2228;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2227;</mml:mo>
<mml:mo>&#x2026;</mml:mo>
</mml:math>
</inline-formula>. Without loss of generality, take two illustrative cases of predicates<disp-formula id="equ8">
<mml:math id="m117">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2228;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2227;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="1em"/>
<mml:mtext>and</mml:mtext>
<mml:mspace width="1em"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2228;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2227;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>Then if the specification has the form &#x2662;<sub>[<italic>a</italic>,<italic>b</italic>]</sub>
<italic>&#x3c8;</italic>
<sub>1</sub>, the CBF can take the form of<disp-formula id="e15">
<mml:math id="m118">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(15)</label>
</disp-formula>Where each <inline-formula id="inf95">
<mml:math id="m119">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is constructed as in (<xref ref-type="disp-formula" rid="e13">13</xref>) for <italic>i</italic> &#x2208; {1, 2, 3}, and with each <inline-formula id="inf96">
<mml:math id="m120">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> being a non-decreasing function with <italic>c</italic>
<sub>
<italic>i</italic>
</sub> (0) &#x3d; 0 and <italic>c</italic>
<sub>
<italic>i</italic>
</sub> (<italic>t</italic>&#x2032;) &#x3d; 1 for some <italic>t</italic>&#x2032; &#x2208; [<italic>a</italic>, <italic>b</italic>].</p>
<p>For specifications of the form &#x25a1;<sub>[<italic>a</italic>,<italic>b</italic>]</sub>
<italic>&#x3c8;</italic>
<sub>1</sub>, the CBF can be similarly constructed based on (<xref ref-type="disp-formula" rid="e15">15</xref>) with component CBFs as in (<xref ref-type="disp-formula" rid="e13">13</xref>), but this time each <inline-formula id="inf97">
<mml:math id="m121">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is a non-decreasing function with <italic>c</italic>
<sub>
<italic>i</italic>
</sub> (0) &#x3d; 0 and <italic>c</italic>
<sub>
<italic>i</italic>
</sub> (<italic>t</italic>&#x2032;) &#x3d; 1 for all <italic>t</italic>&#x2032; &#x2208; [<italic>a</italic>, <italic>b</italic>].</p>
<p>Finally, for specifications involving the Until operator and of the form <italic>&#x3c8;</italic>
<sub>1</sub> <italic>U</italic>
<sub>[<italic>a</italic>,<italic>b</italic>]</sub> <italic>&#x3c8;</italic>
<sub>2</sub>, the CBF can be formed as<disp-formula id="equ9">
<mml:math id="m122">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>where all component CBFs <inline-formula id="inf98">
<mml:math id="m123">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are constructed using the basic template (<xref ref-type="disp-formula" rid="e13">13</xref>), but for <inline-formula id="inf99">
<mml:math id="m124">
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mn>4,5,6</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are non-decreasing functions satisfying <italic>c</italic>
<sub>
<italic>i</italic>
</sub> (0) &#x3d; 0 and <italic>c</italic>
<sub>
<italic>i</italic>
</sub> (<italic>t</italic>&#x2032;) &#x3d; 1 for some <italic>t</italic>&#x2032; &#x2208; [<italic>a</italic>, <italic>b</italic>], while for <italic>j</italic> &#x2208; {1, 2, 3}, the functions <inline-formula id="inf100">
<mml:math id="m125">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2192;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mn>0,1</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are also non-decreasing but with <italic>c</italic>
<sub>
<italic>j</italic>
</sub> (0) &#x3d; 0 and <italic>c</italic>
<sub>
<italic>j</italic>
</sub> (<italic>t</italic>&#x2033;) &#x3d; 1 for all <italic>t</italic>&#x2033; &#x2208; [<italic>a</italic>, <italic>t</italic>&#x2032;].</p>
</sec>
<sec id="s4-1-3">
<title>4.1.3 General Case of STL Specifications</title>
<p>Combining the constructions of <xref ref-type="sec" rid="s4-1-1">Sections 4.1.1</xref>, <xref ref-type="sec" rid="s4-1-2">4.1.2</xref>, one is now in position to form CBF for more general STL specifications in the fragment defined in (<xref ref-type="disp-formula" rid="e10a">10</xref>). Again, we assume that the STL specification is written in CNF with respect to the temporal operators. As an illustrative example, consider the case of <inline-formula id="inf101">
<mml:math id="m126">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2662;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2228;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo>&#x25a1;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2227;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>. Then the CBF can take the form of (<xref ref-type="disp-formula" rid="e15">15</xref>) where <inline-formula id="inf102">
<mml:math id="m127">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf103">
<mml:math id="m128">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf104">
<mml:math id="m129">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are each associated with one of the three temporal operators appearing in the general formula, constructed based on the designs of <xref ref-type="sec" rid="s4-1-1">Section 4.1.1</xref>, and then combined according to the rules outlined in <xref ref-type="sec" rid="s4-1-2">Section 4.1.2</xref>.</p>
<p>In addition to the ability to cover STL specifications including disjunctions, the construction process outlined in <xref ref-type="sec" rid="s4-1-1">Sections 4.1.1</xref>&#x2013;<xref ref-type="sec" rid="s4-1-3">4.1.3</xref> generally yields less conservative CBFs compared to the method of <xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref>, because the latter introduces some conservativeness through its exponential summation to combine the component CBFs (see <xref ref-type="sec" rid="s5-2">Section 5.2</xref>); the perceived benefit of this latter construction is that it preserves the differentiability properties of the CBF and circumvents the need for nonsmooth analysis. What is more, the computation process described here can be further accelerated by adopting the deletion mechanism of <xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref>, whereby a component CBF <inline-formula id="inf105">
<mml:math id="m130">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> drops from the composite construction <inline-formula id="inf106">
<mml:math id="m131">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> whenever time <italic>t</italic> exceeds the upper limit of the time interval of its corresponding temporal operator, say [<italic>a</italic>
<sub>
<italic>i</italic>
</sub>, <italic>b</italic>
<sub>
<italic>i</italic>
</sub>], i.e., <italic>t</italic> &#x3e; <italic>b</italic>
<sub>
<italic>i</italic>
</sub>. For the Always and Until temporal operators, the associated barrier function is droped whenever its value become negative in the time interval of the operator. The section that follows highlights additional benefit of the nonsmooth construction of CBFs using navigation functions: 1) the navigation function properties of component barrier functions <inline-formula id="inf107">
<mml:math id="m132">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, i.e., that the associated (negated) gradient system is guaranteed to converge to the zero level set of the predicate function, is inherited through the composition operations, and 2) the control law that realizes the STL system specification can be derived in a straightforward manner, usually obviating the need for the repeated solution of a QP problem.</p>
</sec>
</sec>
<sec id="s4-2">
<title>4.2 Efficient Determination of the Control Input</title>
<p>
<xref ref-type="sec" rid="s4-1">Section 4.1</xref> primarily illustrated how the use of navigation functions and pointwise minimum functions can allow the construction of CBFs that tightly encode STL specifications in the fragment defined by (<xref ref-type="disp-formula" rid="e10a">10</xref>). This section focuses on demonstrating that control design can also be facilitated due to the navigation function properties afforded by the proposed component CBFs.</p>
<p>Without loss of generality, let <italic>p</italic> be the total number of predicates and <italic>q</italic> be the total number of temporal operators appearing in the STL specification. For <italic>j</italic> &#x2208; {1, &#x2026; , <italic>q</italic>}, and with the formulae inside the temporal operators written in CNF (<xref ref-type="sec" rid="s4-1-3">Section 4.1.3</xref>), then temporal operator indexed <italic>k</italic> will be modelled by a CBF of the form<disp-formula id="e16">
<mml:math id="m133">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:math>
<label>(16)</label>
</disp-formula>For some distinct <italic>k</italic>
<sub>
<italic>j</italic>
</sub>, <italic>l</italic>
<sub>
<italic>j</italic>
</sub>, <italic>m</italic>
<sub>
<italic>j</italic>
</sub>, <italic>n</italic>
<sub>
<italic>j</italic>
</sub> &#x2208; {1, &#x2026; , <italic>p</italic>}. Then the temporal operators of the STL formula can themselves be arranged in CNF (<xref ref-type="sec" rid="s4-1-2">Section 4.1.2</xref>), in which case the composite (total) CBF capturing the complete STL specification would take a similar compact form<disp-formula id="e17">
<mml:math id="m134">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>l</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>}</mml:mo>
</mml:math>
<label>(17)</label>
</disp-formula>For some other distinct <italic>k</italic>, <italic>l</italic>, <italic>m</italic>, <italic>n</italic> &#x2208; {1, &#x2026; , <italic>q</italic>}, with the understanding of each one of the <inline-formula id="inf108">
<mml:math id="m135">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> component CBFs above is of the form (<xref ref-type="disp-formula" rid="e16">16</xref>). Note that all <inline-formula id="inf109">
<mml:math id="m136">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> with <italic>i</italic> &#x2208; {1, &#x2026; , <italic>p</italic>} are continuously differentiable functions, while all <inline-formula id="inf110">
<mml:math id="m137">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> with <italic>j</italic> &#x2208; {1, &#x2026; , <italic>q</italic>} are not, but they are still locally Lipschitz functions. In the rest of the paper we refer to those <italic>p</italic> continuously differentiable components of <inline-formula id="inf111">
<mml:math id="m138">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> as <italic>component</italic> CBFs. In view of (<xref ref-type="disp-formula" rid="e16">16</xref>), (<xref ref-type="disp-formula" rid="e17">17</xref>), define the index set of the component CBFs of the form (<xref ref-type="disp-formula" rid="e13">13</xref>) that simultaneously agree with the value of <inline-formula id="inf112">
<mml:math id="m139">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> in (<xref ref-type="disp-formula" rid="e17">17</xref>) as<disp-formula id="equ10">
<mml:math id="m140">
<mml:mi>J</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="5.69046pt"/>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
</disp-formula>Then the control input <italic>u</italic> that guarantees that <inline-formula id="inf113">
<mml:math id="m141">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula> can be computed directly using the gradient of the CBF unless <italic>x</italic> is a point where the latter non-differentiable. At such points, resorting to QP for the determination of the control input <italic>u</italic> may be unavoidable, although there are still cases where such a computationally expensive procedure can be circumvented. The following sections illustrate different options, starting with the straightforward one where <inline-formula id="inf114">
<mml:math id="m142">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> is computed away from points of nondifferentiability.</p>
<sec id="s4-2-1">
<title>4.2.1 When the CBF is Differentiable at <italic>x</italic>
</title>
<p>When the CBF is differentiable at point <italic>x</italic>, the set <italic>J</italic> is a singleton. Without loss of generality assume that at that time <italic>t</italic>, it is <italic>J</italic> (<italic>x</italic>, <italic>t</italic>) &#x3d; {1}. Then the control input <italic>u</italic> (<italic>x</italic>, <italic>t</italic>) to guarantee <inline-formula id="inf115">
<mml:math id="m143">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula> can be obtained as<disp-formula id="e18">
<mml:math id="m144">
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(18)</label>
</disp-formula>Where <italic>k</italic> should be selected such that the following condition, involving an extended class-<inline-formula id="inf116">
<mml:math id="m145">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="script">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x221e;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> function <italic>&#x3b1;</italic>, holds:<disp-formula id="e19">
<mml:math id="m146">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(19)</label>
</disp-formula>Therefore, <italic>k</italic> can be selected as the maximum between zero and the solution of the equation<disp-formula id="e20">
<mml:math id="m147">
<mml:mi>k</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.28em"/>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.28em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em"/>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(20)</label>
</disp-formula>A solution to (<xref ref-type="disp-formula" rid="e20">20</xref>) exists almost everywhere since <italic>g</italic>(<italic>x</italic>)<italic>g</italic>(<italic>x</italic>)<sup>&#x22ba;</sup> is assumed to be positive definite (by <xref ref-type="statement" rid="assumption_2">Assumption 2</xref>) and<disp-formula id="equ11">
<mml:math id="m148">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2207;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>and the latter is <italic>guaranteed</italic> to be non-zero almost everywhere away from the level set of <italic>h</italic>
<sub>
<italic>j</italic>
</sub> (with the exception of a finite number of isolated points). Note that negative solutions for <italic>k</italic> can be safely discarded, since the trivial choice of <italic>k</italic> &#x3d; 0 would still satisfy (<xref ref-type="disp-formula" rid="e19">19</xref>) and offer an admissible control law with an even smaller (than the negative <italic>k</italic>) norm. Given that in the case considered in this section, (<xref ref-type="disp-formula" rid="e5">5</xref>&#x2013;<xref ref-type="disp-formula" rid="e8">8</xref>) reduce to singletons, <inline-formula id="inf117">
<mml:math id="m149">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mspace width="0.17em"/>
<mml:mi>u</mml:mi>
</mml:math>
</inline-formula>, and in view of <xref ref-type="statement" rid="theorem_2">Theorem 2</xref>, the choice of <italic>u</italic> (<italic>x</italic>, <italic>t</italic>) given by (<xref ref-type="disp-formula" rid="e18">18</xref>) guarantees that <inline-formula id="inf118">
<mml:math id="m150">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s4-2-2">
<title>4.2.2 When the CBF is not Differentiable at <italic>x</italic>
</title>
<p>At configurations <italic>x</italic> where a CBF is not differentiable, one of the following two cases can occur: precisely two component CBFs agree with the value of <inline-formula id="inf119">
<mml:math id="m151">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> at the same <italic>x</italic>, or more than two components CBFs the value of <inline-formula id="inf120">
<mml:math id="m152">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> simultaneously.</p>
<p>When just two component CBF agree with the value of <inline-formula id="inf121">
<mml:math id="m153">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula>, then without loss of generality assume that these are <inline-formula id="inf122">
<mml:math id="m154">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf123">
<mml:math id="m155">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> in which case <italic>J</italic> (<italic>x</italic>, <italic>t</italic>) &#x3d; {1, 2}. Then, from (<xref ref-type="disp-formula" rid="e5">5</xref>&#x2013;<xref ref-type="disp-formula" rid="e8">8</xref>), and <xref ref-type="statement" rid="theorem_2">Theorem 2</xref> it follows that for all <inline-formula id="inf124">
<mml:math id="m156">
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2b;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> such that <italic>w</italic>
<sub>1</sub> &#x2b; <italic>w</italic>
<sub>2</sub> &#x3d; 1, the control input <italic>u</italic> (<italic>x</italic>, <italic>t</italic>) needs to satisfy<disp-formula id="e21">
<mml:math id="m157">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(21)</label>
</disp-formula>For (<xref ref-type="disp-formula" rid="e21">21</xref>) to hold, it is sufficient that the following two inequalities are simultaneously satisfied:<disp-formula id="e22">
<mml:math id="m158">
<mml:mfenced open="" close="}">
<mml:mrow>
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(22)</label>
</disp-formula>Assume now a control law of the form<disp-formula id="e23">
<mml:math id="m159">
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em"/>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mspace width="0.5em"/>
<mml:mo>,</mml:mo>
</mml:math>
<label>(23)</label>
</disp-formula>Where the control gains <italic>k</italic>
<sub>1</sub> and <italic>k</italic>
<sub>2</sub> are determined as the maximum between zero and the solutions to the following system of algebraic equations:<disp-formula id="e24">
<mml:math id="m160">
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>k</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>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>f</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>f</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(24)</label>
</disp-formula>The above system of equations always has a unique solution except when <inline-formula id="inf125">
<mml:math id="m161">
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> and <inline-formula id="inf126">
<mml:math id="m162">
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> are linearly dependent. In the case that <inline-formula id="inf127">
<mml:math id="m163">
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> with <italic>&#x3b3;</italic> &#x2265; 0, one can still substitute <italic>k</italic>
<sub>2</sub> &#x3d; 0 in (<xref ref-type="disp-formula" rid="e23">23</xref>), plug in (<xref ref-type="disp-formula" rid="e22">22</xref>) (with equality instead of inequality), and solve for <italic>k</italic>
<sub>1</sub> picking the largest possible value for it. In the case<xref ref-type="fn" rid="fn2">
<sup>2</sup>
</xref> where <inline-formula id="inf128">
<mml:math id="m164">
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b3;</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mi>g</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>, one may ultimately resort to solving the QP [cf. (<xref ref-type="bibr" rid="B12">Glotfelter et al., 2017</xref>)]:<disp-formula id="e25">
<mml:math id="m165">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>min</mml:mi>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mspace width="2em"/>
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mi mathvariant="normal">u</mml:mi>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">h</mml:mi>
<mml:mspace width="3.3333em"/>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mi mathvariant="normal">h</mml:mi>
<mml:mi mathvariant="normal">a</mml:mi>
<mml:mi mathvariant="normal">t</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="5.69046pt"/>
<mml:mo>,</mml:mo>
<mml:mspace width="2em"/>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>J</mml:mi>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(25)</label>
</disp-formula>Note that the solution to the above QP coincides with the input derived from (<xref ref-type="disp-formula" rid="e5">5</xref>&#x2013;<xref ref-type="disp-formula" rid="e8">8</xref>) and <xref ref-type="statement" rid="theorem_2">Theorem 2</xref>.</p>
<p>The case when <italic>J</italic> contains two members does not generalize to instances where more than two component CBFs agree with the value of <inline-formula id="inf129">
<mml:math id="m166">
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:math>
</inline-formula> simultaneously. A counter example can be constructed for <inline-formula id="inf130">
<mml:math id="m167">
<mml:mi>x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> and <italic>J</italic> (<italic>x</italic>, <italic>t</italic>) &#x3d; {1, 2, 3}, in which case the algebraic system of the form (<xref ref-type="disp-formula" rid="e24">24</xref>) (but now with three unknowns <italic>k</italic>
<sub>1</sub>, <italic>k</italic>
<sub>2</sub>, and <italic>k</italic>
<sub>3</sub>) can be shown to either have infinitely many, or no solutions at all. In such rare cases (see <xref ref-type="sec" rid="s5-1">Section 5.1</xref>), one is still forced to solve (<xref ref-type="disp-formula" rid="e25">25</xref>).</p>
<p>Note that (<xref ref-type="disp-formula" rid="e19">19</xref>), (<xref ref-type="disp-formula" rid="e22">22</xref>) and the optimization constraint in (<xref ref-type="disp-formula" rid="e25">25</xref>) are all equivalent versions of (<xref ref-type="disp-formula" rid="e9">9</xref>) for the cases when <italic>J</italic> &#x3d; {1}, <italic>J</italic> &#x3d; {1, 2} and general form of <italic>J</italic>, respectively. According to <xref ref-type="statement" rid="theorem_2">Theorem 2</xref>, then the barrier function will be valid and consequently by <xref ref-type="statement" rid="definition_2">Definition 2</xref>, it means that if the system starts where <inline-formula id="inf131">
<mml:math id="m168">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula> it will always remain in regions that <inline-formula id="inf132">
<mml:math id="m169">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula> for all control inputs as (<xref ref-type="disp-formula" rid="e18">18</xref>), (<xref ref-type="disp-formula" rid="e23">23</xref>) or (<xref ref-type="disp-formula" rid="e25">25</xref>).</p>
<p>Note that the existing closed-form solutions to the CBF-based QP only apply to time-invariant safe sets (<xref ref-type="bibr" rid="B2">Ames et al., 2016</xref>). This time-invariance is not conducive to STL planning, that often requires that safe sets to change over time. This is why the existing CBF-based STL planning methods (<xref ref-type="bibr" rid="B12">Glotfelter et al., 2017</xref>; <xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas, 2018</xref>) discretize time and employ QP iteratively in the control loop with an additional assumption [Assumption 3 in <xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref>] on the barrier function to explicitly accommodate safe sets that shrink over time. In contrast, and excluding the singular cases that are dealt by (<xref ref-type="disp-formula" rid="e25">25</xref>), the general process for determining the CBF-based control law outlined above, provides computational benefits because it obviates (<xref ref-type="disp-formula" rid="e25">25</xref>) in all but a very small subset of time steps where the CBF is not differentiable (see <xref ref-type="sec" rid="s5-1">Section 5.1</xref>).</p>
<p>The following proposition (<xref ref-type="other" rid="proposition_1">Proposition 1</xref>) states that the control law designs of (<xref ref-type="disp-formula" rid="e18">18</xref>) and (<xref ref-type="disp-formula" rid="e23">23</xref>) are in fact the minimum-norm input that satisfied the required conditions (<xref ref-type="disp-formula" rid="e19">19</xref>) or (<xref ref-type="disp-formula" rid="e22">22</xref>), and thus coincide with the solution of (<xref ref-type="disp-formula" rid="e25">25</xref>). Consequently, when the solutions given by (<xref ref-type="disp-formula" rid="e18">18</xref>) or (<xref ref-type="disp-formula" rid="e23">23</xref>) fail to satisfy an actuation bound, this in fact means that the problem is infeasible in this CBFs framework, given the actuation constraints.</p>
<p>
<statement content-type="proposition" id="proposition_1">
<label>PROPOSITION 1</label>
<p>
<italic>The control laws</italic> (<xref ref-type="disp-formula" rid="e18">18</xref>) <italic>and</italic> (<xref ref-type="disp-formula" rid="e23">23</xref>) <italic>give the minimum-norm inputs that satisfy</italic> (<xref ref-type="disp-formula" rid="e19">19</xref>) <italic>and</italic> (<xref ref-type="disp-formula" rid="e22">22</xref>)<italic>, respectively.</italic>
</p>
</statement>
</p>
<p>
<statement content-type="proof" id="proof">
<label>PROOF</label>
<p>We prove the claim for (<xref ref-type="disp-formula" rid="e18">18</xref>); the process for (<xref ref-type="disp-formula" rid="e23">23</xref>) is a mirror image. Let <italic>u</italic>&#x2a; be the minimum-norm control input that satisfies (<xref ref-type="disp-formula" rid="e19">19</xref>). By contradiction: assume that <italic>u</italic> of (<xref ref-type="disp-formula" rid="e18">18</xref>) is such that &#x2016;<italic>u</italic>&#x2016; &#x3e; &#x2016;<italic>u</italic>&#x2a;&#x2016;. Then <italic>both</italic> the following conditions should be satisfied:<disp-formula id="e26">
<mml:math id="m170">
<mml:mfenced open="" close="}">
<mml:mrow>
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mi>g</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mi>u</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mi>f</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em"/>
<mml:mi>g</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:msup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mi>f</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(26)</label>
</disp-formula>The first equation is the consequence of choosing coefficient <italic>k</italic> according to (<xref ref-type="disp-formula" rid="e20">20</xref>). Given now that <italic>u</italic> is by construction aligned to the vector <inline-formula id="inf133">
<mml:math id="m171">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, and since &#x2016;<italic>u</italic>&#x2016; &#x3e; &#x2016;<italic>u</italic>&#x2a;&#x2016;, the inner product <inline-formula id="inf134">
<mml:math id="m172">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em"/>
<mml:mi>u</mml:mi>
</mml:math>
</inline-formula> must always be bigger than <inline-formula id="inf135">
<mml:math id="m173">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em"/>
<mml:msup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, i.e., <inline-formula id="inf136">
<mml:math id="m174">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em"/>
<mml:mi>u</mml:mi>
<mml:mo>&#x3e;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>g</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em"/>
<mml:msup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>. This contradicts (<xref ref-type="disp-formula" rid="e26">26</xref>).</p>
</statement>
</p>
</sec>
</sec>
</sec>
<sec id="s5">
<title>5 Simulation Results</title>
<p>This section is organized in three parts. The objective of the first part, which is <xref ref-type="sec" rid="s5-1">Section 5.1</xref>, is to demonstrate the capabilities of the reported nonsmooth CBF utilizing a relatively complex STL specification. The second part, i.e., <xref ref-type="sec" rid="s5-2">Section 5.2</xref>, is to show the less-conservatism of the offered method in comparison to <xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref>. The third part, <xref ref-type="sec" rid="s5-3">Section 5.3</xref>, is to illustrate how the reported technology can be applied in the context of robot-child interaction for pediatric motor rehabilitation purposes within an enriched environment where robots socially interact with infants, thus linking back to the motivating application that opened up <xref ref-type="sec" rid="s1">Section 1</xref>.</p>
<sec id="s5-1">
<title>5.1 Robot Motion Planning With Complex <bold>STL Specifications</bold>
</title>
<p>Consider a robot in a 2D spherical workspace of radius 1, initially positioned at a configuration with coordinates <italic>x</italic>
<sub>0</sub> &#x3d; (0.9,0.2)<sup>&#x22ba;</sup> and with dynamic <inline-formula id="inf137">
<mml:math id="m175">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>u</mml:mi>
</mml:math>
</inline-formula>. The workspace contains a static spherical obstacle of radius 0.2236, centered at (0.5,0)<sup>&#x22ba;</sup>. The obstacle region is obviously an area that the robot should always avoid.</p>
<p>In addition to avoiding obstacles, the robot has an array of mission objectives associated with different (spherical) regions of interest in its workspace. These mission objectives will naturally be expressed in STL In general, we will denote <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub> the predicate that is associated with the <italic>i</italic>th region of interest. <xref ref-type="table" rid="T1">Table 1</xref> collects the topological information of the different regions of interest for the robot.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Geometric characteristics of regions of interest for an STL motion planning task.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Predicate</th>
<th align="center">Center position coordinates</th>
<th align="center">Region radius</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>1</sub>
</td>
<td align="center">(&#x2212;0.1,0)<sup>&#x22ba;</sup>
</td>
<td align="center">0.3</td>
</tr>
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>2</sub>
</td>
<td align="center">(&#x2212;0.4,0)<sup>&#x22ba;</sup>
</td>
<td align="center">0.3</td>
</tr>
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>3</sub>
</td>
<td align="center">(&#x2212;0.6,0.2)<sup>&#x22ba;</sup>
</td>
<td align="center">0.3</td>
</tr>
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>4</sub>
</td>
<td align="center">(&#x2212;0.35,&#x2212;0.3)<sup>&#x22ba;</sup>
</td>
<td align="center">0.2</td>
</tr>
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>5</sub>
</td>
<td align="center">(&#x2212;0.4,&#x2212;0.6)<sup>&#x22ba;</sup>
</td>
<td align="center">0.2</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The STL task specification that the robot needs to satisfy is given in the following form: <disp-formula id="e27">
<mml:math id="m176">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>&#x25a1;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>3,7</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2228;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em"/>
<mml:mo>&#x2228;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2662;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>2,4</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2227;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2662;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>4,5</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2227;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2227;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>6,10</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(27)</label>
</disp-formula>Using the construction process outlined in <xref ref-type="sec" rid="s4-1-1">Sections 4.1.1</xref>&#x2013;<xref ref-type="sec" rid="s4-1-3">4.1.3</xref>, the barrier function for (<xref ref-type="disp-formula" rid="e27">27</xref>) is as follows:<disp-formula id="e28">
<mml:math id="m177">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>min</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>min</mml:mi>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(28)</label>
</disp-formula>Note that while <inline-formula id="inf138">
<mml:math id="m178">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> (or <inline-formula id="inf139">
<mml:math id="m179">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>) and <inline-formula id="inf140">
<mml:math id="m180">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> (or <inline-formula id="inf141">
<mml:math id="m181">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>) are constructed for the same region <italic>&#x3bc;</italic>
<sub>2</sub> (or <italic>&#x3bc;</italic>
<sub>3</sub>), but due to the <italic>different time intervals</italic> associated with the temporal operators that contain <italic>&#x3bc;</italic>
<sub>2</sub> (or <italic>&#x3bc;</italic>
<sub>3</sub>), they are in fact different barrier functions, as a result of using a different <italic>c</italic>(<italic>t</italic>) in their construction (see <xref ref-type="sec" rid="s4-1-1">Section 4.1.1</xref>).</p>
<p>
<xref ref-type="fig" rid="F1">Figure 1</xref> gives successive snapshots of the robot&#x2019;s path through the workspace, as it is steered by the control law computed based on the process outlined in <xref ref-type="sec" rid="s4-2">Section 4.2</xref>. The time instances associated with the snapshots showcased correspond to representative moments in relation to the temporal operators appearing in the STL specification <italic>&#x3c6;</italic>
<sub>1</sub> in (<xref ref-type="disp-formula" rid="e27">27</xref>). First of all, as a result of maximum operator, visiting (<italic>&#x3bc;</italic>
<sub>1</sub> &#x2228; <italic>&#x3bc;</italic>
<sub>2</sub>) at <italic>t</italic> &#x3d; 3 is preferred over visiting <italic>&#x3bc;</italic>
<sub>3</sub> since the former is much closer to the initial location of the robot. For the same reason, between <italic>&#x3bc;</italic>
<sub>1</sub> and <italic>&#x3bc;</italic>
<sub>2</sub>, the former is selected to be visited at time <italic>t</italic> &#x3d; 3. It should continue to remain inside the union of <italic>&#x3bc;</italic>
<sub>1</sub> and <italic>&#x3bc;</italic>
<sub>2</sub> (to ensure (<italic>&#x3bc;</italic>
<sub>1</sub> &#x2228; <italic>&#x3bc;</italic>
<sub>2</sub>) remains true) from <italic>t</italic> &#x3d; 3 until <italic>t</italic> &#x3d; 7, which is verified in the sequence of subsequent snapshots at times <italic>t</italic> &#x3d; 3, <italic>t</italic> &#x3d; 5, <italic>t</italic> &#x3d; 6, and <italic>t</italic> &#x3d; 7. Meanwhile, however, and sometime in the [4, 5] time interval, the intersection of <italic>&#x3bc;</italic>
<sub>2</sub> and <italic>&#x3bc;</italic>
<sub>3</sub> must be visited (to make (<italic>&#x3bc;</italic>
<sub>2</sub> &#x2227; <italic>&#x3bc;</italic>
<sub>3</sub>) true), a fact that is evident in the top left snapshot for <italic>t</italic> &#x3d; 5 where the robot is shown to make a maneuver to the left to reach the intersection of <italic>&#x3bc;</italic>
<sub>2</sub> and <italic>&#x3bc;</italic>
<sub>3</sub>. Then, the specification <italic>&#x3c6;</italic>
<sub>1</sub> indicates that in the [6, 10] time interval predicate <italic>&#x3bc;</italic>
<sub>4</sub> should first be satisfied before predicate <italic>&#x3bc;</italic>
<sub>5</sub> becomes true. Indeed, the robot is shown at <italic>t</italic> &#x3d; 6 to have touched the boundary of <italic>&#x3bc;</italic>
<sub>4</sub>; following that, at time instant <italic>t</italic> &#x3d; 10 the robot is shown to have touched the boundary of <italic>&#x3bc;</italic>
<sub>5</sub>. While all these maneuvers take place, the robot always stays clear of the static obstacle, marked in <xref ref-type="fig" rid="F1">Figure 1</xref> with the solid red disk.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Path of the robot as it is controlled to satisfy STL task specification <italic>&#x3c6;</italic>
<sub>1</sub> (<xref ref-type="disp-formula" rid="e27">27</xref>) with snapshots at different time instances; the time instant is indicated at the top of each subfigure.</p>
</caption>
<graphic xlink:href="frobt-09-782783-g001.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F2">Figure 2</xref> presents graphs that show the evolution of the two-dimensional control input <italic>u</italic> (<italic>x</italic>, <italic>t</italic>) that implements the STL task specification (<xref ref-type="disp-formula" rid="e27">27</xref>). As <xref ref-type="fig" rid="F2">Figure 2</xref> indicates, the control inputs experience discontinuities. Not surprisingly, several jumps occur at time instants coinciding with non-differentiable points of the barrier function.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>The control input signal (<italic>u</italic>
<sub>
<italic>x</italic>
</sub> left, <italic>u</italic>
<sub>
<italic>y</italic>
</sub> right) that realized the STL task specification <italic>&#x3c6;</italic>
<sub>1</sub> expressed in (<xref ref-type="disp-formula" rid="e27">27</xref>).</p>
</caption>
<graphic xlink:href="frobt-09-782783-g002.tif"/>
</fig>
<p>To see better the computational savings of this method compared to approaches that required the repeated solution of the QP program for the determination of the control law, the time interval [0, 10] of the STL task (<xref ref-type="disp-formula" rid="e27">27</xref>) was discretized to 1,000 time steps. Among those, only 17 featured <italic>J</italic> (<italic>x</italic>, <italic>t</italic>) with cardinality two, while there were <italic>zero</italic> instances where &#x7c;<italic>J</italic> (<italic>x</italic>, <italic>t</italic>)&#x7c; &#x3e; 2. Of those 17 time steps, which show as the non-differentiable points of the barrier function depicted in <xref ref-type="fig" rid="F3">Figure 3</xref>, none of them marked a singular case; consequently, (<xref ref-type="disp-formula" rid="e23">23</xref>) applies to them all, and (<xref ref-type="disp-formula" rid="e18">18</xref>) used everywhere else. Therefore, in handling the STL task (<xref ref-type="disp-formula" rid="e27">27</xref>), the reported method <italic>never</italic> resorted to solving a QP problem.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Control barrier function <inline-formula id="inf142">
<mml:math id="m182">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> for STL task specification <italic>&#x3c6;</italic>
<sub>1</sub> (<xref ref-type="disp-formula" rid="e27">27</xref>). The 17 non-differentiable points are corresponds to time steps with <italic>J</italic> (<italic>x</italic>, <italic>t</italic>) containing two members for which the control law (<xref ref-type="disp-formula" rid="e23">23</xref>) still works.</p>
</caption>
<graphic xlink:href="frobt-09-782783-g003.tif"/>
</fig>
</sec>
<sec id="s5-2">
<title>5.2 Evidence of Conservatism Relaxation</title>
<p>This section includes an illustrative example that demonstrates how less conservative the presented solution can be [even for the smaller STL class considered by <xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas (2018)</xref>] when satisfying STL specifications, specifically in cases where smooth formulations do not permit the satisfaction of these specifications.</p>
<p>Consider a robot in a 2D spherical workspace of radius 3, initially positioned at a configuration with coordinates <italic>x</italic>
<sub>0</sub> &#x3d; (&#x2212;2,1)<sup>&#x22ba;</sup>. The STL specification of the robot&#x2019;s mission in this workspace involves visiting two regions of interest whose topological information is presented in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Geometric characteristics of regions of interest for an STL motion planning task.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Predicate</th>
<th align="center">Region center position</th>
<th align="center">Radius</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>1</sub>
</td>
<td align="center">(0,0)<sup>&#x22ba;</sup>
</td>
<td align="center">1</td>
</tr>
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>2</sub>
</td>
<td align="center">(1.5,0)<sup>&#x22ba;</sup>
</td>
<td align="center">1</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>The STL task specification that the robot needs to satisfy is given in the following form:<disp-formula id="e29">
<mml:math id="m183">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>&#x25a1;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>1,3</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2227;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>&#x25a1;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>2,4</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(29)</label>
</disp-formula>Within a smooth STL composition framework, planning for satisfaction of (<xref ref-type="disp-formula" rid="e29">29</xref>) proceeds as follows (<xref ref-type="bibr" rid="B21">Lindemann and Dimarogonas, 2018</xref>): 1) first one defines predicate functions <italic>h</italic>
<sub>1</sub> &#x3d; 1 &#x2212; &#x2016;<italic>x</italic>&#x2016; and <italic>h</italic>
<sub>2</sub> &#x3d; 1 &#x2212; &#x2016;<italic>x</italic> &#x2212; (1.5,0)<sup>&#x22ba;</sup>&#x2016; for regions <italic>&#x3bc;</italic>
<sub>1</sub> and <italic>&#x3bc;</italic>
<sub>2</sub> respectively; 2) then the barrier function for each sub-formula of (<xref ref-type="disp-formula" rid="e29">29</xref>) is constructed as <inline-formula id="inf143">
<mml:math id="m184">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:math>
</inline-formula> and <inline-formula id="inf144">
<mml:math id="m185">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1.5</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22ba;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:math>
</inline-formula>; 3) then one selects <italic>&#x3b3;</italic>
<sub>1</sub>(<italic>t</italic>) such that <inline-formula id="inf145">
<mml:math id="m186">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> for <italic>t</italic> &#x2208; [1, 3], and <italic>&#x3b3;</italic>
<sub>2</sub>(<italic>t</italic>) such that <inline-formula id="inf146">
<mml:math id="m187">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> for <italic>t</italic> &#x2208; [2, 4]; 4) finally, the composite barrier function is formed as <inline-formula id="inf147">
<mml:math id="m188">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>ln</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>exp</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>exp</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>.</p>
<p>This process renders (<xref ref-type="disp-formula" rid="e29">29</xref>) not satisfiable. To see this, focus on the time interval <italic>t</italic> &#x2208; [2, 3] when the robot needs to visit and remain in the intersection of <italic>&#x3bc;</italic>
<sub>1</sub> and <italic>&#x3bc;</italic>
<sub>2</sub>. Note that in this time interval, there must be <italic>&#x3b3;</italic>
<sub>1</sub>(<italic>t</italic>) &#x2264; 1 and <italic>&#x3b3;</italic>
<sub>2</sub>(<italic>t</italic>) &#x2264; 1 to ensure <inline-formula id="inf148">
<mml:math id="m189">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf149">
<mml:math id="m190">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, respectively. However, since the robot needs to be located somewhere in the intersection of <italic>&#x3bc;</italic>
<sub>1</sub> and <italic>&#x3bc;</italic>
<sub>2</sub>, it must be <italic>&#x3b3;</italic>
<sub>1</sub>(<italic>t</italic>) &#x2265; 0.5 and <italic>&#x3b3;</italic>
<sub>2</sub>(<italic>t</italic>) &#x2265; 0.5 to ensure that <inline-formula id="inf150">
<mml:math id="m191">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula> and <inline-formula id="inf151">
<mml:math id="m192">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula>. As a result, for a any legitimate choice of <italic>&#x3b3;</italic>
<sub>1</sub>(<italic>t</italic>) and <italic>&#x3b3;</italic>
<sub>2</sub>(<italic>t</italic>), there will be <inline-formula id="inf152">
<mml:math id="m193">
<mml:mn>0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0.5</mml:mn>
</mml:math>
</inline-formula> and <inline-formula id="inf153">
<mml:math id="m194">
<mml:mn>0</mml:mn>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0.5</mml:mn>
</mml:math>
</inline-formula>. This results in a composite barrier function <inline-formula id="inf154">
<mml:math id="m195">
<mml:mi mathvariant="fraktur">b</mml:mi>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
</inline-formula> in <italic>t</italic> &#x2208; [2, 3] for all legitimate choices of <italic>&#x3b3;</italic>
<sub>1</sub>(<italic>t</italic>) and <italic>&#x3b3;</italic>
<sub>2</sub>(<italic>t</italic>). While there exist solutions to satisfy the specification (keep each <inline-formula id="inf155">
<mml:math id="m196">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf156">
<mml:math id="m197">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> non-negative), the conservatism introduced by the under-approximation of the minimum operator (corresponds to the conjunction in the STL formula) by the smooth exponential summation does not permit the satisfaction of (<xref ref-type="disp-formula" rid="e29">29</xref>). In contrast, the non-smooth formulation of this paper can handle (<xref ref-type="disp-formula" rid="e29">29</xref>) successfully. <xref ref-type="fig" rid="F4">Figure 4</xref> depicts snapshots of the robot&#x2019;s path generated by the control design of <xref ref-type="sec" rid="s4-2">Section 4.2</xref>, satisfying the STL task of (<xref ref-type="disp-formula" rid="e29">29</xref>). Having said that, it can be noted that there can be ways for this satisfiability gap to be reduced, as part of the QP problem&#x2014;although, theoretically, it can never be completely eliminated.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Trajectory of the robot for STL task <italic>&#x3c6;</italic>
<sub>2</sub> (<xref ref-type="disp-formula" rid="e29">29</xref>) at different time instances, with time label at the top of each figure.</p>
</caption>
<graphic xlink:href="frobt-09-782783-g004.tif"/>
</fig>
</sec>
<sec id="s5-3">
<title>5.3 Application to Robot-Child Interaction</title>
<p>This section demonstrates how the nonsmooth CBF theory can be applied in the context of early pediatric motor rehabilitation, to regulate play-based social interaction between infants and mobile robots. The primary clinical objective of these mobile robots is to encourage infant mobility through interactive gameplay. <xref ref-type="fig" rid="F5">Figure 5</xref> shows an (enriched, in terms of stimuli) robot-assisted motor rehabilitation environment for infants involving two robots engaged in free-play activities with an infant.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Instance of play-based child-robot social interaction. Two robots are visible in the scene: a small humanoid <sc>Nao</sc>, and a differential-drive small mobile robot toy <sc>Dash</sc>.</p>
</caption>
<graphic xlink:href="frobt-09-782783-g005.tif"/>
</fig>
<p>The robots shown <xref ref-type="fig" rid="F5">Figure 5</xref> have been remotely controlled during the studies conducted, with the operators following a pre-determined look-up table of appropriate robot responses to infant reactions. Similar to other instances of Human Robot Interaction (HRI) application reported in literature (<xref ref-type="bibr" rid="B27">McGhan et al., 2015</xref>; <xref ref-type="bibr" rid="B32">Zehfroosh et al., 2017</xref>), a Markovian model is used to model the interaction at the high level. The parameters of this Markovian model are learned through observations in sessions with human subjects (<xref ref-type="bibr" rid="B32">Zehfroosh et al., 2017</xref>). Synchronized video from a network of surrounding cameras provided input to action recognition machine learning algorithms capable of identifying certain infant behaviors of interest, such as walking, crawling, standing, sitting, etc., as well as transitions between them (<xref ref-type="bibr" rid="B17">Kokkoni et al., 2020</xref>). In an envisioned fully automated version of this robot-assisted rehabilitation environment, robots could receive direct feedback regarding the child&#x2019;s reactions and adapt their gameplay behavior accordingly in order to further encourage infant mobility.</p>
<p>In specific gameplay scenarios involved in the HRI protocol followed, infants and robots were playing a game of tag, in which the robot had a small set of options with regards to its play-based interaction with the child: close the distance to the infant; increase the distance to the infant; stand still (<xref ref-type="bibr" rid="B17">Kokkoni et al., 2020</xref>). Analysis of session data from a small number of subjects seemed to point to a new hypothesis according to which the type of robot behavior that usually triggers infant motor responses rarely involves single atomic actions, but is rather more complex involving several actions in temporal succession. For instance, it looked as if the robot could convey a social non-verbal cue such as &#x201c;follow me&#x201d; if it initially approached the child within about 1&#xa0;m in distance, stood still for a short time interval, then attempted to increase the distance slightly, before repeating in a back-and-forth moving pattern. Motivated by these observations, we have subsequently conjectured that robot responses modeled in an LTL framework may be more effective in triggering the desired subject responses (<xref ref-type="bibr" rid="B33">Zehfroosh and Tanner, 2019</xref>). The STL framework described in this paper allows us to bring this HRI method to a new level, including timing constrains.</p>
<p>To see how this could work in the context of the HRI scenario of <xref ref-type="fig" rid="F5">Figure 5</xref>, consider a circular 2D robot workspace for <sc>Dash</sc> at the time when the &#x201c;follow me&#x201d; social cue is to be given (see <xref ref-type="fig" rid="F6">Figure 6</xref>). Divide this workspace into three labeled regions <italic>R</italic> &#x3d; {<italic>r</italic>
<sub>1</sub>, <italic>r</italic>
<sub>2</sub>, <italic>r</italic>
<sub>3</sub>}, with the robot initialized in region <italic>r</italic>
<sub>2</sub>. The desired back-and-forth moving pattern for the &#x201c;follow me&#x201d; task can be encoded by a random selection of some specific subregions of interest inside <italic>r</italic>
<sub>1</sub> and inside <italic>r</italic>
<sub>2</sub>. Construct now an STL specification that requires the robot to visit those regions in order and with appropriate timing. For example, for three regions defined geometrically as in <xref ref-type="table" rid="T3">Table 3</xref>,the following STL behavior specification (in the form of formula <italic>&#x3c6;</italic>
<sub>3</sub>) for the robot can be defined as a way to signal &#x201c;follow me&#x201d; within 10&#xa0;s to its human playmate:<disp-formula id="e30">
<mml:math id="m198">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>&#x25a1;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>2,4</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2227;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>&#x2662;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>5,6</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2227;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo>&#x25a1;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mn>8,10</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.5em"/>
<mml:mo>.</mml:mo>
</mml:math>
<label>(30)</label>
</disp-formula>
<xref ref-type="fig" rid="F7">Figure 7</xref> presents <sc>Dash</sc>&#x2019;s trajectory for STL formula <italic>&#x3c6;</italic>
<sub>3</sub> given in (<xref ref-type="disp-formula" rid="e30">30</xref>), realized through the nonsmooth control barrier navigation function methodology of <xref ref-type="sec" rid="s4">Section 4</xref>. Just like the motion planning scenario of <xref ref-type="sec" rid="s5-1">Section 5.1</xref>, the robot path is shown in terms of snapshots at important time instances that attempt to illustrate the satisfaction of the STL specification (<xref ref-type="disp-formula" rid="e30">30</xref>).</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Schematic of <sc>Das</sc>h&#x2019;s robot workspace.</p>
</caption>
<graphic xlink:href="frobt-09-782783-g006.tif"/>
</fig>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Geometric characteristics of regions of interest for a child-robot interaction scenario. <italic>&#x3bc;</italic>
<sub>1</sub> and <italic>&#x3bc;</italic>
<sub>3</sub> are inside <italic>r</italic>
<sub>1</sub> and <italic>&#x3bc;</italic>
<sub>2</sub> is inside <italic>r</italic>
<sub>2</sub>.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">Predicate</th>
<th align="center">Region center position</th>
<th align="center">Radius</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>1</sub>
</td>
<td align="center">(0,&#x2212;0.75)<sup>&#x22ba;</sup>
</td>
<td align="center">0.1</td>
</tr>
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>2</sub>
</td>
<td align="center">(&#x2212;1,&#x2212;1)<sup>&#x22ba;</sup>
</td>
<td align="center">0.1</td>
</tr>
<tr>
<td align="left">
<italic>&#x3bc;</italic>
<sub>3</sub>
</td>
<td align="center">(0.75,0)<sup>&#x22ba;</sup>
</td>
<td align="center">0.1</td>
</tr>
</tbody>
</table>
</table-wrap>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Trajectory of the Dash for STL task <italic>&#x3c6;</italic>
<sub>3</sub> (<xref ref-type="disp-formula" rid="e30">30</xref>) at different time instances, with time label at the top of each figure.</p>
</caption>
<graphic xlink:href="frobt-09-782783-g007.tif"/>
</fig>
</sec>
</sec>
<sec id="s6">
<title>6 Conclusion</title>
<p>By now it is known that motion planning and control synthesis STL can be facilitated through the use of the concept of the control barrier function (CBF). This process obviates the need for model checking as a means of obtaining control laws that implement an STL specification, but still comes at the cost of utilizing a restricted fragment of STL and having to solve a QP problem in each cycle of the control loop. The incorporation of navigation functions as the base for the construction of CBFs, as advocated in this paper, is shown here to be advantageous because it alleviates the computational cost of utilizing CBFs in STL control synthesis. What is more, when the CBFs are combined through nonsmooth mappings as a means of encoding Boolean logic, the construction not only allows for covering larger class of STL specifications in comparison with the existing barrier-function STL planning methods, but also relaxes the conservativeness of existing smooth compositional formulations, and allows the resulting control laws to inherit some of the performance guarantees in terms of convergence and safety afforded by feedback motion plans based on navigation functions. Finally, the nonsmooth approach to combining navigation CBFs allows to expand the fragment of STL covered so that includes disjunctions at no apparent computational cost. The methodology described in this paper can prove useful in applications where robots are called to perform complex and temporally-dependent tasks. An example of such an application, which this paper highlights, is found in the context of pediatric robot-assisted motor rehabilitation.</p>
</sec>
</body>
<back>
<sec id="s7">
<title>Data Availability Statement</title>
<p>The original contributions presented in the study are included in the article/Supplementary Material, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec id="s8">
<title>Author Contributions</title>
<p>Both authors contributed equally in drafting and revising the paper. AZ conducted the simulation results in <xref ref-type="sec" rid="s5">Section 5</xref>.</p>
</sec>
<sec id="s9">
<title>Funding</title>
<p>This research was supported in part by NIH 5R01HD87133, and in part by NSF &#x23;2014264.</p>
</sec>
<sec sec-type="COI-statement" id="s10">
<title>Conflict of Interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x2019;s Note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations or those of the publisher, the editors, and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<fn-group>
<fn id="fn1">
<label>1</label>
<p>A smooth version of such a function can be implemented based on the construction of <xref ref-type="bibr" rid="B6">Boothby (1986)</xref>.</p>
</fn>
<fn id="fn2">
<label>2</label>
<p>For this to happen, the two clauses of the STL formula corresponding to <inline-formula id="inf157">
<mml:math id="m199">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf158">
<mml:math id="m200">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="fraktur">b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> will appear to be in conflict and each require that the system moves in exactly opposite directions; e.g., on the line <italic>x</italic> &#x003D; 0 with, say, <inline-formula id="inf159">
<mml:math id="m201">
<mml:msub>
<mml:mtext>b</mml:mtext>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo>&#x003D;</mml:mo>
<mml:msup>
<mml:mtext>e</mml:mtext>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x002b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x002B;</mml:mo>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x002b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x002b;</mml:mo>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>, and <inline-formula id="inf160">
<mml:math id="m202">
<mml:msub>
<mml:mtext>b</mml:mtext>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo>&#x003D;</mml:mo>
<mml:msup>
<mml:mtext>e</mml:mtext>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mo>1</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x002B;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>&#x002B;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x002B;</mml:mo>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x002b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>&#x002B;</mml:mo>
<mml:mi>a</mml:mi>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mo>&#x002b;</mml:mo>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>.</p>
</fn>
</fn-group>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ames</surname>
<given-names>A. D.</given-names>
</name>
<name>
<surname>Coogan</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Egerstedt</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Notomista</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Sreenath</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Tabuada</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Control Barrier Functions: Theory and Applications</article-title>,&#x201d; in <conf-name>18th European Control Conference</conf-name>, <conf-loc>Naples, Italy</conf-loc>, <conf-date>25-28 June 2019</conf-date>, <fpage>3420</fpage>&#x2013;<lpage>3431</lpage>. <pub-id pub-id-type="doi">10.23919/ECC.2019.8796030</pub-id> </citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ames</surname>
<given-names>A. D.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Grizzle</surname>
<given-names>J. W.</given-names>
</name>
<name>
<surname>Tabuada</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Control Barrier Function Based Quadratic Programs for Safety Critical Systems</article-title>. <source>IEEE Trans. Automatic Control.</source> <volume>62</volume>, <fpage>3861</fpage>&#x2013;<lpage>3876</lpage>. </citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bacciotti</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ceragioli</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2006</year>). <article-title>Nonpathological Lyapunov Functions and Discontinuous Carath&#xe9;odory Systems</article-title>. <source>Automatica</source> <volume>42</volume>, <fpage>453</fpage>&#x2013;<lpage>458</lpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2005.10.014</pub-id> </citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bacciotti</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ceragioli</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>1999</year>). <article-title>Stability and Stabilization of Discontinuous Systems and Nonsmooth Lyapunov Functions</article-title>. <source>Esaim: Cocv</source> <volume>4</volume>, <fpage>361</fpage>&#x2013;<lpage>376</lpage>. <pub-id pub-id-type="doi">10.1051/cocv:1999113</pub-id> </citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Bacciotti</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Rosier</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2005</year>). <source>Liapunov Functions and Stability in Control Theory</source>. <publisher-loc>Berlin, Germany</publisher-loc>: <publisher-name>Springer Science and Business Media</publisher-name>. </citation>
</ref>
<ref id="B6">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Boothby</surname>
<given-names>W. M.</given-names>
</name>
</person-group> (<year>1986</year>). <source>An Introduction to Differentiable Manifolds and Riemannian Geometry</source>. <publisher-loc>Cambridge, Massachusetts</publisher-loc>: <publisher-name>Academic Press</publisher-name>. </citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Campos</surname>
<given-names>J. J.</given-names>
</name>
<name>
<surname>Anderson</surname>
<given-names>D. I.</given-names>
</name>
<name>
<surname>Barbu-Roth</surname>
<given-names>M. A.</given-names>
</name>
<name>
<surname>Hubbard</surname>
<given-names>E. M.</given-names>
</name>
<name>
<surname>Hertenstein</surname>
<given-names>M. J.</given-names>
</name>
<name>
<surname>Witherington</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2000</year>). <article-title>Travel Broadens the Mind</article-title>. <source>Infancy</source> <volume>1</volume>, <fpage>149</fpage>&#x2013;<lpage>219</lpage>. <pub-id pub-id-type="doi">10.1207/s15327078in0102_1</pub-id> </citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Tanner</surname>
<given-names>H. G.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Navigation Functions with Non-point Destinations and Moving Obstacles</article-title>. <source>Proc. IEEE Am. Control. Conf.</source>, <fpage>2532</fpage>&#x2013;<lpage>2537</lpage>. <pub-id pub-id-type="doi">10.23919/acc45564.2020.9147243</pub-id> </citation>
</ref>
<ref id="B9">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Clarke</surname>
<given-names>F. H.</given-names>
</name>
</person-group> (<year>1990</year>). <source>Optimization and Nonsmooth Analysis</source>. <publisher-loc>Philadelphia, Pennsylvania</publisher-loc>: <publisher-name>Society for Industrial and Applied Mathematics</publisher-name>. </citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Clearfield</surname>
<given-names>M. W.</given-names>
</name>
</person-group> (<year>2004</year>). <article-title>The Role of Crawling and Walking Experience in Infant Spatial Memory</article-title>. <source>J. Exp. Child Psychol.</source> <volume>89</volume>, <fpage>214</fpage>&#x2013;<lpage>241</lpage>. <pub-id pub-id-type="doi">10.1016/j.jecp.2004.07.003</pub-id> </citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Glotfelter</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Buckley</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Egerstedt</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Hybrid Nonsmooth Barrier Functions with Applications to Provably Safe and Composable Collision Avoidance for Robotic Systems</article-title>. <source>IEEE Robot. Autom. Lett.</source> <volume>4</volume>, <fpage>1303</fpage>&#x2013;<lpage>1310</lpage>. <pub-id pub-id-type="doi">10.1109/lra.2019.2895125</pub-id> </citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Glotfelter</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Cort&#xe9;s</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Egerstedt</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Nonsmooth Barrier Functions with Applications to Multi-Robot Systems</article-title>. <source>IEEE Control. Syst. Lett.</source> <volume>1</volume>, <fpage>310</fpage>&#x2013;<lpage>315</lpage>. <pub-id pub-id-type="doi">10.1109/lcsys.2017.2710943</pub-id> </citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>G&#xf6;ksun</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Hirsh-Pasek</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Michnick Golinkoff</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Trading Spaces: Carving up Events for Learning Language</article-title>. <source>Perspect. Psychol. Sci.</source> <volume>5</volume>, <fpage>33</fpage>&#x2013;<lpage>42</lpage>. <pub-id pub-id-type="doi">10.1177/1745691609356783</pub-id> </citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gundana</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Kress-Gazit</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Event-based Signal Temporal Logic Synthesis for Single and Multi-Robot Tasks</article-title>. <source>IEEE Robot. Autom. Lett.</source> <volume>6</volume>, <fpage>3687</fpage>&#x2013;<lpage>3694</lpage>. <pub-id pub-id-type="doi">10.1109/lra.2021.3064220</pub-id> </citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Higgins</surname>
<given-names>C. I.</given-names>
</name>
<name>
<surname>Campos</surname>
<given-names>J. J.</given-names>
</name>
<name>
<surname>Kermoian</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>1996</year>). <article-title>Effect of Self-Produced Locomotion on Infant Postural Compensation to Optic Flow</article-title>. <source>Developmental Psychol.</source> <volume>32</volume>, <fpage>836</fpage>&#x2013;<lpage>841</lpage>. <pub-id pub-id-type="doi">10.1037/0012-1649.32.5.836</pub-id> </citation>
</ref>
<ref id="B16">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Jones</surname>
<given-names>A. M.</given-names>
</name>
<name>
<surname>Leahy</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Vasile</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Sadraddini</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Serlin</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Tron</surname>
<given-names>R.</given-names>
</name>
<etal/>
</person-group> (<year>2019</year>). &#x201c;<article-title>Scratchs: Scalable and Robust Algorithms for Task-Based Coordination from High-Level Specifications</article-title>,&#x201d; in <source>International Symposium on Robotics Research</source> (<publisher-loc>Piscataway, NJ</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>1</fpage>&#x2013;<lpage>16</lpage>. <pub-id pub-id-type="doi">10.1109/TRO.2021.3130794</pub-id> </citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kokkoni</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Mavroudi</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Zehfroosh</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Galloway</surname>
<given-names>J. C.</given-names>
</name>
<name>
<surname>Vidal</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Heinz</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Gearing Smart Environments for Pediatric Motor Rehabilitation</article-title>. <source>J. Neuroeng Rehabil.</source> <volume>17</volume>, <fpage>16</fpage>&#x2013;<lpage>15</lpage>. <pub-id pub-id-type="doi">10.1186/s12984-020-0647-0</pub-id> </citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Tanner</surname>
<given-names>H. G.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Navigation Functions with Time-Varying Destination Manifolds in Star-worlds</article-title>. <source>IEEE Trans. Robot</source> <volume>35</volume>, <fpage>35</fpage>&#x2013;<lpage>48</lpage>. <pub-id pub-id-type="doi">10.1109/TRO.2018.2875421</pub-id> </citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lindemann</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Dimarogonas</surname>
<given-names>D. V.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Barrier Function Based Collaborative Control of Multiple Robots under Signal Temporal Logic Tasks</article-title>. <source>IEEE Trans. Control. Netw. Syst.</source> <volume>7</volume>, <fpage>1916</fpage>&#x2013;<lpage>1928</lpage>. <pub-id pub-id-type="doi">10.1109/tcns.2020.3014602</pub-id> </citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lindemann</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Dimarogonas</surname>
<given-names>D. V.</given-names>
</name>
</person-group> (<year>2019a</year>). <article-title>Control Barrier Functions for Multi-Agent Systems under Conflicting Local Signal Temporal Logic Tasks</article-title>. <source>IEEE Control. Syst. Lett.</source> <volume>3</volume>, <fpage>757</fpage>&#x2013;<lpage>762</lpage>. <pub-id pub-id-type="doi">10.1109/lcsys.2019.2917975</pub-id> </citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lindemann</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Dimarogonas</surname>
<given-names>D. V.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Control Barrier Functions for Signal Temporal Logic Tasks</article-title>. <source>IEEE Control Syst. Lett.</source> <volume>3</volume>, <fpage>96</fpage>&#x2013;<lpage>101</lpage>. <pub-id pub-id-type="doi">10.1109/LCSYS.2018.2853182</pub-id> </citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lindemann</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Dimarogonas</surname>
<given-names>D. V.</given-names>
</name>
</person-group> (<year>2019b</year>). <article-title>Feedback Control Strategies for Multi-Agent Systems under a Fragment of Signal Temporal Logic Tasks</article-title>. <source>Automatica</source> <volume>106</volume>, <fpage>284</fpage>&#x2013;<lpage>293</lpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2019.05.013</pub-id> </citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lindemann</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Dimarogonas</surname>
<given-names>D. V.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Funnel Control for Fully Actuated Systems under a Fragment of Signal Temporal Logic Specifications</article-title>. <source>Nonlinear Anal. Hybrid Syst.</source> <volume>39</volume>, <fpage>100973</fpage>. <pub-id pub-id-type="doi">10.1016/j.nahs.2020.100973</pub-id> </citation>
</ref>
<ref id="B24">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lindemann</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Verginis</surname>
<given-names>C. K.</given-names>
</name>
<name>
<surname>Dimarogonas</surname>
<given-names>D. V.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>Prescribed Performance Control for Signal Temporal Logic Specifications</article-title>,&#x201d; in <conf-name>2017 IEEE 56th Annual Conference on Decision and Control (CDC)</conf-name>, <conf-loc>Melbourne, VIC, Australia</conf-loc>, <conf-date>12-15 Dec. 2017</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>2997</fpage>&#x2013;<lpage>3002</lpage>. <pub-id pub-id-type="doi">10.1109/cdc.2017.8264095</pub-id> </citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Dai</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Communication-aware Motion Planning for Multi-Agent Systems from Signal Temporal Logic Specifications</article-title>. <source>IEEE Am. Control. Conf.</source>, <fpage>2516</fpage>&#x2013;<lpage>2521</lpage>. <pub-id pub-id-type="doi">10.23919/acc.2017.7963331</pub-id> </citation>
</ref>
<ref id="B26">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Maler</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Nickovic</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2004</year>). &#x201c;<article-title>Monitoring Temporal Properties of Continuous Signals</article-title>,&#x201d; in <source>Formal Techniques, Modelling and Analysis of Timed and Fault-Tolerant Systems</source> (<publisher-loc>Berlin, Heidelberg</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>152</fpage>&#x2013;<lpage>166</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-540-30206-3_12</pub-id> </citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>McGhan</surname>
<given-names>C. L. R.</given-names>
</name>
<name>
<surname>Nasir</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Atkins</surname>
<given-names>E. M.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Human Intent Prediction Using Markov Decision Processes</article-title>. <source>J. Aerospace Inf. Syst.</source> <volume>12</volume>, <fpage>393</fpage>&#x2013;<lpage>397</lpage>. <pub-id pub-id-type="doi">10.2514/1.i010090</pub-id> </citation>
</ref>
<ref id="B28">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Raman</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Donz&#xe9;</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Maasoumy</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Murray</surname>
<given-names>R. M.</given-names>
</name>
<name>
<surname>Sangiovanni-Vincentelli</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Seshia</surname>
<given-names>S. A.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Model Predictive Control with Signal Temporal Logic Specifications</article-title>,&#x201d; in <conf-name>53rd IEEE Conference on Decision and Control</conf-name>, <conf-loc>Los Angeles, CA, USA</conf-loc>, <conf-date>15-17 Dec. 2014</conf-date>, <fpage>81</fpage>&#x2013;<lpage>87</lpage>. <pub-id pub-id-type="doi">10.1109/CDC.2014.7039363</pub-id> </citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rimon</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Koditschek</surname>
<given-names>D. E.</given-names>
</name>
</person-group> (<year>1992</year>). <article-title>Exact Robot Navigation Using Artificial Potential Functions</article-title>. <source>IEEE Trans. Robot. Automat.</source> <volume>8</volume>, <fpage>501</fpage>&#x2013;<lpage>518</lpage>. <pub-id pub-id-type="doi">10.1109/70.163777</pub-id> </citation>
</ref>
<ref id="B30">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Sadraddini</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Belta</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2015</year>). &#x201c;<article-title>Robust Temporal Logic Model Predictive Control</article-title>,&#x201d; in <conf-name>53rd IEEE Annual Allerton Conference on Communication, Control, and Computing</conf-name>, <conf-loc>29 Sept.-2 Oct. 2015Monticello, IL, USA</conf-loc>, <fpage>772</fpage>&#x2013;<lpage>779</lpage>. <pub-id pub-id-type="doi">10.1109/ALLERTON.2015.7447084</pub-id> </citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sun</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Tanner</surname>
<given-names>H. G.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Constrained Decision-Making for Low-Count Radiation Detection by mobile Sensors</article-title>. <source>Auton. Robot</source> <volume>39</volume>, <fpage>519</fpage>&#x2013;<lpage>536</lpage>. <pub-id pub-id-type="doi">10.1007/s10514-015-9468-6</pub-id> </citation>
</ref>
<ref id="B32">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Zehfroosh</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Kokkoni</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Tanner</surname>
<given-names>H. G.</given-names>
</name>
<name>
<surname>Heinz</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>Learning Models of Human-Robot Interaction from Small Data</article-title>,&#x201d; in <conf-name>25th Mediterranean Conference on Control and Automation</conf-name>, <conf-loc>Valletta, Malta</conf-loc>, <conf-date>3-6 July 2017</conf-date>, <fpage>223</fpage>&#x2013;<lpage>228</lpage>. <pub-id pub-id-type="doi">10.1109/MED.2017.7984122</pub-id> </citation>
</ref>
<ref id="B33">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Zehfroosh</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Tanner</surname>
<given-names>H. G.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Reactive Motion Planning for Temporal Logic Tasks without Workspace Discretization</article-title>,&#x201d; in <conf-name>IEEE American Control Conference</conf-name>, <conf-loc>Philadelphia, PA, USA</conf-loc>, <conf-date>10-12 July 2019</conf-date>, <fpage>4872</fpage>&#x2013;<lpage>4877</lpage>. <pub-id pub-id-type="doi">10.23919/ACC.2019.8814420</pub-id> </citation>
</ref>
</ref-list>
</back>
</article>