<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s120302996</article-id>
<article-id pub-id-type="publisher-id">sensors-12-02996</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Ranging in an Underwater Medium with Multiple Isogradient Sound Speed Profile Layers</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Ramezani</surname><given-names>Hamid</given-names></name><xref ref-type="corresp" rid="c1-sensors-12-02996"><sup>★</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Leus</surname><given-names>Geert</given-names></name></contrib>
<aff id="af1-sensors-12-02996">Faculty of Electrical Engineering, Mathematics and Computer Science, Delft University of Technology, 2826 CD Delft, The Netherlands; E-Mail: <email>g.j.t.leus@tudelft.nl</email></aff></contrib-group>
<author-notes>
<corresp id="c1-sensors-12-02996">
<label>★</label> Author to whom correspondence should be addressed; E-Mail: <email>h.mashhadiramezani@tudelft.nl</email>; Tel.: +31-1-5278-6280; Fax: +31-1-5278-6190.</corresp></author-notes>
<pub-date pub-type="collection">
<month>3</month>
<year>2012</year></pub-date>
<pub-date pub-type="epub">
<day>2</day>
<month>3</month>
<year>2012</year></pub-date>
<volume>12</volume>
<issue>3</issue>
<fpage>2996</fpage>
<lpage>3017</lpage>
<history>
<date date-type="received">
<day>17</day>
<month>12</month>
<year>2011</year></date>
<date date-type="rev-recd">
<day>20</day>
<month>2</month>
<year>2012</year></date>
<date date-type="accepted">
<day>24</day>
<month>2</month>
<year>2012</year></date></history>
<permissions>
<copyright-statement>© 2012 by the authors; licensee MDPI, Basel, Switzerland</copyright-statement>
<copyright-year>2012</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>In this paper, we analyze the problem of acoustic ranging between sensor nodes in an underwater environment. The underwater medium is assumed to be composed of multiple isogradient sound speed profile (SSP) layers where in each layer the sound speed is linearly related to the depth. Furthermore, each sensor node is able to measure its depth and can exchange this information with other nodes. Under these assumptions, we first show how the problem of underwater localization can be converted to the traditional range-based terrestrial localization problem when the depth information of the nodes is known a priori. Second, we relate the pair-wise time of flight (ToF) measurements between the nodes to their positions. Next, based on this relation, we propose a novel ranging algorithm for an underwater medium. The proposed ranging algorithm considers reflections from the seabed and sea surface. We will show that even without any reflections, the transmitted signal may travel through more than one path between two given nodes. The proposed algorithm analyzes them and selects the fastest one (first arrival path) based on the measured ToF and the nodes’ depth measurements. Finally, in order to evaluate the performance of the proposed algorithm we run several simulations and compare the results with other existing algorithms.</p></abstract>
<kwd-group>
<kwd>localization</kwd>
<kwd>ranging</kwd>
<kwd>sound speed profile</kwd>
<kwd>ray tracing</kwd>
<kwd>underwater acoustic sensor networks</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Available wireless sensor network (WSN) localization techniques rely on mutual distances between sensors [<xref ref-type="bibr" rid="b1-sensors-12-02996">1</xref>], which are for instance estimated from time of flight (ToF) measurements. In homogeneous medium, like air, where the propagating wave speed is constant, the mutual distances between the nodes are linearly related to the ToFs. In contrast, the propagating wave speed inside an inhomogeneous medium is not constant, and depends on the location. In such a medium, the ToF between two nodes depends not only on the sound speed profile (SSP) of that medium but also on the position of the two nodes [<xref ref-type="bibr" rid="b2-sensors-12-02996">2</xref>]. Therefore, the ToF is not linearly proportional to the Euclidean distance between the nodes, and the distance-dependent localization techniques are not appropriate for inhomogeneous media. As a result, they should be modified to ToF-based techniques.</p>
<p>In [<xref ref-type="bibr" rid="b3-sensors-12-02996">3</xref>], the problem of localizing a node in an underwater environment with a known depth-dependent SSP is considered. As the target node measures the ToF from an anchor node, the corresponding constant range interval surface for the measured ToF is constructed. To construct a single constant range interval surface, the path trajectory for each departing ray from an anchor node is calculated. Then on each path trajectory, a point is selected based on the measured ToF. All theses points together form the constant range interval surface. After sufficient ToF measurements are taken, the position of the target node is estimated as a point whose sum of squared distances from all these surfaces is minimum. The main drawback of this approach is the computational complexity which is dependent on the network size and the required accuracy.</p>
<p>In our earlier work [<xref ref-type="bibr" rid="b4-sensors-12-02996">4</xref>], we consider the problem of localizing a target node in an underwater environment with an isogradient SSP. There, we directly work with the ToF measurements, and we localize a target node based on the ToF equations. Since the algorithm is based on an analytical approach, the computational complexity is acceptable. Although the assumption of a single isogradient SSP is appropriate for a deep underwater medium, it is not valid for the entire environment. The sound speed at a given point in an underwater medium is affected by the salinity, water temperature and pressure of that point [<xref ref-type="bibr" rid="b5-sensors-12-02996">5</xref>], and in general this causes the SSP to vary nonlinearly and even non-monotonically with respect to (w.r.t.) the depth, especially in a shallow underwater medium.</p>
<p>In [<xref ref-type="bibr" rid="b6-sensors-12-02996">6</xref>] and [<xref ref-type="bibr" rid="b7-sensors-12-02996">7</xref>], the localization of an underwater WSN is investigated, in a 3D environment assuming knowledge of the nodes’ depth. These algorithms can help us to convert the inhomogeneous underwater localization problem into a traditional 2D homogeneous distance-dependent localization problem, which is well-studied in the literature [<xref ref-type="bibr" rid="b8-sensors-12-02996">8</xref>,<xref ref-type="bibr" rid="b9-sensors-12-02996">9</xref>]. We will show that as the depth information is known a priori, the ToF between two nodes only depends on the horizontal distance and thus also on the distance between the nodes. Hence, having the ToF measurement between two nodes, the pair-wise distance can be computed. As an example, based on the depth information and the SSP, a look up table (LUT) is built in [<xref ref-type="bibr" rid="b10-sensors-12-02996">10</xref>], which relates the ToF measurement to the horizontal distance between two nodes. The algorithm of [<xref ref-type="bibr" rid="b10-sensors-12-02996">10</xref>] is very fast, but to scan the whole inhomogeneous environment, a huge LUT is required which may not be practical. Furthermore, the SSP in an underwater medium is subject to changes in temperature and conductivity, and any change in SSP degrades the LUT accuracy and upsets the localization performance.</p>
<p>In [<xref ref-type="bibr" rid="b11-sensors-12-02996">11</xref>], the problem of ranging in an inhomogeneous underwater environment is considered. A numerical range estimator is proposed which is based on reconstructing the slanted path using Fermat’s principle and calculus of variations. Basically, after depth and time measurements, the authors form an integral equality which is taken over the depth between nodes. Then, they try to numerically calculate the constant defined by Snell’s law. Afterwards, by using the computed constant, they calculate the horizontal distance between the nodes through another integral equality. Their work is really comprehensive since with any given SSP, the horizontal distance is computable, but their algorithm to compute the constant value (defined by Snell’s law) has an ambiguity, because in an inhomogeneous medium it is common that a traveling ray from one node to another node passes a given depth more than once. Since the depth of a point on a traveling ray trajectory is not a monotonic function of the depth, this phenomenon casts an ambiguity on the value of any integral taken w.r.t. the depth along the traveling path.</p>
<p>In this work, we analyze the acoustic signal propagation between two sensor nodes in an underwater environment. We use a ray-tracing approach to model the propagation which is a valid approximation for high-frequency signal transmission [<xref ref-type="bibr" rid="b10-sensors-12-02996">10</xref>]. We assume that the underwater medium is composed of different layers with an isogradient SSP, which is a practical model for the actual SSP of the entire environment [<xref ref-type="bibr" rid="b12-sensors-12-02996">12</xref>,<xref ref-type="bibr" rid="b13-sensors-12-02996">13</xref>]. We will show that in such an environment, if the depth information of two nodes located on a specific ray is known, then the positions of the crossing points, where the ray trajectory and the layer boundaries meet each other, can be obtained through a set of polynomial root finding equations. Based on these equations we are able to distinguish among different possible transmission paths between the nodes, and determine the fastest one. The proposed method for finding the fastest transmission path between the nodes can handle reflections from the surface and the seabed by adding more polynomial equations to the set. Another contribution of this paper is a novel method for accurate ranging between the nodes. The proposed algorithm computes the horizontal distance between two nodes based on the ToF and depth measurements. The algorithm estimates the range of a target by minimizing the difference between the measured ToF and the constructed ToF estimated from the known map in an iterative manner.</p>
<p>The rest of the paper is organized as follows. We describe the network model in Section 2, and we compute the ToF <italic>versus</italic> the node positions in Section 3. Next, in Section 4, we propose our ranging algorithm, and we extract its CRB. Then in Section 5, we evaluate the performance of the proposed algorithm through several simulations. Finally, we conclude the paper in Section 6.</p></sec>
<sec>
<label>2.</label>
<title>Network Model</title>
<p>Consider <italic>K</italic> anchor nodes with known locations and one target node in an underwater acoustic sensor network (UASN). The goal of the system is to estimate the position of the target node with ToF and depth measurements. To relate the wave ToF to the node position inside an underwater medium, we are faced with the classical problem of how an individual ray behaves in the medium, and how a ray departing one node arrives at the other node.</p>
<p>Assume that the wave speed in a Cartesian coordinate system is a function of the position and is defined by <italic>c</italic>(<italic>x, y, z</italic>). Then, we can compute the ToF between two nodes, <bold>x</bold><sup>S</sup> and <bold>x</bold><sup>E</sup> as
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mo>∫</mml:mo>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo>,</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msub>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">ds</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>s</italic> is the arc length, which is related to the ray path according to the standard ray equation
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:mrow>
<mml:mfrac>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">ds</mml:mi></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi mathvariant="bold">x</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">ds</mml:mi></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mo>∇</mml:mo>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula>with <bold>x</bold> = <bold>x</bold>(<italic>s</italic>) = [<italic>x</italic>(<italic>s</italic>), <italic>y</italic>(<italic>s</italic>), <italic>z</italic>(<italic>s</italic>)]<italic><sup>T</sup></italic> the position on the ray determined by the arc length <italic>s</italic>. It is clear from <xref ref-type="disp-formula" rid="FD1">Equation (1)</xref> that in an inhomogeneous medium the ToF between two nodes is not linearly dependent on the distance between them, and is a function of the two node positions. Using the ToF measurements to <italic>K</italic> anchors, the location of a node can be obtained as,
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>^</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mtext>min</mml:mtext></mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi></mml:munder>
<mml:mo> </mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi mathvariant="bold">t</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">t</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:math></disp-formula>where <bold>t</bold>(<bold>x</bold>) is a <italic>K</italic> × 1 vector with the <italic>k</italic>-th element representing the ToF between the target node and the <italic>k</italic>-th anchor node, and <bold>t</bold><sub>m</sub> is a vector denoting the noisy ToF measurements to all <italic>K</italic> anchors. To localize a node in a 3D inhomogeneous environment without depth information at least four anchors are needed, and the localization process is known as quadrilateration. If the depth information is available, it is possible to localize a node with just three anchors, but still we have to work with ToFs. For more information about how the anchor nodes inside the network are selected and how they can communicate with each other, the reader is referred to [<xref ref-type="bibr" rid="b6-sensors-12-02996">6</xref>].</p>
<p>In an underwater medium where the sound speed varies only with depth, the availability of depth information does not only allow us to work with only three anchors, it also opens the door to convert the time-based localization problem into a traditional range-based one as explained next.</p>
<p>Since the SSP is only a function of depth, the problem of ray tracing between two nodes has a cylindrical symmetry around the line parallel to the <italic>z</italic>-axis and passing through one of the nodes. Hence, we can map the problem of ray tracing into a vertical plane that crosses the two nodes. As the depth of each node inside the plane is known, the ToF only depends on the horizontal range between the nodes. In other words, the horizontal distance between the nodes is the only variable that determines the ToF. Suppose now that the ToF of the first arrival path as a function of the horizontal distance is an invertible function, meaning that the ToF of the first arrival path between two points located at specific depths is a monotonic (actually increasing) function of the horizontal distance between the nodes. Then, one parameter can be computed from the other, and we are basically able to estimate the distance between the nodes using the corresponding ToFs. If the above assumption does not hold for a given environment, then there would be ambiguities in the ranging problem. However, this monotonicity is generally observed.</p>
<p>The conversion of a 3D underwater localization problem to a 2D one can now be explained as depicted in <xref ref-type="fig" rid="f1-sensors-12-02996">Figure 1</xref>. Using the ToFs and depth information, the unknown node computes the pair-wise distances to the other nodes. Then it projects the estimated distances on a horizontal plane at its depth. Finally, based on the projected distances, 2D multilateration is performed to compute its position [<xref ref-type="bibr" rid="b7-sensors-12-02996">7</xref>]. Therefore, localizing a node in this case only requires the knowledge of the projected distances to the anchors or the estimated horizontal distances.</p></sec>
<sec>
<label>3.</label>
<title>ToF <italic>Versus</italic> Node Positions</title>
<p>In order to relate the ToF to the node positions, we first require to find which ray departing the source reaches a specific destination. In this section, we analytically find the rays that can travel between two nodes with known positions, and we compute their corresponding ToFs based on their trajectories. It is worth mentioning that in an underwater medium with fixed SSP, each ray departing a source can be uniquely characterized by its departing angle.</p>
<p>Here the SSP is considered as a piece-wise linear function of the depth which is a valid approximation according to the measured data [<xref ref-type="bibr" rid="b14-sensors-12-02996">14</xref>]:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math display="block">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup>
<mml:mo> </mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup>
<mml:mo>&lt;</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>&lt;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>∈</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi></mml:mrow></mml:math></disp-formula>where <italic>z</italic> represents the depth, <italic>a</italic><sup>(<italic>j</italic>)</sup> and <italic>b</italic><sup>(<italic>j</italic>)</sup> are related to the chemical and physical characteristics of the <italic>j</italic>-th isogradient SSP layer, and <italic>N</italic> is the number of layers. In our previous work [<xref ref-type="bibr" rid="b4-sensors-12-02996">4</xref>], we show how a ray can travel between two nodes located inside an isogradient SSP underwater environment. We review this work first for completeness.</p>
<sec>
<label>3.1.</label>
<title>ToF <italic>Versus</italic> Node Positions in a Single Layer</title>
<sec>
<title>Exact Propagation</title>
<p>In a single layer, each truncated ray (indexed by <italic>p</italic>) between two points, <italic>i.e.</italic>, S<italic><sub>p</sub></italic> and E<italic><sub>p</sub></italic> in <xref ref-type="fig" rid="f2-sensors-12-02996">Figure 2</xref>, can be uniquely characterized if the position of the starting point, position of the end point, and SSP are known. In order to simplify the notation, we index the SSP from now on by the truncated ray index instead of the layer index. For instance, for the <italic>p</italic>-th truncated ray located at the <italic>j</italic>-th layer, we introduce the new notation
<disp-formula id="FD5">
<label>(5)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup>
<mml:mo> </mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></disp-formula></p>
<p>The relation between the ToF and the node positions can then be extracted from a set of differential equations characterized by Snell’s law [<xref ref-type="bibr" rid="b10-sensors-12-02996">10</xref>],
<disp-formula id="FD6">
<label>(6)</label>
<mml:math display="block">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mtext>and </mml:mtext>
<mml:mi>θ</mml:mi>
<mml:mo>∈</mml:mo>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>π</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mi>π</mml:mi>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> are the ray angles at the starting and end points, respectively, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> represent the depth of the starting and end node, respectively, and <italic>k</italic><sub>0</sub> is constant along a ray traveling between the nodes (see <xref ref-type="fig" rid="f2-sensors-12-02996">Figure 2</xref>). Moreover, the parameters <italic>θ</italic> and <italic>z</italic> represent the angle and depth of a given point along the ray. Now, we can write
<disp-formula id="FD7a">
<label>(7a)</label>
<mml:math display="block">
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD7b">
<label>(7b)</label>
<mml:math display="block">
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>s</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD7c">
<label>(7c)</label>
<mml:math display="block">
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>s</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>where <italic>s</italic> is the arc length of a ray traveling between the two nodes, and <italic>t</italic> is its corresponding travel time. From <xref ref-type="disp-formula" rid="FD5">Equations (5)</xref> and <xref ref-type="disp-formula" rid="FD6">(6)</xref>, by taking derivatives w.r.t. <italic>z</italic> and <italic>θ</italic>, we can write
<disp-formula id="FD8">
<label>(8)</label>
<mml:math display="block">
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo> </mml:mo>
<mml:mo>∂</mml:mo>
<mml:mi>θ</mml:mi></mml:mrow></mml:math></disp-formula>Using the above differential equations, for the two points we have [<xref ref-type="bibr" rid="b4-sensors-12-02996">4</xref>]
<disp-formula id="FD9a">
<label>(9a)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD9b">
<label>(9b)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD9c">
<label>(9c)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>≠</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn>0.5</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD9d">
<label>(9d)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>0.5</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>0.5</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD9e">
<label>(9e)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD9f">
<label>(9f)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>α</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD9g">
<label>(9g)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>α</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD9h">
<label>(9h)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>α</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD9i">
<label>(9i)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mo>−</mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is the horizontal distance between the points, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> are the coordinates of the starting and end points, respectively, and <italic>t<sub>p</sub></italic> is the traveling time of a truncated ray between these two nodes. Note that <italic>β<sub>p</sub></italic> represents the angle of the straight line connecting the nodes w.r.t. the horizontal axis, and <italic>α<sub>p</sub></italic> is the angle between the actual ray and this straight line. From <xref ref-type="disp-formula" rid="FD9g">Equations (9g)</xref> and <xref ref-type="disp-formula" rid="FD9h">(9h)</xref>, it can be seen that the ray deviations from the straight line at the starting and end point are the same but have opposite signs.</p></sec>
<sec>
<title>Linear ToF Approximation</title>
<p>The simple linear ToF approximation based on the depth information between two nodes in the same layer, which assumes a straight-line ray propagation, can be derived as
<disp-formula id="FD10">
<label>(10)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>app</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>p</mml:mi></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>∫</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:msubsup>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mtext>sin</mml:mtext>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="italic">dz</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo></mml:mrow></mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>d</italic><sup>S<sub><italic>p</italic></sub>E<sub><italic>p</italic></sub></sup> is the straight-line distance between the starting point and end point of the truncated ray, and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> are the sound speeds at the starting and end point, respectively. From <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref>, it can be seen that <italic>t</italic><sub>app<italic>,p</italic></sub> has a linear dependency on the range which is analogous to homogeneous medium. A similar approximation for a multi-layer medium which assumes a straight-line wave propagation between two nodes, <bold>x</bold><sup>S</sup> and <bold>x</bold><sup>E</sup>, can be obtained as
<disp-formula id="FD11">
<label>(11)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mtext>app</mml:mtext></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>SE</mml:mtext></mml:mrow></mml:msup></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup></mml:mrow></mml:mfrac>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>P</mml:mi></mml:munderover>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>d</italic><sup>SE</sup> is the distance between the nodes, and <italic>P</italic> is the number of single-layer parts of the straight ray. For a straight ray, the number of single layer parts between two nodes is exactly the same as the number of layers it passes. The accuracy of the straight-line approximation will be evaluated in the numerical section.</p>
<p>Fermat’s principal, which also leads to Snell’s law, states that the path traveled by a ray between two points is the path that can be traversed in the least amount of time. Therefore, the approximated time based on a straight-line ray propagation, <italic>t</italic><sub>app</sub>, is always greater than the actual ToF. For instance, in <xref ref-type="fig" rid="f3-sensors-12-02996">Figure 3</xref>, it is shown that the difference between <italic>t</italic><sub>app<italic>,p</italic></sub> and the actual ToF, <italic>t<sub>p</sub></italic>, is always positive. Here, we assume that the sound speed at <italic>z</italic> = 0 is <italic>b<sub>p</sub></italic> = 1,480 m/s, and we compute the ToF error for different values of depth, distance, and sound speed steepness. It is shown that as the absolute value of the SSP steepness, |<italic>a<sub>p</sub></italic>|, increases this error grows exponentially. In addition, for the low values of SSP steepness, the change in depth has less effect on this error in comparison with the change in pair-wise distance.</p></sec></sec>
<sec>
<label>3.2.</label>
<title>ToF <italic>Versus</italic> Node Positions for Two Adjacent Layers</title>
<p>We start our analysis by considering a ray traveling between two points in adjacent layers. As illustrated in <xref ref-type="fig" rid="f2-sensors-12-02996">Figure 2</xref>, there are many ways for a ray to travel from U to V. An analysis of all possible rays is feasible, and we will later on discuss this. Now, we only focus on a ray which crosses the intermediate boundary only once, and does not propagate into other layers except these two adjacent layers such as the ray from A to B in <xref ref-type="fig" rid="f2-sensors-12-02996">Figure 2</xref>. In this scenario, when the <italic>r</italic> coordinate of the crossing point, M, is computed, we are able to relate the positions of the two nodes to the ToF. It can be seen that the ray has two parts, one indexed by <italic>p</italic> = 1, and the other by <italic>p</italic> + 1 = 2. The ending point of the first part is the starting point of the second part. Thus, the two parts of the ray can be related to each other according to
<disp-formula id="FD12">
<label>(12)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:math></disp-formula>Another representation for <xref ref-type="disp-formula" rid="FD12">Equation (12)</xref> can be obtained by taking the tangent from both sides of the equation. Using <xref ref-type="disp-formula" rid="FD9e">Equations (9e)</xref> to <xref ref-type="disp-formula" rid="FD9h">(9h)</xref>, the boundary equation can then be modified to
<disp-formula id="FD13">
<label>(13)</label>
<mml:math display="block">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>Y</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msub></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>Y</mml:mi></mml:mrow>
<mml:mn>1</mml:mn></mml:msub></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi></mml:mrow>
<mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>For a two-part ray, the combination of <xref ref-type="disp-formula" rid="FD9b">Sub-Equations (9b)</xref>, <xref ref-type="disp-formula" rid="FD9c">(9c)</xref>, and <xref ref-type="disp-formula" rid="FD9d">(9d)</xref> for each part, together with boundary <xref ref-type="disp-formula" rid="FD13">Equation (13)</xref> forms a third-order polynomial root finding problem where the roots represent the possible <italic>r</italic> coordinates of the crossing point M. Notice that the node positions and the depth of M are known and as a result, the parameters <italic>K</italic><sub>1</sub> and <italic>K</italic><sub>2</sub> can be computed easily, <italic>X</italic><sub>1</sub> (<italic>X</italic><sub>2</sub>) is inversely related to <italic>Y</italic><sub>1</sub> (<italic>Y</italic><sub>2</sub>), and the only unknown parameter is <italic>r</italic><sup>M</sup> which determines <italic>X</italic><sub>1</sub> and <italic>X</italic><sub>2</sub>. Since there are at most three roots for a third order polynomial, there are at most three ways for a ray departing at A to reach B (note that we are still assuming that a ray crosses the boundary once, and propagates only in these two adjacent layers). For each of these possible rays the ToF can be calculated as,
<disp-formula id="FD14">
<label>(14)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mo>−</mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mo>−</mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p></sec>
<sec>
<label>3.3.</label>
<title>Pattern Definition for Multi-Layer Ray Propagation</title>
<p>To simplify the multi-layer analysis, we define the concept of <italic>ray pattern</italic>. A ray pattern is a set consisting of all possible rays that can travel between two points. For example, a ray pattern of 2.1.1.2 means that, the ray departs the starting point from the second layer, goes to the first layer, hits the surface, and arrives to the second node in the second layer. Therefore, a <italic>ray pattern</italic> has several properties. First, the number of digits used in the <italic>ray pattern</italic> indicates the number of single-layer parts a ray consists of. Second, it shows in which layer each part of a ray is located. Third, the reflection from the sea surface and the seabed can easily be modeled by this concept. Using the <italic>ray pattern</italic> concept, we are able to show how a ray can travel in a given medium, and which pattern may host the fastest ray.</p></sec>
<sec>
<label>3.4.</label>
<title>ToF <italic>Versus</italic> Node Positions According to a Given Pattern</title>
<p>The procedure of ToF computation, as a function of the node positions for a ray which has multiple single-layer parts is the same as the two-part ray, but with more boundary equations. The combination of all these equations may form a higher order polynomial root finding problem, which consequently may increase the number of ways that a ray can travel between the two points. To predict how a ray may travel inside a multi-layer underwater area we introduce several lemmas bellow.</p>
<p><bold>Lemma 1:</bold> The sound speed in a layer with zero steepness SSP is constant. Thus, the wave propagation inside that layer is along a straight line, and for that reason the parameter <italic>α<sub>p</sub></italic> for each truncated ray at that layer is zero. In this case, the relation between the ToF and the node positions is modified into
<disp-formula id="FD15">
<label>(15)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:math></disp-formula></p>
<p><bold>Lemma 2:</bold> Rays are bent toward the region where the sound speed is lower.</p>
<p><bold>Proof:</bold> If we place <xref ref-type="disp-formula" rid="FD9b">Equation (9b)</xref> into <xref ref-type="disp-formula" rid="FD9c">Equation (9c)</xref>, for two nodes at different depths we obtain
<disp-formula id="FD16">
<label>(16)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>0.5</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>0.5</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>The denominator of <xref ref-type="disp-formula" rid="FD16">Equation (16)</xref> is the average of the sound speed at the two points and is always positive, and hence using <xref ref-type="disp-formula" rid="FD9f">Equation (9f)</xref> we understand that the angle <italic>α<sub>p</sub></italic> has the same sign as <italic>a<sub>p</sub></italic>. When <italic>a<sub>p</sub></italic> is larger than zero, the ray angle at the starting point is greater than the ray angle at the end point or any other point along the ray trajectory. Therefore, the ray angle has a tendency to become smaller and to bend up where the sound speed is lower. On the other hand, when <italic>a<sub>p</sub></italic> is smaller than zero, the ray angle has a tendency to become larger and to bend down where again the sound speed is lower. Indeed, as depicted in <xref ref-type="fig" rid="f2-sensors-12-02996">Figure 2</xref>, within a layer, a ray bends toward the region where the sound speed is lower.</p>
<p><bold>Lemma 3:</bold> In a layer, the depth along a truncated ray between two points, S<italic><sub>p</sub></italic> and E<italic><sub>p</sub></italic>, can exceed the region 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> if and only if (iff) the sign of 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is negative. The excess value can be computed as,
<disp-formula id="FD17">
<label>(17)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>z</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mtext>if</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo stretchy="false">|</mml:mo></mml:mrow>
<mml:mo>&lt;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mtext>if</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mo stretchy="false">|</mml:mo></mml:mrow>
<mml:mo>&gt;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p><bold>Proof:</bold> In a single layer, the depth of a node along a given part as a function of the angle can be derived from <xref ref-type="disp-formula" rid="FD6">Equation (6)</xref>
<disp-formula id="FD18">
<label>(18)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:math></inline-formula> is a positive constant for a given ray. It is obvious that <italic>z</italic> follows the behavior of cos<italic>θ</italic>, and its extremum occurs when <italic>θ</italic> is zero. In other words, the depth of a node on a truncated ray exceeds the region 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula> iff the signs of the angles at the starting and end points differ from each other. As a result, the excess value can be computed as,
<disp-formula id="FD19">
<label>(19)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="normal">Δ</mml:mi>
<mml:mi>z</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mtext>max</mml:mtext></mml:mrow></mml:mrow>
<mml:mi>θ</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mtext>max</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mtext>if </mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msub>
<mml:mtext>min</mml:mtext>
<mml:mi>θ</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>−</mml:mo>
<mml:mtext>min</mml:mtext>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mtext>if </mml:mtext>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>which leads to <xref ref-type="disp-formula" rid="FD17">Equation (17)</xref>.</p>
<p>In this way, it can be understood that if Δ<italic>z</italic> for a one-part ray in a single layer is so large that a ray part crosses another layer, the assumption of a one-part ray propagation has to be changed into a three-part ray propagation, and the equations have to be reorganized accordingly (see for instance the ray in <xref ref-type="fig" rid="f2-sensors-12-02996">Figure 2</xref> traveling between points Y and W).</p>
<p><bold>Lemma 4:</bold> A ray can travel multiple times between two layers if the SSP has a local minimum between them.</p>
<p><bold>Proof:</bold> A ray which is capable of traveling periodically between two layers has both maximum and minimum points of depth on its traveling path, as illustrated in <xref ref-type="fig" rid="f2-sensors-12-02996">Figure 2</xref> between the points P and Q. Therefore, based on Lemma 2, it must bend from the first layer to second one, and from the second layer to the first one. Since a ray has a tendency to bend toward the low speed region, periodic traveling between two layers happens if the lower speed region is located between the two layers. In addition, the assumption of an isogradient SSP for each layer forces the total SSP to have a local minimum value at the boundary of these two layers.</p>
<p><bold>Lemma 5:</bold> Reflections from the seabed and sea surface can be formulated as a boundary equation. In a shallow underwater environment, it is very common that a traveling ray hits the sea surface or the seabed before reaching the end point. Based on the physical properties of the seabed and the sea surface, the reflection can be formulated as a boundary equation. For instance, if we consider a perfect reflection from the seabed or the sea surface, the boundary equations can be obtained as
<disp-formula id="FD20">
<label>(20)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>α</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>α</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula></p>
<p>Under the assumption of a perfect reflection, the reflected parts in different layers have the same properties as the corresponding non-reflected parts but with an axial symmetry around the line parallel to the <italic>z</italic>-axis crossing the reflection point as illustrated in <xref ref-type="fig" rid="f4-sensors-12-02996">Figure 4</xref>. Due to this symmetry which is resulted by the cylindrical symmetry of the ray propagation, the <italic>r</italic>-coordinate of the two crossing points around a reflection point are linearly related to each other, and one can be formulated by the <italic>r</italic>-coordinate of the other. Therefore, this does not change the degree of the polynomial resulting from such kinds of ray patterns.</p>
<p>Thanks to the piece-wise linear behavior of the SSP, we are now able to predict how a ray, which starts from a given point, can travel through different layers to arrive at a specific point. Having built a <italic>ray pattern</italic> using the above lemmas we can then for every <italic>P</italic> part ray relate the ToF to the node’s position using <xref ref-type="disp-formula" rid="FD9a">Equation (9)</xref> for each single-layer part and the following boundary equations
<disp-formula id="FD21">
<label>(21)</label>
<mml:math display="block">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>Y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mi>p</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mtext>for </mml:mtext>
<mml:mi>p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo> </mml:mo>
<mml:mtext>to </mml:mtext>
<mml:mi>P</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:math></disp-formula>The ToF of any possible <italic>P</italic> part ray can then be computed as
<disp-formula id="FD22">
<label>(22)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>P</mml:mi></mml:munderover>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mo>−</mml:mo>
<mml:mtext>ln</mml:mtext>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>+</mml:mo>
<mml:mtext>sin</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow>
<mml:mrow>
<mml:mtext>cos</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mi>p</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>For instance, as illustrated in <xref ref-type="fig" rid="f2-sensors-12-02996">Figure 2</xref>, four kinds of rays can be predicted between the two points U and V which are described below.
<list list-type="roman-lower">
<list-item>
<p>A ray may travel directly from point U, crossing the boundary once, and not leaving the two adjacent layers. Of course, as formulated before, even with such a limitation, there are at most three paths that can be included in this category.</p></list-item>
<list-item>
<p>A ray may travel directly from point U, crossing the boundary multiple times, not leaving the two adjacent layers. For three crossings of the ray with the boundary, a four-part ray will be obtained. Based on <xref ref-type="disp-formula" rid="FD9c">Equation (9c)</xref>, the <italic>r</italic>-coordinate of the second crossing path is related to the previous one according to
<disp-formula id="FD23">
<label>(23)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>Y</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:math></disp-formula>and similarly,
<disp-formula id="FD24">
<label>(24)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>Y</mml:mi></mml:mrow>
<mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:math></disp-formula>and based on the boundary condition we have <italic>Y</italic><sub>3</sub> = <italic>−Y</italic><sub>2</sub> and <italic>X</italic><sub>3</sub> = 0. From the above equations, it can be derived that the crossing points in this scenario are linearly dependent, and therefore the combination of all equations forms a fourth-order polynomial root finding problem owing to the single independent added boundary equation. For the other scenarios with more than three crossing points we have the same analysis, and the problem again reduces to a fourth-order polynomial root finding problem.</p></list-item>
<list-item>
<p>It is also possible that a ray from U to V passes other layers. For instance, in the scenario depicted in <xref ref-type="fig" rid="f2-sensors-12-02996">Figure 2</xref>, the fourth layer has a positive steepness and a ray may bend over at that layer thereby entering a shallower layer. According to the introduced lemmas this is possible, and we should consider it in our analysis.</p></list-item>
<list-item>
<p>Similar to the fourth layer, this phenomenon may also happen in the first layer which forms the fourth category of traveling paths.</p></list-item></list></p>
<p>In <xref ref-type="fig" rid="f5-sensors-12-02996">Figure 5(a)</xref>, we show how many rays can travel between two points located in an unbounded two-layer underwater medium. Here, we imagine that the two layers have the same steepness but with different signs, e.g., <italic>a</italic><sub>1</sub> = −<italic>a</italic><sub>2</sub> = 0.1, and consequently the SSP has a minimum value at the boundary of the two layers. The sound speed at the boundary (<italic>z</italic> = 0) is assumed to be 1,480 m/s. To compute the number of possible rays between two points, we fix the position of <bold>x</bold><sup>S</sup>, and change the position of <bold>x</bold><sup>E</sup> to cover a 100 m by 3.5 km area in the vertical plane as depicted in the figure. According to the discussed lemmas, the possible patterns that can propagate between these two points are 1.2, 1.2.1.2, 1.2.(1.2)…, or 1.1, 1.2.1, 1.(2.1)…, depending on where the two points are located. It is shown that as the pair-wise distance between the two nodes which are located close to the boundary of the two layers increases, the number of paths between them increases too. Around the region where SSP has a minimum value, a pattern with lower number of digits has a lower ToF, but a greater overshoot. Therefore, to compute the fastest ray in this region we can start searching with a simple pattern, and check Lemma 3. If Lemma 3 holds, then we can stop, otherwise we should continue with a more complicated pattern.</p>
<p>For the same scenario as described above, <xref ref-type="fig" rid="f5-sensors-12-02996">Figure 5(b)</xref> shows the error due to a linear approximation of the ToF. From the figure, it can be observed that as the distance between the two nodes gets larger, the linear approximation performs worse. In addition, another effect that influences the accuracy of the straight-line propagation is the angle of this line with the horizontal axis. The larger the angle of the straight line with the horizontal axis, the better the accuracy of the straight-line propagation model.</p>
<p>The above analysis indicates that if a UASN is forced to utilize a straight-line propagation model due to any reason (e.g., system complexity) to achieve more accurate localization results in a noise-free environment, it is suggested that sensors are deployed in such a way that the angles of the straight lines between the nodes become large. However, when noisy measurements exist, we should also consider their influence on the mapped horizontal distances.</p></sec></sec>
<sec>
<label>4.</label>
<title>Pair-Wise Underwater Ranging</title>
<p>To our best knowledge, the algorithm in [<xref ref-type="bibr" rid="b11-sensors-12-02996">11</xref>] is the only available mathematical approach for underwater range estimation. In order to better understand this algorithm we shortly review it here. The horizontal range between two nodes at different depths in an underwater medium can be obtained from <xref ref-type="disp-formula" rid="FD6">Equations (6)</xref> and <xref ref-type="disp-formula" rid="FD7a">(7)</xref>
<disp-formula id="FD25a">
<label>(25a)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>∫</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup></mml:mrow></mml:msubsup>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mi mathvariant="italic">dz</mml:mi>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mtext>min</mml:mtext></mml:mrow>
<mml:mi>z</mml:mi></mml:munder>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD25b">
<label>(25b)</label>
<mml:math display="block">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>∫</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup></mml:mrow></mml:msubsup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mi mathvariant="italic">dz</mml:mi></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>k</italic><sub>0</sub> is a constant defined by Snell’s law, <italic>t</italic> is the ToF between two nodes, and <italic>r</italic><sup>E</sup> − <italic>r</italic><sup>S</sup> represents the horizontal distance between them. The estimation of the horizontal distance has two phases; first, by measuring the depth and ToF information, the value of <italic>k</italic><sub>0</sub> can be computed numerically from <xref ref-type="disp-formula" rid="FD25a">Equation (25a)</xref>, and second, by substitution of <italic>k</italic><sub>0</sub> into <xref ref-type="disp-formula" rid="FD25b">Equation (25b)</xref>, and taking the integral, the value of <italic>r</italic><sup>E</sup> − <italic>r</italic><sup>S</sup> can be obtained. However, in an inhomogeneous medium, a ray trajectory is not always a monotonic function of the depth, and as a result, whenever a path between two nodes crosses a depth more than once, which is quite common, the above formulas are not valid anymore. In this case, either <xref ref-type="disp-formula" rid="FD25a">Equation (25a)</xref> has no answer for <italic>k</italic><sub>0</sub> in the specified range, or the obtained answer is not valid.</p>
<sec>
<label>4.1.</label>
<title>Proposed Algorithm</title>
<p>Assume that, at a specific depth, the ToF of the fastest ray is a monotonic function of the horizontal range. In other words, a propagating wave at a specific depth reaches the destination with a smaller horizontal distance faster. Then, using the ToF and depth measurements, we can find the horizontal distance through a root finding algorithm such as Newton’s method or bisection. Newton’s method is very fast, but it requires the derivative of the ToF w.r.t. the horizontal distance which is hard to compute. The bisection method is robust, and it eventually finds the solution. However, it requires an upper and a lower bound on the horizontal distance. The lower bound can be set to zero, and the upper bound can be computed through multiplying the measured ToF by the maximum sound speed of the entire environment. In spite of the fact that other efficient numerical root-finding algorithms can also be used, we utilize the simple bisection algorithm for the results in the simulation section.</p>
<p><xref ref-type="table" rid="t2-sensors-12-02996">Algorithm 1</xref> shows the steps of the proposed algorithm. In this algorithm, <italic>K</italic> and <italic>E</italic> are the user-defined limits on the stopping criteria that determine when the algorithm exits from the loop, <italic>r</italic><sub>low</sub> and <italic>r</italic><sub>up</sub> are the lower and the upper bound, respectively. The algorithm starts by initializing the upper and the lower bound on the range, and then it computes the fastest ToF for the midpoint of the bounds. In order to calculate the fastest ToF, given the depth of the two points, different ray-patterns that may host the fastest ray are formed, and all the rays between the points are found and their corresponding ToFs are computed, <italic>i.e.</italic>, in <xref ref-type="table" rid="t2-sensors-12-02996">Algorithm 1</xref>, <italic>t</italic><sup>[<italic>l</italic>]</sup> represents the ToF of the <italic>l</italic>-th found ray between the points. Then, among all these ToFs, the smallest one is selected. Next, based on the computed ToF, the lower, the upper, or both bounds are modified accordingly, and the procedure continues until one of the stopping criteria is met. The important factor that influences the complexity of the proposed algorithm is the number of ray patterns that may host the fastest ray. The ray patterns can be built very efficiently using the proposed Lemmas, still one can add more Lemmas (for a specific SPP) to reduce the number of ray patterns that may host the fastest ray between two nodes.</p>
<table-wrap id="t2-sensors-12-02996" position="anchor">
<label>Algorithm 1</label>
<caption>
<p>Proposed Algorithm.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top">Compute horizontal distance upper and lower bounds,</td></tr>
<tr>
<td align="left" valign="top">  <italic>r</italic><sub>low</sub> = 0,</td></tr>
<tr>
<td align="left" valign="top">  <italic>r</italic><sub>up</sub> = <italic>t̂c</italic><sub>max</sub>, where <italic>c</italic><sub>max</sub> = max<italic><sub>z</sub></italic> <italic>c</italic><sup>(<italic>j</italic>)</sup> (<italic>z</italic>), <italic>j ∈</italic> 1, …, <italic>N</italic>.</td></tr>
<tr>
<td align="left" valign="top">Initialize loop parameters,</td></tr>
<tr>
<td align="left" valign="top">  e = <italic>r</italic><sub>up</sub> − <italic>r</italic><sub>low</sub>,</td></tr>
<tr>
<td align="left" valign="top">  <italic>k</italic> = 1.</td></tr>
<tr>
<td align="left" valign="top"><bold>while</bold> e ≥ <italic>E</italic> and <italic>k</italic> ≤ <italic>K</italic> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">  Compute the average value of the upper and the lower bound, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>low</mml:mtext></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>up</mml:mtext></mml:mrow></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:math></inline-formula>.</td></tr>
<tr>
<td align="left" valign="top">  Find the smallest ToF for this horizontal distance
<list list-type="simple">
<list-item>
<p>- Form all possible ray patterns hosting the fastest ray (see lemmas).</p></list-item>
<list-item>
<p>- Compute ToF for each possible ray <italic>t</italic><sup>[<italic>l</italic>]</sup> (<italic>r, ẑ</italic><sup>S</sup>, <italic>ẑ</italic><sup>E</sup>), (see <xref ref-type="disp-formula" rid="FD22">Equation (22)</xref>).</p></list-item>
<list-item>
<p>- Select the ray with the smallest ToF.</p></list-item></list></td></tr>
<tr>
<td align="left" valign="top">    <italic>t</italic> = min<italic><sub>l</sub></italic> <italic>t</italic><sup>[<italic>l</italic>]</sup> (<italic>r, ẑ</italic><sup>S</sup>, <italic>ẑ</italic><sup>E</sup>).</td></tr>
<tr>
<td align="left" valign="top">  Update the lower or the upper bound,</td></tr>
<tr>
<td align="left" valign="top">  <bold>if</bold> <italic>t &lt; t̂</italic> <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">    <italic>r</italic><sub>low</sub> = <italic>r.</italic></td></tr>
<tr>
<td align="left" valign="top">  <bold>else if</bold> <italic>t &gt; t̂</italic> <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">    <italic>r</italic><sub>up</sub> = <italic>r.</italic></td></tr>
<tr>
<td align="left" valign="top">  <bold>else</bold></td></tr>
<tr>
<td align="left" valign="top">    <italic>r</italic><sub>low</sub> = <italic>r</italic>,</td></tr>
<tr>
<td align="left" valign="top">    <italic>r</italic><sub>up</sub> = <italic>r</italic>.</td></tr>
<tr>
<td align="left" valign="top">  <bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">  Update loop parameters,</td></tr>
<tr>
<td align="left" valign="top">    <italic>e</italic> = <italic>r</italic><sub>up</sub> − <italic>r</italic><sub>low</sub>,</td></tr>
<tr>
<td align="left" valign="top">    <italic>k</italic> = <italic>k</italic> + 1.</td></tr>
<tr>
<td align="left" valign="top"><bold>end while</bold></td></tr>
<tr>
<td align="left" valign="top">Compute the estimated horizontal distance between the nodes. 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>r</mml:mi>
<mml:mo>^</mml:mo></mml:mover></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>r</mml:mi>
<mml:mo>^</mml:mo></mml:mover></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>low</mml:mtext></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mrow>
<mml:mtext>up</mml:mtext></mml:mrow></mml:msub></mml:mrow>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:math></inline-formula></td></tr></tbody></table></table-wrap></sec>
<sec>
<label>4.2.</label>
<title>Cramér–Rao Bound</title>
<p>The Cramér–Rao bound (CRB) expresses a lower bound on the variance of any unbiased estimator of a deterministic parameter. As mentioned before, since the depth information is known and the projection method can be used for localization, a given distance-based traditional localization algorithm works only with horizontal distances. Therefore, in this section we only derive the CRB for the horizontal distance estimation between two nodes. For the computation of the horizontal distance, three measurements are required: two depth measurements which are not directly related to the horizontal distance, and one ToF measurement. It is assumed that all the measurements are affected by Gaussian distributed noise as
<disp-formula id="FD26">
<label>(26)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mover accent="true">
<mml:mi>t</mml:mi>
<mml:mo>^</mml:mo></mml:mover></mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>=</mml:mo></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>z</mml:mi>
<mml:mo>^</mml:mo></mml:mover></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>=</mml:mo></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>n</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>z</mml:mi>
<mml:mo>^</mml:mo></mml:mover></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mo>=</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>n</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>where <italic>n<sub>t</sub></italic>, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>n</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mi mathvariant="normal">S</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>n</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mi mathvariant="normal">E</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> are independent Gaussian distributed with variance 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula>, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula> and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula>, respectively. The Fisher information matrix for estimating the horizontal distance (<italic>r</italic><sup>E</sup> − <italic>r</italic><sup>S</sup>), <italic>z</italic><sup>S</sup>, and <italic>z</italic><sup>E</sup> can be obtained as
<disp-formula id="FD27">
<label>(27)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="bold">I</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mn>0</mml:mn></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>In order to compute the partial derivative 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mi>t</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo>∂</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:math></inline-formula>, we modify the environment in such a way that we can compute the horizontal distance as an integral w.r.t. depth. In order to achieve this, we have to convert the horizontal distance and the ToF to monotonic functions of the depth. Therefore, a ray can not have maximum or minimum points on its trajectory w.r.t. the depth. Let us illustrate the proposed idea with an example. Assume that a ray has a maximum point on its trajectory. The ray angle is zero at this maximum point, and after that it changes sign. But, this sign change does not affect Snell’s law, as it is related to the cosine of the ray angle. As a result, we can assume that the ray travels upward instead of downward as depicted in <xref ref-type="fig" rid="f6-sensors-12-02996">Figure 6</xref>, but in a new environment. In this new environment the SSP of each imaginary region must be changed accordingly. For instance, <xref ref-type="fig" rid="f6-sensors-12-02996">Figure 6</xref> shows that the real SSP is flipped and translated in the first and second imaginary regions, respectively. In other words, the SSPs of the imaginary regions follow the behavior of the modified ray trajectory.</p>
<p>Note that the above conversion can only be done after we compute the fastest ray, because only then we are able to locate the maximum and/or minimum points on the trajectory and build the new environment. Under this assumption, and using <xref ref-type="disp-formula" rid="FD7b">Equations (7b)</xref>, <xref ref-type="disp-formula" rid="FD7b">(7b)</xref> and <xref ref-type="disp-formula" rid="FD6">(6)</xref> we have
<disp-formula id="FD28a">
<label>(28a)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>∫</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:msubsup>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi></mml:msup>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo> </mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi></mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac>
<mml:mi mathvariant="italic">dz</mml:mi></mml:mrow></mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>&lt;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mtext>min</mml:mtext></mml:mrow>
<mml:mi>z</mml:mi></mml:munder>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi></mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD28b">
<label>(28b)</label>
<mml:math display="block">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>r</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mo>∫</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:mrow></mml:msup></mml:mrow></mml:msubsup>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi></mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:msup>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">m</mml:mi></mml:msup>
<mml:mo> </mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>z</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac>
<mml:mi mathvariant="italic">dz</mml:mi></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>where m indicates that the variable is related to the modified environment. The above equations are similar to <xref ref-type="disp-formula" rid="FD25a">Equations (25a)</xref> and <xref ref-type="disp-formula" rid="FD25b">(25b)</xref>, hence we can utilize the same approach used in [<xref ref-type="bibr" rid="b11-sensors-12-02996">11</xref>] to compute the CRB, which results into
<disp-formula id="FD29">
<label>(29)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtext>var</mml:mtext>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>r</mml:mi>
<mml:mo>^</mml:mo></mml:mover></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>r</mml:mi>
<mml:mo>^</mml:mo></mml:mover></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>≥</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>k</mml:mi></mml:mrow>
<mml:mn>0</mml:mn>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">E</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>z</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mi>c</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi mathvariant="normal">S</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula></p></sec></sec>
<sec sec-type="results">
<label>5.</label>
<title>Numerical Results</title>
<p>In this section we study the performance of finding the fastest path, as well as the proposed ranging algorithm in a multi-layer underwater environment [<xref ref-type="bibr" rid="b15-sensors-12-02996">15</xref>]. We consider two kinds of SSPs for our simulations as shown in <xref ref-type="fig" rid="f7-sensors-12-02996">Figure 7</xref>; the former is derived from the sound speed measurements in shallow water [<xref ref-type="bibr" rid="b16-sensors-12-02996">16</xref>], and the latter is extracted from the sound speed of the Pacific Ocean and represents a deep water environment [<xref ref-type="bibr" rid="b13-sensors-12-02996">13</xref>].</p>
<sec>
<label>5.1.</label>
<title>Ray Propagation for Shallow Water</title>
<p>In this part of the report, based on the aforementioned lemmas, we analyze how a ray can propagate between two points inside the shallow water medium. Using the <italic>ray pattern</italic> concept, we are able to show how a ray can travel in a given medium, and which pattern may host the fastest ray. In <xref ref-type="table" rid="t1-sensors-12-02996">Table 1</xref>, we show the family of patterns a ray may travel between two points through different layers. Since the depth of each node is known, we can select the proper patterns from the table, and form the corresponding polynomial formulas. By finding the roots of the polynomials, the ToF of each ray can be computed, and the fastest one will be recognized.</p>
<p>In <xref ref-type="fig" rid="f8-sensors-12-02996">Figure 8</xref>, we illustrate the ray propagation in a shallow underwater environment between two given points in the second layer. A ray can depart the first point and reach the second point in several ways; (a) it can directly propagate in the second layer without entering the other layers; (b) it can go to the upper layer, hit the surface and go back to the second layer; (c) it can go to the third layer and go back to the second layer; (d) it can go to the third layer, hit the bottom and go back to the second layer. Among all of these possibilities we choose the ray which has the lowest ToF. It is worth mentioning that the algorithm of [<xref ref-type="bibr" rid="b11-sensors-12-02996">11</xref>] can not compute the correct horizontal range for any of the drawn blue-colored rays in <xref ref-type="fig" rid="f8-sensors-12-02996">Figure 8</xref> except for the first one, since all other ray trajectories are not monotonic functions of depth.</p>
<p>In <xref ref-type="fig" rid="f9-sensors-12-02996">Figure 9</xref>, we show different possible rays that can travel between two points located in the second layer with a horizontal distance of 1,800 m. Based on the formulation, only three <italic>ray patterns</italic> can exist in this scenario, <italic>i.e.</italic>, 2.3.2, 2.3.3.2, and 2.1.1.2 (here we only consider one reflection from the surface, and only one reflection from the seabed in the existing ray patterns). Since the sound speed has higher values in the first and second layers, the fastest path belongs to the 2.1.1.2 pattern. It can be noted that if the horizontal distance between the two points increases, one <italic>ray pattern</italic> will be eliminated, namely 2.3.2.</p></sec>
<sec>
<label>5.2.</label>
<title>Ranging for Deep Water</title>
<p>In <xref ref-type="fig" rid="f10-sensors-12-02996">Figure 10</xref>, we compare the performance of the proposed range algorithm with the one introduced in [<xref ref-type="bibr" rid="b11-sensors-12-02996">11</xref>], and with the algorithms which approximate the inhomogeneous underwater medium as a homogeneous one with a presumably constant sound speed, <italic>i.e.</italic>, we use a straight-line range computation based on the depth information. In this simulation, we consider Gaussian noise for the ToF and depth measurements with a standard deviation (std) of <italic>σ<sub>t</sub></italic> = 1 ms and <italic>σ<sub>z</sub></italic> = 1 m, respectively. In addition, we choose the deep water environment as a communication medium. The communication is between two points from different layers which are located at depth 550 m and 650 m, respectively. The root mean squared error (RMSE) for the horizontal distance estimation is computed by averaging over 1000 Monte Carlo simulations. As illustrated in this figure, the proposed algorithm performs well for all ranges while the algorithm of [<xref ref-type="bibr" rid="b11-sensors-12-02996">11</xref>] has no definite solution from a given point as the horizontal range exceeds a given value. Furthermore, the straight-line algorithm degrades as the distance between the points increases.</p>
<p>In <xref ref-type="fig" rid="f11-sensors-12-02996">Figure 11</xref>, we investigate the effect of the measurement noise on the algorithms under consideration. Here the depth of the two nodes is as before, and their horizontal range is fixed at 3 km. The horizontal axis represents how noisy the measured data are. The depth and ToF measurement noise powers are exponentially related to the parameter λ, <italic>i.e.</italic>, <italic>σ<sub>z</sub></italic> = 10<sup>3</sup><italic>σ<sub>t</sub></italic> = 10<sup>2−<italic>λ</italic></sup>. It can be seen that, the performance of the proposed ranging algorithm constantly improves and attains the CRB when we increase the measurement accuracy, while the straight-line estimation does not show any improvement after a given noise power.</p></sec></sec>
<sec sec-type="conclusions">
<label>6.</label>
<title>Conclusions</title>
<p>We have analyzed the problem of localizing a target node in an underwater environment. The inhomogeneous underwater medium upsets the linear dependency of the pair-wise distances to the time of flight. We have shown that, if the depth information of the unlocalized node is available, then the problem of underwater localization can be converted to the traditional range-based one. Dividing the underwater medium into several isogradient sound speed profile layers, we have completely analyzed how a ray can travel between two given points through using different Lemmas. Further, we have proposed an iterative algorithm for the range estimation between two nodes, and we have demonstrated that the proposed algorithm attains the CRB and performs superb in comparison with other existing algorithms. In the future, we want to extend this work for more elaborate SSPs (not necessarily multiple isogradient), especially the ones with one local minimum, for ranging and channel modeling applications.</p></sec></body>
<back>
<ack>
<p>The research leading to these results has received funding from the European Commission FP7-ICT Cognitive Systems, Interaction, and Robotics under the contract #270180 (NOPTILUS).</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-12-02996"><label>1.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mao</surname><given-names>G.</given-names></name><name><surname>Fidan</surname><given-names>B.</given-names></name><name><surname>Anderson</surname><given-names>B.D.O.</given-names></name></person-group><article-title>Wireless sensor network localization techniques</article-title><source>Comput. Netw. Int. J. Comput. Telecommun. Netw</source><year>2007</year><volume>51</volume><fpage>2529</fpage><lpage>2553</lpage></citation></ref>
<ref id="b2-sensors-12-02996"><label>2.</label><citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Gerritsen</surname><given-names>S.</given-names></name></person-group><article-title>Waves in Inhomogeneous Media</article-title><comment>Ph.D. Thesis,</comment><publisher-name>Delft University of Technology</publisher-name><publisher-loc>Delft, The Netherlands</publisher-loc><year>2007</year></citation></ref>
<ref id="b3-sensors-12-02996"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ameer</surname><given-names>P.M.</given-names></name><name><surname>Jacob</surname><given-names>L.</given-names></name></person-group><article-title>Localization using ray tracing for underwater acoustic sensor networks</article-title><source>Commun. Lett. IEEE</source><year>2010</year><volume>14</volume><fpage>930</fpage><lpage>932</lpage><pub-id pub-id-type="doi">10.1109/LCOMM.2010.090810.101237</pub-id></citation></ref>
<ref id="b4-sensors-12-02996"><label>4.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Ramezani</surname><given-names>H.</given-names></name><name><surname>Rad</surname><given-names>H.J.</given-names></name><name><surname>Leus</surname><given-names>G.</given-names></name></person-group><article-title>Localization and Tracking of a Mobile Target for an Isogradient Sound Speed Profile</article-title><conf-name>Proceedings of the International Conference on Communications (ICC2012)</conf-name><conf-loc>Ottawa, Canada</conf-loc><conf-date>10–15 June 2012</conf-date><comment>accepted.</comment></citation></ref>
<ref id="b5-sensors-12-02996"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Coppens</surname><given-names>A.B.</given-names></name></person-group><article-title>Simple equations for the speed of sound in Neptunian waters</article-title><source>J. Acoust. Soc. Am</source><year>1981</year><volume>69</volume><fpage>862</fpage><lpage>863</lpage><pub-id pub-id-type="doi">10.1121/1.385486</pub-id></citation></ref>
<ref id="b6-sensors-12-02996"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Teymorian</surname><given-names>A.Y.</given-names></name><name><surname>Cheng</surname><given-names>W.</given-names></name><name><surname>Ma</surname><given-names>L.</given-names></name><name><surname>Cheng</surname><given-names>X.</given-names></name><name><surname>Lu</surname><given-names>X.</given-names></name></person-group><article-title>3D underwater sensor network localization</article-title><source>IEEE Trans. Mob. Comput</source><year>2009</year><volume>8</volume><fpage>1610</fpage><lpage>1621</lpage><pub-id pub-id-type="doi">10.1109/TMC.2009.80</pub-id></citation></ref>
<ref id="b7-sensors-12-02996"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Isik</surname><given-names>M.T.</given-names></name><name><surname>Akan</surname><given-names>O.B.</given-names></name></person-group><article-title>A three dimensional localization algorithm for underwater acoustic sensor networks</article-title><source>IEEE Trans. Wirel. Commun</source><year>2009</year><volume>8</volume><fpage>4457</fpage><lpage>4463</lpage><pub-id pub-id-type="doi">10.1109/TWC.2009.081628</pub-id></citation></ref>
<ref id="b8-sensors-12-02996"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Erol-Kantarci</surname><given-names>M.</given-names></name><name><surname>Mouftah</surname><given-names>H.T.</given-names></name><name><surname>Oktug</surname><given-names>S.</given-names></name></person-group><article-title>A survey of architectures and localization techniques for underwater acoustic sensor networks</article-title><source>IEEE Commun. Surv. Tutor</source><year>2011</year><volume>13</volume><fpage>487</fpage><lpage>502</lpage><pub-id pub-id-type="doi">10.1109/SURV.2011.020211.00035</pub-id></citation></ref>
<ref id="b9-sensors-12-02996"><label>9.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Tan</surname><given-names>H.P.</given-names></name><name><surname>Diamant</surname><given-names>R.</given-names></name><name><surname>Seah</surname><given-names>W.K.</given-names></name><name><surname>Waldmeyer</surname><given-names>M.</given-names></name></person-group><article-title>A survey of techniques and challenges in underwater localization</article-title><source>Ocean Eng</source><year>2010</year><comment>submitted.</comment></citation></ref>
<ref id="b10-sensors-12-02996"><label>10.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Casalino</surname><given-names>G.</given-names></name><name><surname>Caiti</surname><given-names>A.</given-names></name></person-group><article-title>RT<sup>2</sup>: A Real-Time Ray-Tracing Method for Acoustic Evaluations Among Cooperating AUVs</article-title><conf-name>Proceedings of the OCEANS 2010 IEEE—Sydney</conf-name><conf-loc>Sydney, NSW, Australia</conf-loc><conf-date>24–27 May 2010</conf-date><fpage>1</fpage><lpage>8</lpage></citation></ref>
<ref id="b11-sensors-12-02996"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Berger</surname><given-names>C.R.</given-names></name><name><surname>Zhou</surname><given-names>S.</given-names></name><name><surname>Willett</surname><given-names>P.</given-names></name><name><surname>Liu</surname><given-names>L.</given-names></name></person-group><article-title>Stratification effect compensation for improved underwater acoustic ranging</article-title><source>IEEE Trans. Signal Process</source><year>2008</year><volume>56</volume><fpage>3779</fpage><lpage>3783</lpage><pub-id pub-id-type="doi">10.1109/TSP.2008.924801</pub-id></citation></ref>
<ref id="b12-sensors-12-02996"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kussat</surname><given-names>N.H.</given-names></name><name><surname>Chadwell</surname><given-names>C.D.</given-names></name><name><surname>Zimmerman</surname><given-names>R.</given-names></name></person-group><article-title>Absolute positioning of an autonomous underwater vehicle using GPS and acoustic measurements</article-title><source>IEEE J. Ocean. Eng</source><year>2005</year><volume>30</volume><fpage>153</fpage><lpage>164</lpage><pub-id pub-id-type="doi">10.1109/JOE.2004.835249</pub-id></citation></ref>
<ref id="b13-sensors-12-02996"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Porter</surname><given-names>M.B.</given-names></name></person-group><article-title>Acoustic models and sonar systems</article-title><source>IEEE J. Ocean. Eng</source><year>1993</year><volume>18</volume><fpage>425</fpage><lpage>437</lpage><pub-id pub-id-type="doi">10.1109/48.262293</pub-id></citation></ref>
<ref id="b14-sensors-12-02996"><label>14.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Stojanovic</surname><given-names>M.</given-names></name><name><surname>Preisig</surname><given-names>J.</given-names></name></person-group><article-title>Underwater acoustic communication channels: Propagation models and statistical characterization</article-title><source>IEEE Commun. Mag</source><year>2009</year><volume>47</volume><fpage>84</fpage><lpage>89</lpage></citation></ref>
<ref id="b15-sensors-12-02996"><label>15.</label><citation citation-type="web"><comment>Matlab codes for the simulations and algorithm are available online: <ext-link xlink:href="http://cas.et.tudelft.nl/~ramezani/PhDThesis_Codes.html" ext-link-type="uri">http://cas.et.tudelft.nl/~ramezani/PhDThesis_Codes.html</ext-link> (accessed on 2 March 2012).</comment></citation></ref>
<ref id="b16-sensors-12-02996"><label>16.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gerstoft</surname><given-names>P.</given-names></name><name><surname>Hodgkiss</surname><given-names>W.S.</given-names></name></person-group><article-title>Effect of ocean sound speed uncertainty on matched-field geoacoustic inversion</article-title><source>J. Acoust. Soc. Am</source><year>2008</year><volume>123</volume><fpage>EL162</fpage><lpage>EL168</lpage><pub-id pub-id-type="doi">10.1121/1.2908406</pub-id><pub-id pub-id-type="pmid">18537304</pub-id></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Table</title>
<fig id="f1-sensors-12-02996" position="float">
<label>Figure 1.</label>
<caption>
<p>Projection of pair-wise distances on the horizontal plane crossing the target.</p></caption>
<graphic xlink:href="sensors-12-02996f1.gif"/></fig>
<fig id="f2-sensors-12-02996" position="float">
<label>Figure 2.</label>
<caption>
<p>Samples of ray trajectories as they travel through different layers.</p></caption>
<graphic xlink:href="sensors-12-02996f2.gif"/></fig>
<fig id="f3-sensors-12-02996" position="float">
<label>Figure 3.</label>
<caption>
<p>ToF error of the straight-line propagation model in a single layer for different values of range and depth.</p></caption>
<graphic xlink:href="sensors-12-02996f3.gif"/></fig>
<fig id="f4-sensors-12-02996" position="float">
<label>Figure 4.</label>
<caption>
<p>Linear dependency of the reflection and crossing points under the assumption of a perfect reflection.</p></caption>
<graphic xlink:href="sensors-12-02996f4.gif"/></fig>
<fig id="f5-sensors-12-02996" position="float">
<label>Figure 5.</label>
<caption>
<p><bold>(a)</bold> Number of paths <italic>versus</italic> the location of the two nodes. <bold>(b)</bold> Range error due to the linear approximation of the ToF.</p></caption>
<graphic xlink:href="sensors-12-02996f5.gif"/></fig>
<fig id="f6-sensors-12-02996" position="float">
<label>Figure 6.</label>
<caption>
<p>Changing the real ray trajectory into a trajectory which is a monotonic function of the depth.</p></caption>
<graphic xlink:href="sensors-12-02996f6.gif"/></fig>
<fig id="f7-sensors-12-02996" position="float">
<label>Figure 7.</label>
<caption>
<p>Sound speed profile for deep and shallow water.</p></caption>
<graphic xlink:href="sensors-12-02996f7.gif"/></fig>
<fig id="f8-sensors-12-02996" position="float">
<label>Figure 8.</label>
<caption>
<p>Sample of ray propagation between two nodes.</p></caption>
<graphic xlink:href="sensors-12-02996f8.gif"/></fig>
<fig id="f9-sensors-12-02996" position="float">
<label>Figure 9.</label>
<caption>
<p>Different possible rays between two points in the second layer.</p></caption>
<graphic xlink:href="sensors-12-02996f9.gif"/></fig>
<fig id="f10-sensors-12-02996" position="float">
<label>Figure 10.</label>
<caption>
<p>Performance of the proposed algorithm for deep water.</p></caption>
<graphic xlink:href="sensors-12-02996f10.gif"/></fig>
<fig id="f11-sensors-12-02996" position="float">
<label>Figure 11.</label>
<caption>
<p>Performance of the proposed algorithm for difference values of noise power.</p></caption>
<graphic xlink:href="sensors-12-02996f11.gif"/></fig>
<table-wrap id="t1-sensors-12-02996" position="float">
<label>Table 1.</label>
<caption>
<p>All possible patterns that a fastest ray in a shallow underwater environment can follow.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle"/>
<th align="center" valign="middle"><bold>to layer 1</bold></th>
<th align="center" valign="middle"><bold>to layer 2</bold></th>
<th align="center" valign="middle"><bold>to layer 3</bold></th></tr></thead>
<tbody>
<tr>
<td align="left" valign="top">from layer 1</td>
<td align="center" valign="top">1</td>
<td align="center" valign="top">1.2</td>
<td align="center" valign="top">1.2.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top"/>
<td align="center" valign="top">1.1.2</td>
<td align="center" valign="top">1.1.2.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top"/>
<td align="center" valign="top">1.2.3.2</td>
<td align="center" valign="top">1.2.3.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top"/>
<td align="center" valign="top">1.2.3.3.2</td>
<td align="center" valign="top">1.2.3.2.3</td></tr>
<tr>
<td colspan="4" align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top">from layer 2</td>
<td align="center" valign="top">2.1</td>
<td align="center" valign="top">2</td>
<td align="center" valign="top">2.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top">2.1.1</td>
<td align="center" valign="top">2.1.1.2</td>
<td align="center" valign="top">2.1.1.2.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top"/>
<td align="center" valign="top">2.3.2</td>
<td align="center" valign="top">2.3.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top"/>
<td align="center" valign="top">2.3.2.3.2</td>
<td align="center" valign="top">2.3.2.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top"/>
<td align="center" valign="top">⋮</td>
<td align="center" valign="top">⋮</td></tr>
<tr>
<td colspan="4" align="center" valign="top">
<hr/></td></tr>
<tr>
<td align="left" valign="top">from layer 3</td>
<td align="center" valign="top">3.2.1</td>
<td align="center" valign="top">3.2</td>
<td align="center" valign="top">3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top">3.3.2.1</td>
<td align="center" valign="top">3.2.1.1.2</td>
<td align="center" valign="top">3.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top">3.3.2.1.1</td>
<td align="center" valign="top">3.2.3.2</td>
<td align="center" valign="top">3.2.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top"/>
<td align="center" valign="top">3.2.3.3.2</td>
<td align="center" valign="top">3.2.1.1.2.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top"/>
<td align="center" valign="top">3.2.3.2.3.2</td>
<td align="center" valign="top">3.2.3.2.3</td></tr>
<tr>
<td align="left" valign="top"/>
<td align="center" valign="top"/>
<td align="center" valign="top">⋮</td>
<td align="center" valign="top">⋮</td></tr></tbody></table></table-wrap></sec></back></article>
