<?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">772228</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2022.772228</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>Safe Robot Trajectory Control Using Probabilistic Movement Primitives and Control Barrier Functions</article-title>
<alt-title alt-title-type="left-running-head">Davoodi et&#x20;al.</alt-title>
<alt-title alt-title-type="right-running-head">Safe Robot Trajectory Control</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Davoodi</surname>
<given-names>Mohammadreza</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1627014/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Iqbal</surname>
<given-names>Asif</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1682495/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Cloud</surname>
<given-names>Joseph M.</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1681182/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Beksi</surname>
<given-names>William J.</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1470689/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Gans</surname>
<given-names>Nicholas R.</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1169141/overview"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>The University of Texas at Arlington Research Institute</institution>, <addr-line>Fort Worth</addr-line>, <addr-line>TX</addr-line>, <country>United&#x20;States</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Department of Computer Science and Engineering</institution>, <institution>University of Texas at Arlington</institution>, <addr-line>Arlington</addr-line>, <addr-line>TX</addr-line>, <country>United&#x20;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/226752/overview">Holger Voos</ext-link>, University of Luxembourg, Luxembourg</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/224108/overview">Reza Ghabcheloo</ext-link>, Tampere University, Finland</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1606027/overview">Hamed Habibi</ext-link>, University of Luxembourg, Luxembourg</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Nicholas R. Gans, <email>ngans@uta.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&#x20;AI</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>16</day>
<month>03</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>9</volume>
<elocation-id>772228</elocation-id>
<history>
<date date-type="received">
<day>07</day>
<month>09</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>07</day>
<month>02</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2022 Davoodi, Iqbal, Cloud, Beksi and Gans.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Davoodi, Iqbal, Cloud, Beksi and Gans</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&#x20;terms.</p>
</license>
</permissions>
<abstract>
<p>In this paper, we present a novel means of control design for probabilistic movement primitives (ProMPs). Our proposed approach makes use of control barrier functions and control Lyapunov functions defined by a ProMP distribution. Thus, a robot may move along a trajectory within the distribution while guaranteeing that the system state never leaves more than a desired distance from the distribution mean. The control employs feedback linearization to handle nonlinearities in the system dynamics and real-time quadratic programming to ensure a solution exists that satisfies all safety constraints while minimizing control effort. Furthermore, we highlight how the proposed method may allow a designer to emphasize certain safety objectives that are more important than the others. A series of simulations and experiments demonstrate the efficacy of our approach and show it can run in real&#x20;time.</p>
</abstract>
<kwd-group>
<kwd>motion control</kwd>
<kwd>movement primitives</kwd>
<kwd>learning from demonstration</kwd>
<kwd>robot safety</kwd>
<kwd>nonlinear control</kwd>
</kwd-group>
<contract-num rid="cn001">1728057 1746052</contract-num>
<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>The idea of proximity between robots and humans performing useful tasks, in a shared work space, inevitably brings up the issue of safety. In fact, safety is a limiting factor for the development of the autonomous robotic partners (<xref ref-type="bibr" rid="B35">Vicentini, 2021</xref>). Furthermore, strict safety requirements pose a major challenge for system integrators and robotics applications designers. When humans and robots share a physical work environment, robots must have control laws that make them verifiably safe around humans. In particular, robot systems need to be capable of detecting task variations, and their motion planning and control algorithms must be flexible enough to allow for variation while guaranteeing safety (<xref ref-type="bibr" rid="B18">Kragic et&#x20;al., 2018</xref>).</p>
<p>Robot motion planning is a rich field of study providing myriad approaches to determine robot trajectories, including in the presence of obstacles (<xref ref-type="bibr" rid="B24">Mohanan and Salgoankar, 2018</xref>). Many approaches, such as rapidly exploring random trees (<xref ref-type="bibr" rid="B20">LaValle, 1998</xref>; <xref ref-type="bibr" rid="B19">LaValle et&#x20;al., 2001</xref>), probabilistic roadmaps (<xref ref-type="bibr" rid="B12">Hsu et&#x20;al., 1998</xref>; <xref ref-type="bibr" rid="B9">Geraerts and Overmars, 2004</xref>), and artificial potential fields (<xref ref-type="bibr" rid="B36">Warren, 1989</xref>; <xref ref-type="bibr" rid="B34">Vadakkepat et&#x20;al., 2000</xref>) require predefined static maps for peak performance. In addition, robot motion planning algorithms often require expert design of cost functions, potential functions, and random sampling that are outside the expertise of day-to-day users. The learning from demonstration paradigm can address these shortcomings (<xref ref-type="bibr" rid="B4">Argall et&#x20;al., 2009</xref>; <xref ref-type="bibr" rid="B6">Chernova and Thomaz, 2014</xref>) by leveraging the inherent expertise of a human teacher.</p>
<p>Movement primitives (MPs) are a popular approach to encode and generalize human demonstrations for training robots. MPs are modeled through a compact representation of the implicitly continuous and high-dimensional trajectories. For example, dynamic movement primitives (DMPs) use demonstrations to learn a model of the control effort necessary to produce a desired trajectory for a stabilized dynamic system (<xref ref-type="bibr" rid="B14">Ijspeert et&#x20;al., 2013</xref>; <xref ref-type="bibr" rid="B8">Dahlin and Karayiannidis, 2019</xref>). Capturing the natural variation in human demonstration of a task can help a robot overcome uncertainty and deviation between the training regime and actual task execution (<xref ref-type="bibr" rid="B10">Gomez-Gonzalez et&#x20;al., 2020</xref>). However, DMPs only encapsulate a single trajectory demonstration and thus lack this flexibility.</p>
<p>Probabilistic movement primitives (ProMPs) are a concept in which a <italic>distribution</italic> of trajectories is learned from multiple demonstrations. There are several works that have focused on the construction of ProMP controllers. In (<xref ref-type="bibr" rid="B26">Paraschos et&#x20;al., 2018a</xref>), the design of a stochastic ProMP feedback controller was studied by exploiting the property of the covariance derivatives which can be explicitly computed. A model-free ProMP controller that adapts movement to force-torque input was designed in (<xref ref-type="bibr" rid="B27">Paraschos et&#x20;al., 2018b</xref>). In (<xref ref-type="bibr" rid="B5">Calinon and Lee, 2017</xref>), the authors designed a model predictive control-based ProMP controller for a linear discrete time system&#x20;model.</p>
<p>While they have prominent advantages, ProMP methods still present notable shortcomings. For example, prior ProMP approaches require a linearized model of the system in the controller design. This makes the controller less relevant for nonlinear systems such as robotics and autonomous vehicles. Additionally, while ProMPs themselves are fairly simple to generate, their controllers are difficult to implement, vulnerable to noise, sensitive to design parameters, and are variable to initial conditions. These factors limit the ability of non-experts to employ or tune such controllers. Finally, ProMPs by definition are stochastic and distributions of trajectories defined by Gaussian functions have a large support. Thus, the resulting trajectories can deviate far from the mean of the training&#x20;set.</p>
<p>In recent years, real-time safety-critical control of dynamic systems has received notable consideration (<xref ref-type="bibr" rid="B37">Wieland and Allg&#xf6;wer, 2007</xref>). One important approach is the use of barrier certificates/functions, which leverage <italic>off-line</italic> iterative optimization algorithms to verify safety for a given dynamical system (<xref ref-type="bibr" rid="B31">Sloth et&#x20;al., 2012</xref>). The notion has been extended to synthesizing safe control laws in real-time using quadratic programming (QP) to find control inputs that satisfy control barrier functions (CBFs) (<xref ref-type="bibr" rid="B2">Ames et&#x20;al., 2016</xref>).</p>
<p>A powerful property of CBFs is that they are easily combined with control Lyapunov functions (CLFs) in the same QP such that the resulting controller guarantees stability while respecting limits and safe regions of the state space (<xref ref-type="bibr" rid="B3">Ames et&#x20;al., 2019</xref>; <xref ref-type="bibr" rid="B7">Cortez et&#x20;al., 2019</xref>; <xref ref-type="bibr" rid="B22">Lopez et&#x20;al., 2020</xref>). Additionally, the QP solved to find a safe, stable control input during run-time can include other optimization terms such as minimizing control effort. Other tasks formulated as cost functions or constraints can be included as well. CBF and CLF based controls have their own downsides, most notably the advanced knowledge necessary to define the barriers and trajectories. Efforts to automate the definition of CBFs and CLFs include mapping temporal logic statements to barriers and trajectories (<xref ref-type="bibr" rid="B33">Srinivasan and Coogan, 2020</xref>) and training piece-wise barrier functions for obstacles in the workspace (<xref ref-type="bibr" rid="B30">Saveriano and Lee, 2019</xref>).</p>
<p>This work addresses the aforementioned weaknesses of ProMPs and CBFs/CLFs. In our presented approach, the trajectory distribution provided by a ProMP is used to define a CLF and one or more CBFs. Specifically, the ProMP mean is used to define a CLF, and barriers for the CBFs are defined using the standard deviation of the distribution. Thus, the CLF and CBFs are established strictly through human demonstration eschewing the need for advanced control knowledge. The system will roughly track the mean trajectory, with a modicum of freedom to optimize the control effort or other requirements, while guaranteeing that the system never leaves a known neighborhood of the&#x20;mean.</p>
<p>Since CLF and CBF controllers are intrinsically based on the nonlinear model of the system, our approach overcomes the inherent linearity of ProMP controllers. We demonstrate the effectiveness and computational efficiency of our approach through simulations and experiments with a two-link and a six-link robot. Examples of generated control trajectories by our method for a Universal Robots UR5 are shown in <xref ref-type="fig" rid="F1">Figure&#x20;1</xref>. In summary, the salient contributions of this paper are the following.<list list-type="simple">
<list-item>
<p>&#x2022; We develop a novel means of automating the design of CLFs and CBFs from the distribution delivered by a ProMP.</p>
</list-item>
<list-item>
<p>&#x2022; We introduce a new control design for ProMPs by combining CLFs and&#x20;CBFs.</p>
</list-item>
<list-item>
<p>&#x2022; We demonstrate the practical applicability of the proposed method through experimental validation on a Universal Robots&#x20;UR5e.</p>
</list-item>
</list>
</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>A set of robot trajectories generated by our CLF/CBF-based ProMP demonstration and control method. The controller guarantees that the system never leaves a neighborhood defined by the training set and provides a straightforward way to define trajectories that enforce safety constraints in the presence of obstacles. Copyright 2021 IEEE. Reprinted, with permission, from <xref ref-type="bibr" rid="B39">Davoodi et&#x20;al., 2021</xref>.</p>
</caption>
<graphic xlink:href="frobt-09-772228-g001.tif"/>
</fig>
<p>The remainder of this paper is structured as follows. In <xref ref-type="sec" rid="s2">Section 2</xref>, we review ProMPs, CBFs, CLFs, and robot system dynamics. We detail our approach for a ProMP to define the CLFs and CBFs for optimal control in <xref ref-type="sec" rid="s3">Section 3</xref>. Simulation and experiments are presented in <xref ref-type="sec" rid="s4">Section 4</xref>. Lastly, we conclude with a discussion on future work in <xref ref-type="sec" rid="s5">Section&#x20;5</xref>.</p>
</sec>
<sec id="s2">
<title>2 Background</title>
<p>This section presents necessary background information on ProMPs, CBFs, and&#x20;CLFs.</p>
<p>Notation: Given a matrix <italic>A</italic>, we denote its transpose by <italic>A</italic>
<sup>
<italic>&#x22a4;</italic>
</sup>. Let the identity and zero matrices, with appropriate dimensions, be denoted by <italic>I</italic> and 0, respectively. We denote &#x22c6; as the symmetric entries of a matrix. For a vector field <italic>f</italic>
<sub>
<italic>i</italic>
</sub>(<italic>x</italic>) and vector of vector fields <italic>F</italic>(<italic>x</italic>) &#x3d; [<italic>f</italic>
<sub>1</sub>(<italic>x</italic>), &#x2026;, <italic>f</italic>
<sub>
<italic>n</italic>
</sub>(<italic>x</italic>)], let <inline-formula id="inf1">
<mml:math id="m1">
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <italic>L</italic>
<sub>
<italic>F</italic>
</sub> denote, respectively, the Lie derivative along <italic>f</italic>
<sub>
<italic>i</italic>
</sub>(<italic>x</italic>) and the vector of Lie derivatives in the directions <inline-formula id="inf2">
<mml:math id="m2">
<mml:msub>
<mml:mrow>
<mml:mi>f</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>:</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. A continuous function <italic>&#x3b2;</italic>
<sub>1</sub>: [0, <italic>a</italic>) &#x2192; [0, <italic>&#x221e;</italic>), for some <italic>a</italic>&#x20;&#x3e; 0, is said to belong to class <italic>K</italic> if it is strictly increasing and <italic>&#x3b2;</italic>
<sub>1</sub> (0) &#x3d; 0. The number of joints for a robot arm is represented by <italic>n</italic>, and a zero-mean i. i.d. Gaussian distribution with mean <italic>m</italic> and (co)variance &#x3a3; is denoted <inline-formula id="inf3">
<mml:math id="m3">
<mml:mi mathvariant="script">N</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<sec id="s2-1">
<title>2.1 Probabilistic Movement Primitives</title>
<p>ProMPs provide a parametric representation of trajectories which can be executed in multiple ways through the use of a probability distribution. A set of basis functions are used to reduce the model parameters and aid learning over the demonstrated trajectories. The trajectory distribution can be defined and generated in any space that accommodates the system (e.g., joint space or task space) (<xref ref-type="bibr" rid="B26">Paraschos et&#x20;al., 2018a</xref>). In this work we consider joint space trajectories and assume the demonstrations to be normally distributed.</p>
<p>Let <inline-formula id="inf4">
<mml:math id="m4">
<mml:msub>
<mml:mrow>
<mml:mi>q</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:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> be the <italic>i</italic>th state variable. Then <inline-formula id="inf5">
<mml:math id="m5">
<mml:msub>
<mml:mrow>
<mml:mi>q</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>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> is <italic>q</italic>
<sub>
<italic>i</italic>
</sub>(<italic>t</italic>) sampled at time <italic>k</italic>, where <italic>k</italic>&#x20;&#x2208; {<italic>t</italic>
<sub>1</sub>, &#x2026; , <italic>t</italic>
<sub>
<italic>K</italic>
</sub>} is a discrete set of sampling times. Within a ProMP, the execution of a trajectory is modeled as the set of robot positions, <italic>&#x3b6;</italic>
<sub>
<italic>i</italic>
</sub> &#x3d; {<italic>q</italic>
<sub>
<italic>i</italic>
</sub>(<italic>k</italic>)}. Let <inline-formula id="inf6">
<mml:math id="m6">
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> be a weight matrix with <italic>L</italic> terms. A linear basis function model is then given by<disp-formula id="equ1">
<mml:math id="m7">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<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:msub>
<mml:mo>,</mml:mo>
</mml:math>
</disp-formula>where <inline-formula id="inf7">
<mml:math id="m8">
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>&#x3d5;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3d5;</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>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is the time-dependent basis function matrix and <italic>L</italic> is the number of basis functions. Gaussian noise is described by <inline-formula id="inf8">
<mml:math id="m9">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<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:msub>
<mml:mo>&#x223c;</mml:mo>
<mml:mi mathvariant="script">N</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
</mml:mrow>
<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:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. Thus, the ProMP trajectory is represented by a Gaussian distribution over the weight vector <italic>w</italic>
<sub>
<italic>i</italic>
</sub> and the parameter vector <inline-formula id="inf9">
<mml:math id="m10">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, which simplifies the estimation of the parameters.</p>
<p>We marginalize out <italic>w</italic>
<sub>
<italic>i</italic>
</sub> to create the trajectory distribution<disp-formula id="e1">
<mml:math id="m11">
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b6;</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>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x222b;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.17em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</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>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>d</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>Here, the distribution <italic>p</italic> (<italic>&#x3b6;</italic>
<sub>
<italic>i</italic>
</sub>, <italic>&#x3b8;</italic>
<sub>
<italic>i</italic>
</sub>) defines a hierarchical Bayesian model over the trajectories <italic>&#x3b6;</italic>
<sub>
<italic>i</italic>
</sub> (<xref ref-type="bibr" rid="B26">Paraschos et&#x20;al., 2018a</xref>) and <inline-formula id="inf10">
<mml:math id="m12">
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.17em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</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:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="script">N</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.17em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. In an MP representation, the parameters of a single primitive must be easy to obtain from demonstrations. The distribution of the state <italic>p</italic> (<italic>x</italic>
<sub>
<italic>i</italic>
</sub>(<italic>k</italic>); <italic>&#x3b8;</italic>
<sub>
<italic>i</italic>
</sub>) is<disp-formula id="e2">
<mml:math id="m13">
<mml:mspace width="-3.98337pt"/>
<mml:mi>p</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:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="script">N</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:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.17em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
</mml:mrow>
<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:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>The trajectory can be generated from the ProMP distribution using <italic>w</italic>
<sub>
<italic>i</italic>
</sub>, the basis function &#x3a6;(<italic>k</italic>), and (2). The basis function is chosen based on the type of robot movement which can be either rhythmic or stroke-based. From (<xref ref-type="disp-formula" rid="e2">Eq. 2</xref>), the mean <inline-formula id="inf11">
<mml:math id="m14">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</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>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<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> of the ProMP trajectory at <italic>k</italic> is <inline-formula id="inf12">
<mml:math id="m15">
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and the covariance &#x3a3;<sub>
<italic>i</italic>
</sub>(<italic>k</italic>) is <inline-formula id="inf13">
<mml:math id="m16">
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
</mml:mrow>
<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:msub>
</mml:math>
</inline-formula>.</p>
<p>Multiple demonstrations are needed to learn a distribution over <italic>w</italic>
<sub>
<italic>i</italic>
</sub>. To train a ProMP we use a combination of radial basis and polynomial basis functions. From the demonstrations, the parameters <italic>&#x3b8;</italic>
<sub>
<italic>i</italic>
</sub> can be estimated using maximum likelihood estimation (<xref ref-type="bibr" rid="B21">Lazaric and Ghavamzadeh, 2010</xref>). However, when there are insufficient demonstrations this may result in unstable estimates of the ProMP parameters. Therefore, similar to (<xref ref-type="bibr" rid="B10">Gomez-Gonzalez et&#x20;al., 2020</xref>), our method uses a regularization to estimate the ProMP distribution. We maximize <italic>&#x3b8;</italic>
<sub>
<italic>i</italic>
</sub> for the posterior distribution over the ProMP using expectation maximization,<disp-formula id="e3">
<mml:math id="m17">
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.17em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x221d;</mml:mo>
<mml:mi>p</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>p</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:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.17em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>In addition, we make use of Normal-Inverse-Wishart as a prior distribution <italic>p</italic> (<italic>&#x3b8;</italic>
<sub>
<italic>i</italic>
</sub>) to increase stability when training the ProMP parameters (<xref ref-type="bibr" rid="B10">Gomez-Gonzalez et&#x20;al., 2020</xref>).</p>
</sec>
<sec id="s2-2">
<title>2.2 System Modeling</title>
<p>Consider the following control affine nonlinear system<disp-formula id="e4">
<mml:math id="m18">
<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:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mo>,</mml:mo>
</mml:math>
<label>(4)</label>
</disp-formula>where <inline-formula id="inf14">
<mml:math id="m19">
<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> denotes the state, <inline-formula id="inf15">
<mml:math id="m20">
<mml:mi>u</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>m</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is the control input, <inline-formula id="inf16">
<mml:math id="m21">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf17">
<mml:math id="m22">
<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="inf18">
<mml:math id="m23">
<mml:msub>
<mml:mrow>
<mml:mi>g</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<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> are locally Lipschitz vector fields. It is assumed that the system in <xref ref-type="disp-formula" rid="e4">(Eq. 4)</xref> is controllable.</p>
<p>The model (4) encompasses the dynamic model of robotic manipulators. We consider the following description of robot motion given by the general form by the Euler-Lagrange equations,<disp-formula id="e5">
<mml:math id="m24">
<mml:mi>D</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>H</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>E</mml:mi>
<mml:mi>u</mml:mi>
<mml:mo>,</mml:mo>
</mml:math>
<label>(5)</label>
</disp-formula>where <inline-formula id="inf19">
<mml:math id="m25">
<mml:mi>q</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> are generalized coordinates of the robot, <inline-formula id="inf20">
<mml:math id="m26">
<mml:mi>D</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<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:mo>&#xd7;</mml:mo>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is the inertia matrix, <inline-formula id="inf21">
<mml:math id="m27">
<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>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x220b;</mml:mo>
<mml:mi>H</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is a vector containing the Coriolis and gravity terms, and <inline-formula id="inf22">
<mml:math id="m28">
<mml:mi>E</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:mo>&#xd7;</mml:mo>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is the actuation matrix that determines the way in which the inputs <italic>u</italic> actuate the system. In this work, we consider the system to be fully actuated (i.e.,&#x20;<italic>p</italic>&#x20;&#x3d; <italic>n</italic>), which is typical for robot manipulators. Then, the system description in (<xref ref-type="disp-formula" rid="e5">Eq. 5</xref>) may be converted to an ODE of the form in (<xref ref-type="disp-formula" rid="e4">Eq. 4</xref>) where <inline-formula id="inf23">
<mml:math id="m29">
<mml:mi>x</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> and<disp-formula id="e6">
<mml:math id="m30">
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</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:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>H</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</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:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msup>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>E</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
</sec>
<sec id="s2-3">
<title>2.3 Control Barrier and Control Lyapunov Functions</title>
<sec id="s2-3-1">
<title>2.3.1 Control Barrier Functions</title>
<p>Let <italic>C</italic> be a set for which we wish to verify that <italic>x</italic>(<italic>t</italic>) &#x2208; <italic>C</italic>, <italic>&#x2200;t</italic>. Then, <italic>C</italic> defines a <italic>safe set</italic>. A smooth function <inline-formula id="inf24">
<mml:math id="m31">
<mml:mi>h</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>:</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:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> is defined to encode a constraint on the state <italic>x</italic> of system. The constraint is satisfied if <italic>h</italic>(<italic>x</italic>) &#x2265; 0 and violated if <italic>h</italic>(<italic>x</italic>) &#x3c; 0. Concretely, <italic>C</italic> is defined as<disp-formula id="e7">
<mml:math id="m32">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>C</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>&#x2202;</mml:mi>
<mml:mi>C</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi mathvariant="normal">I</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(7)</label>
</disp-formula>where Int(<italic>C</italic>) and <italic>&#x2202;C</italic> denote the interior and boundary of <italic>C</italic>, respectively.</p>
<p>Existing approaches to define CBFs include exponential CBFs, reciprocal CBFs, and zeroing CBFs (<xref ref-type="bibr" rid="B2">Ames et&#x20;al., 2016</xref>; <xref ref-type="bibr" rid="B25">Nguyen and Sreenath, 2016</xref>). Yet, these methods have trade-offs with respect to ease of definition, boundedness of velocities, speed of convergence, etc. In this work we investigate the use of a reciprocal CBF. This type of CBF has a small value when the states are far from the constraints and it becomes unbounded when the states approach the constraints.</p>
<p>
<statement content-type="definition" id="Definition_1">
<label>Definition 1</label>
<p>(<xref ref-type="bibr" rid="B1">Ames et&#x20;al., 2014</xref>) Given <italic>C</italic> and <italic>h</italic>, a function <inline-formula id="inf25">
<mml:math id="m33">
<mml:mi>B</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>C</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> is a CBF if there exists class <italic>K</italic> functions <italic>&#x3b1;</italic>
<sub>1</sub>, <italic>&#x3b1;</italic>
<sub>2</sub>, and <italic>&#x3b1;</italic>
<sub>3</sub>, and a constant scalar <italic>&#x3b3;</italic> &#x3e; 0 such that<disp-formula id="e8">
<mml:math id="m34">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</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:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2264;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</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:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>B</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:msub>
<mml:mi>B</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>B</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
</statement>
</p>
<p>
<statement content-type="remark" id="Remark_1">
<label>Remark 1</label>
<p>It is worth noting that based on the definition of the safe set (7), if the initial state of the system is inside the safe set (i.e.,&#x20;<italic>h</italic>(<italic>x</italic>
<sub>0</sub>) &#x3e; 0 when the system&#x2019;s trajectory gets close to the safety boundary) then the CBF condition forces the systems&#x2019; trajectories to go back inside the safe set. This is due to the fact that the derivative of <italic>h</italic>(<italic>x</italic>(<italic>t</italic>)) is negative on the boundary which leads the value of <italic>B</italic>(<italic>x</italic>) (<italic>h</italic>(<italic>x</italic>)) to start decreasing (increasing). Moreover, the constant value <italic>&#x3b3;</italic> determines how fast the states of the system can reach the safety boundary.</p>
</statement>
</p>
</sec>
<sec id="s2-3-2">
<title>2.3.2 Control Lyapunov Functions</title>
<p>CLFs can be used to model and design dynamical control system inputs to ensure objectives such as stability, convergence to the origin (or other set point), or convergence to a desired trajectory. In order to have a construction similar to CBFs, we consider exponentially stabilizing CLFs (<xref ref-type="bibr" rid="B1">Ames et&#x20;al., 2014</xref>).</p>
<p>
<statement content-type="definition" id="Definition_2">
<label>Definition 2</label>
<p>In a domain <inline-formula id="inf26">
<mml:math id="m35">
<mml:mi>X</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>, a continuously differentiable function <inline-formula id="inf27">
<mml:math id="m36">
<mml:mi>V</mml:mi>
<mml:mo>:</mml:mo>
<mml:mi>X</mml:mi>
<mml:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> is an exponentially stabilizing CLF (ES-CLF) if <italic>&#x2200;x</italic> &#x2208; <italic>X</italic> there exists positive scalar constants <italic>c</italic>
<sub>1</sub>, <italic>c</italic>
<sub>2</sub>, <italic>c</italic>
<sub>3</sub> &#x3e; 0 such that<disp-formula id="e9">
<mml:math id="m37">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:mi>x</mml:mi>
<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>&#x2264;</mml:mo>
<mml:mi>V</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</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:mo stretchy="false">&#x2016;</mml:mo>
<mml:mi>x</mml:mi>
<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>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>V</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:msub>
<mml:mi>V</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi>V</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>Having established a CBF to accomplish safety and a CLF to achieve control performance objectives, the two may be unified through a QP. As a result, safe control laws can be computed using the QP to solve the constrained optimization problems at each point in time (<xref ref-type="bibr" rid="B2">Ames et&#x20;al., 2016</xref>).</p>
</statement>
</p>
</sec>
</sec>
</sec>
<sec id="s3">
<title>3 Control Development</title>
<p>Our main goal is to design a controller such that the system output tracks a trajectory within the distribution generated by a ProMP. To this end, we first construct a nonlinear inner-loop control law based on the feedback linearization of (<xref ref-type="disp-formula" rid="e5">Eq. 5</xref>). Then, an outer-loop controller established by a CLF-CBF is&#x20;designed using the distribution parameters <inline-formula id="inf28">
<mml:math id="m38">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and &#x3a3;<sub>
<italic>i</italic>
</sub>. We&#x20;summarize this process as the following problem objectives.<list list-type="simple">
<list-item>
<p>1. Use the demonstrated trajectories of a robot to train and estimate a ProMP distribution. The ProMP provides the time-varying mean and variance of a trajectory.</p>
</list-item>
<list-item>
<p>2. Develop a feedback linearization controller to obtain a linear and decoupled input-output closed-loop relationship for the error signal.</p>
</list-item>
<list-item>
<p>3. Design a CLF to stabilize the system such that <italic>&#x2200;i</italic>, <italic>q</italic>
<sub>
<italic>i</italic>
</sub> &#x2192; <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>, where <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub> is the <italic>i</italic>-th element of <inline-formula id="inf29">
<mml:math id="m39">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>.</p>
</list-item>
<list-item>
<p>4. Create a CBF to ensure that the error <italic>e</italic>
<sub>
<italic>i</italic>
</sub> &#x3d; <italic>q</italic>
<sub>
<italic>i</italic>
</sub> &#x2212; <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub> satisfies the&#x20;safety constraint <italic>&#x2200;i</italic>, &#x7c;<italic>e</italic>
<sub>
<italic>i</italic>
</sub>&#x7c; &#x3c; <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub>, where <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub> is the (1, 1) element of &#x3a3;<sub>
<italic>i</italic>
</sub>.</p>
</list-item>
</list>
</p>
<p>The general structure of our proposed system is shown in <xref ref-type="fig" rid="F2">Figure&#x20;2</xref>.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>The overall structure of the proposed system.</p>
</caption>
<graphic xlink:href="frobt-09-772228-g002.tif"/>
</fig>
<sec id="s3-1">
<title>3.1 Feedback Linearization Controller</title>
<p>First, we define the trajectory and error vectors as <inline-formula id="inf30">
<mml:math id="m40">
<mml:mi>&#x3bc;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> and <inline-formula id="inf31">
<mml:math id="m41">
<mml:mi>e</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, respectively. Using (<xref ref-type="disp-formula" rid="e4">Eq. 4</xref>) and taking the derivative two times along <italic>f</italic>(<italic>x</italic>) and <inline-formula id="inf32">
<mml:math id="m42">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</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:math>
</inline-formula>, we obtain<disp-formula id="e10">
<mml:math id="m43">
<mml:mtable class="eqnarray">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:munder accentunder="false">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#xfe38;</mml:mo>
</mml:munder>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>Next, assume that the decoupling matrix &#x393; is well-defined and has full rank (<xref ref-type="bibr" rid="B13">Hsu et&#x20;al., 2015</xref>)<xref ref-type="fn" rid="fn1">
<sup>1</sup>
</xref>. This implies that the system in (<xref ref-type="disp-formula" rid="e4">Eq. 4</xref>) is feedback linearizable and we can prescribe the following control law,<disp-formula id="e11">
<mml:math id="m44">
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>e</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(11)</label>
</disp-formula>where <italic>v</italic> is an auxiliary feedback control value. This yields the second order linear system from input <italic>v</italic> to output <italic>e</italic>,<disp-formula id="e12">
<mml:math id="m45">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>.</mml:mo>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>By defining <inline-formula id="inf33">
<mml:math id="m46">
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, (<xref ref-type="disp-formula" rid="e12">Eq. 12</xref>) can be written as a linear time invariant system<disp-formula id="e13">
<mml:math id="m47">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>I</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mi>&#x3b7;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>I</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mi>v</mml:mi>
<mml:mo>.</mml:mo>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>From there, <italic>n</italic> decoupled systems can be obtained from (<xref ref-type="disp-formula" rid="e13">Eq. 13</xref>),<disp-formula id="e14">
<mml:math id="m48">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>F</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>G</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mi>i</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>n</mml:mi>
<mml:mo>,</mml:mo>
</mml:math>
<label>(14)</label>
</disp-formula>where <inline-formula id="inf34">
<mml:math id="m49">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, <inline-formula id="inf35">
<mml:math id="m50">
<mml:mi>F</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>, and <italic>G</italic>&#x20;&#x3d; [0 1]<sup>
<italic>&#x22a4;</italic>
</sup>.</p>
<p>It should be noted that the derivative of the tracking error in (<xref ref-type="disp-formula" rid="e14">Eq. 14</xref>) can be obtained from <inline-formula id="inf36">
<mml:math id="m51">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf37">
<mml:math id="m52">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>. Indeed, we can measure <inline-formula id="inf38">
<mml:math id="m53">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> and we know <italic>&#x3bc;</italic> from the ProMP. Since <italic>&#x3bc;</italic> is a stored trajectory there is no noise in this signal. Therefore, <inline-formula id="inf39">
<mml:math id="m54">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> can be calculated via backwards difference and it can be made as smooth as necessary (i.e.,&#x20;by creating spline curve from fit points in <italic>&#x3bc;</italic>). Moreover, the backward difference method is again used for approximating <inline-formula id="inf40">
<mml:math id="m55">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bc;</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, in (<xref ref-type="disp-formula" rid="e10">Eq. 10</xref>) and (<xref ref-type="disp-formula" rid="e11">Eq.&#x20;11</xref>).</p>
<p>To accomplish problem objective 3, it is sufficient to ensure <italic>e</italic>
<sub>
<italic>i</italic>
</sub> &#x2192; 0. This is accomplished by designing an appropriate CLF. To satisfy problem objective 4, it is adequate to make &#x7c;<italic>e</italic>
<sub>
<italic>i</italic>
</sub>&#x7c; &#x3c; <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub>. This objective is satisfied by defining suitable CBFs. In the following subsections, the CLFs and CBFs are defined for the system in (<xref ref-type="disp-formula" rid="e14">Eq. 14</xref>). Moreover, the <italic>i</italic>th controller for each system in (<xref ref-type="disp-formula" rid="e14">Eq. 14</xref>) is designed by combining the corresponding CLFs and CBFs <italic>via</italic> a QP problem.</p>
</sec>
<sec id="s3-2">
<title>3.2 Control Lyapunov Function</title>
<p>Consider the following rapidly exponentially stabilizing-CLF (RES-CLF) (<xref ref-type="bibr" rid="B38">Zhao et&#x20;al., 2014</xref>),<disp-formula id="e15">
<mml:math id="m56">
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mi>P</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(15)</label>
</disp-formula>where <italic>&#x3f5;</italic>
<sub>
<italic>i</italic>
</sub> is a positive scalar and <inline-formula id="inf41">
<mml:math id="m57">
<mml:mi>P</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:mo>&#xd7;</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is a symmetric positive definite matrix that can be obtained by solving the continuous time algebraic Riccati equation<disp-formula id="e16">
<mml:math id="m58">
<mml:msup>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>P</mml:mi>
<mml:mi>F</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>P</mml:mi>
<mml:mi>G</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mi>P</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>I</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>In order to exponentially stabilize the system, we want to find <italic>v</italic>
<sub>
<italic>i</italic>
</sub> such that<disp-formula id="e17">
<mml:math id="m59">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</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:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2264;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(17)</label>
</disp-formula>where <italic>c</italic>
<sub>3<italic>i</italic>
</sub> is a positive constant value. To guarantee a feasible solution for the QP, the CLF constraint can be relaxed by <italic>&#x3b4;</italic>
<sub>
<italic>i</italic>
</sub> &#x3e; 0 (<xref ref-type="bibr" rid="B1">Ames et&#x20;al., 2014</xref>) resulting in<disp-formula id="e18">
<mml:math id="m60">
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</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:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>This relaxation parameter will be minimized in the QP cost function. It is worth mentioning that by providing a weighting factor on the relaxation parameter <italic>&#x3b4;</italic>
<sub>
<italic>i</italic>
</sub>, the QP can prioritize how close the system should track of a specific trajectory while ensuring that safety is always satisfied.</p>
</sec>
<sec id="s3-3">
<title>3.3 Control Barrier Functions</title>
<p>We propose two safety constraints for each system in (<xref ref-type="disp-formula" rid="e14">Eq. 14</xref>). More specifically, each system should satisfy &#x2212; <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub> &#x3c; <italic>e</italic>
<sub>
<italic>i</italic>
</sub> &#x3c; <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub>. Consequently, we have the following two safety constraints,<disp-formula id="e19">
<mml:math id="m61">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(19)</label>
</disp-formula>
</p>
<p>In this work, we assume that the initial conditions satisfy the safety constraints, i.e.,&#x20;the initial tracking errors are in the safe region. From (<xref ref-type="disp-formula" rid="e19">Eq. 19</xref>), it is clear that we have multiple time-varying constraints that should be satisfied simultaneously. Moreover, it is trivial to verify that <italic>L</italic>
<sub>
<italic>G</italic>
</sub>
<italic>e</italic>
<sub>
<italic>i</italic>
</sub> &#x3d; 0 and <italic>L</italic>
<sub>
<italic>F</italic>
</sub>
<italic>L</italic>
<sub>
<italic>G</italic>
</sub>
<italic>e</italic>
<sub>
<italic>i</italic>
</sub> &#x2260; 0, thus the safety constraint has a relative degree of 2. For relative degree-two constraints, the reciprocal CBF is defined as (<xref ref-type="bibr" rid="B13">Hsu et&#x20;al., 2015</xref>),<disp-formula id="e20">
<mml:math id="m62">
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>ln</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>E</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:math>
<label>(20)</label>
</disp-formula>where <italic>j</italic>&#x20;&#x2208; {1, 2} and <italic>a</italic>
<sub>
<italic>Eij</italic>
</sub>, <italic>b</italic>
<sub>
<italic>Eij</italic>
</sub> are positive scalars. The following control barrier condition should be satisfied for time varying constraints which leads to time varying CBFs,<disp-formula id="e21">
<mml:math id="m63">
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</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:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</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:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2264;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:math>
<label>(21)</label>
</disp-formula>
</p>
<p>
<statement content-type="remark" id="Remark_2">
<label>Remark 2</label>
<p>Note that by choosing small values for <italic>a</italic>
<sub>
<italic>Eij</italic>
</sub> and <italic>b</italic>
<sub>
<italic>Eij</italic>
</sub>, the system will stop far from the constraint surfaces. On the other hand, by choosing large parameters the system will stop close to the constraints. In some cases, especially in the presence of uncertainties, choosing <italic>a</italic>
<sub>
<italic>Eij</italic>
</sub> and <italic>b</italic>
<sub>
<italic>Eij</italic>
</sub> to be too large may cause constraint violations (i.e.,&#x20;no solution exists to the QP problem). As a result, based on the given application, a compromise must be considered for choosing these parameters.</p>
</statement>
</p>
</sec>
<sec id="s3-4">
<title>3.4 Quadratic Program</title>
<p>As shown in (<xref ref-type="disp-formula" rid="e19">Eq. 19</xref>), two safety constraints need to be satisfied simultaneously for each linearized, decoupled system. Due to this fact, a single controller can be obtained in such a way that guarantees adherence to both constraints (<xref ref-type="bibr" rid="B28">Rauscher et&#x20;al., 2016</xref>). In this subsection, <italic>n</italic> QPs are proposed to unify RES-CLF and CBFs for each system in (<xref ref-type="disp-formula" rid="e14">Eq. 14</xref>) into a single controller. The <italic>n</italic> QPs for <italic>i</italic>&#x20;&#x2208; {1, &#x2026; , <italic>n</italic>} are defined as<disp-formula id="e22">
<mml:math id="m64">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="56.9055pt"/>
<mml:munder>
<mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mi mathvariant="normal">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mspace width="0.17em"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.3333em"/>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mi mathvariant="normal">u</mml:mi>
<mml:mi mathvariant="normal">b</mml:mi>
<mml:mi mathvariant="normal">j</mml:mi>
<mml:mi mathvariant="normal">e</mml:mi>
<mml:mi mathvariant="normal">c</mml:mi>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mi mathvariant="normal">o</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</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:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2264;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="normal">C</mml:mi>
<mml:mi mathvariant="normal">L</mml:mi>
<mml:mi mathvariant="normal">F</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</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:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2264;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>B</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b7;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mspace width="0.17em"/>
<mml:mspace width="0.17em"/>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="normal">C</mml:mi>
<mml:mi mathvariant="normal">B</mml:mi>
<mml:mi mathvariant="normal">F</mml:mi>
<mml:mi mathvariant="normal">s</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(22)</label>
</disp-formula>where <inline-formula id="inf42">
<mml:math id="m65">
<mml:msub>
<mml:mrow>
<mml:mi>H</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula> and <inline-formula id="inf43">
<mml:math id="m66">
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>i</mml:mi>
</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> is a variable that can be chosen based on the designer&#x2019;s assessment of weighting the control inputs. Based on the QP problem, if the system states <italic>&#x3b7;</italic>
<sub>
<italic>i</italic>
</sub> are far away from the boundary of the safe set, then the control objective that is represented by RES-CLF will be satisfied. However, as the states get close to the boundary the control performance will be violated by the&#x20;CBF.</p>
<p>
<statement content-type="remark" id="Remark_3">
<label>Remark 3</label>
<p>If feedback linearization is not feasible, or in the case that feedback linearization does not result in independent systems, we should encode the coupling between the joints to train a single ProMP for the multidimensional system. Our proposed approach can be extended to address such cases by defining the safety constraints based on the entire ProMP covariance matrix, not just the diagonal elements. This is an avenue of future exploration.</p>
</statement>
</p>
</sec>
</sec>
<sec id="s4">
<title>4 Simulations and Experiments</title>
<p>In this section, we demonstrate different aspects and capabilities of our methodology for the ProMP control of a robotic system <italic>via</italic> simulations and experiments. The system models and proposed real-time controller were implemented in a MATLAB 2019a environment. All computations were run on a Dell OptiPlex 7050 machine with an Intel Core i7-7700X CPU and 8&#xa0;GB of memory.</p>
<sec id="s4-1">
<title>4.1 Case Study 1: Two-Link Robot</title>
<p>We consider a rigid, two-link robot with the dynamic model of (<xref ref-type="disp-formula" rid="e5">Eq. 5</xref>) and the following parameters (<xref ref-type="bibr" rid="B17">Kolhe et&#x20;al., 2013</xref>),<disp-formula id="equ2">
<mml:math id="m67">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>D</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22c6;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>
<disp-formula id="equ3">
<mml:math id="m68">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>C</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<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:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mi>g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi>g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi>g</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2061;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>where <italic>m</italic>
<sub>1</sub> and <italic>m</italic>
<sub>2</sub> are the link masses, <italic>l</italic>
<sub>1</sub> and <italic>l</italic>
<sub>2</sub> are the lengths of the links, and <italic>g</italic> is the gravitational acceleration. For the simulations, the values of these variables are selected as <italic>m</italic>
<sub>1</sub> &#x3d; 1, <italic>m</italic>
<sub>2</sub> &#x3d; 1, <italic>l</italic>
<sub>1</sub> &#x3d; 1, <italic>l</italic>
<sub>2</sub> &#x3d; 1, and <italic>g</italic>&#x20;&#x3d;&#x20;9.8.</p>
<p>We generated 50 trajectories that achieve a goal position from various starting positions while avoiding three obstacles. Using this dataset, we trained a ProMP with Algorithm 1 from (<xref ref-type="bibr" rid="B10">Gomez-Gonzalez et&#x20;al., 2020</xref>). We used <italic>L</italic>&#x20;&#x3d; 2 basis functions consisting of five radial basis parameters. The results of the ProMP training are presented in <xref ref-type="fig" rid="F3">Figure&#x20;3</xref>, where the 50 input trajectories are shown in red. The ProMP mean joint trajectories, <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>, are shown in dark green, and in a light-green fill we show <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>&#x20;&#xb1; <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub>. A visualization of the ProMP in the workspace, based on (<xref ref-type="bibr" rid="B29">Sakai et&#x20;al., 2018</xref>), is displayed in <xref ref-type="fig" rid="F4">Figure&#x20;4</xref>, where the black circles indicate the location of obstacles. The robot link positions over time are highlighted in red, with different colors representing key end-effector trajectories from the ProMP. The green trajectory is the mean of the ProMP distribution. The other four trajectories result from combinations of <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>&#x20;&#xb1; <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub>, <italic>i</italic>&#x20;&#x2208; {1,&#x20;2}.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Training of the CLF/CBF-based ProMPs for the first joint (left) and second joint (right). The 50 input trajectories are shown in red, and the ProMP mean joint trajectories (<italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>) are shown in dark green. A light-green fill shows <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>&#x20;&#xb1; <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub>. Copyright 2021 IEEE. Reprinted, with permission, from <xref ref-type="bibr" rid="B39">Davoodi et&#x20;al., 2021</xref>.</p>
</caption>
<graphic xlink:href="frobt-09-772228-g003.tif"/>
</fig>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>A visualization of the two-link CLF/CBF-based ProMP joint trajectories in the robot workspace. The robot link positions over time are shown in red, while the end-effector trajectory following the mean ProMP joint trajectories is shown in green. The four trajectories of the end effector with joint combinations <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>&#x20;&#xb1; <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub>, <italic>i</italic>&#x20;&#x2208;{1,2} are illustrated in cyan, blue, yellow and magenta. The black circles correspond to obstacles. Copyright 2021 IEEE. Reprinted, with permission, from <xref ref-type="bibr" rid="B39">Davoodi et&#x20;al., 2021</xref>.</p>
</caption>
<graphic xlink:href="frobt-09-772228-g004.tif"/>
</fig>
<p>Three sets of simulations were conducted. In each simulation, the CLF parameters were selected as <italic>&#x3f5;</italic>
<sub>
<italic>i</italic>
</sub> &#x3d; 0.1 and <italic>c</italic>
<sub>3<italic>i</italic>
</sub> &#x3d; 0.5. In scenario 1, greater priority was given to the CLF than CBF by choosing a high weight, i.e.,&#x20;<italic>p</italic>
<sub>
<italic>sc</italic>1</sub> &#x3d; <italic>p</italic>
<sub>
<italic>sc</italic>2</sub> &#x3d; 200. Moreover, the CBF design parameters were set to <italic>a</italic>
<sub>
<italic>E</italic>11</sub> &#x3d; <italic>a</italic>
<sub>
<italic>E</italic>12</sub> &#x3d; 20.1, <italic>a</italic>
<sub>
<italic>E</italic>21</sub> &#x3d; <italic>a</italic>
<sub>
<italic>E</italic>22</sub> &#x3d; 20, <italic>b</italic>
<sub>
<italic>E</italic>11</sub> &#x3d; <italic>b</italic>
<sub>
<italic>E</italic>12</sub> &#x3d; 1, <italic>b</italic>
<sub>
<italic>E</italic>21</sub> &#x3d; <italic>b</italic>
<sub>
<italic>E</italic>22</sub> &#x3d; 0.9, <italic>&#x3b3;</italic>
<sub>1</sub> &#x3d; 10.1, and <italic>&#x3b3;</italic>
<sub>2</sub> &#x3d; 9. In scenario 2, <italic>p</italic>
<sub>
<italic>sci</italic>
</sub> was chosen as <italic>p</italic>
<sub>
<italic>sc</italic>1</sub> &#x3d; <italic>p</italic>
<sub>
<italic>sc</italic>2</sub> &#x3d; 0.02 which implies that less priority was given to the CLF in comparison with the CBF. Moreover, the CBF parameters in this scenario are the same as the first scenario. To show the effects of changing the CBF parameters <italic>a</italic>
<sub>
<italic>Eij</italic>
</sub>, <italic>b</italic>
<sub>
<italic>Eij</italic>
</sub>, and <italic>&#x3b3;</italic>
<sub>
<italic>i</italic>
</sub>, we consider another scenario. In scenario 3, <italic>a</italic>
<sub>
<italic>E</italic>11</sub> &#x3d; <italic>a</italic>
<sub>
<italic>E</italic>12</sub> &#x3d; 1.1, <italic>a</italic>
<sub>
<italic>E</italic>21</sub> &#x3d; <italic>a</italic>
<sub>
<italic>E</italic>22</sub> &#x3d; 1.1, <italic>b</italic>
<sub>
<italic>E</italic>11</sub> &#x3d; <italic>b</italic>
<sub>
<italic>E</italic>12</sub> &#x3d; 0.4, <italic>b</italic>
<sub>
<italic>E</italic>21</sub> &#x3d; <italic>b</italic>
<sub>
<italic>E</italic>22</sub> &#x3d; 0.5, <italic>&#x3b3;</italic>
<sub>1</sub> &#x3d; 1.3, and <italic>&#x3b3;</italic>
<sub>2</sub> &#x3d; 1.51, with <italic>p</italic>
<sub>
<italic>sci</italic>
</sub> &#x3d; 0.02 as in the second scenario. Consequently, the effects of changing the CBF parameters can be analyzed by comparing the second and third scenarios.</p>
<p>The simulation results are exhibited in <xref ref-type="fig" rid="F5">Figure&#x20;5</xref>. In scenario 1, by choosing a large value for <italic>p</italic>
<sub>
<italic>sci</italic>
</sub> (more priority given to the CLF than CBF), the system output remains close to the mean trajectory. However, in scenario 2, by considering a small value for <italic>p</italic>
<sub>
<italic>sci</italic>
</sub> (more priority given to the CBF than CLF), the system remains safely inside the distribution but does not necessarily stay close to the mean. In scenario 3, it can be seen that by choosing smaller values for <italic>a</italic>
<sub>
<italic>Eij</italic>
</sub>, <italic>b</italic>
<sub>
<italic>Eij</italic>
</sub>, and <italic>&#x3b3;</italic>
<sub>
<italic>i</italic>
</sub>, the system output will maintain more distance from the constraint surfaces, resulting in remaining closer to the mean trajectory. In short, our proposed method provides a valuable option to the system designer by permitting fine-grained administration of the trajectories while ensuring safety.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>The results of the CLF/CBF-based ProMP controller for the first joint (left) and second joint (right). The safe region of <italic>&#x3bc;</italic>
<sub>
<italic>i</italic>
</sub>&#x20;&#xb1; <italic>&#x3c3;</italic>
<sub>
<italic>i</italic>
</sub>, <italic>i</italic>&#x20;&#x2208;{1, 2} is shown as a filled &#x201c;tube.&#x201d; The control results in different trajectories for distinct values of the weight <italic>p</italic>
<sub>
<italic>sci</italic>
</sub>, however all trajectories remain&#x20;safe. Copyright 2021 IEEE. Reprinted, with permission, from <xref ref-type="bibr" rid="B39">Davoodi et&#x20;al., 2021</xref>.</p>
</caption>
<graphic xlink:href="frobt-09-772228-g005.tif"/>
</fig>
<p>The primary computational cost of our controller, with respect to time, comes from the fact that it must solve a set of QPs at every time step. In the evaluation simulations, two QP problems are solved in real time (one for each link). The average required time (<italic>T</italic>
<sub>ave</sub>), maximum time (<italic>T</italic>
<sub>max</sub>), and the standard deviation (std) for solving the QP problems are <italic>T</italic>
<sub>ave</sub> &#x3d; {0.0 015<italic>s</italic>, 0.0 011<italic>s</italic>}, <italic>T</italic>
<sub>max</sub> &#x3d; {0.1 148<italic>s</italic>, 0.0 119<italic>s</italic>}, std &#x3d; {0.0 053<italic>s</italic>, 0.0 006<italic>s</italic>}. From these results, it is clear that the expected execution time of the QP problems is very small (e.g., in the range of 1&#xa0;ms). The large maximum times correspond to instances of a single outlier. Hence, the controller is applicable for real-time implementation.</p>
</sec>
<sec id="s4-2">
<title>4.2 Comparison With Conventional ProMP Control</title>
<p>One specific aspect of the CLF/CBF-based ProMP controller developed in this work is minimizing the control effort in the optimization problem (<xref ref-type="disp-formula" rid="e22">Eq. 22</xref>) at each time step. This leads to a lower control effort in comparison with a traditional ProMP controller. Another set of simulations were conducted to compare our proposed methodology with the results of (<xref ref-type="bibr" rid="B26">Paraschos et&#x20;al., 2018a</xref>; <xref ref-type="bibr" rid="B23">Mathew, 2018</xref>), which is representative as one of the primary works in this field. To provide a fair comparison with our method, the ProMP controller is also applied to the feedback linearizable model of the two-link&#x20;robot.</p>
<p>We conducted three sets of simulations (designated as the fourth, fifth and sixth scenarios). In scenario 4, we implemented the CLF/CBF-based controller with more priority accorded to the CLF rather than the CBF (similar to scenario 1). In scenario 5, we considered the CLF/CBF-based controller with more priority bestowed to the CBF instead of the CLF (similar to scenario 2). The ProMPs in scenarios 4 and 5 were trained using the library in (<xref ref-type="bibr" rid="B11">Gomez-Gonzalez, 2019</xref>). However, we were not able to successfully implement the original controller in (<xref ref-type="bibr" rid="B11">Gomez-Gonzalez, 2019</xref>). Therefore, in scenario 6, we trained and implemented the traditional ProMP controller presented in (<xref ref-type="bibr" rid="B26">Paraschos et&#x20;al., 2018a</xref>) using the library presented in (<xref ref-type="bibr" rid="B23">Mathew, 2018</xref>). While the ProMPs for our CLF/CBF-based ProMP controller and traditional ProMP controller used the same training set, the resulting ProMP mean and covariance are slightly different. For each scenario, the simulations were run for 100 different initial conditions that were randomly selected within the bound [<italic>&#x3bc;</italic>
<sub>1</sub>&#x20;&#xb1; 0.12, <italic>&#x3bc;</italic>
<sub>2</sub>&#x20;&#xb1; 0.12], where <italic>&#x3bc;</italic>
<sub>1</sub> (0) &#x3d; &#x2212; 1.292 5, and <italic>&#x3bc;</italic>
<sub>2</sub> (0) &#x3d;&#x20;0.6.</p>
<p>The simulation results corresponding to these three scenarios are, respectively, shown in <xref ref-type="fig" rid="F6">Figures 6</xref>&#x2013;<xref ref-type="fig" rid="F8">8</xref>, where the mean of ProMP is highlighted by a dashed orange line, and the mean&#x20;&#xb1; variance bounds are shown with dotted black lines. These results show that all the controllers are robust against uncertainties in the initial conditions. From <xref ref-type="fig" rid="F6">Figure&#x20;6</xref>, it can be concluded that by using the CLF/CBF-based controller with high <italic>p</italic>
<sub>
<italic>sci</italic>
</sub>, the system quickly converges and tracks the mean trajectory. The system deviates from the mean to take a shorter path in <xref ref-type="fig" rid="F7">Figure&#x20;7</xref>, but it is clear that by considering small values for <italic>p</italic>
<sub>
<italic>sci</italic>
</sub> the system remains safely inside the distribution. Based on <xref ref-type="fig" rid="F8">Figure&#x20;8</xref>, it can be seen that when using a traditional ProMP controller, the system tracks the mean with an error larger than scenario 4. Moreover, the second joint does not remain inside the distribution during certain periods. We posit that the ProMP controller has some lag, akin to a PID controller with proportional gains that are too low. The feedback and feedforward gains of the ProMP controller are determined as functions of the system parameters and ProMP parameters, and they cannot be tuned to reduce tracking error. The ProMP can be &#x201c;tuned&#x201d; through the use of <italic>via</italic> points. To this end, we have added a <italic>via</italic> point as the last element of the mean trajectory to ensure convergence. These results show that the CLF/CBF-based ProMP controller has better tracking performance when compared to a traditional ProMP controller.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>The results of the CLF/CBF-based ProMP controller with more priority given to the CLF than the CBF for the first joint (left) and second joint (right).</p>
</caption>
<graphic xlink:href="frobt-09-772228-g006.tif"/>
</fig>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>The results of the CLF/CBF-based ProMP controller with more priority given to the CBF than the CLF for the first joint (left) and second joint (right).</p>
</caption>
<graphic xlink:href="frobt-09-772228-g007.tif"/>
</fig>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>The results of a traditional ProMP controller for the first joint (left) and second joint (right).</p>
</caption>
<graphic xlink:href="frobt-09-772228-g008.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F9">Figure&#x20;9</xref> and <xref ref-type="fig" rid="F10">Figure&#x20;10</xref> summarize the root mean square (RMS) values of the control variables for scenarios 4, 5, and 6 in the form of a boxplot. In these figures, 50% of all the RMS values are placed in the boxes and the median is shown by a red line that divides the box into two parts. The black bars indicate the maximum and minimum values, and the dashed &#x201c;whiskers&#x201d; indicate 25% of the values between the box and max/min. Outliers, if any, are indicated by red crosses. From <xref ref-type="fig" rid="F9">Figure&#x20;9</xref>, it can be concluded that scenario 4 has larger control values in comparison to scenario 5, i.e.,&#x20;more control effort is needed to be able to effectively track the ProMP mean. This indicates one strength of leveraging trajectory distributions over a single trajectory; the system is given more freedom to reduce the control effort while maintaining safety. Moreover, in contrast with a traditional ProMP controller our methodology has a remarkably lower control effort as shown in <xref ref-type="fig" rid="F9">Figure&#x20;9</xref> and <xref ref-type="fig" rid="F10">Figure&#x20;10</xref>.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>The RMS values of control inputs corresponding to the CLF/CBF-based ProMP controller for the fourth scenario (left) and the fifth scenario (right).</p>
</caption>
<graphic xlink:href="frobt-09-772228-g009.tif"/>
</fig>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>The RMS values of control inputs corresponding to a traditional ProMP controller for the first joint (left) and second joint (right).</p>
</caption>
<graphic xlink:href="frobt-09-772228-g010.tif"/>
</fig>
</sec>
<sec id="s4-3">
<title>4.3 Case Study 2: Universal Robots UR5&#x20;Six-Link Robot</title>
<p>The equation of motion of the UR5 robot can be written in the form of (<xref ref-type="disp-formula" rid="e5">Eq. 5</xref>), with the following parameters (<xref ref-type="bibr" rid="B32">Spong and Vidyasagar, 2008</xref>),<disp-formula id="e23">
<mml:math id="m69">
<mml:mi>D</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x22a4;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(23)</label>
</disp-formula>where <inline-formula id="inf44">
<mml:math id="m70">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> is the mass of <italic>i</italic>th link, and <inline-formula id="inf45">
<mml:math id="m71">
<mml:msub>
<mml:mrow>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> and <inline-formula id="inf46">
<mml:math id="m72">
<mml:msub>
<mml:mrow>
<mml:mi>J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> are the linear and angular part of the Jacobian matrix <italic>J</italic>
<sub>
<italic>i</italic>
</sub>, respectively. <inline-formula id="inf47">
<mml:math id="m73">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is the rotation matrix and <inline-formula id="inf48">
<mml:math id="m74">
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is the inertia tensor. The elements of <inline-formula id="inf49">
<mml:math id="m75">
<mml:mi>C</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> are obtained from the inertia matrix as<disp-formula id="e24">
<mml:math id="m76">
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="false">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:munderover>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(24)</label>
</disp-formula>where <italic>m</italic>
<sub>
<italic>ij</italic>
</sub> are the entries of the inertia matrix. Moreover, the elements of the gravity vector are obtained from<disp-formula id="e25">
<mml:math id="m77">
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi mathvariant="script">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>q</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:math>
<label>(25)</label>
</disp-formula>where <inline-formula id="inf50">
<mml:math id="m78">
<mml:mi mathvariant="script">P</mml:mi>
</mml:math>
</inline-formula> is the total potential energy of the robot. Additional information on these equations can be found in (<xref ref-type="bibr" rid="B15">Katharina, 2014</xref>).</p>
<p>We generated 90&#x20;joint-space trajectories with defined goals, obstacles, and starting positions. The 90 UR5 trajectories were then used to train a joint-space ProMP using the same parameters as in the two-link robot case study. The following set of CLF and CBF parameters were chosen: <italic>&#x3f5;</italic>
<sub>1</sub> &#x3d; <italic>&#x3f5;</italic>
<sub>2</sub> &#x3d; <italic>&#x3f5;</italic>
<sub>3</sub> &#x3d; <italic>&#x3f5;</italic>
<sub>4</sub> &#x3d; <italic>&#x3f5;</italic>
<sub>5</sub> &#x3d; 0.1, <italic>&#x3f5;</italic>
<sub>6</sub> &#x3d; 0.01, and <italic>c</italic>
<sub>3<italic>i</italic>
</sub> &#x3d; 1.1, <italic>a</italic>
<sub>
<italic>Eij</italic>
</sub> &#x3d; 20.1, <italic>b</italic>
<sub>
<italic>Eij</italic>
</sub> &#x3d; 1, and <italic>&#x3b3;</italic>
<sub>
<italic>i</italic>
</sub> &#x3d; 10.1, <italic>i</italic>&#x20;&#x2208; {1, &#x2026; , 6}, <italic>j</italic>&#x20;&#x2208; {1, 2}. The simulation environment is depicted in <xref ref-type="fig" rid="F1">Figure&#x20;1</xref> and <xref ref-type="fig" rid="F11">Figure&#x20;11</xref>. We consider two different scenarios. In scenario 1, <italic>p</italic>
<sub>
<italic>sci</italic>
</sub> &#x3d; 200, which gives higher importance to the CLF. For scenario 2, <italic>p</italic>
<sub>
<italic>sci</italic>
</sub> &#x3d; 0.001, which implies that the design interest and priority is on the CBF. As is clear from <xref ref-type="fig" rid="F11">Figure&#x20;11</xref>, in both scenarios the robot can effectively track the mean of ProMP and simultaneously avoid colliding with environmental obstacles. The running time statistics for solving the QP problems are <italic>T</italic>
<sub>ave</sub> &#x3d; [0.001 4, 0.001 1, 0.001 0, 0.001 0, 0.001 1, 0.001 0], <italic>T</italic>
<sub>max</sub> &#x3d; [0.119 3, 0.012 0, 0.012 8, 0.005 8, 0.031 4, 0.002 8], std &#x3d; [0.005 3, 0.000 5, 0.000 5, 0.000 3, 0.001 4, 0.000 2]. The large maximum values are again due to a single outlier. Thus, the expected operational time is well within the demands of a robotic system. The cause of the outlier occurrences is an avenue of future research to offer improved performance guarantees.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>The results of the CLF/CBF-based ProMP controller for a UR5&#x20;robot. Copyright 2021 IEEE. Reprinted, with permission, from <xref ref-type="bibr" rid="B39">Davoodi et&#x20;al., 2021</xref>.</p>
</caption>
<graphic xlink:href="frobt-09-772228-g011.tif"/>
</fig>
</sec>
<sec id="s4-4">
<title>4.4 Case Study 3: Universal Robots UR5e Six-Link Robot</title>
<p>To conclude this section, we evaluated our CLF/CBF-based ProMP controller using a physical robot with static obstacles. The robot used was a Universal Robots UR5e six-link manipulator with a Robotiq two-finger gripper. In addition to the robot, our environmental setup included the following three static obstacles: a robotic arm, box, and the table that the robot was mounted&#x20;on.</p>
<p>We tasked a human teacher with demonstrating a pick-and-place procedure to the robot. In our setup, the robot must move from a starting bin to a goal bin located on the other side of a box. We installed a gravity compensation controller on the robot enabling the teacher to directly affect the robot&#x2019;s joints via kinesthetic teaching. Using this directed learning from demonstration approach allows us to bypass the correspondence problem (<xref ref-type="bibr" rid="B4">Argall et&#x20;al., 2009</xref>). Additionally, kinesthetic teaching retains parity between the demonstration, learning, and execution space of the trajectories. In all, seven demonstrations of the task were conducted. From these demonstrations, we collected the joint angles, velocities, and the associated time steps. It is worth mentioning that care must be taken to collect data that is roughly Gaussian, or at least unimodal. Methods to handle non-Gaussian or multimodal data is an issue to be addressed in future&#x20;work.</p>
<p>Using this demonstration data, we trained a joint-space ProMP using the same parameters as described in the previous sections. In <xref ref-type="fig" rid="F12">Figure&#x20;12</xref>, we see the demonstration data (in green), the respective ProMP mean (red), and one standard deviation of the ProMP (light red). Note that <italic>q</italic>
<sub>6</sub>, which corresponds to the final wrist joint, was not purposefully actuated by the teacher and is largely static during training. We implemented the CLF/CBF-based ProMP controller with <italic>p</italic>
<sub>
<italic>sci</italic>
</sub> &#x3d; 0.5. The other parameters were selected to be the same as the previous simulations in <xref ref-type="sec" rid="s4-3">Section 4.3</xref>. <xref ref-type="fig" rid="F13">Figure&#x20;13</xref> depicts the demonstration operation as the human teacher moves the robot arm during the task. The trajectory from the CLF/CBF-based ProMP controller on the UR5e robot is shown in <xref ref-type="fig" rid="F14">Figure&#x20;14</xref>.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>The UR5e robot joint trajectories recorded from the human demonstration of the pick-and-place task are shown in green, while the ProMP mean trajectory and one standard deviation of the ProMP are colored red and light red, respectively.</p>
</caption>
<graphic xlink:href="frobt-09-772228-g012.tif"/>
</fig>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>A human teacher demonstrating the pick-and-place task to a UR5e&#x20;robot.</p>
</caption>
<graphic xlink:href="frobt-09-772228-g013.tif"/>
</fig>
<fig id="F14" position="float">
<label>FIGURE 14</label>
<caption>
<p>A UR5e robot executing the CLF/CBF-based ProMP controller trajectory.</p>
</caption>
<graphic xlink:href="frobt-09-772228-g014.tif"/>
</fig>
</sec>
</sec>
<sec id="s5">
<title>5 Conclusion and Future Work</title>
<p>In this work we solved a ProMP robot guidance problem using a CLF/CBF-based controller. Our approach stabilizes the robot and guarantees that the system output is always inside the distribution generated by a ProMP. The time-varying nature of the ProMP ensures the robot is guided along the distribution at the desired rate. Moreover, our technique allows for prioritizing between strict tracking of ProMP mean and loose but safe tracking of mean trajectory, which is not possible in the native ProMP control design. It was shown, in <xref ref-type="sec" rid="s4-2">Section 4.2</xref>, that this can reduce control effort at the risk of getting closer to barriers. Simulation and experimental studies on a two-link and six-link robot confirm the viability of our method for designing the controller.</p>
<p>As part of ongoing work, we are investigating the trade-offs of various different CBFs (e.g., zeroing versus reciprocal), other choices of cost functions, and constraints in the QP. Additionally, we are seeking novel methods that automatically define additional barriers to ensure the safe movement of a co-robot around dynamic obstacles (e.g., humans and other robots). This includes the exploration of an active learning framework whereby a co-robot has the capability to select informative trajectories from the ProMP distribution that can then be used for autonomously retraining itself.</p>
</sec>
</body>
<back>
<sec id="s6">
<title>Data Availability Statement</title>
<p>The data used in this research includes simulation and experimental results. The authors will provide it upon reasonable request.</p>
</sec>
<sec id="s7">
<title>Author Contributions</title>
<p>MD lead theoretical development and implementation of CBF/CLF controller. AI lead implementation of ProMP controllers. JC implemented ProMP algorithms and conducted simulations and experiments. WB lead theoretical developments of ProMP and contributed to CLF and CBF design. NG directed the research overall and lead theoretical design of nonlinear control theory. All authors contributed to writing and editing the manuscript and contributed to the theoretical development and analysis of experimental and simulation results.</p>
</sec>
<sec id="s8">
<title>Funding</title>
<p>This material is based upon work supported by the National Science Foundation (NSF) under Grant No. 1728057 and the University of Texas at Arlington Research Institute. JC was supported by an NSF Graduate Research Fellowship under Grant No. 1746052 and a Tau Beta Pi Fellowship.</p>
</sec>
<sec sec-type="COI-statement" id="s9">
<title>Conflict of Interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s10">
<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 control designer would confirm that the system has the same number of inputs as outputs and verify that <italic>e</italic> satisfies a vector relative degree (<xref ref-type="bibr" rid="B16">Kolavennu et&#x20;al., 2001</xref>) condition, typically vector relative degree 2. This implies that the decoupling matrix &#x393; is well-defined and nonsingular.</p>
</fn>
</fn-group>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Ames</surname>
<given-names>A. D.</given-names>
</name>
<name>
<surname>Grizzle</surname>
<given-names>J.&#x20;W.</given-names>
</name>
<name>
<surname>Tabuada</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Control Barrier Function Based Quadratic Programs with Application to Adaptive Cruise Control</article-title>,&#x201d; in <conf-name>Proceedings of the IEEE Conference on Decision and Control</conf-name>, <conf-loc>Los Angeles, CA, USA</conf-loc>, <conf-date>December 2014</conf-date>, <fpage>6271</fpage>&#x2013;<lpage>6278</lpage>. <pub-id pub-id-type="doi">10.1109/cdc.2014.7040372</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.&#x20;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>. <pub-id pub-id-type="doi">10.1109/TAC.2016.2638961</pub-id> </citation>
</ref>
<ref id="B3">
<citation citation-type="confproc">
<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>Proceedings of the European Control Conference</conf-name>, <conf-loc>Naples, Italy</conf-loc>, <conf-date>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="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Argall</surname>
<given-names>B. D.</given-names>
</name>
<name>
<surname>Chernova</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Veloso</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Browning</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2009</year>). <article-title>A Survey of Robot Learning from Demonstration</article-title>. <source>Robotics Autonomous Syst.</source> <volume>57</volume>, <fpage>469</fpage>&#x2013;<lpage>483</lpage>. <pub-id pub-id-type="doi">10.1016/j.robot.2008.10.024</pub-id> </citation>
</ref>
<ref id="B5">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Calinon</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2017</year>). &#x201c;<article-title>Learning Control</article-title>,&#x201d; in <source>Humanoid Robotics: A Reference</source>. Editors <person-group person-group-type="editor">
<name>
<surname>Goswami</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Vadakkepat</surname>
<given-names>P.</given-names>
</name>
</person-group> (<publisher-loc>Berlin/Heidelberg, Germany</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>1261</fpage>&#x2013;<lpage>1312</lpage>. <pub-id pub-id-type="doi">10.1007/978-94-007-7194-9_68-1</pub-id> </citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chernova</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Thomaz</surname>
<given-names>A. L.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Robot Learning from Human Teachers</article-title>. <source>Synth. Lectures Artif. Intelligence Machine Learn.</source> <volume>8</volume>, <fpage>1</fpage>&#x2013;<lpage>121</lpage>. <pub-id pub-id-type="doi">10.2200/s00568ed1v01y201402aim028</pub-id> </citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cortez</surname>
<given-names>W. S.</given-names>
</name>
<name>
<surname>Oetomo</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Manzie</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Choong</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Control Barrier Functions for Mechanical Systems: Theory and Application to Robotic Grasping</article-title>. <source>IEEE Trans. Contr. Syst. Technol.</source> <volume>29</volume>, <fpage>530</fpage>&#x2013;<lpage>545</lpage>. <pub-id pub-id-type="doi">10.1109/TCST.2019.2952317</pub-id> </citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dahlin</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Karayiannidis</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Adaptive Trajectory Generation under Velocity Constraints Using Dynamical Movement Primitives</article-title>. <source>IEEE Control. Syst. Lett.</source> <volume>4</volume>, <fpage>438</fpage>&#x2013;<lpage>443</lpage>. <pub-id pub-id-type="doi">10.1109/LCSYS.2019.2946761</pub-id> </citation>
</ref>
<ref id="B39">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Davoodi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Iqbal</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Cloud</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Beski</surname>
<given-names>W. J.</given-names>
</name>
<name>
<surname>Gans</surname>
<given-names>N. R.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>Probabilistic Movement Primitive Control via Control Barrier Functions</article-title>,&#x201d; in <conf-name>2021 IEEE 17th International Conference on Automation Science and Engineering (CASE)</conf-name>, <conf-loc>Lyon, France</conf-loc>, <conf-date>August 23&#x2013;27, 2021</conf-date>, <fpage>697</fpage>&#x2013;<lpage>703</lpage>. <pub-id pub-id-type="doi">10.1109/CASE49439.2021.9551540</pub-id> </citation>
</ref>
<ref id="B9">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Geraerts</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Overmars</surname>
<given-names>M. H.</given-names>
</name>
</person-group> (<year>2004</year>). &#x201c;<article-title>A Comparative Study of Probabilistic Roadmap Planners</article-title>,&#x201d; in <source>Algorithmic Foundations of Robotics V</source>. Editors <person-group person-group-type="editor">
<name>
<surname>Boissonnat</surname>
<given-names>J.-D.</given-names>
</name>
<name>
<surname>Burdick</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Goldberg</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Hutchinson</surname>
<given-names>S.</given-names>
</name>
</person-group> (<publisher-loc>Berlin/Heidelberg, Germany</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>43</fpage>&#x2013;<lpage>57</lpage>. <pub-id pub-id-type="doi">10.1007/978-3-540-45058-0_4</pub-id> </citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gomez-Gonzalez</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Neumann</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Scholkopf</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Peters</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Adaptation and Robust Learning of Probabilistic Movement Primitives</article-title>. <source>IEEE Trans. Robot.</source> <volume>36</volume>, <fpage>366</fpage>&#x2013;<lpage>379</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2019.2937010</pub-id> </citation>
</ref>
<ref id="B11">
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Gomez-Gonzalez</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Probabilistic Movement Primitive Library</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://github.com/sebasutp/promp">https://github.com/sebasutp/promp</ext-link>
</comment>. </citation>
</ref>
<ref id="B12">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Hsu</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Kavraki</surname>
<given-names>L. E.</given-names>
</name>
<name>
<surname>Latombe</surname>
<given-names>J.-C.</given-names>
</name>
<name>
<surname>Motwani</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Sorkin</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>1998</year>). &#x201c;<article-title>On Finding Narrow Passages with Probabilistic Roadmap Planners</article-title>,&#x201d; in <conf-name>Proceedings of the Workshop on the Algorithmic Foundations of Robotics</conf-name>, <conf-loc>Houston Texas USA</conf-loc>, <conf-date>August 1998</conf-date>, <fpage>141</fpage>&#x2013;<lpage>154</lpage>. </citation>
</ref>
<ref id="B13">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Hsu</surname>
<given-names>S.-C.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Ames</surname>
<given-names>A. D.</given-names>
</name>
</person-group> (<year>2015</year>). &#x201c;<article-title>Control Barrier Function Based Quadratic Programs with Application to Bipedal Robotic Walking</article-title>,&#x201d; in <conf-name>Proceedings of the American Control Conference</conf-name>, <conf-loc>Chicago, IL, USA</conf-loc>, <conf-date>July, 2015</conf-date>, <fpage>4542</fpage>&#x2013;<lpage>4548</lpage>. <pub-id pub-id-type="doi">10.1109/acc.2015.7172044</pub-id> </citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ijspeert</surname>
<given-names>A. J.</given-names>
</name>
<name>
<surname>Nakanishi</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Hoffmann</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Pastor</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Schaal</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Dynamical Movement Primitives: Learning Attractor Models for Motor Behaviors</article-title>. <source>Neural Comput.</source> <volume>25</volume>, <fpage>328</fpage>&#x2013;<lpage>373</lpage>. <pub-id pub-id-type="doi">10.1162/neco_a_00393</pub-id> </citation>
</ref>
<ref id="B15">
<citation citation-type="thesis">
<person-group person-group-type="author">
<name>
<surname>Katharina</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Force Estimation in Robotic Manipulators: Modeling, Simulation and Experiments</article-title>,&#x201d; (<publisher-loc>Trondheim, Norway</publisher-loc>: <publisher-name>Norwegian University of Science and Technology</publisher-name>). <comment>Master&#x2019;s thesis</comment>. </citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kolavennu</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Palanki</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Cockburn</surname>
<given-names>J.&#x20;C.</given-names>
</name>
</person-group> (<year>2001</year>). <article-title>Nonlinear Control of Nonsquare Multivariable Systems</article-title>. <source>Chem. Eng. Sci.</source> <volume>56</volume>, <fpage>2103</fpage>&#x2013;<lpage>2110</lpage>. <pub-id pub-id-type="doi">10.1016/s0009-2509(00)00470-x</pub-id> </citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kolhe</surname>
<given-names>J.&#x20;P.</given-names>
</name>
<name>
<surname>Shaheed</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Chandar</surname>
<given-names>T. S.</given-names>
</name>
<name>
<surname>Talole</surname>
<given-names>S. E.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Robust Control of Robot Manipulators Based on Uncertainty and Disturbance Estimation</article-title>. <source>Int. J.&#x20;Robust. Nonlinear Control.</source> <volume>23</volume>, <fpage>104</fpage>&#x2013;<lpage>122</lpage>. <pub-id pub-id-type="doi">10.1002/rnc.1823</pub-id> </citation>
</ref>
<ref id="B18">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Kragic</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Gustafson</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Karaoguz</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Jensfelt</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Krug</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Interactive, Collaborative Robots: Challenges and Opportunities</article-title>,&#x201d; in <conf-name>Proceedings of the International Joint Conference on Artificial Intelligence</conf-name>, <conf-loc>Stockholm Sweden</conf-loc>, <conf-date>July, 2018</conf-date>, <fpage>18</fpage>&#x2013;<lpage>25</lpage>. <pub-id pub-id-type="doi">10.24963/ijcai.2018/3</pub-id> </citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>LaValle</surname>
<given-names>S. M.</given-names>
</name>
<name>
<surname>Kuffner</surname>
<given-names>J.&#x20;J.</given-names>
</name>
<name>
<surname>Donald</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2001</year>). <article-title>Rapidly-exploring Random Trees: Progress and Prospects</article-title>. <source>Algorithmic Comput. Robotics: New Dir.</source> <volume>5</volume>, <fpage>293</fpage>&#x2013;<lpage>308</lpage>. <pub-id pub-id-type="doi">10.1201/9781439864135-43</pub-id> </citation>
</ref>
<ref id="B20">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>LaValle</surname>
<given-names>S. M.</given-names>
</name>
</person-group> (<year>1998</year>). <source>Rapidly-exploring Random Trees: A New Tool for Path Planning</source>. <publisher-loc>Pennsylvania, United&#x20;States</publisher-loc>: <publisher-name>CiteSeerX</publisher-name>. </citation>
</ref>
<ref id="B21">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lazaric</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ghavamzadeh</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2010</year>). &#x201c;<article-title>Bayesian Multi-Task Reinforcement Learning</article-title>,&#x201d; in <conf-name>Proceedings of the International Conference on Machine Learning</conf-name>, <conf-loc>Haifa Israel</conf-loc>, <conf-date>June, 2010</conf-date>, <fpage>599</fpage>&#x2013;<lpage>606</lpage>. </citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lopez</surname>
<given-names>B. T.</given-names>
</name>
<name>
<surname>Slotine</surname>
<given-names>J.-J.&#x20;E.</given-names>
</name>
<name>
<surname>How</surname>
<given-names>J.&#x20;P.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Robust Adaptive Control Barrier Functions: An Adaptive and Data-Driven Approach to Safety</article-title>. <source>Control. Syst. Lett.</source> <volume>5</volume>, <fpage>1031</fpage>&#x2013;<lpage>1036</lpage>. <pub-id pub-id-type="doi">10.1109/LCSYS.2020.3005923</pub-id> </citation>
</ref>
<ref id="B23">
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Mathew</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>PROMP Library Written in Python</article-title>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://github.com/mjm522/promps_python">https://github.com/mjm522/promps_python</ext-link>
</comment>. </citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mohanan</surname>
<given-names>M. G.</given-names>
</name>
<name>
<surname>Salgoankar</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>A Survey of Robotic Motion Planning in Dynamic Environments</article-title>. <source>Robotics Autonomous Syst.</source> <volume>100</volume>, <fpage>171</fpage>&#x2013;<lpage>185</lpage>. <pub-id pub-id-type="doi">10.1016/j.robot.2017.10.011</pub-id> </citation>
</ref>
<ref id="B25">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Nguyen</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Sreenath</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Exponential Control Barrier Functions for Enforcing High Relative-Degree Safety-Critical Constraints</article-title>,&#x201d; in <conf-name>Proceedings of the American Control Conference</conf-name>, <conf-loc>Boston, MA, USA</conf-loc>, <conf-date>July 2016</conf-date>, <fpage>322</fpage>&#x2013;<lpage>328</lpage>. <pub-id pub-id-type="doi">10.1109/acc.2016.7524935</pub-id> </citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Paraschos</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Daniel</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Peters</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Neumann</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2018a</year>). <article-title>Using Probabilistic Movement Primitives in Robotics</article-title>. <source>Auton. Robot</source> <volume>42</volume>, <fpage>529</fpage>&#x2013;<lpage>551</lpage>. <pub-id pub-id-type="doi">10.1007/s10514-017-9648-7</pub-id> </citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Paraschos</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Rueckert</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Peters</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Neumann</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2018b</year>). <article-title>Probabilistic Movement Primitives under Unknown System Dynamics</article-title>. <source>Adv. Robotics</source> <volume>32</volume>, <fpage>297</fpage>&#x2013;<lpage>310</lpage>. <pub-id pub-id-type="doi">10.1080/01691864.2018.1437674</pub-id> </citation>
</ref>
<ref id="B28">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Rauscher</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Kimmel</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Hirche</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Constrained Robot Control&#x20;Using Control Barrier Functions</article-title>,&#x201d; in <conf-name>Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems</conf-name>, <conf-loc>Daejeon, Korea (South)</conf-loc>, <conf-date>October 2016</conf-date>, <fpage>279</fpage>&#x2013;<lpage>285</lpage>. <pub-id pub-id-type="doi">10.1109/iros.2016.7759067</pub-id> </citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sakai</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ingram</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Dinius</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Chawla</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Raffin</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Paques</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Pythonrobotics: a python Code Collection of Robotics Algorithms</article-title>. <source>arXiv</source>, <fpage>1</fpage>&#x2013;<lpage>8</lpage>. <comment>arXiv preprint arXiv:1808.10703</comment>. </citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Saveriano</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>D.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Learning Barrier Functions for Constrained Motion Planning with Dynamical Systems</article-title>. <conf-name>IEEE/RSJ International Conference on Intelligent Robots and Systems</conf-name>, <conf-loc>Macau, China</conf-loc>, <conf-date>November, 2019</conf-date>, <fpage>112</fpage>&#x2013;<lpage>119</lpage>. <pub-id pub-id-type="doi">10.1109/IROS40897.2019.8967981</pub-id> </citation>
</ref>
<ref id="B31">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Sloth</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Wisniewski</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Pappas</surname>
<given-names>G. J.</given-names>
</name>
</person-group> (<year>2012</year>). &#x201c;<article-title>On the Existence of Compositional Barrier Certificates</article-title>,&#x201d; in <conf-name>Proceedings of the IEEE Conference on Decision and Control</conf-name>, <conf-loc>Maui, HI, USA</conf-loc>, <conf-date>December 2012</conf-date>, <fpage>4580</fpage>&#x2013;<lpage>4585</lpage>. <pub-id pub-id-type="doi">10.1109/cdc.2012.6426178</pub-id> </citation>
</ref>
<ref id="B32">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Spong</surname>
<given-names>M. W.</given-names>
</name>
<name>
<surname>Vidyasagar</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2008</year>). <source>Robot Dynamics and Control</source>. <publisher-loc>Hoboken, New Jersey, United&#x20;States</publisher-loc>: <publisher-name>John Wiley &#x26; Sons</publisher-name>. </citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Srinivasan</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Coogan</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Control of mobile Robots Using Barrier Functions under Temporal Logic Specifications</article-title>. <source>IEEE Trans. Robot.</source> <volume>37</volume>, <fpage>363</fpage>&#x2013;<lpage>374</lpage>. <pub-id pub-id-type="doi">10.1109/TRO.2020.3031254</pub-id> </citation>
</ref>
<ref id="B34">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Vadakkepat</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Tan</surname>
<given-names>K. C.</given-names>
</name>
<name>
<surname>Ming-Liang</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2000</year>). &#x201c;<article-title>Evolutionary Artificial Potential fields and Their Application in Real Time Robot Path Planning</article-title>,&#x201d; in <conf-name>Proceedings of the Congress on Evolutionary Computation (IEEE)</conf-name>, <conf-loc>La Jolla, CA, USA</conf-loc>, <conf-date>July 2000</conf-date>, <fpage>256</fpage>&#x2013;<lpage>263</lpage>. </citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Vicentini</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Collaborative Robotics: A Survey</article-title>. <source>J.&#x20;Mech. Des.</source> <volume>143</volume>, <fpage>040802</fpage>. <pub-id pub-id-type="doi">10.1115/1.4046238</pub-id> </citation>
</ref>
<ref id="B36">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Warren</surname>
<given-names>C. W.</given-names>
</name>
</person-group> (<year>1989</year>). &#x201c;<article-title>Global Path Planning Using Artificial Potential fields</article-title>,&#x201d; in <conf-name>Proceedings of the IEEE International Conference on Robotics and Automation</conf-name>, <conf-loc>Scottsdale, AZ, USA</conf-loc>, <conf-date>May 1989</conf-date>, <fpage>316</fpage>&#x2013;<lpage>317</lpage>. </citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wieland</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Allg&#xf6;wer</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2007</year>). <article-title>Constructive Safety Using Control Barrier Functions</article-title>. <source>IFAC Proc. Volumes</source> <volume>40</volume>, <fpage>462</fpage>&#x2013;<lpage>467</lpage>. <pub-id pub-id-type="doi">10.3182/20070822-3-za-2920.00076</pub-id> </citation>
</ref>
<ref id="B38">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Zhao</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Kolathaya</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Ames</surname>
<given-names>A. D.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Quadratic Programming and Impedance Control for Transfemoral Prosthesis</article-title>,&#x201d; in <conf-name>Proceedings of the IEEE International Conference on Robotics and Automation</conf-name>, <conf-loc>Hong Kong, China</conf-loc>, <conf-date>31&#x20;May-7 June 2014</conf-date>, <fpage>1341</fpage>&#x2013;<lpage>1347</lpage>. <pub-id pub-id-type="doi">10.1109/icra.2014.6907026</pub-id> </citation>
</ref>
</ref-list>
</back>
</article>