<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="brief-report" 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">1344367</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2024.1344367</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Robotics and AI</subject>
<subj-group>
<subject>Brief Research Report</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Safe contact-based robot active search using Bayesian optimization and control barrier functions</article-title>
<alt-title alt-title-type="left-running-head">Vinter-Hviid et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/frobt.2024.1344367">10.3389/frobt.2024.1344367</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Vinter-Hviid</surname>
<given-names>Frederik</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/2363342/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Sloth</surname>
<given-names>Christoffer</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1527540/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Savarimuthu</surname>
<given-names>Thiusius Rajeeth</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2624853/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Iturrate</surname>
<given-names>I&#xf1;igo</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1242435/overview"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/Writing - review &#x26; editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>ROPCA ApS</institution>, <addr-line>Odense</addr-line>, <country>Denmark</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>SDU Robotics</institution>, <institution>Maersk McKinney Moller Institute</institution>, <institution>University of Southern Denmark</institution>, <addr-line>Odense</addr-line>, <country>Denmark</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/214675/overview">Mohammadreza Davoodi</ext-link>, University of Memphis, United States</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/713892/overview">Loris Roveda</ext-link>, Dalle Molle Institute for Artificial Intelligence Research, Switzerland</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2645381/overview">Yazdan Batmani</ext-link>, University of Kurdistan, Iran</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2606323/overview">Hamid Hafezi</ext-link>, Herff College of Engineering, University of Memphis, Memphis, United States in collaboration with reviewer YB</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Frederik Vinter-Hviid, <email>fv@ropca.com</email>
</corresp>
</author-notes>
<pub-date pub-type="epub">
<day>29</day>
<month>04</month>
<year>2024</year>
</pub-date>
<pub-date pub-type="collection">
<year>2024</year>
</pub-date>
<volume>11</volume>
<elocation-id>1344367</elocation-id>
<history>
<date date-type="received">
<day>25</day>
<month>11</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>07</day>
<month>03</month>
<year>2024</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2024 Vinter-Hviid, Sloth, Savarimuthu and Iturrate.</copyright-statement>
<copyright-year>2024</copyright-year>
<copyright-holder>Vinter-Hviid, Sloth, Savarimuthu and Iturrate</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>In robotics, active exploration and learning in uncertain environments must take into account safety, as the robot may otherwise damage itself or its surroundings. This paper presents a method for safe active search using Bayesian optimization and control barrier functions. As robot paths undertaken during sampling are continuous, we consider an informative continuous expected improvement acquisition function. To safely bound the contact forces between the robot and its surroundings, we leverage exponential control barrier functions, utilizing the derivative of the force in the contact model to increase robustness to uncertainty in the contact boundary. Our approach is demonstrated on a fully autonomous robot for ultrasound scanning of rheumatoid arthritis (RA). Here, active search is a critical component of ensuring high image quality. Furthermore, bounded contact forces between the ultrasound probe and the patient ensure patient safety and better scan quality. To the best of our knowledge, our results are both the first demonstration of safe active search on a fully autonomous robot for ultrasound scanning of rheumatoid arthritis and the first experimental evaluation of bounding contact forces in the context of medical robotics using control barrier functions. The results show that when search time is limited to less than 60 s, informative continuous expected improvement leads to a 92% success, a 13% improvement compared to expected improvement. Meanwhile, exponential control barrier functions can limit the force applied by the robot to under 5 N, even in cases where the contact boundary is specified incorrectly by &#x2212;1 or &#x2b;4 mm.</p>
</abstract>
<kwd-group>
<kwd>control barrier function</kwd>
<kwd>Bayesian optimization</kwd>
<kwd>active search</kwd>
<kwd>autonomous ultrasound scanning</kwd>
<kwd>robot force control</kwd>
</kwd-group>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Robotic Control Systems</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Active learning, along with related problems such as active object exploration and localization, find widespread applications across various robotic domains. From mobile robot navigation (<xref ref-type="bibr" rid="B22">Lluvia et al., 2021</xref>) to grasping (<xref ref-type="bibr" rid="B20">Kroemer et al., 2010</xref>) to object and scene reconstruction (<xref ref-type="bibr" rid="B14">Jamali et al., 2016</xref>), many robotic problems involve variations of the exploration&#x2013;exploitation dilemma, where an autonomous system must simultaneously regress and optimize an unknown or uncertain function.</p>
<p>Several methods have been proposed to tackle the above problems, including many based on deep learning (<xref ref-type="bibr" rid="B30">Ren et al., 2021</xref>). For the low-data regime, which is often the case for online learning in robotics, the most common are methods based on Gaussian process regression (<xref ref-type="bibr" rid="B14">Jamali et al., 2016</xref>; <xref ref-type="bibr" rid="B38">Yi et al., 2016</xref>; <xref ref-type="bibr" rid="B12">Driess et al., 2019</xref>; <xref ref-type="bibr" rid="B11">De Farias et al., 2021</xref>) and Bayesian optimization (<xref ref-type="bibr" rid="B27">Nogueira et al., 2016</xref>; <xref ref-type="bibr" rid="B13">Goel et al., 2022</xref>; <xref ref-type="bibr" rid="B32">Roveda et al., 2022</xref>; <xref ref-type="bibr" rid="B6">Berkenkamp et al., 2023</xref>). Koopman operators have also been suggested for the case of learning the nonlinear dynamics of a physical system for control (<xref ref-type="bibr" rid="B1">Abraham and Murphey, 2019</xref>), but this method is only applicable to learning dynamics and not to a more general function approximation problem.</p>
<p>As active exploration is, by definition, an uncertain process, a key consideration is the assurance of safety despite operating in fully or partially unknown environments. Safety can be handled algorithmically in the learning process by considering, for example, the uncertainty in a Gaussian process regression (<xref ref-type="bibr" rid="B35">Turchetta et al., 2019</xref>). However, here we are more interested in methods that consider the safety of the controlled system, that is, the robot, as a query deemed safe algorithmically can still result in an unsafe robot action due to uncertainty in the control and environmental dynamics. Various methods have been proposed, such as safe control based on energy functions (<xref ref-type="bibr" rid="B28">Pandya and Liu, 2022</xref>), safe model predictive control (<xref ref-type="bibr" rid="B19">Koller et al., 2018</xref>), and Bayesian meta-learning through alternating sequential optimal control problems for exploration and exploitation (<xref ref-type="bibr" rid="B21">Lew et al., 2022</xref>). A prominent approach to safety is control barrier functions (CBFs), a framework for ensuring the safety of nonlinear control affine systems (<xref ref-type="bibr" rid="B3">Ames et al., 2014</xref>; <xref ref-type="bibr" rid="B31">Romdlony and Jayawardhana, 2014</xref>; <xref ref-type="bibr" rid="B2">Ames et al., 2019</xref>). The resulting equations can be solved using quadratic programming, making the implementation feasible in control loops. The methodology has been expanded to high relative degree systems, making it generally applicable (<xref ref-type="bibr" rid="B26">Nguyen and Sreenath, 2016</xref>). Model uncertainty has been considered in CBFs in terms of parametric uncertainty (<xref ref-type="bibr" rid="B10">Cohen and Belta, 2022</xref>) and non-parametric uncertainty (<xref ref-type="bibr" rid="B7">Casta&#xf1;eda et al., 2021</xref>). These works ensure that safety can be guaranteed despite having a bounded model uncertainty.</p>
<p>In this paper, we consider the combination of the above two problems, namely, safe active exploration, in the context of an autonomous robot system for ultrasound (US) scanning of rheumatoid arthritis (RA). US imaging is a popular method for diagnosis and monitoring of RA and various other diseases, as it allows inspection of tissue and joint structures at low cost and without the use of radiation. The use of ultrasound does, however, rely on trained professionals with limited availability, so automation of the process has high potential value.</p>
<p>Active exploration is a major component of US scanning for RA and is, in fact, how the procedure is performed manually by trained professionals. During the procedure, the probe is placed in contact with joints in the patient&#x2019;s hand, allowing the subsurface structures to be inspected on a connected monitor. The professional must ensure that contact between the probe and the patient&#x2019;s hand is maintained and find an optimal placement in order to capture potential disease activity. When an appropriate area has been found, the probe is kept stationary, and Doppler mode imaging is used to assess the flow of synovial fluid in the joint cavity, indicating inflammation. Correct placement of the probe will ensure high-quality scans. Different approaches have been proposed to optimize the ultrasound image quality. A commonly used method is based on ultrasound confidence maps (<xref ref-type="bibr" rid="B18">Karamalis et al., 2012</xref>; <xref ref-type="bibr" rid="B8">Chatelain et al., 2017</xref>; <xref ref-type="bibr" rid="B15">Jiang et al., 2020</xref>) that can be used to detect if contact is poor and adjustments to the probe position must be made. Force-based methods have also been explored to optimize the image quality by attempting to estimate the surface normal and position of the probe accordingly (<xref ref-type="bibr" rid="B16">Jiang et al., 2021a</xref>). As these methods do not consider the structure of tissues in the image but only the overall quality, they are not suited for RA, where the structure is vital. Bayesian optimization based on segmented ultrasound images is proposed by <xref ref-type="bibr" rid="B13">Goel et al. (2022)</xref>. This allows certain structures in the image to be optimized efficiently, and as the optimization is guided by a statistical model, uncertainties are handled implicitly. While the above methods consider the positioning of the probe, limiting the maximum applied force is also critical. First, the contact force must be kept low to ensure the flow of synovial fluid is not blocked by the pressure (<xref ref-type="bibr" rid="B25">M&#xf6;ller et al., 2017</xref>). Second, patients with high levels of disease activity will experience pain from excessive pressure.</p>
<p>To address the above use case, we propose to draw from the wider active exploration and safe control literature. To determine the probing location, we use Bayesian optimization, similar to <xref ref-type="bibr" rid="B13">Goel et al. (2022)</xref>, but make use of a classifier trained to estimate the US image quality instead of a segmentation model. This is done because assessing the quality of an ultrasound image for RA is a complex task requiring the correct placement, appearance, and relative size of different tissue types. We extend the method by considering the ability to sample images continuously while positioning the probe on the patient, leading to a more efficient search. To establish and maintain contact with the patient&#x2019;s hand, we use direct force control and add an additional level of safety in the form of a high-order CBF to bound the contact forces below a safe threshold.</p>
<p>Our main contributions are as follows:<list list-type="simple">
<list-item>
<p>&#x2022; We present, to the best of our knowledge, the first results on CBFs applied to safe force control in the medical domain of a real (not simulated) robotic system in a laboratory setting.</p>
</list-item>
<list-item>
<p>&#x2022; We present a method for autonomous robot scanning of RA. While research has been performed on autonomous US scanning for various applications such as scanning of vessels (<xref ref-type="bibr" rid="B36">Virga et al., 2016</xref>; <xref ref-type="bibr" rid="B17">Jiang et al., 2021b</xref>) and breasts (<xref ref-type="bibr" rid="B37">Welleweerd et al., 2020</xref>), to the best of our knowledge, no previous work within autonomous scanning for RA exists.</p>
</list-item>
<list-item>
<p>&#x2022; Additionally, a minor contribution is the extension of informative continuous expected improvement (ICEI) as an acquisition function for Bayesian optimization to the context of robot motion planning.</p>
</list-item>
</list>
</p>
</sec>
<sec id="s2">
<title>2 Problem formulation</title>
<p>We consider two sub-problems in the context of ultrasound scanning for RA:</p>
<p>
<statement content-type="problem" id="Problem_1">
<label>Problem 1</label>
<p>(Active search). This problem is concerned with finding areas of high ultrasound image quality in the presence of uncertain measurements. We consider the search problem as finding a global maximum <bold>
<italic>p</italic>
</bold>
<sub>
<italic>opt</italic>
</sub> of an unknown underlying function <italic>f</italic>(<bold>
<italic>p</italic>
</bold>) with uncertainty <italic>&#x3f5;</italic> where <bold>
<italic>p</italic>
</bold> is a subset of the Cartesian space.<disp-formula id="e1">
<mml:math id="m1">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">opt</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mi>arg</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">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:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:munder>
<mml:mi>max</mml:mi>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>&#x3f5;</mml:mi>
<mml:mo>.</mml:mo>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>Function estimates are achieved using a classifier trained on ultrasound images. It is assumed that a starting point is given from external sensing, such as a RGB-D camera combined with a method of estimating joint locations in a RGB image. Solutions for this exist, at least for simple, well-lit scenes (<xref ref-type="bibr" rid="B39">Zhang et al., 2020</xref>).</p>
</statement>
</p>
<p>
<statement content-type="problem" id="Problem_2">
<label>Problem 2</label>
<p>(Bounding the contact force). This problem consists of ensuring bounded contact force with the patient despite uncertainties in the patient&#x2019;s position. A robot manipulator with an ultrasound probe mounted&#x2014;as seen in <xref ref-type="fig" rid="F1">Figure 1</xref>&#x2014;is employed. The robot is controlled at the joint position level. We consider the problem of finding a safe control input <italic>u</italic>
<sup>&#x2a;</sup> given a potentially unsafe nominal control input <italic>u</italic>
<sub>no</sub> that minimizes the differences between <italic>u</italic>
<sup>&#x2a;</sup> and <italic>u</italic>
<sub>no</sub>. Safety is defined in terms of bounded contact force <italic>f</italic>
<sub>
<italic>c</italic>
</sub> &#x2264; <italic>f</italic>
<sub>max</sub>, where <italic>f</italic>
<sub>c</sub> and <italic>f</italic>
<sub>max</sub> are the contact force and maximum allowed force, respectively.</p>
</statement>
</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Left, the experimental setup for autonomous US scanning of RA. Right, a flowchart of the proposed system for active search for high-quality US images while achieving bounded contact force.</p>
</caption>
<graphic xlink:href="frobt-11-1344367-g001.tif"/>
</fig>
</sec>
<sec id="s3">
<title>3 Preliminaries</title>
<p>This section will present theoretical background on Gaussian process regression and Bayesian optimization, which are used as the basis of our solution to Problem 1, and exponential control barrier functions, which are used as part of our solution to Problem 2.</p>
<sec id="s3-1">
<title>3.1 Gaussian process regression</title>
<p>Gaussian process regression (GPR) allows unknown functions, along with their uncertainty, to be estimated based on limited samples (<xref ref-type="bibr" rid="B29">Rasmussen and Williams, 2005</xref>). A Gaussian process (GP) is a distribution over functions and is defined fully by a mean function <italic>m</italic>(<bold>
<italic>p</italic>
</bold>) and a covariance function <italic>k</italic> (<bold>
<italic>p</italic>
</bold>, <bold>
<italic>p</italic>
</bold>&#x2032;). It is assumed that the vector input <inline-formula id="inf1">
<mml:math id="m2">
<mml:mi mathvariant="bold-italic">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:mi>d</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> is related to the scalar output <italic>y</italic> by the function <italic>f</italic> (&#x22c5;) with the following relationship: <italic>y</italic> &#x3d; <italic>f</italic>(<bold>
<italic>p</italic>
</bold>) &#x2b; <italic>&#x3f5;</italic>, where <inline-formula id="inf2">
<mml:math id="m3">
<mml:mi>&#x3f5;</mml:mi>
<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:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. The training input is defined as <bold>P</bold> with <bold>
<italic>y</italic>
</bold> being the associated targets. Together, this is denoted as <inline-formula id="inf3">
<mml:math id="m4">
<mml:mi mathvariant="script">D</mml:mi>
<mml:mo>:</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">1</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">2</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</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:mo stretchy="false">}</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. Observations <bold>
<italic>y</italic>
</bold> and discrete function values to be predicted <bold>
<italic>f</italic>
</bold>
<sub>&#x2a;</sub> then follow a multivariate normal distribution:<disp-formula id="e2">
<mml:math id="m5">
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x223c;</mml:mo>
<mml:mi mathvariant="script">N</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>m</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>m</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">&#x3f5;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(2)</label>
</disp-formula>where <inline-formula id="inf4">
<mml:math id="m6">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">&#x3f5;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi mathvariant="bold">I</mml:mi>
</mml:math>
</inline-formula>, with <inline-formula id="inf5">
<mml:math id="m7">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> being the inherent noise on the measurements&#x2014;allowing optimization under uncertainty&#x2014;and<disp-formula id="e3">
<mml:math id="m8">
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</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:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22f1;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>The mean vector associated with <bold>
<italic>f<sub>&#x2a;</sub>
</italic>
</bold> is then<disp-formula id="e4">
<mml:math id="m9">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>m</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>m</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(4)</label>
</disp-formula>and the covariance is given by:<disp-formula id="e5">
<mml:math id="m10">
<mml:mtext>cov</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">&#x3f5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>K</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">P</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>The estimate of the standard deviation along the estimated function is then the diagonal of cov (<bold>
<italic>f</italic>
</bold>
<sub>&#x2a;</sub>) and is denoted <italic>&#x3c3;</italic>
<sub>
<italic>f</italic>
</sub>(<bold>
<italic>p</italic>
</bold>). The mean function is often set to zero unless some underlying information about the process exists. The covariance function is generally defined such that points near each other are more correlated. A common choice is the Matern class of covariance functions. This class of functions leads to different levels of differentiability and, thus, smoothness of <italic>f</italic>(<bold>
<italic>p</italic>
</bold>) based on a smoothness parameter <italic>&#x3bd;</italic>. For <inline-formula id="inf6">
<mml:math id="m11">
<mml:mi>&#x3bd;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>, the Matern kernel is<disp-formula id="e6">
<mml:math id="m12">
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msqrt>
<mml:mi>d</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi>exp</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msqrt>
<mml:mi>d</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(6)</label>
</disp-formula>where <italic>d</italic> (<bold>
<italic>p</italic>
</bold>, <bold>
<italic>p</italic>
</bold>&#x2032;) is the Euclidean distance between <bold>
<italic>p</italic>
</bold> and <bold>
<italic>p</italic>
</bold>&#x2032; scaled by a diagonal matrix <bold>&#x398;</bold>:<disp-formula id="e7">
<mml:math id="m13">
<mml:mi>d</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">&#x398;</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 mathvariant="bold-italic">p</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(7)</label>
</disp-formula>
<disp-formula id="e8">
<mml:math id="m14">
<mml:mi mathvariant="bold">&#x398;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>diag</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</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>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mtext>diag</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(8)</label>
</disp-formula>with <inline-formula id="inf7">
<mml:math id="m15">
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<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:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> as the length scales of the function. The length scales encode how rapidly <italic>f</italic> (&#x22c5;) changes along each dimension. These are considered free parameters that must be determined from the training data. This is done by maximizing the marginal log-likelihood of the training examples given the parameters.</p>
</sec>
<sec id="s3-2">
<title>3.2 Bayesian optimization</title>
<p>Bayesian optimization provides a framework for maximizing functions that are costly to evaluate, where uncertainty is present, and where following the gradient is infeasible (<xref ref-type="bibr" rid="B33">Shahriari et al., 2016</xref>). The method consists of three elements: a statistical surrogate model, an acquisition function, and a stopping criterion. A common choice for the surrogate model is Gaussian processes, as defined above. The acquisition function <italic>&#x3b1;</italic>(&#x22c5;) determines where to sample next in the search space based on the surrogate model by balancing exploration and exploitation:<disp-formula id="e9">
<mml:math id="m16">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mi>arg</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">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:mi>d</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:munder>
<mml:mi>max</mml:mi>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mo>;</mml:mo>
<mml:mi mathvariant="script">D</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(9)</label>
</disp-formula>A common choice for the acquisition function is expected improvement (EI) (<xref ref-type="bibr" rid="B24">Mockus et al., 1978</xref>). EI maximizes the expected gain over the previous best sampled score, <italic>f</italic>
<sup>&#x2a;</sup>.<disp-formula id="e10">
<mml:math id="m17">
<mml:mi>E</mml:mi>
<mml:mi>I</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2254;</mml:mo>
<mml:mi mathvariant="double-struck">E</mml:mi>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(10)</label>
</disp-formula>EI can be calculated analytically as<disp-formula id="e11">
<mml:math id="m18">
<mml:mi>E</mml:mi>
<mml:mi>I</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="{" close="">
<mml:mrow>
<mml:mtable class="cases">
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">&#x3a6;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>&#x3d5;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mtext>if</mml:mtext>
<mml:mo>&#x2009;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mn>0</mml:mn>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mtext>if</mml:mtext>
<mml:mo>&#x2009;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(11)</label>
</disp-formula>where &#x3a6;(&#x22c5;), <italic>&#x3d5;</italic>(&#x22c5;) are the cumulative distribution function (CDF) and the probability density function (PDF), respectively.</p>
</sec>
<sec id="s3-3">
<title>3.3 Control barrier functions</title>
<p>Control barrier functions provide a framework for ensuring system safety (<xref ref-type="bibr" rid="B3">Ames et al., 2014</xref>). Throughout this section, a nonlinear control affine system of the following form is considered:<disp-formula id="e12">
<mml:math id="m19">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">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 mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>,</mml:mo>
</mml:math>
<label>(12)</label>
</disp-formula>where <inline-formula id="inf8">
<mml:math id="m20">
<mml:mi>f&#x2009;</mml:mi>
<mml:mo>:&#x2009;</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="inf9">
<mml:math id="m21">
<mml:mi>g&#x2009;</mml:mi>
<mml:mo>:&#x2009;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2192;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> are local Lipschitz functions, with <inline-formula id="inf10">
<mml:math id="m22">
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<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> and <inline-formula id="inf11">
<mml:math id="m23">
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>U</mml:mi>
<mml:mo>&#x2282;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> being the admissible states and control inputs, respectively. The goal of the CBF is to keep the system in a safe region of the state space. This safe region <inline-formula id="inf12">
<mml:math id="m24">
<mml:mi mathvariant="script">C</mml:mi>
</mml:math>
</inline-formula> is defined based on a continuously differentiable function <inline-formula id="inf13">
<mml:math id="m25">
<mml:mi>h&#x2009;</mml:mi>
<mml:mo>:&#x2009;</mml:mo>
<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:mo>&#x2192;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:math>
</inline-formula> as<disp-formula id="e13">
<mml:math id="m26">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="script">C</mml:mi>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mspace width="1em"/>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>X</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</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:mi>&#x2202;</mml:mi>
<mml:mi mathvariant="script">C</mml:mi>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mspace width="1em"/>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>X</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</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:mtext>Int</mml:mtext>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="script">C</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mspace width="1em"/>
<mml:mfenced open="{" close="}">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>X</mml:mi>
<mml:mspace width="0.3333em"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</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>(13)</label>
</disp-formula>
</p>
<p>The system is thus safe if a control law input <bold>
<italic>u</italic>
</bold> leads to the scalar function <inline-formula id="inf14">
<mml:math id="m27">
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mspace width="0.3333em"/>
<mml:mo>&#x2200;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2227;</mml:mo>
<mml:mo>&#x2200;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="script">C</mml:mi>
</mml:math>
</inline-formula>. Equivalently, this can be described as the set <inline-formula id="inf15">
<mml:math id="m28">
<mml:mi mathvariant="script">C</mml:mi>
</mml:math>
</inline-formula> being rendered forward invariant by the control law. When the relative degree <italic>r</italic> of the system with respect to <italic>h</italic> is larger than one, higher-order CBFs can be used to render a set <inline-formula id="inf16">
<mml:math id="m29">
<mml:mi mathvariant="script">C</mml:mi>
</mml:math>
</inline-formula> safe. The relative degree of a continuously differentiable function <italic>h</italic>(<bold>
<italic>x</italic>
</bold>) with respect to System (12) is the number of times it can be differentiated along (12) before the control input <bold>
<italic>u</italic>
</bold> explicitly shows. Exponential control barrier functions (ECBFs) are a class of higher-order CBFs (<xref ref-type="bibr" rid="B26">Nguyen and Sreenath, 2016</xref>). This formulation is based on calculating higher-order time derivatives of <italic>h</italic>(<bold>
<italic>x</italic>
</bold>). The <italic>r</italic>
<sup>th</sup> time derivative is<disp-formula id="e14">
<mml:math id="m30">
<mml:msup>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</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:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">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:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>,</mml:mo>
</mml:math>
<label>(14)</label>
</disp-formula>where <inline-formula id="inf17">
<mml:math id="m31">
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is the <italic>r</italic>
<sup>th</sup> Lie derivative of <italic>h</italic> along <italic>f</italic>. ECBFs are defined based on a series of integrators that relate <italic>h</italic>
<sup>(<italic>r</italic>)</sup>(<bold>
<italic>x</italic>
</bold>, <bold>
<italic>u</italic>
</bold>) to <italic>h</italic>(<bold>
<italic>x</italic>
</bold>):<disp-formula id="e15">
<mml:math id="m32">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<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:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mi>&#x3b7;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mi>&#x3bc;</mml:mi>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">C</mml:mi>
<mml:mi>&#x3b7;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(15)</label>
</disp-formula>With<disp-formula id="e16">
<mml:math id="m33">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>&#x3b7;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</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:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<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>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</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:mi>h</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</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:mi>h</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msup>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi>&#x3bc;</mml:mi>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</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:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">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:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(16)</label>
</disp-formula>and <bold>F</bold> : <italic>r</italic> &#xd7; <italic>r</italic>, <bold>G</bold> : <italic>r</italic> &#xd7; 1, <bold>C</bold> : 1 &#xd7; <italic>r</italic>
<disp-formula id="e17">
<mml:math id="m34">
<mml:mi mathvariant="bold">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:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</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>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22f1;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</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:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</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:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="bold">G</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:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi mathvariant="bold">C</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>1</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2026;</mml:mo>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>Choosing the state feedback <italic>&#x3bc;</italic> &#x3d; &#x2212;<bold>
<italic>K</italic>
</bold>
<italic>&#x3b7;</italic>(<bold>
<italic>x</italic>
</bold>) leads to <italic>h</italic>(<bold>
<italic>x</italic>
</bold>) being an explicit function of time <italic>t</italic> and the initial state <bold>
<italic>x</italic>
</bold>
<sub>0</sub>:<disp-formula id="e18">
<mml:math id="m35">
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">C</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:mi mathvariant="bold-italic">K</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mi>&#x3b7;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(18)</label>
</disp-formula>where <italic>h</italic>(<bold>
<italic>x</italic>
</bold>) is then said to be an ECBF&#x2014;rendering <inline-formula id="inf18">
<mml:math id="m36">
<mml:mi mathvariant="script">C</mml:mi>
</mml:math>
</inline-formula> forward invariant&#x2014;if there exists a row vector <bold>
<italic>K</italic>
</bold>
<sub>
<italic>&#x3b3;</italic>
</sub> such that<disp-formula id="e19">
<mml:math id="m37">
<mml:munder>
<mml:mrow>
<mml:mi>sup</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>U</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">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:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>&#x3b7;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em"/>
<mml:mo>&#x2200;</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi>I</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>t</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="script">C</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(19)</label>
</disp-formula>results in<disp-formula id="e20">
<mml:math id="m38">
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mi mathvariant="bold">C</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msup>
<mml:mi>t</mml:mi>
<mml:mi>&#x3b7;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:math>
<label>(20)</label>
</disp-formula>where <italic>h</italic> (<bold>
<italic>x</italic>
</bold>
<sub>0</sub>) &#x2265; 0. A <bold>
<italic>K</italic>
</bold>
<sub>
<italic>&#x3b3;</italic>
</sub> can be found that satisfies this using the pole placement method, with all poles being real and negative. Additionally, the eigenvalues <italic>&#x3bb;</italic>
<sub>
<italic>i</italic>
</sub> of system <bold>F</bold> &#x2212; <bold>G<italic>K</italic>
</bold>
<sub>
<italic>&#x3b3;</italic>
</sub> must adhere to a condition based on the initial conditions <bold>
<italic>x</italic>
</bold>
<sub>0</sub>:<disp-formula id="e21">
<mml:math id="m39">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">F</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">G</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
</mml:math>
<label>(21)</label>
</disp-formula>where<disp-formula id="e22">
<mml:math id="m40">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mo>&#x22ee;</mml:mo>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3bd;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(22)</label>
</disp-formula>and <italic>s</italic>
<sub>0</sub>, <italic>&#x2026;</italic> , <italic>s</italic>
<sub>
<italic>r</italic>
</sub> are defined as the roots of the characteristic polynomial of <bold>F</bold> &#x2212; <bold>G<italic>K</italic>
</bold>
<sub>
<italic>&#x3b3;</italic>
</sub>.</p>
</sec>
</sec>
<sec id="s4">
<title>4 Approach</title>
<p>This section presents our proposed method for safe active search under uncertainty applied to ultrasound image acquisition.</p>
<sec id="s4-1">
<title>4.1 Ultrasound image quality optimization</title>
<p>We will now present our proposed solution to Problem 1. In regular Bayesian optimization, sampling from anywhere in the search space is assumed to be associated with the same cost. As the robot must move to acquire images, this assumption is not ideal for robotic ultrasound scanning, as switching between sampling points far apart from each other will incur a large time cost while the robot moves between them. To account for this, we consider a non-standard acquisition function that incorporates the ability to sample ultrasound images throughout the path traveled by the robot. Similar methods have been applied to robotic environmental monitoring using unmanned aerial vehicles (<xref ref-type="bibr" rid="B23">Marchant and Ramos, 2014</xref>). We parameterize the path as straight lines to ensure the optimization time of the acquisition function is kept low. The path <inline-formula id="inf19">
<mml:math id="m41">
<mml:mi mathvariant="script">P</mml:mi>
</mml:math>
</inline-formula> is defined as<disp-formula id="e23">
<mml:math id="m42">
<mml:mi mathvariant="script">P</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>u</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>u</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(23)</label>
</disp-formula>with <italic>u</italic> &#x2208; [0, 1]. The modified acquisition function is denoted <italic>&#x3b1;</italic>
<sub>
<italic>IC</italic>
</sub>(&#x22c5;) and is said to be informative continuous as information throughout the path is considered. It is defined by integrating the base acquisition function over the path and scaling with the inverse of the path length:<disp-formula id="e24">
<mml:math id="m43">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="" close=")">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="script">P</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">&#x2016;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mo stretchy="false">&#x2016;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>&#x3b1;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="script">P</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi>d</mml:mi>
<mml:mi>u</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(24)</label>
</disp-formula>The scale is included to account for the time spent moving between <bold>
<italic>p</italic>
</bold>
<sub>
<italic>n</italic>
</sub> and <bold>
<italic>p</italic>
</bold>
<sub>
<italic>n</italic>&#x2b;1</sub>. Assuming that the robot moves at a constant velocity, maximizing the modified acquisition function leads to a path that maximizes the integral of the base acquisition function per unit of time spent. The formulation leads to the entire path being considered&#x2014;and thus less time spent in areas with low uncertainty and/or low expected scores. We employ the EI acquisition function as the base acquisition function and denote the informative continuous version as ICEI. A score <italic>y</italic> is associated with each position in the search space <bold>
<italic>p</italic>
</bold> using a classifier trained on labeled ultrasound images. The range of the output is [0; 1], with 0 indicating poor quality and 1 good. Defining an appropriate stopping criterion is important to ensure a good area has been found without spending excessive time scanning a patient. A statistical stopping criterion is proposed based on the maximum lower bound over the samples, <bold>
<italic>y</italic>
</bold>. The lower bound for a sample is<disp-formula id="e25">
<mml:math id="m44">
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b4;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(25)</label>
</disp-formula>where <italic>Z</italic> is the standard normal distribution, <italic>Z</italic>
<sub>
<italic>&#x3b4;</italic>
</sub> is the critical value for a confidence level of 1 &#x2212; <italic>&#x3b4;</italic>, and <italic>&#x3c3;</italic>
<sub>
<italic>y</italic>
</sub> is the prediction of standard deviation for the corresponding sample <italic>y</italic> based on the surrogate model. As the range of possible scores is known beforehand, defining an appropriate threshold is possible.</p>
</sec>
<sec id="s4-2">
<title>4.2 Safe direct force control</title>
<p>Our proposed solution to Problem 2 combines a hybrid force/position controller&#x2014;also referred to as the nominal controller&#x2014;with a CBF defined such that bounded contact force is ensured. The hybrid force/position controller allows direct control over the force to ensure consistent ultrasound image quality while making positioning possible during contact. The robot considered in this work is controlled at the joint position level. The CBF is defined in Cartesian space and at the acceleration level to allow for constraints on the force. End-effector accelerations are related to joint accelerations using the following kinematic relationship:<disp-formula id="e26">
<mml:math id="m45">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">J</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">J</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
</mml:math>
<label>(26)</label>
</disp-formula>where <bold>J</bold>(<bold>
<italic>q</italic>
</bold>) is the manipulator Jacobian, <sup>&#x2020;</sup> denotes the Moore&#x2013;Penrose pseudo inverse, <bold>
<italic>q</italic>
</bold> is the joint configuration, and <inline-formula id="inf20">
<mml:math id="m46">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> is the Cartesian space acceleration. The resulting joint accelerations are then double integrated for the robot&#x2019;s position controller. <xref ref-type="fig" rid="F2">Figure 2</xref> illustrates the proposed control architecture.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Block diagram of hybrid force/position controller with CBF to ensure bounded contact force. <bold>T</bold>
<sub>
<italic>d</italic>
</sub> specifies the desired pose, and <bold>
<italic>h</italic>
</bold>
<sub>
<italic>d</italic>
</sub> specifies the desired wrench.</p>
</caption>
<graphic xlink:href="frobt-11-1344367-g002.tif"/>
</fig>
<sec id="s4-2-1">
<title>4.2.1 Hybrid force/position controller</title>
<p>The error between the desired and measured end-effector wrench is denoted &#x394;<bold>
<italic>h</italic>
</bold>. Similarly, the positional error used is denoted &#x394;<bold>
<italic>x</italic>
</bold>; note that the orientational error is obtained using quaternions. The Cartesian space is divided such that force control is applied in some subset of the space, and position control is applied in the remainder of the space (<xref ref-type="bibr" rid="B34">Siciliano et al., 2008</xref>). New variables are defined to achieve this:<disp-formula id="e27">
<mml:math id="m47">
<mml:munder>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munder>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.3333em"/>
<mml:munder>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munder>
<mml:mo>,</mml:mo>
</mml:math>
<label>(27)</label>
</disp-formula>
<disp-formula id="e28">
<mml:math id="m48">
<mml:munder>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munder>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.3333em"/>
<mml:munder>
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>6</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:munder>
<mml:mo>,</mml:mo>
</mml:math>
<label>(28)</label>
</disp-formula>where <inline-formula id="inf21">
<mml:math id="m49">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> and <inline-formula id="inf22">
<mml:math id="m50">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> select the position-controlled and force-controlled subsets, respectively. Force control is applied along the length of the probe, defined as the <italic>z</italic>-axis, while positional control is used for the remaining degrees of freedom (DOFs). The force controller acting on a subset of the Cartesian space is then<disp-formula id="e29">
<mml:math id="m51">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(29)</label>
</disp-formula>where <inline-formula id="inf23">
<mml:math id="m52">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is the end-effector velocity, <inline-formula id="inf24">
<mml:math id="m53">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is the resulting acceleration reference, and <inline-formula id="inf25">
<mml:math id="m54">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> are diagonal <italic>m</italic> &#xd7; <italic>m</italic> positive definite gain matrices. Note that <inline-formula id="inf26">
<mml:math id="m55">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is used over the more natural choice of using the end-effector wrench derivative <inline-formula id="inf27">
<mml:math id="m56">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>. This is a method of avoiding the problem of taking the time derivative of the often highly noisy force measurements (<xref ref-type="bibr" rid="B34">Siciliano et al., 2008</xref>). The position controller is defined similarly as<disp-formula id="e30">
<mml:math id="m57">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(30)</label>
</disp-formula>with <inline-formula id="inf28">
<mml:math id="m58">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> as the acceleration reference, and <inline-formula id="inf29">
<mml:math id="m59">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> are <italic>n</italic> &#xd7; <italic>n</italic> positive definite gain matrices. The full acceleration of the nominal controller is then <disp-formula id="e31">
<mml:math id="m60">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>o</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:math>
<label>(31)</label>
</disp-formula>
</p>
</sec>
<sec id="s4-2-2">
<title>4.2.2 CBF for bounded contact force</title>
<p>The acceleration reference from the hybrid force/position control is modified by a control barrier function to ensure bounded contact force. This requires the definition of a control affine model relating commanded end-effector accelerations to contact force. This is defined as being one-dimensional, only considering the force from movement along the <italic>z</italic>-axis, thus neglecting friction in the axes of motion. This is a valid assumption, as the US gel placed on the patient&#x2019;s hand while scanning will render friction between the probe and hand negligible. The contact force is modeled using the Kelvin&#x2013;Voigt model as<disp-formula id="e32">
<mml:math id="m61">
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>b</mml:mi>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:math>
<label>(32)</label>
</disp-formula>where <italic>f</italic>
<sub>
<italic>c</italic>
</sub> is the contact force, <italic>k</italic> and <italic>b</italic> are positive scalars, and <italic>z</italic>
<sub>
<italic>r</italic>
</sub> is the position of the contact surface.</p>
<p>A second-order system is used to model the inner position control loop and account for the actuator dynamics. The relationship between position reference <inline-formula id="inf30">
<mml:math id="m62">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> and actual position <italic>z</italic> is modeled by a second-order system:<disp-formula id="e33">
<mml:math id="m63">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b6;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:math>
<label>(33)</label>
</disp-formula>where <italic>&#x3b6;</italic> is the damping factor and <italic>&#x3c9;</italic>
<sub>
<italic>n</italic>
</sub> is the undamped natural frequency. The control input to the CBF from the nominal force controller is defined at the acceleration level <inline-formula id="inf31">
<mml:math id="m64">
<mml:mi>u</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>. To relate this to <inline-formula id="inf32">
<mml:math id="m65">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, it is double integrated:<disp-formula id="e34">
<mml:math id="m66">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>Z</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(34)</label>
</disp-formula>
</p>
<p>The full control affine model is then<disp-formula id="e35">
<mml:math id="m67">
<mml:mtable class="gathered">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<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>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>z</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="1em"/>
<mml:mi>u</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mo>&#xAF;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mi>k</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>b</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b6;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</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>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>&#x3b6;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>5</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<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:mn>0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<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:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mn>1</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(35)</label>
</disp-formula>
</p>
<p>Note that this utilizes the derivative of the force, such that the method does not directly depend on <italic>z</italic>
<sub>
<italic>r</italic>
</sub>. However, it will lead to an overly conservative barrier function outside of contact, as the non-contact situation is not modeled. The barrier function is defined as<disp-formula id="e36">
<mml:math id="m68">
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(36)</label>
</disp-formula>where <italic>f</italic>
<sub>max</sub> is the maximum allowable force. This leads to a relative degree of three for the system, and an ECBF is therefore employed. The ECBF is defined as a constraint to a quadratic program (QP). The objective function is defined as the squared error between the nominal control input <italic>u</italic>
<sub>no</sub> and the resulting input <italic>u</italic>
<disp-formula id="e37">
<mml:math id="m69">
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>no</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>no</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mi>u</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>no</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>.</mml:mo>
</mml:math>
<label>(37)</label>
</disp-formula>
</p>
<p>This ensures the nominal control is followed whenever possible, and the ECBF only limits the input whenever the system is near the boundary of the safe set. The resulting QP is then<disp-formula id="e38">
<mml:math id="m70">
<mml:mtable class="aligned">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:msup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2a;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>no</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mi>arg</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mi mathvariant="double-struck">R</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mi>min</mml:mi>
<mml:mspace width="1em"/>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:msup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>no</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mi>u</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="normal">s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi mathvariant="normal">t</mml:mi>
<mml:mo>.</mml:mo>
<mml:mspace width="1em"/>
</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:mi>r</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">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:mi>g</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mi>h</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi>u</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>&#x3b7;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2265;</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(38)</label>
</disp-formula>where <italic>u</italic>
<sup>&#x2a;</sup> is the modified control input and <italic>u</italic>
<sub>no</sub> is the nominal control input from the hybrid force/position controller.</p>
</sec>
</sec>
</sec>
<sec sec-type="results" id="s5">
<title>5 Results</title>
<p>In this section, results for the image quality optimization method and safe force controller are presented. The standard EI acquisition function is compared with the proposed ICEI variant. The addition of a CBF for keeping bounded contact force is evaluated under uncertainty in the estimate of surface location <italic>z</italic>
<sub>
<italic>r</italic>
</sub>.</p>
<sec id="s5-1">
<title>5.1 Comparing image quality optimization methods</title>
<p>The ultrasound image quality optimization approach assumes a starting position is given, and predetermined bounds of the search space are defined in relation to this. The search was performed over two DOFs such that the input to the Bayesian optimizer was <inline-formula id="inf33">
<mml:math id="m71">
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula>, where <italic>R</italic>
<sub>
<italic>x</italic>
</sub> is rotation about the <italic>x</italic>-axis. The inherent noise of the measurements was set to <italic>&#x3c3;</italic>
<sub>
<italic>&#x3f5;</italic>
</sub> &#x3d; 0.1. Bayesian optimization was implemented using BoTorch (<xref ref-type="bibr" rid="B5">Balandat et al., 2020</xref>). The informative continuous extension was implemented in PyTorch, estimating the integral using a discrete sum. Our proposed method for optimizing ultrasound image quality has been evaluated in a simulated setting. The simulation is based on data gathered from scanning 32 joints across four test subjects. The search space was sampled in a grid using nearest-neighbor interpolation to construct an approximated ground truth. The stopping criterion was set to a maximum lower bound of 0.9 with a confidence level of 95%. Three methods were tested: random sampling, EI, and ICEI. The search space was normalized such that the range was equal for the two DOFs. A distance budget of 10 times the length of the search space was given. In order to simulate the ability to sample continuously, a sample was taken for every 4% of the search space traveled. Based on this, random sampling, EI, and ICEI resulted in 60.7%, 67.8%, and 75.0% success rates, respectively, with mean distance traveled being 8.65, 8.13 and 7.64 times the length of the normalized search space respectively. <xref ref-type="fig" rid="F3">Figure 3</xref> shows the search patterns resulting from the different methods. Random sampling is, as expected, inefficient. The tendency of ICEI to cause less overlap of paths compared to EI is clear.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Ground truth and results for random sampling, EI, and ICEI are shown. The predictions of the Gaussian process regression are displayed with the samples and the location of the maximum lower bound.</p>
</caption>
<graphic xlink:href="frobt-11-1344367-g003.tif"/>
</fig>
<p>EI and ICEI were also compared in a live test. In these tests the search was extended such that <inline-formula id="inf34">
<mml:math id="m72">
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
</mml:math>
</inline-formula> with a range of [&#x2212;7.5<italic>mm</italic>, 7.5 <italic>mm</italic>] for <italic>x</italic> and [&#x2212;4&#xb0;, 4&#xb0;] for the rotational DOFs. The test compared the results of searching using EI and ICEI. For each test, the methods were started at the same position. The methods were run until the stopping criterion was reached. When this occurred, the probe was positioned at the maximum lower bound, and a measurement was taken to ensure the success criterion actually had been reached. This cannot be guaranteed due to uncertainties in positioning. If not, the search was continued. If a solution had not been found within 60 s, it was considered a failed scan. Fourteen joints were scanned. EI lead to a success rate of 79% and ICEI to a rate of 92%. The mean recorded time for optimizing the acquisition function during this test was 0.10 &#xb1; 0.06 s for EI and 0.14 &#xb1; 0.10 s for ICEI. The training time for the Gaussian process using maximum log-likelihood was 0.16 &#xb1; 0.08 s. Even with the ICEI acquisition method, querying a new sample point only took around 0.3&#x00a0;s</p>
</sec>
<sec id="s5-2">
<title>5.2 Evaluation of safe force controller</title>
<p>A KUKA AG IIWA 7 R800 was used to evaluate the safe controller with the fast research interface (FRI) for communication with the robot through the IIWA ROS package (<xref ref-type="bibr" rid="B9">Chatzilygeroudis et al., 2019</xref>). The communication rate with the inner joint position controller was set to 200 <italic>Hz</italic>. The <italic>KYOTO KAGAKU Rheumatism Hand Phantom</italic> was used with parameters estimated to <inline-formula id="inf35">
<mml:math id="m73">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1285</mml:mn>
</mml:math>
</inline-formula> and <inline-formula id="inf36">
<mml:math id="m74">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>15</mml:mn>
</mml:math>
</inline-formula>. For the inner joint position controller, the following parameters were found: <inline-formula id="inf37">
<mml:math id="m75">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3c9;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>31.25</mml:mn>
</mml:math>
</inline-formula> and <inline-formula id="inf38">
<mml:math id="m76">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula>; it is not possible to change these parameters, as it is an inbuilt controller. The parameters of the joint controller were estimated by minimizing the sum of squared errors between the model and measurements taken during an initial experiment where the robot was moved into contact with the hand phantom.</p>
<p>The parameter <bold>
<italic>K</italic>
</bold>
<sub>
<italic>&#x3b3;</italic>
</sub> used in the safety filter must be defined such that the poles of System (20) are negative and real and adhere to the constraints on initial conditions (21). Pole placement within these constraints affects how conservative the barrier function is and will always ensure safety. The following poles <bold>
<italic>p</italic>
</bold> were utilized in the experiments: <inline-formula id="inf39">
<mml:math id="m77">
<mml:mi mathvariant="bold-italic">p</mml:mi>
<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:mn>3</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:mn>6</mml:mn>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mo>&#x2212;</mml:mo>
<mml:mn>9</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>. A maximum force of <italic>f</italic>
<sub>max</sub> &#x3d; 5<italic>N</italic> was specified.</p>
<p>The nominal force control parameters where set to <inline-formula id="inf40">
<mml:math id="m78">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.001</mml:mn>
</mml:math>
</inline-formula> and <inline-formula id="inf41">
<mml:math id="m79">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">K</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:math>
</inline-formula>. The controller was implemented in Python using CVXOPT (<xref ref-type="bibr" rid="B4">Andersen et al., 2020</xref>) to solve the ECBF QP problem. The end-effector wrench was estimated from the robot&#x2019;s joint torque sensors using the following kinematic relationship:<disp-formula id="e39">
<mml:math id="m80">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">J</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold-italic">q</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2020;</mml:mo>
</mml:mrow>
</mml:msup>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c4;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>external</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
</mml:math>
<label>(39)</label>
</disp-formula>where <bold>
<italic>&#x3c4;</italic>
</bold>
<sub>external</sub> are the measured external joint torques available through the FRI. <xref ref-type="fig" rid="F4">Figure 4</xref> illustrates the invariance of the proposed method to the contact surface point in the simulation and when running on the robot and shows that the ECBF is able to bound the contact forces below the specified threshold.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Experiments in simulation (left column) and on the robot (right column) of the robot establishing contact with the environment under initial condition <italic>z</italic>
<sub>0</sub> relative to the surface position <italic>z</italic>
<sub>
<italic>r</italic>
</sub>. The nominal control alone (denoted NOM) does not bound the contact force during contact establishment and leads to varying violations depending on the initial condition. The addition of the proposed CBF ensures contact force is bounded below 5<italic>N</italic> for varying initial conditions ranging from starting 1 mm (<italic>z</italic>
<sub>0</sub> &#x7c; &#x3d; <italic>z</italic>
<sub>
<italic>r</italic>
</sub> &#x2212; &#x7c; 1 mm) inside the contact to starting 4 mm above (<italic>z</italic>
<sub>0</sub> &#x7c; &#x3d; <italic>z</italic>
<sub>
<italic>r</italic>
</sub> &#x2b; &#x7c; 4 mm) the contact.</p>
</caption>
<graphic xlink:href="frobt-11-1344367-g004.tif"/>
</fig>
</sec>
</sec>
<sec sec-type="discussion" id="s6">
<title>6 Discussion</title>
<p>Our methodology is applicable to other robotic applications involving safety-constrained active exploration where contact between the robot and an unknown environment is concerned, such as tactile exploration and manipulation. Our proposed formulation for search using Bayesian optimization with ICEI can help model the kind of sampling scheme applicable to robot tactile exploration, that is, where the full travel path of the robot end-effector must be considered. Our approach to the safe bounding of the contact forces using ECBFs is applicable in the case of robots in contact with the environment where force feedback is available. By directly measuring the contact force and considering its first derivative in the contact model, we increase the system&#x2019;s robustness to uncertainty in the contact boundary, that is, uncertainty in the switching of the environment dynamics.</p>
<p>However, our method has a number of limitations in real-world applications. Although our CBF formulation is robust to uncertainty in the contact boundary, it is not robust to a time-varying boundary. In an ultrasound scanning application, this might occur if the patient, for example, lifted their hand during the scan. In this case, knowledge of the derivative of the contact location would be needed to guarantee safety. Similarly, the Bayesian optimization approach assumes a static function, that is, that the patient&#x2019;s hand does not move. Nevertheless, small motions can be accounted for by increasing the uncertainty term <italic>&#x3c3;</italic>
<sub>
<italic>&#x3f5;</italic>
</sub>.</p>
</sec>
<sec sec-type="conclusion" id="s7">
<title>7 Conclusion</title>
<p>Methods for safe active exploration of an unknown environment have been presented in this article. Active search under uncertainty is performed using Bayesian optimization, and safety is achieved through the use of control barrier functions. The approach has been applied to autonomous ultrasound scanning of rheumatoid arthritis, which involves finding areas of high ultrasound image quality by positioning the ultrasound probe on the patient. The method has been demonstrated in both a simulated and real setting. An extension to the standard expected improvement, referred to as informative continuous expected improvement, has been proposed. The method has been shown to increase the success rate from 79% to 92%, given a limited time budget of 60 s. Safety in the context of autonomous ultrasound scanning is defined in terms of keeping contact force bounded. We have shown both in simulation and on a robot that, by using a higher-order control barrier function, we are able to bound contact forces during contact establishment despite incorrectly specifying the contact boundary by &#x2212;1 or &#x2b;4 mm.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s8">
<title>Data availability statement</title>
<p>The raw data supporting the conclusion of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s9">
<title>Author contributions</title>
<p>FV-H: writing&#x2013;original draft and writing&#x2013;review and editing. II: writing&#x2013;original draft and writing&#x2013;review and editing. CS: writing&#x2013;review and editing and writing&#x2013;original draft. TS: writing&#x2013;review and editing and writing&#x2013;original draft.</p>
</sec>
<sec sec-type="funding-information" id="s10">
<title>Funding</title>
<p>The author(s) declare that financial support was received for the research, authorship, and/or publication of this article. The work undertaken in this paper was supported by the Odense Robotics Control and Learning of Contact Transitions (CoLeCT) project, funded by the Danish Ministry of Higher Education and Science, and by the SDU I4.0Lab at the University of Southern Denmark.</p>
</sec>
<ack>
<p>The authors would also like to thank ROPCA ApS for allowing them to use their robot platform, ARTHUR, for data acquisition.</p>
</ack>
<sec sec-type="COI-statement" id="s11">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s12">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors, and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Abraham</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Murphey</surname>
<given-names>T. D.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Active learning of dynamics for data-driven control using koopman operators</article-title>. <source>IEEE Trans. Robotics</source> <volume>35</volume>, <fpage>1071</fpage>&#x2013;<lpage>1083</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2019.2923880</pub-id>
</citation>
</ref>
<ref id="B2">
<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>2019 18th European Control Conference (ECC)</conf-name>, <conf-loc>Naples, Italy</conf-loc>, <conf-date>25-28 June 2019</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>3420</fpage>&#x2013;<lpage>3431</lpage>. <pub-id pub-id-type="doi">10.23919/ECC.2019.8796030</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>Grizzle</surname>
<given-names>J. 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>53rd IEEE Conference on Decision and Control</conf-name>, <conf-loc>Los Angeles, CA, USA</conf-loc>, <conf-date>15-17 December 2014</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>6271</fpage>&#x2013;<lpage>6278</lpage>.</citation>
</ref>
<ref id="B4">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Andersen</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Dahl</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Vandenberghe</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2020</year>). <source>CVXOPT: convex optimization</source>.</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Balandat</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Karrer</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Jiang</surname>
<given-names>D. R.</given-names>
</name>
<name>
<surname>Daulton</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Letham</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Wilson</surname>
<given-names>A. G.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>BoTorch: a framework for efficient monte-carlo bayesian optimization</article-title>. <source>Adv. Neural Inf. Process. Syst.</source> <volume>33</volume>.</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Berkenkamp</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Krause</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Schoellig</surname>
<given-names>A. P.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Bayesian optimization with safety constraints: safe and automatic parameter tuning in robotics</article-title>. <source>Mach. Learn.</source> <volume>112</volume>, <fpage>3713</fpage>&#x2013;<lpage>3747</lpage>. <pub-id pub-id-type="doi">10.1007/s10994-021-06019-1</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Casta&#xf1;eda</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Choi</surname>
<given-names>J. J.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Tomlin</surname>
<given-names>C. J.</given-names>
</name>
<name>
<surname>Sreenath</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2021</year>). &#x201c;<article-title>Pointwise feasibility of Gaussian process-based safety-critical control under model uncertainty</article-title>,&#x201d; in <conf-name>2021 60th IEEE Conference on Decision and Control (CDC)</conf-name> (<publisher-name>IEEE</publisher-name>), <fpage>6762</fpage>&#x2013;<lpage>6769</lpage>.</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chatelain</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Krupa</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Navab</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Confidence-Driven control of an ultrasound probe</article-title>. <source>IEEE Trans. Robotics</source> <volume>33</volume>, <fpage>1410</fpage>&#x2013;<lpage>1424</lpage>. <pub-id pub-id-type="doi">10.1109/TRO.2017.2723618</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chatzilygeroudis</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Mayr</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Fichera</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Billard</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Iiwa<sub>r</sub>os: a ROS stack for KUKA&#x2019;s IIWA robots using the fast research interface</article-title>
</citation>
</ref>
<ref id="B10">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Cohen</surname>
<given-names>M. H.</given-names>
</name>
<name>
<surname>Belta</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2022</year>). &#x201c;<article-title>High order robust adaptive control barrier functions and exponentially stabilizing adaptive control lyapunov functions</article-title>,&#x201d; in <conf-name>2022 American Control Conference (ACC)</conf-name>, <conf-loc>Atlanta, GA, USA</conf-loc>, <conf-date>08-10 June 2022</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>2233</fpage>&#x2013;<lpage>2238</lpage>. <pub-id pub-id-type="doi">10.23919/ACC53348.2022.9867633</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>De Farias</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Marturi</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Stolkin</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Bekiroglu</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Simultaneous tactile exploration and grasp refinement for unknown objects</article-title>. <source>IEEE Robotics Automation Lett.</source> <volume>6</volume>, <fpage>3349</fpage>&#x2013;<lpage>3356</lpage>. <pub-id pub-id-type="doi">10.1109/lra.2021.3063074</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Driess</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Hennes</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Toussaint</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>Active multi-contact continuous tactile exploration with Gaussian process differential entropy</article-title>,&#x201d; in<conf-name>2019 International Conference on Robotics and Automation (ICRA)</conf-name>, <conf-loc>Montreal, QC, Canada</conf-loc>, <conf-date>20-24 May 2019</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>7844</fpage>&#x2013;<lpage>7850</lpage>.</citation>
</ref>
<ref id="B13">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Goel</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Abhimanyu</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Patel</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Galeotti</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Choset</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2022</year>). &#x201c;<article-title>Autonomous ultrasound scanning using bayesian optimization and hybrid force control</article-title>,&#x201d; in <conf-name>2022 International Conference on Robotics and Automation (ICRA)</conf-name>, <conf-loc>Philadelphia, PA, USA</conf-loc>, <conf-date>23-27 May 2022</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>8396</fpage>&#x2013;<lpage>8402</lpage>. <pub-id pub-id-type="doi">10.1109/ICRA46639.2022.9812410</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Jamali</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Ciliberto</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Rosasco</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Natale</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Active perception: building objects&#x2019; models using tactile exploration</article-title>,&#x201d; in <conf-name>2016 IEEE-RAS 16th International Conference on Humanoid Robots (Humanoids)</conf-name>, <conf-loc>Cancun, Mexico</conf-loc>, <conf-date>15-17 November 2016</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>179</fpage>&#x2013;<lpage>185</lpage>.</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jiang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Grimm</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Esteban</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Simson</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Zahnd</surname>
<given-names>G.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Automatic normal positioning of robotic ultrasound probe based only on confidence map optimization and force measurement</article-title>. <source>IEEE Robotics Automation Lett.</source> <volume>5</volume>, <fpage>1342</fpage>&#x2013;<lpage>1349</lpage>. <pub-id pub-id-type="doi">10.1109/LRA.2020.2967682</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jiang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Grimm</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Esteban</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Navab</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2021a</year>). <article-title>Automatic force-based probe positioning for precise robotic ultrasound acquisition</article-title>. <source>IEEE Trans. Industrial Electron.</source> <volume>68</volume>, <fpage>11200</fpage>&#x2013;<lpage>11211</lpage>. <pub-id pub-id-type="doi">10.1109/TIE.2020.3036215</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jiang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Grimm</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Esposito</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Wein</surname>
<given-names>W.</given-names>
</name>
<etal/>
</person-group> (<year>2021b</year>). <article-title>Autonomous robotic screening of tubular structures based only on real-time ultrasound imaging feedback</article-title>. <comment>arXiv:2011.00099</comment>.</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Karamalis</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Wein</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Klein</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Navab</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2012</year>). <article-title>Ultrasound confidence maps using random walks</article-title>. <source>Med. Image Anal.</source> <volume>16</volume>, <fpage>1101</fpage>&#x2013;<lpage>1112</lpage>. <pub-id pub-id-type="doi">10.1016/j.media.2012.07.005</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Koller</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Berkenkamp</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Turchetta</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Krause</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Learning-based model predictive control for safe exploration</article-title>,&#x201d; in <conf-name>2018 IEEE conference on decision and control (CDC)</conf-name>, <conf-loc>Miami, FL, USA</conf-loc>, <conf-date>17-19 December 2018</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>6059</fpage>&#x2013;<lpage>6066</lpage>.</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kroemer</surname>
<given-names>O. B.</given-names>
</name>
<name>
<surname>Detry</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Piater</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Peters</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Combining active learning and reactive control for robot grasping</article-title>. <source>Robotics Aut. Syst.</source> <volume>58</volume>, <fpage>1105</fpage>&#x2013;<lpage>1116</lpage>. <pub-id pub-id-type="doi">10.1016/j.robot.2010.06.001</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lew</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Sharma</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Harrison</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Bylard</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Pavone</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Safe active dynamics learning and control: a sequential exploration&#x2013;exploitation framework</article-title>. <source>IEEE Trans. Robotics</source> <volume>38</volume>, <fpage>2888</fpage>&#x2013;<lpage>2907</lpage>. <pub-id pub-id-type="doi">10.1109/tro.2022.3154715</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lluvia</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Lazkano</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Ansuategi</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Active mapping and robot exploration: a survey</article-title>. <source>Sensors</source> <volume>21</volume>, <fpage>2445</fpage>. <pub-id pub-id-type="doi">10.3390/s21072445</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Marchant</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Ramos</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Bayesian Optimisation for informative continuous path planning</article-title>,&#x201d; in <conf-name>2014 IEEE International Conference on Robotics and Automation (ICRA)</conf-name>, <conf-loc>Hong Kong, China</conf-loc>, <conf-date>31 May 2014 - 07 June 2014</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>6136</fpage>&#x2013;<lpage>6143</lpage>. <pub-id pub-id-type="doi">10.1109/ICRA.2014.6907763</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mockus</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Tiesis</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Zilinskas</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>1978</year>). <article-title>The application of Bayesian methods for seeking the extremum</article-title>. <source>Towards Glob. Optim.</source> <volume>2</volume>, <fpage>2</fpage>.</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>M&#xf6;ller</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Janta</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Backhaus</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ohrndorf</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Bong</surname>
<given-names>D. A.</given-names>
</name>
<name>
<surname>Martinoli</surname>
<given-names>C.</given-names>
</name>
<etal/>
</person-group> (<year>2017</year>). <article-title>The 2017 EULAR standardised procedures for ultrasound imaging in rheumatology</article-title>. <source>Ann. Rheumatic Dis.</source> <volume>76</volume>, <fpage>1974</fpage>&#x2013;<lpage>1979</lpage>. <pub-id pub-id-type="doi">10.1136/annrheumdis-2017-211585</pub-id>
</citation>
</ref>
<ref id="B26">
<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>2016 American Control Conference (ACC)</conf-name>, <conf-loc>Boston, MA, USA</conf-loc>, <conf-date>06-08 July 2016</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>322</fpage>&#x2013;<lpage>328</lpage>. <pub-id pub-id-type="doi">10.1109/ACC.2016.7524935</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Nogueira</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Martinez-Cantin</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Bernardino</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Jamone</surname>
<given-names>L.</given-names>
</name>
</person-group> (<year>2016</year>). &#x201c;<article-title>Unscented bayesian optimization for safe robot grasping</article-title>,&#x201d; in <conf-name>2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</conf-name>, <conf-loc>Daejeon, Korea</conf-loc>, <conf-date>09-14 October 2016</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>1967</fpage>&#x2013;<lpage>1972</lpage>.</citation>
</ref>
<ref id="B28">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Pandya</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2022</year>). &#x201c;<article-title>Safe and efficient exploration of human models during human-robot interaction</article-title>,&#x201d; in <conf-name>2022 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</conf-name>, <conf-loc>Kyoto, Japan</conf-loc>, <conf-date>23-27 October 2022</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>6708</fpage>&#x2013;<lpage>6715</lpage>.</citation>
</ref>
<ref id="B29">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Rasmussen</surname>
<given-names>C. E.</given-names>
</name>
<name>
<surname>Williams</surname>
<given-names>C. K. I.</given-names>
</name>
</person-group> (<year>2005</year>). <source>Gaussian processes for machine learning</source>. <publisher-loc>United States</publisher-loc>: <publisher-name>The MIT Press</publisher-name>. <pub-id pub-id-type="doi">10.7551/mitpress/3206.001.0001</pub-id>
</citation>
</ref>
<ref id="B30">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ren</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Xiao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Huang</surname>
<given-names>P.-Y.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Gupta</surname>
<given-names>B. B.</given-names>
</name>
<etal/>
</person-group> (<year>2021</year>). <article-title>A survey of deep active learning</article-title>. <source>ACM Comput. Surv. (CSUR)</source> <volume>54</volume>, <fpage>1</fpage>&#x2013;<lpage>40</lpage>. <pub-id pub-id-type="doi">10.1145/3472291</pub-id>
</citation>
</ref>
<ref id="B31">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Romdlony</surname>
<given-names>M. Z.</given-names>
</name>
<name>
<surname>Jayawardhana</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Uniting control lyapunov and control barrier functions</article-title>,&#x201d; in <conf-name>53rd IEEE Conference on Decision and Control</conf-name>, <conf-loc>Los Angeles, CA, USA</conf-loc>, <conf-date>15-17 December 2014</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>2293</fpage>&#x2013;<lpage>2298</lpage>. <pub-id pub-id-type="doi">10.1109/CDC.2014.7039737</pub-id>
</citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Roveda</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Maroni</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Mazzuchelli</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Praolini</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Shahid</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Bucca</surname>
<given-names>G.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). <article-title>Robot end-effector mounted camera pose optimization in object detection-based tasks</article-title>. <source>J. Intelligent Robotic Syst.</source> <volume>104</volume>, <fpage>16</fpage>. <pub-id pub-id-type="doi">10.1007/s10846-021-01558-0</pub-id>
</citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Shahriari</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Swersky</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Adams</surname>
<given-names>R. P.</given-names>
</name>
<name>
<surname>de Freitas</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Taking the human out of the loop: a review of bayesian optimization</article-title>. <source>Proc. IEEE</source> <volume>104</volume>, <fpage>148</fpage>&#x2013;<lpage>175</lpage>. <pub-id pub-id-type="doi">10.1109/JPROC.2015.2494218</pub-id>
</citation>
</ref>
<ref id="B34">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Siciliano</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Sciavicco</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Villani</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Oriolo</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2008</year>). <source>Robotics: modelling, planning and control</source>. <edition>1st edn</edition>. <publisher-loc>Incorporated</publisher-loc>: <publisher-name>Springer Publishing Company</publisher-name>.</citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Turchetta</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Berkenkamp</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Krause</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Safe exploration for interactive machine learning</article-title>. <source>Adv. Neural Inf. Process. Syst.</source> <volume>32</volume>.</citation>
</ref>
<ref id="B36">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Virga</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Zettinig</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Esposito</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Pfister</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Frisch</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Neff</surname>
<given-names>T.</given-names>
</name>
<etal/>
</person-group> (<year>2016</year>). &#x201c;<article-title>Automatic force-compliant robotic ultrasound screening of abdominal aortic aneurysms</article-title>,&#x201d; in <conf-name>2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</conf-name>, <conf-loc>Daejeon, Korea</conf-loc>, <conf-date>09-14 October 2016</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>508</fpage>&#x2013;<lpage>513</lpage>. <pub-id pub-id-type="doi">10.1109/IROS.2016.7759101</pub-id>
</citation>
</ref>
<ref id="B37">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Welleweerd</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>de Groot</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>de Looijer</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Siepel</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Stramigioli</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Automated robotic breast ultrasound acquisition using ultrasound feedback</article-title>,&#x201d; in <conf-name>2020 IEEE International Conference on Robotics and Automation (ICRA)</conf-name>, <conf-loc>Paris, France</conf-loc>, <conf-date>31 May 2020 - 31 August 2020</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>9946</fpage>&#x2013;<lpage>9952</lpage>. <pub-id pub-id-type="doi">10.1109/ICRA40945.2020.9196736</pub-id>
</citation>
</ref>
<ref id="B38">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Yi</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Calandra</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Veiga</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>van Hoof</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Hermans</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
<etal/>
</person-group> (<year>2016</year>). &#x201c;<article-title>Active tactile object exploration with Gaussian processes</article-title>,&#x201d; in <conf-name>2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)</conf-name>, <conf-loc>Daejeon, Korea</conf-loc>, <conf-date>09-14 October 2016</conf-date> (<publisher-name>IEEE</publisher-name>), <fpage>4925</fpage>&#x2013;<lpage>4930</lpage>.</citation>
</ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Bazarevsky</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>Vakunov</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Tkachenka</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sung</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>C.-L.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>MediaPipe hands: on-device real-time hand tracking</article-title>. <comment>arXiv</comment>. <pub-id pub-id-type="doi">10.48550/arXiv.2006.10214</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>