<?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="review-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/s100505171</article-id>
<article-id pub-id-type="publisher-id">sensors-10-05171-v2</article-id>
<article-categories>
<subj-group>
<subject>Review</subject></subj-group></article-categories>
<title-group>
<article-title>Location Estimation in Wireless Sensor Networks Using Spring-Relaxation Technique</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Zhang</surname><given-names>Qing</given-names></name><xref ref-type="aff" rid="af1-sensors-10-05171-v2"><sup>1</sup></xref><xref ref-type="corresp" rid="c1-sensors-10-05171-v2"><sup>*</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Foh</surname><given-names>Chuan Heng</given-names></name><xref ref-type="aff" rid="af1-sensors-10-05171-v2"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Seet</surname><given-names>Boon-Chong</given-names></name><xref ref-type="aff" rid="af2-sensors-10-05171-v2"><sup>2</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Fong</surname><given-names>A. C. M.</given-names></name><xref ref-type="aff" rid="af3-sensors-10-05171-v2"><sup>3</sup></xref></contrib></contrib-group>
<aff id="af1-sensors-10-05171-v2">
<label>1</label> School of Computer Engineering, Nanyang Technological University, 639798, Singapore; E-Mail: <email>ASCHFoh@ntu.edu.sg</email></aff>
<aff id="af2-sensors-10-05171-v2">
<label>2</label> Department of Electrical Electronic Engineering, Auckland University of Technology, New Zealand; E-Mail: <email>boon-chong.seet@aut.ac.nz</email></aff>
<aff id="af3-sensors-10-05171-v2">
<label>3</label> School of Computing and Mathematical Sciences, Auckland University of Technology, New Zealand; E-Mail: <email>alvis.fong@aut.ac.nz</email></aff>
<author-notes>
<corresp id="c1-sensors-10-05171-v2">
<label>*</label> Author to whom correspondence should be addressed; E-Mail: <email>Y060098@ntu.edu.sg</email>; Tel.: +65-6790-6579; Fax: +65-6792-6559 (CEMNET).</corresp></author-notes>
<pub-date pub-type="collection">
<year>2010</year></pub-date>
<pub-date pub-type="epub">
<day>25</day>
<month>5</month>
<year>2010</year></pub-date>
<volume>10</volume>
<issue>5</issue>
<fpage>5171</fpage>
<lpage>5192</lpage>
<history>
<date date-type="received">
<day>25</day>
<month>3</month>
<year>2010</year></date>
<date date-type="rev-recd">
<day>15</day>
<month>4</month>
<year>2010</year></date>
<date date-type="accepted">
<day>10</day>
<month>5</month>
<year>2010</year></date></history>
<permissions>
<copyright-statement>© 2010 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2010</copyright-year>
<license>
<p>This article is an Open Access article distributed under the terms and conditions of the Creative Commons Attribution license <ext-link xlink:href="http://creativecommons.org/licenses/by/3.0/" ext-link-type="uri">http://creativecommons.org/licenses/by/3.0/</ext-link>.</p></license></permissions>
<abstract>
<p>Accurate and low-cost autonomous self-localization is a critical requirement of various applications of a large-scale distributed wireless sensor network (WSN). Due to its massive deployment of sensors, explicit measurements based on specialized localization hardware such as the Global Positioning System (GPS) is not practical. In this paper, we propose a low-cost WSN localization solution. Our design uses received signal strength indicators for ranging, light weight distributed algorithms based on the spring-relaxation technique for location computation, and the cooperative approach to achieve certain location estimation accuracy with a low number of nodes with known locations. We provide analysis to show the suitability of the spring-relaxation technique for WSN localization with cooperative approach, and perform simulation experiments to illustrate its accuracy in localization.</p></abstract>
<kwd-group>
<kwd>wireless sensor networks</kwd>
<kwd>localization</kwd>
<kwd>cooperative</kwd>
<kwd>spring-relaxation technique</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Supported by the great development in RF and MEMS IC design, large-scale distributed wireless sensor networks (WSNs) are widely applied to many areas involving monitoring, tracking, and controlling. Specific applications of wireless sensor networks include vehicle surveillance, environment monitoring, health care applications, and home automation [<xref ref-type="bibr" rid="b1-sensors-10-05171-v2">1</xref>–<xref ref-type="bibr" rid="b5-sensors-10-05171-v2">5</xref>].</p>
<p>Accurate and low-cost autonomous self-localization of the sensors is a critical requirement in these WSNs. The main reason is that the locations of sensors are necessary in a variety of applications, such as environment monitoring, object detection, target tracking, and security surveillance. In these applications, sensor locations must be known to make sense of the reported data. Additionally, sensor location information can be very useful for geographic routing protocols [<xref ref-type="bibr" rid="b6-sensors-10-05171-v2">6</xref>], clustering algorithms [<xref ref-type="bibr" rid="b7-sensors-10-05171-v2">7</xref>], and geographic data fusion algorithms [<xref ref-type="bibr" rid="b8-sensors-10-05171-v2">8</xref>].</p>
<p>Sensor localization is a challenging issue in the design and development of WSNs in various applications [<xref ref-type="bibr" rid="b9-sensors-10-05171-v2">9</xref>]. Sensors will need to last for years without battery replacement, so that power consumption and energy efficiency is of great concern. The localization algorithm should be designed in an easily implemented and energy efficient way, so that it will not limit the main operation of the sensors. Moreover, movement of sensors is also a common setup in various applications of WSNs. In these applications, the localization algorithm should be designed to cope with sensor mobility and changing connectivity. In addition, the localization algorithm should be autonomous and self-configuration without significant human attendance.</p>
<p>In general, a localization algorithm is often based on computation using obtained measurements with respect to devices with known absolute locations where the measurements may include ranges or angles in an absolute or a relative description, such as time of arrival (TOA), time difference of arrival (TDOA), angle of arrival (AOA), received signal strength (RSS), and others. The Global Positioning System (GPS) [<xref ref-type="bibr" rid="b10-sensors-10-05171-v2">10</xref>] is an example of a localization system that uses TDOA as the measurements for localization. While robust localization systems exist, as the number of nodes of a WSN is usually large, their direct applications to WSNs may result in high cost. The ZiLA algorithm [<xref ref-type="bibr" rid="b11-sensors-10-05171-v2">11</xref>] is an example of location estimation algorithm that uses RSS as the measurements for localization. Specifically, it is a Maximum Likelihood Estimator (MLE) under the log-normal models for the RSS measurements for the ZigBee networks.</p>
<p>The attempt to design a practical localization algorithm for WSNs gives rise to the concept of <italic>cooperative</italic> localization [<xref ref-type="bibr" rid="b12-sensors-10-05171-v2">12</xref>]. Cooperative localization algorithm is characterized by utilizing the estimated locations of neighboring nodes that are simultaneously performing localization with the same algorithm. In other words, nodes implementing cooperative localization compute locations relative to the locations advertised by their one-hop neighbors. The computed locations are then advertised back to their one-hop neighbors for refinement. This process continues until the computed locations converge. While a cooperative localization algorithm results in relative locations, with inclusion of a small number of devices with known locations, absolute locations of all nodes can be obtained. These devices with known locations, sometimes called beacons or anchors, may make use of manual configuration or other sophisticated localization technique such as GPS to obtain absolute locations. With the design of using devices with known locations to compute locations of others in a cooperative way, the need for devices of known locations are greatly reduced which results in a low-cost localization solution. In addition, cooperative localization algorithm suits well in multi-hop wireless communications which is the common setup in WSNs. Cooperative localization algorithm can be applied to hierarchical WSNs discussed in [<xref ref-type="bibr" rid="b13-sensors-10-05171-v2">13</xref>], as well as WSNs discussed in [<xref ref-type="bibr" rid="b14-sensors-10-05171-v2">14</xref>].</p>
<p>In this paper, a cooperative localization solution is developed for WSNs. Precisely, a node uses RSS information to estimate distances between itself and other nodes, then it executes algorithm based on spring-relaxation technique. One known spring-relaxation technique used for localization is studied by Priyantha <italic>et al.</italic> in [<xref ref-type="bibr" rid="b15-sensors-10-05171-v2">15</xref>] which they call AFL (Anchor-Free Localization). In AFL, sensor nodes start from a random initial coordinate assignment and converge to a consistent solution using only local node interactions. Specifically, AFL is based on two phases. First phase is a fold-free algorithm that coarsely estimates the networks global layout by using a hop-count technique. Second phase optimizes this layout by implementing a mass-spring relaxation, based on more accurate inter-node distances, measured using TOA. AFL is anchor-free and does not require nodes with pre-configured coordinates. It is shown that AFL can produce good coordinate assignments substantially [<xref ref-type="bibr" rid="b15-sensors-10-05171-v2">15</xref>]. Meanwhile, AFL also has some side effects [<xref ref-type="bibr" rid="b16-sensors-10-05171-v2">16</xref>]. First phase of AFL is centralized, because it can hardly be implemented without a centralized device handling information from nodes. AFL can only be applied to multi-hop networks. In one-hop networks where all nodes are connected each other, AFL fails because the first phase, based on the hop-count, cannot be executed. AFL gives relative location estimates because of its anchor-free nature. Additional effort is required to obtain absolute location estimates. Besides, the location estimation accuracy of AFL is highly dependent on the global-layout generated by first phase. Producing a network with an incorrect layout, without good initial position estimates may cause AFL falsely converge to distorted configurations of the network nodes.</p>
<p>Inspired by AFL, we follow and extend the design concept to develop a fully distributed localization solution specifically for WSNs that are both one-hop and multi-hop. We consider a WSN that consists of a small number of nodes whose locations are known with others whose locations are unknown. Our cooperative localization solution consists of two phases. The first phase alone can be viewed as a non-cooperative localization algorithm whereas the second phase is based on cooperative approach. In the first phase, a sensor node uses RSS to estimate the distances between itself and all visible beacons. These distance inputs are processed using the spring-relaxation technique to determine its location. Due to the small number of beacons and RSS ranging errors [<xref ref-type="bibr" rid="b12-sensors-10-05171-v2">12</xref>, <xref ref-type="bibr" rid="b17-sensors-10-05171-v2">17</xref>], this estimated location may give low accuracy. The second phase is designed to refine the estimated location obtained from the first phase. In the second phase, each sensor except beacons exchanges its estimated location information and distance with each of its one-hop neighbors to refine its location again using the spring-relaxation technique. By introducing only a limited number of beacons and applying repeated the spring-relaxation technique in different domains, we aim to provide accurate location estimation with minimal system requirement and deployment effort. Besides, we provide in-depth study on system design and parameter design via both theoretical and experimental approaches. Specifically, we first analyze the convergence property of the spring-relaxation technique in order to ensure that the algorithm terminates within a finite time. We then show that in the presence of RSS ranging noise, cooperative localization with the spring-relaxation technique can ensure stationary outcomes. To further understand the impact of parameters on system performance when concrete wireless ranging characteristics are implemented, we conduct series of simulation experiments to investigate the system behavior by varying the values of design parameters in using the spring-relaxation technique. Finally, we explicitly compare the performance of our proposed solution to other candidates in the same simulation setup.</p>
<p>The rest of the paper is organized as follows. Section 2. presents our localization solution in details, and briefly discusses some design issues. Section 3. provides analysis focusing on the convergence and stationary properties of our solution. Section 4. presents the simulation results covering studies in system design and parameter design, and comparison to other related techniques. Finally, Section 5. summarizes our conclusions.</p></sec>
<sec>
<label>2.</label>
<title>Algorithm</title>
<p>We shall now describe our system setup followed by our proposed solution, which is a fully distributed and absolute localization solution specifically designed for both one-hop and multi-hop WSNs. Our considered WSN consists of <italic>N<sub>s</sub></italic> number of sensors randomly placed onto a map of predefined size with <italic>N<sub>b</sub></italic> number of beacons. Let 𝕊 and 𝔹 be the sets describing all sensors and beacons respectively, where each sensor is noted as <italic>Sensor<sub>i</sub></italic>, <italic>i</italic> ∈ 𝕊 and each beacon is noted as <italic>Beacon<sub>j</sub></italic>, <italic>j</italic> ∈ 𝔹. Each node either a sensor or a beacon is noted as <italic>Node<sub>p</sub></italic>, <italic>p</italic> ∈ 𝕊 ∪ 𝔹, and vector <italic>V</italic>⃗<italic><sub>p</sub></italic> is used to represent the coordinate of <italic>Node<sub>p</sub></italic>. Beacons are placed onto the map with fixed coordinates <italic>V</italic>⃗<italic><sub>j</sub></italic>, where <italic>j</italic> ∈ 𝔹. We assume that each beacon is aware of its own absolute location. Whereas each sensor is unaware of its own location, and is configured with an initial guess of location unrelated to its actual deployed location. The two-dimensional (2-D) localization problem is the estimation of <italic>N<sub>s</sub></italic> unknown-location coordinates <italic>V</italic>⃗<italic><sub>i</sub></italic>, where <italic>i</italic> ∈ 𝕊.</p>
<p>Our algorithm uses RSS as a measure for ranging between a sensor and its one-hop neighbors, which can be either sensors or beacons. Precisely, each <italic>Node<sub>p</sub></italic> advertises its own location <italic>V</italic>⃗<italic><sub>p</sub></italic> to its one-hop neighbors, where <italic>p</italic> ∈ 𝕊 ∪ 𝔹. Using this advertised transmission, each <italic>Sensor<sub>i</sub></italic> measures the RSS <italic>s<sub>i,p</sub></italic> that emitted from the advertising <italic>Node<sub>p</sub></italic>. According to <italic>s<sub>i,p</sub></italic>, the distance <italic>d<sub>i,p</sub></italic> in between is estimated using the path loss model [<xref ref-type="bibr" rid="b18-sensors-10-05171-v2">18</xref>]. Using all collected <italic>V</italic>⃗<italic><sub>p</sub></italic> and estimated <italic>d<sub>i,p</sub></italic>, <italic>Sensor<sub>i</sub></italic> executes our proposed localization solution based on spring-relaxation technique to achieve accurate estimation of its location. Our proposed localization solution consists of two phases both using the spring-relaxation technique. In the first phase, sensors perform localization based on the location advertisements only from visible beacons, whereas in the second phase, sensors perform localization using the location advertisements transmitted from all neighbors including beacons and sensors. In the following, we first explain the spring-relaxation technique for localization, and then describe the algorithms for the two phases for localization.</p>
<sec>
<label>2.1.</label>
<title>Localization Using Spring-Relaxation Technique</title>
<p>To explain the concept of spring-relaxation technique for the localization, we consider a simple example that consists of five beacons and a sensor whose location is to be determined. In the concept of spring-relaxation technique, the considered example is equivalent to having a moving particle (<italic>i.e.</italic>, sensor) attaching with five springs. For each spring, while its one end attaches to the particle, its another end is nailed by a pin (<italic>i.e.</italic>, beacon) at a fixed location.</p>
<p><xref ref-type="fig" rid="f1-sensors-10-05171-v2">Figure 1</xref> depicts the described example. In the illustration, the black rings are the beacons or the pins in fixed locations, and white ring is the sensor or the particle in its initial guessed location. The natural length of a spring is the length where the spring is in the rest state. When the length of a spring becomes shorter (resp. longer) than its natural length, the spring is compressed (resp. stretched) and forces are produced at each end of the spring.</p>
<p>The particle attached to a set of springs receives forces from them when they are compressed or stretched. The net force applies on the particle is the vector sum of all received forces. When the particle begins at a particular location with nonzero net force, the net force moves the particle to a new location and the net force changes accordingly. The particle continues to move until the net force becomes zero, and the particle comes to rest. This resting location, indicated by the grey ring in <xref ref-type="fig" rid="f1-sensors-10-05171-v2">Figure 1</xref>, is also the final stopping location of the particle. Localization using spring-relaxation technique does not have real springs connecting the particles and pins. It uses the concept to simulate the movements of the particle under the spring forces computed, and find the final stopping location, which is the estimated location of the particle.</p>
<p>From Hooke’s law, the magnitude of the force <italic>F</italic> from each spring is
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>k</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi></mml:mrow>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>−</mml:mo>
<mml:mi>L</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>L</italic><sub>0</sub> is the natural length of the spring, <italic>L</italic> is the current length of the spring, and <italic>k</italic> is the spring constant. The difference which <italic>L</italic><sub>0</sub> − <italic>L</italic> describes is the stretch or compression of the spring. Let <italic>F</italic>⃗ be the force vector applied on a particle by a spring, and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi mathvariant="italic">net</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mo>∑</mml:mo>
<mml:mover accent="true">
<mml:mi>F</mml:mi>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> be the net force applying on the particle by all the attached springs. By Newton’s first and second law, we have the relationship
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi mathvariant="italic">net</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mi> </mml:mi>
<mml:mover accent="true">
<mml:mi>υ</mml:mi>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">dt</mml:mi></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>where <italic>m</italic> is the mass of the particle and <italic>v</italic>⃗ is the instantaneous velocity of the particle due to the net force. The instantaneous displacement of the particle can be determined by
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:mrow>
<mml:mover accent="true">
<mml:mi>D</mml:mi>
<mml:mo>→</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>∫</mml:mo>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>υ</mml:mi>
<mml:mo>→</mml:mo></mml:mover>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">dt</mml:mi>
<mml:mi> </mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>∬</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi mathvariant="italic">net</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow>
<mml:mi>m</mml:mi></mml:mfrac></mml:mrow></mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="italic">dt</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>.</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>The instantaneous displacement will cause a change in force applied by each spring on the particle. This change in force leads to a new net force on the particle which then changes the instantaneous displacement of the particle again. As this process continues, the particle moves and will eventually rest at an equilibrium location where the net force is zero.</p>
<p>Localization using spring-relaxation technique mimics the behavior of the spring network for the computation of the estimated location. <xref ref-type="disp-formula" rid="FD1">Equations (1)</xref>–<xref ref-type="disp-formula" rid="FD2">(2)</xref> can be realized similarly in localization. <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref> describes that the net force determines the displacement. To ease the computation in (3), the relationship between a force and a displacement can be simplified. AFL uses a simple linear relationship to compute the displacement from a force [<xref ref-type="bibr" rid="b15-sensors-10-05171-v2">15</xref>], where in its algorithm, the net force determines the displacement directly. We follow this design principle for our solution.</p>
<p>We will now describe the realization of (1)–(3) in our solution more precisely. Recall the notations defined previously, <italic>V</italic>⃗<italic><sub>i</sub></italic> is the location of <italic>Sensor<sub>i</sub></italic>, where i ∈ 𝕊; <italic>V</italic>⃗<italic><sub>j</sub></italic> is the location of <italic>Beacon<sub>j</sub></italic>, where <italic>j</italic> ∈ 𝔹; and <italic>d<sub>i,j</sub></italic> is the estimated distance between <italic>Sensor<sub>i</sub></italic> and <italic>Beacon<sub>j</sub></italic> according to the measured signal strength. Define 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> to be the force that the spring between <italic>Sensor<sub>i</sub></italic> and <italic>Beacon<sub>j</sub></italic> exerts on <italic>Sensor<sub>i</sub></italic>. We show that
<disp-formula>
<mml:math display="block">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">‖</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>j</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">‖</mml:mo></mml:mrow></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>×</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>j</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>The scalar quantity (<italic>d<sub>i,j</sub></italic>− ||<italic>V</italic>⃗<italic><sub>i</sub></italic> – <italic>V</italic>⃗<italic><sub>j</sub></italic>||) is the displacement of the spring from natural length, which gives the magnitude of the force exerted by the spring between <italic>Sensor<sub>i</sub></italic> and <italic>Beacon<sub>j</sub></italic>. The unit vector <italic>u</italic>(<italic>V</italic>⃗<italic><sub>i</sub></italic> – <italic>V</italic>⃗<italic><sub>j</sub></italic>) gives the direction of the force on <italic>Sensor<sub>i</sub></italic>. The spring constant is ignored.</p>
<p>The net force on <italic>Sensor<sub>i</sub></italic>, defined as <italic>F</italic>⃗<italic><sub>i</sub></italic> is the vector sum of all forces
<disp-formula>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>F</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:munder>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>∈</mml:mo>
<mml:mi>𝔹</mml:mi></mml:mrow></mml:munder>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>To mimic the evolution of the spring network, our algorithm updates the locations of sensors in iterations. In each iteration, the algorithm moves <italic>Sensor<sub>i</sub></italic> a small distance in the direction of <italic>F</italic>⃗<italic><sub>i</sub></italic> and then recomputes all the applied forces. Let <italic>δ</italic> be the step size of location adjustment. Considering a linear relationship between the net force and the displacement, the location of <italic>Sensor<sub>i</sub></italic> is then updated as
<disp-formula>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>←</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mo>·</mml:mo>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p></sec>
<sec>
<label>2.2.</label>
<title>Phase 1: Coarse Location Estimation</title>
<p>In this phase, each sensor first makes an initial guess of its location that is irrelevant to its actual location and can be obtained by random assignment, then ranges to each of its visible beacons, and uses the estimated distance from signal strength to iteratively refine this initial guess. Precisely, each <italic>Sensor<sub>i</sub> i</italic> ∈ 𝕊 first makes the initial guess of <italic>V</italic>⃗<italic><sub>i</sub></italic>, then measures the signal strength from each of its visible <italic>Beacon<sub>j</sub> j</italic> ∈ 𝔹. Based on the measured signal strength, <italic>s<sub>i,j</sub></italic>, the distance between <italic>Sensor<sub>i</sub></italic> and <italic>Beacon<sub>j</sub></italic> is estimated using the path loss model [<xref ref-type="bibr" rid="b18-sensors-10-05171-v2">18</xref>], called <italic>d<sub>i,j</sub></italic>. <italic>Sensor<sub>i</sub></italic> also collects the location of <italic>Beacon<sub>j</sub></italic> which is <italic>V</italic>⃗<italic><sub>j</sub></italic>. After collecting the distances and locations of all its visible beacons, <italic>Sensor<sub>i</sub></italic> executes the algorithm to estimate its location based on the spring-relaxation technique described previously. <xref ref-type="table" rid="t4-sensors-10-05171-v2">Algorithm 1</xref> describes the procedure for <italic>Sensor<sub>i</sub></italic> to obtain its coarse location estimation.</p>
<table-wrap id="t4-sensors-10-05171-v2" position="anchor">
<label>Algorithm 1</label>
<caption>
<p>Coarse Location Estimation</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top">//For <italic>Sensor<sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top">INPUT: received signal strengths <italic>s<sub>i,j</sub></italic>, estimated distances <italic>d<sub>i,j</sub></italic>, beacon locations <italic>V</italic>⃗<italic><sub>j</sub></italic>, and initial guess of <italic>V</italic>⃗<italic><sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top">OUTPUT: phase 1 estimate of <italic>V</italic>⃗<italic><sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top"><italic>F</italic>⃗<italic><sub>i</sub></italic> = <italic>τ</italic><sub>1</sub></td></tr>
<tr>
<td align="left" valign="top"><bold>while</bold> ||<italic>F</italic>⃗<italic><sub>i</sub></italic>|| ≥ <italic>τ</italic><sub>1</sub> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">  <italic>F</italic>⃗<italic><sub>i</sub></italic> = 0</td></tr>
<tr>
<td align="left" valign="top">  <bold>for all</bold> <italic>Beacon<sub>j</sub></italic> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">    <bold>if</bold> <italic>Beacon<sub>j</sub></italic> is visible to <italic>Sensor<sub>i</sub></italic> <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">      
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:mrow>
<mml:mo>‖</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>j</mml:mi></mml:msub></mml:mrow>
<mml:mo>‖</mml:mo></mml:mrow></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>×</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>j</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">      
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mi> </mml:mi>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mi> </mml:mi>
<mml:mo>+</mml:mo>
<mml:mi> </mml:mi>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">    <bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">  <bold>end for</bold></td></tr>
<tr>
<td align="left" valign="top">  <italic>V</italic>⃗<italic><sub>i</sub></italic> = <italic>V</italic>⃗<italic><sub>i</sub></italic> + <italic>δ</italic><sub>1</sub> · <italic>F</italic>⃗<italic><sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top"><bold>end while</bold></td></tr></tbody></table></table-wrap>
<p>In the algorithm, there are several design parameters that are used to adjust the algorithm behavior and control the algorithm execution. Threshold is a constant that used to define the visibility or connectivity. If the received signal strength <italic>s<sub>i,j</sub></italic> from <italic>Beacon<sub>j</sub></italic> to <italic>Sensor<sub>i</sub></italic> is no smaller than the threshold, then <italic>Beacon<sub>j</sub></italic> is visible to <italic>Sensor<sub>i</sub></italic>. The specific value of the threshold follows the specification for receiver sensitivity defined in [<xref ref-type="bibr" rid="b19-sensors-10-05171-v2">19</xref>]. Tolerance <italic>τ</italic><sub>1</sub> is involved in the termination expression of the <italic>while</italic> loop. The iterative update of location estimate in the <italic>while</italic> loop continues executing until the magnitude of the net force ||<italic>F<sub>i</sub></italic>⃗|| falls below <italic>τ</italic><sub>1</sub>. Step size <italic>δ</italic><sub>1</sub> controls the proportion that <italic>Sensor<sub>i</sub></italic> updates its location according to the net force in each iteration, that is the convergence speed of the algorithm. Both <italic>τ</italic><sub>1</sub> and <italic>δ</italic><sub>1</sub> have profound impacts on the algorithm behavior and performance, which is analyzed in later sections.</p>
<p>It should be pointed out that it is not a necessity for every sensor to have visible beacons for practical purpose. Instead, we assume that every sensor has at least three non-collinear neighboring sensors, and this assumption can be easily met in practical applications with large network size and high node density. In multi-hop applications where many sensors reside outside the transmission range of available beacons, those outside sensors will keep their initial guesses as the output of phase 1, and let the refinement process in phase 2 to handle the location estimation with the help of neighboring sensors. The advantage the knowledge of beacon locations constantly brings will be transferred eventually to all sensors in a hop-by-hop manner. As a matter of fact, our localization solution aims to provide accurate location estimation with minimal system requirement and deployment effort, e.g., decentralized structure and low coverage of beacons.</p></sec>
<sec>
<label>2.3.</label>
<title>Phase 2: Estimated Location Refinement</title>
<p>After phase 1, a coarse location estimate of all sensor locations is provided. Applying the same spring-relaxation technique in a different domain, phase 2 works on phase 1 estimates to refine the results in a cooperative way. In phase 2, <italic>Sensor<sub>i</sub> i</italic> ∈ 𝕊 ranges to <italic>Node<sub>p</sub></italic>, <italic>p</italic> ∈ 𝕊 ∪ 𝔹, <italic>i.e.</italic>, not only visible beacons but also neighboring sensors, to adjust cooperatively their locations according to the net force exerted. It is expected that with the contribution of location information from its neighboring sensors besides that from its visible beacons, a sensor will refine its location estimate in this phase. Meanwhile, similarly to the robot equipped with odometric equipment that moves around to provide appropriate initial coordinates to beacons that discussed in [<xref ref-type="bibr" rid="b20-sensors-10-05171-v2">20</xref>], the constant presence of beacons in known locations will impose constrains or rigidity on the available room for force-directed optimizations, and thus avoids the convergence to severe false minima. During the algorithm execution, each sensor will receive position updates from its neighbors, and broadcast its newly updated position to its neighbors. In lightly utilized networks, sensors can manage to use the idle channel to broadcast their position information. In heavily utilized networks, sensors can piggy-back their position information to on-going transmissions. In other words, bandwidth consumption is not a critical issue for the algorithm.</p>
<table-wrap id="t5-sensors-10-05171-v2" position="anchor">
<label>Algorithm 2</label>
<caption>
<p>Estimated Location Refinement</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top">//For <italic>Sensor<sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top">INPUT: received signal strengths <italic>s<sub>i,p</sub></italic>, estimated distances <italic>d<sub>i,p</sub></italic>, <italic>V</italic>⃗<italic><sub>p</sub></italic> (including beacon locations <italic>V<sub>j</sub></italic>⃗ and phase 1 estimate of <italic>V</italic>⃗<italic><sub>i</sub></italic>)</td></tr>
<tr>
<td align="left" valign="top">OUTPUT: phase 2 refined estimate of <italic>V</italic>⃗<italic><sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top"><italic>F</italic>⃗<italic><sub>i</sub></italic> = <italic>τ</italic><sub>2</sub></td></tr>
<tr>
<td align="left" valign="top"><bold>while</bold> ||<italic>F</italic>⃗<italic><sub>i</sub></italic>|| ≥ <italic>τ</italic><sub>2</sub> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">  <italic>F</italic>⃗<italic><sub>i</sub></italic> = 0</td></tr>
<tr>
<td align="left" valign="top">  <bold>for all</bold> <italic>Node<sub>p</sub></italic> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">    <bold>if</bold> <italic>Node<sub>p</sub></italic> is visible to <italic>Sensor<sub>i</sub></italic> <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">       
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>p</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:mrow>
<mml:mo>‖</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow>
<mml:mo>‖</mml:mo></mml:mrow></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>×</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>V</mml:mi>
<mml:mo>→</mml:mo></mml:mover></mml:mrow>
<mml:mi>p</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">       
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mi> </mml:mi>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover>
<mml:mi> </mml:mi>
<mml:mo>+</mml:mo>
<mml:mi> </mml:mi>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="true">→</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">    <bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">  <bold>end for</bold></td></tr>
<tr>
<td align="left" valign="top">  <italic>V</italic>⃗<italic><sub>i</sub></italic> = <italic>V</italic>⃗<italic><sub>i</sub></italic> + <italic>δ</italic><sub>2</sub> · <italic>F</italic>⃗<italic><sub>i</sub></italic></td></tr>
<tr>
<td align="left" valign="top">  Update the <italic>s<sub>i,p</sub></italic>, and <italic>d<sub>i,p</sub></italic></td></tr>
<tr>
<td align="left" valign="top"><bold>end while</bold></td></tr></tbody></table></table-wrap>
<p><xref ref-type="table" rid="t5-sensors-10-05171-v2">Algorithm 2</xref> describes the procedure for <italic>Sensor<sub>i</sub></italic> to obtain a more accurate location estimate by refining the coarse location estimate from phase 1. Since phase 2 is also based on the spring-relaxation technique, the algorithm also possesses two design parameters where one describes the tolerance, <italic>τ</italic><sub>2</sub> and another describes the step size, <italic>δ</italic><sub>2</sub>. Due to different consideration in the design, phase 2 shall use a different setting for the parameters. In details, since the second phase follows a cooperative approach, a sensor will gather information not only from visible beacons, but also from other neighboring sensors for the location estimation. With the spring-relaxation technique for localization, the contribution of the net force is much higher for a cooperative approach than that of a non-cooperative approach used in <xref ref-type="table" rid="t4-sensors-10-05171-v2">Algorithm 1</xref>. Thus, an appropriate setting for <xref ref-type="table" rid="t5-sensors-10-05171-v2">Algorithm 2</xref> is where <italic>τ</italic><sub>2</sub> &gt; <italic>τ</italic><sub>1</sub>.</p>
<p>In this phase, the algorithm updates the signal strength and estimation location in every iteration. Due to the noise in the signal strength measures, this constant update causes fluctuation in the computed location. A tighter control in <italic>δ</italic><sub>2</sub> is necessary in this phase to maintain the stability of the location estimation. A study on the stability of the location estimation and the influence by <italic>δ</italic><sub>2</sub> is given in the following analysis and simulation.</p>
<p><xref ref-type="table" rid="t5-sensors-10-05171-v2">Algorithm 2</xref> can be executed in a continuation manner by excluding the terminate expression of the <italic>while</italic> loop. In this way, the continuous refinement will keep updating the location estimates for applications with either static or dynamic network topology. For static network, continuous refinement can help improving the estimation accuracy, for the effort the infinite RSS sample size makes to eliminate the noise introduced from signal propagation. Whereas for dynamic network, continuous refinement can help adjusting accordingly the estimation to sensor movements.</p></sec></sec>
<sec sec-type="methods">
<label>3.</label>
<title>Analysis</title>
<p>In this section, we analyze the stability of each phase of the solution. In phase 1, a sensor gathers the location and distance information from each of its visible beacons, and starts the execution of <xref ref-type="table" rid="t4-sensors-10-05171-v2">Algorithm 1</xref> using the gathered information. To ensure the algorithm terminates within a finite time indicating its stability, we analyze the convergence of the estimated location.</p>
<p>In phase 2, a sensor exchanges the location and distance information not only from each of its visible beacons, but also from all its neighboring sensors. Moreover, the sensor updates this information constantly during the execution of <xref ref-type="table" rid="t5-sensors-10-05171-v2">Algorithm 2</xref>. In this cooperative nature of the design, location and distance information fluctuates over the time during the execution, it is thus necessary to test whether the estimated location remain stationary indicating its stability. For this analysis, we show that the estimated location is wide sense stationary.</p>
<sec sec-type="methods">
<label>3.1.</label>
<title>Convergence Analysis</title>
<p>Our algorithm performs iteration of computation, and in our design, the iteration terminates when the net force falls below a threshold where this weak force has no longer significant contribution to the estimated location of the sensor. Based on extensive simulation experiments, it is indicated in [<xref ref-type="bibr" rid="b21-sensors-10-05171-v2">21</xref>] that such an iteration will terminate and that the estimated location will converge to a coordinate. This convergence is also applicable to our algorithm. In the following, we establish the convergence property of our algorithm, where we first investigate this property in a simple one-dimensional setup, and then extend our discussion to the two-dimensional setup.</p>
<sec>
<label>3.1.1.</label>
<title>Convergence in One-Dimensional Setup</title>
<p>We first show the algorithm convergence property in the simple one-dimensional (1-D) setup. We shall use the concept of spring-relaxation for the discussion, which is equivalent to our algorithm. We assume that there is a single location, which we called a <italic>stopping point</italic>, where all forces from beacons cancel out. This assumption is often valid for common configurations.</p>
<p>Consider <italic>n</italic> beacons where <italic>n</italic> ≥ 2. Each beacon is located at <italic>x<sub>i</sub>, i</italic> = 1, 2, …, <italic>n</italic>. All distance variables are normalized to the length of the spring, <italic>i.e.</italic>, the length of the spring is of one unit long. The net force applied on a node located at <italic>x</italic> is
<disp-formula>
<mml:math display="block">
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula>where
<disp-formula id="FD4">
<label>(4)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<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:mo>−</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&lt;</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&gt;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>In the following, we shall prove that in 1-D setup, if there exist a unique stopping point where the net force is zero, at any other location, the net force is nonzero, and the force points towards the stopping point. In (4), we define that the leftward (resp. rightward) force carries a negative (resp. positive) sign.</p>
<p><bold>Proposition 1</bold> <italic>Consider n beacons where n</italic> ≥ 2. <italic>Each beacon is located at x<sub>i</sub>, i</italic> = 1, 2, …<italic>, n. The net force applied on a node located at x is</italic> 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="normal">Σ</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:msubsup>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>. <italic>If F</italic>(<italic>x</italic>) = 0 <italic>produces a single unique solution, and let the solution be x̂, then</italic> ∀<italic>x</italic> &lt; <italic>x̂, F</italic>(<italic>x</italic>) &gt; 0 <italic>and</italic> ∀<italic>x</italic> &gt; <italic>x̂ F</italic>(<italic>x</italic>) &lt; 0.</p>
<p><bold>Proof</bold> We first show that ∀<italic>x</italic> &lt; <italic>x̂ F</italic>(<italic>x</italic>) &gt; 0. By (4), <italic>F<sub>x<sub>i</sub></sub></italic> (<italic>x</italic>) is a monotone decreasing function except at <italic>x</italic> = <italic>x<sub>i</sub></italic> where the curve steps up by two units. Thus, <italic>F</italic>(<italic>x</italic>) is also a piecewise monotone decreasing function with <italic>n</italic> upward steps occurring at <italic>x<sub>i</sub></italic>, <italic>i</italic> = 1, 2, …, <italic>n</italic>. In other words, at the discontinuity point <italic>x<sub>i</sub></italic>, if 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></inline-formula>, <italic>F</italic>(<italic>x<sub>i</sub></italic>) &gt; 0 and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></inline-formula>.</p>
<p>Given that as <italic>x</italic> → −∞, <italic>F</italic><sub><italic>x</italic><sub><italic>i</italic></sub></sub>(<italic>x</italic>) → ∞ which implies lim<italic><sub>x</sub></italic><sub>→–∞</sub> <italic>F</italic>(<italic>x</italic>) &gt; 0. Since <italic>F</italic>(<italic>x</italic>) is a piecewise monotone decreasing function where at any of its discontinuity points <italic>x<sub>i</sub></italic>, if 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></inline-formula>, then <italic>F</italic>(<italic>x<sub>i</sub></italic>) &gt; 0 and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></inline-formula>, and <italic>x̂</italic> is the only point that the <italic>F</italic>(<italic>x</italic>) crosses the x-axis, with condition lim<italic><sub>x</sub></italic><sub>→–∞</sub> <italic>F</italic>(<italic>x</italic>) &gt; 0, in the range where <italic>x</italic> ∈ (−∞, <italic>x̂</italic>), we must have <italic>F</italic>(<italic>x</italic>) &gt; 0.</p>
<p>We now show that ∀<italic>x</italic> &gt; <italic>x̂, F</italic>(<italic>x</italic>) <italic>&lt;</italic> 0, and we shall prove this by using contradiction. Given <italic>F</italic>(<italic>x̂</italic>) = 0 as the unique solution, there exists a point <italic>x</italic> &gt; <italic>x̂</italic> where <italic>F</italic>(<italic>x</italic>) &gt; 0.</p>
<p>Recall that <italic>F</italic>(<italic>x</italic>) is also a piecewise monotone decreasing function with <italic>n</italic> upward steps occurring at <italic>x<sub>i</sub></italic>, <italic>i</italic> = 1, 2, …, <italic>n</italic> where at any of its discontinuity points <italic>x<sub>i</sub></italic>, if 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></inline-formula>, then <italic>F</italic>(<italic>x<sub>i</sub></italic>) &gt; 0 and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></inline-formula>. As <italic>x</italic> → ∞, by (4) <italic>F</italic><sub><italic>x</italic><sub><italic>i</italic></sub></sub>(<italic>x</italic>) → ∞ which implies lim<italic><sub>x</sub></italic><sub>→∞</sub> <italic>F</italic>(<italic>x</italic>) <italic>&lt;</italic> 0.</p>
<p>Given that there is a point <italic>x</italic> &gt; <italic>x̂</italic> where <italic>F</italic>(<italic>x</italic>) &gt; 0, since <italic>F</italic>(<italic>x</italic>) is a piecewise monotone decreasing function, and at its discontinuity point <italic>x<sub>i</sub></italic>, if 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>−</mml:mo></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></inline-formula>, then <italic>F</italic>(<italic>x<sub>i</sub></italic>) &gt; 0 and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>+</mml:mo></mml:msubsup></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>&gt;</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:math></inline-formula>, with <italic>F</italic>(<italic>x</italic>) &gt; 0 and lim<italic><sub>x</sub></italic><sub>→∞</sub> <italic>F</italic>(<italic>x</italic>) <italic>&lt;</italic> 0, there must exist a point <italic>u</italic> ∈ (<italic>x</italic>, ∞) such that <italic>F</italic>(<italic>u</italic>) = 0 which contradict with our condition that <italic>F</italic>(<italic>x̂</italic>) = 0 is the only solution. Thus, if <italic>x</italic> &gt; <italic>x̂</italic> we must have <italic>F</italic>(<italic>x</italic>) <italic>&lt;</italic> 0.</p>
<p>In the above discussion, we make no description on the step size of each movement of the estimated location. The analysis is valid for infinitesimal step size, or equivalently <italic>δ</italic><sub>1</sub> is very small. In fact, <italic>δ</italic><sub>1</sub> <italic>&lt;</italic> 1 represents the upper bound condition for the setting of <italic>δ</italic><sub>1</sub> as <italic>δ</italic><sub>1</sub> = 1 corresponds to applying 100% of the net force to the movement of the estimated location.</p>
<p>Moreover, it is possible that a system setup gives more than one stopping points. In practice, such a setup should be avoided as it creates ambiguity in the localization. We here illustrate multiple stopping points using a two-beacon setup. Let <italic>d</italic> be the distance between the two beacons where the two beacons are located at 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:mfrac>
<mml:mi>d</mml:mi>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:math></inline-formula> and 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mi>d</mml:mi>
<mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:math></inline-formula> respectively. The net force receives by a node at location <italic>x</italic> is <italic>F</italic>(<italic>x</italic>) = <italic>F</italic><sub><italic>x</italic><sub>1</sub></sub>(<italic>x</italic>) + <italic>F</italic><sub><italic>x</italic><sub>2</sub></sub>(<italic>x</italic>). By setting <italic>F</italic>(<italic>x</italic>) = 0, we can solve for locations where the net force is zero. One immediate solution to <italic>F</italic>(<italic>x</italic>) = 0 is <italic>x</italic> = 0. Besides, when <italic>d</italic> &lt; 2, two other solutions can be found, which are <italic>x</italic> = ±1. The condition where <italic>d &lt;</italic> 2 suggests that the two beacons are placed too close to each other. In practical design, beacons should be spread out in location to avoid generating multiple solutions which cause ambiguity in localization.</p></sec>
<sec>
<label>3.1.2.</label>
<title>Convergence in Two-Dimensional Setup</title>
<p>Similar approach can be adopted for the illustration of convergence property in a two-dimensional setup. Consider <italic>n</italic> beacons where <italic>n</italic> ≥ 2. Each beacon is located at coordinate <italic>s<sub>i</sub></italic>, <italic>i</italic> = 1, 2, …, <italic>n</italic>. All distance variables are normalized to the length of the spring, i.e. the length of the spring is of one unit long. We shall arbitrarily draw a straight line crossing the only stopping point, then rotate the line along with all beacons such that the line becomes horizontal and overlaps with an x-axis, and finally shift the line horizontally such that the stopping point stays at <italic>x̂</italic> on the x-axis. After this transformation, let the xy-coordinate of the <italic>i</italic>-th beacon be (<italic>x<sub>i</sub></italic>, <italic>y<sub>i</sub></italic>), <italic>i</italic> = 1, 2, . . ., <italic>n</italic>. We now focus on the image of the forces projected on the straight line, which can be determined by
<disp-formula id="FD5">
<label>(5)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:mfrac>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>We call the zone where a particular spring experiences compression a compression zone of the spring or the beacon. If the straight line does not cross the compression zone of a beacon, then we have <italic>|y<sub>i</sub>|</italic> &gt; 1 which ensures that the spring remains stretched along the line. It can be shown that with <italic>|y<sub>i</sub>|</italic> &gt; 1, <italic>F</italic><sub><italic>x</italic><sub><italic>i</italic></sub></sub>(<italic>x</italic>) given in (5) is a monotone decreasing continuous function. We plot the result of (5) with <italic>x<sub>i</sub></italic> = 1 and <italic>y<sub>i</sub></italic> = 2 in <xref ref-type="fig" rid="f2-sensors-10-05171-v2">Figure 2</xref> to illustrate its monotonic decreasing characteristics.</p>
<p>For the case that the straight line touches or crosses the compression zone of a beacon, we have |<italic>y<sub>i</sub>|</italic> ≤ 1. It can be shown that <italic>F</italic><sub><italic>x</italic><sub><italic>i</italic></sub></sub>(<italic>x</italic>) given in (5) decreases monotonically except in the range 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfrac>
<mml:mn>4</mml:mn>
<mml:mn>3</mml:mn></mml:mfrac></mml:mrow></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:mrow></mml:mrow></mml:math></inline-formula>, 
<inline-formula>
<mml:math>
<mml:msqrt>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mfrac>
<mml:mn>4</mml:mn>
<mml:mn>3</mml:mn></mml:mfrac></mml:mrow></mml:msubsup></mml:msqrt>
<mml:mo>)</mml:mo></mml:math></inline-formula> where it increases monotonically for no more than two units in total. In fact, (4) in the 1-D setup is a special case of (5) where the straight line also crosses the beacon. In <xref ref-type="fig" rid="f2-sensors-10-05171-v2">Figure 2</xref>, the cases of <italic>|y<sub>i</sub>|</italic> ≤ 1 and <italic>y<sub>i</sub></italic> = 0 both with <italic>x<sub>i</sub></italic> = 1 are also plotted illustrating a similar characteristics between the case <italic>|y<sub>i</sub>|</italic> ≤ 1 in the 2-D setup and the case <italic>y<sub>i</sub></italic> = 0 in the 1-D setup.</p>
<p>Using this setup, following the proof given in Proposition 1, it can be shown that with the existence of a unique stopping point, at any other location along the straight line, there exist an net force where its image projected on the straight line points towards the stopping point which moves the node nearer to the stopping point. As the algorithm iterates, the location of the node will eventually converged to the stopping point. Note that since we only show that the image of a force along the line connecting the stopping point and the arbitrary chosen location points towards the the stopping point, the node may not necessarily moves along the straight line back to the only stopping point. The node may move to a new location nearer to the stopping point not necessarily on the straight line, but we can redraw another line for that new location and then apply the same argument to show that the next location of the node will again be nearer to the stopping point than that of the current location.</p></sec></sec>
<sec>
<label>3.2.</label>
<title>Stationary Property</title>
<p>For illustration simplicity, we consider a scenario shown in <xref ref-type="fig" rid="f3-sensors-10-05171-v2">Figure 3</xref>. This simple setup consists of a beacon (called <italic>Beacon<sub>L</sub></italic>) and two sensors (called <italic>Sensor<sub>C</sub></italic> and <italic>Sensor<sub>R</sub></italic>). They are placed on the X-axis where <italic>Beacon<sub>L</sub></italic>, <italic>Sensor<sub>C</sub></italic>, and <italic>Sensor<sub>R</sub></italic> are located at −1, 0 and 1 on the X-axis respectively.</p>
<p>We use the notation <italic>C<sub>n</sub></italic> and <italic>R<sub>n</sub></italic> to represent the computed sensor coordinates after <italic>n</italic> rounds of iterations in the algorithm. Assume the algorithm is initialized using the true locations, we have <italic>C</italic><sub>0</sub> = 0, <italic>R</italic><sub>0</sub> = 1. Beacons are always in fixed location, and in this setup <italic>L</italic> = −1. The estimated distance <italic>d</italic> from a particular node to another is calculated according to the path loss model [<xref ref-type="bibr" rid="b18-sensors-10-05171-v2">18</xref>] based on the received signal strength. Due to the log-normal shadowing [<xref ref-type="bibr" rid="b18-sensors-10-05171-v2">18</xref>] resulting the log-distance path loss model [<xref ref-type="bibr" rid="b12-sensors-10-05171-v2">12</xref>, <xref ref-type="bibr" rid="b22-sensors-10-05171-v2">22</xref>], the estimated distance <italic>d</italic> from a node to another is a log-normal random variable of mean <italic>d</italic> and a particular fixed variance <italic>σ</italic><sup>2</sup> [<xref ref-type="bibr" rid="b22-sensors-10-05171-v2">22</xref>]. Therefore, in the scenario of <xref ref-type="fig" rid="f3-sensors-10-05171-v2">Figure 3</xref>, we have three log-normal random variables for the estimated distances, where <italic>d</italic><sub>1</sub> is the estimated distance from <italic>Sensor<sub>C</sub></italic> to <italic>Sensor<sub>R</sub></italic>, <italic>d</italic><sub>2</sub> is the estimated distance from <italic>Sensor<sub>C</sub></italic> to <italic>Beacon<sub>L</sub></italic>, and <italic>d</italic><sub>3</sub> is the estimated distance from <italic>Sensor<sub>R</sub></italic> to <italic>Sensor<sub>C</sub></italic>. We use the notation <italic>d<sub>k,n</sub></italic> to represent the <italic>k</italic>-th estimated distance updated in the <italic>n</italic>-th round of iterations. From the true locations of three nodes, these three random variables have the parameters as <italic>E</italic>[<italic>d<sub>k,n</sub></italic>] = 1, <italic>V ar</italic>(<italic>d<sub>k,n</sub></italic>) = <italic>σ</italic><sup>2</sup>, where <italic>k</italic> = 1, 2, 3.</p>
<p>According to our algorithm, since both <italic>Beacon<sub>L</sub></italic> and <italic>Sensor<sub>R</sub></italic> are neighbors to <italic>Sensor<sub>C</sub></italic>, we get
<disp-formula id="FD6">
<label>(6)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>δ</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>δ</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>L</mml:mi></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>δ</italic> is the step size constant specified in the algorithm. Similarly, <italic>Sensor<sub>R</sub></italic> only has the neighbor <italic>Sensor<sub>C</sub></italic>, and we have
<disp-formula id="FD7">
<label>(7)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>δ</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>d</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:msub>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><xref ref-type="disp-formula" rid="FD6">Formulas (6)</xref>–<xref ref-type="disp-formula" rid="FD7">(7)</xref> can be viewed as a type of first order vector autoregression systems. The main purpose of this analysis is to show that the above system is stable. Precisely, we wish to show the variances of <italic>C<sub>n</sub></italic> and <italic>R<sub>n</sub></italic> after a long run remain finite. To solve <xref ref-type="disp-formula" rid="FD6">(6)</xref>–<xref ref-type="disp-formula" rid="FD7">(7)</xref> for <italic>V ar</italic>(<italic>C<sub>n</sub></italic>) and <italic>V ar</italic>(<italic>R<sub>n</sub></italic>), we first determine their covariance to be
<disp-formula>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">cov</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>n</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>δ</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi mathvariant="italic">Var</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>n</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>δ</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi mathvariant="italic">Var</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>n</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mo>−</mml:mo>
<mml:mn>3</mml:mn>
<mml:mi>δ</mml:mi></mml:mrow></mml:mfrac>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>With the above result, using time series analysis, we further get
<disp-formula>
<mml:math display="block">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">Var</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>C</mml:mi>
<mml:mi>n</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>δ</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:mi>δ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:mn>13</mml:mn>
<mml:mi>δ</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>10</mml:mn></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>δ</mml:mi></mml:mrow>
<mml:mn>3</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:mn>9</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi>δ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mn>22</mml:mn>
<mml:mi>δ</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>12</mml:mn></mml:mrow></mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>σ</mml:mi>
<mml:mo>^</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="italic">Var</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>n</mml:mi></mml:msub></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>δ</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>3</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi>δ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:mn>11</mml:mn>
<mml:mi>δ</mml:mi>
<mml:mo>+</mml:mo>
<mml:mn>7</mml:mn></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>δ</mml:mi></mml:mrow>
<mml:mn>3</mml:mn></mml:msup>
<mml:mo>−</mml:mo>
<mml:mn>9</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mi>δ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mn>22</mml:mn>
<mml:mi>δ</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>12</mml:mn></mml:mrow></mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>σ</mml:mi>
<mml:mo>^</mml:mo></mml:mover></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>From the last result, the variances of <italic>C<sub>n</sub></italic> and <italic>R<sub>n</sub></italic> are positive and remain finite when 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mo>&lt;</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>−</mml:mo>
<mml:msqrt>
<mml:mn>5</mml:mn></mml:msqrt>
<mml:mo>≈</mml:mo>
<mml:mn>0.764</mml:mn></mml:mrow></mml:math></inline-formula>. This concludes that the computed locations are wide sense stationary with a proper setting of the <italic>δ</italic> parameter. The <italic>δ</italic> parameter controls the step size in the algorithm, thus a large step size increases the fluctuation of <italic>C<sub>n</sub></italic> and <italic>R<sub>n</sub></italic> which in turns increases their variances.</p>
<p>From the above simple scenario, we see that while the measured signal strength fluctuates over the time, the estimated location also fluctuates and stays stationary around its true location, even for the sensor where none of its neighbors is a beacon. This stationary property suggests that cooperative approach for the spring-relaxation technique maintains stability in location estimation.</p></sec></sec>
<sec sec-type="results|discussion">
<label>4.</label>
<title>Simulation Results and Discussion</title>
<p>We use the following path loss model for the radio propagation [<xref ref-type="bibr" rid="b18-sensors-10-05171-v2">18</xref>].
<disp-formula id="FD8">
<label>(8)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mtext>log</mml:mtext></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mn>10</mml:mn></mml:mrow></mml:msub>
<mml:mi>d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mn>10</mml:mn>
<mml:mi>n</mml:mi></mml:mrow></mml:mfrac>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi mathvariant="italic">TX</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi mathvariant="italic">RX</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>G</mml:mi>
<mml:mi mathvariant="italic">TX</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>G</mml:mi>
<mml:mi mathvariant="italic">RX</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mi>α</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mn>20</mml:mn>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mtext>log</mml:mtext></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mn>10</mml:mn></mml:mrow></mml:msub>
<mml:mi>λ</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>20</mml:mn>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mrow>
<mml:mrow>
<mml:mtext>log</mml:mtext></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mn>10</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>4</mml:mn>
<mml:mi>π</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where the involved variables are described in <xref ref-type="table" rid="t1-sensors-10-05171-v2">Table 1</xref>, and their default values follow the IEEE 802.15.4 standard for ZigBee [<xref ref-type="bibr" rid="b19-sensors-10-05171-v2">19</xref>].</p>
<sec>
<label>4.1.</label>
<title>Simulation for One-Hop Setup</title>
<p>In this section, we conduct simulation experiments to study the impact of protocol design parameters on the location estimation accuracy in one-hop setup using Matlab. The simulation environment is a coordinated square map of size 100 m × 100 m with <italic>N<sub>b</sub></italic> = 5 beacons and <italic>N<sub>s</sub></italic> = 50 sensors randomly deployed in uniform distribution. The five beacons are set into the four corners and the central point of the map.</p>
<sec sec-type="methods">
<label>4.1.1.</label>
<title>Parameter Design for Phase 1</title>
<p>In phase 1, the more iterations the algorithm executes, the closer the estimated location of a sensor approaches its stopping point. Due to the RSS ranging error, the eventual stopping point may not be the true location. The task of phase 1 is mainly to bring the estimated location to the stopping point, and then the location estimation continues with phase 2 to bring further from the stopping point to the true location. Therefore, for the performance of phase 1, our interest is to investigate the estimation error by measuring the distance between the estimated location of a particular sensor and its eventual stopping point rather than its true location. In other words, we measure
<disp-formula>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">error</mml:mi>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi></mml:mrow></mml:msub></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:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi></mml:mrow></mml:msub></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>where (<italic>x<sub>e,i</sub></italic>,<italic>y<sub>e,i</sub></italic>) is the estimated location and (<italic>x<sub>s,i</sub></italic>,<italic>y<sub>s,i</sub></italic>) is the stopping location of <italic>Sensor<sub>i</sub></italic>, <italic>i</italic> ∈ 𝕊.</p>
<p>Starting with some preparation experiments, we were able to narrow down the value range of <italic>τ</italic><sub>1</sub> and <italic>δ</italic><sub>1</sub>. We then executed <xref ref-type="table" rid="t4-sensors-10-05171-v2">Algorithm 1</xref> ten times for each pair of (<italic>τ</italic><sub>1</sub>, <italic>δ</italic><sub>1</sub>) combinations, and calculated the mean error and number of iterations by averaging over executions. In order to make the experiment more realistic, the initial guess of sensor locations are obtained randomly and independently for each piece of execution. <xref ref-type="fig" rid="f4-sensors-10-05171-v2">Figure 4</xref> shows the estimation error versus <italic>δ</italic><sub>1</sub> for different <italic>τ</italic><sub>1</sub> values.</p>
<p>As can be seen from the figure, <italic>τ</italic><sub>1</sub> value directly governs the estimation error where a smaller <italic>τ</italic><sub>1</sub> allows the algorithm to terminate and give a closer location to the stopping point. In other words, setting a large value for <italic>τ</italic><sub>1</sub> may give undesirable estimation location produced in phase 1. In the figure, using <italic>τ</italic><sub>1</sub> = 10 gives a 10 m error indicating that the produced location estimate is still 10 m away to the stopping point. Whereas using an very small <italic>τ</italic><sub>1</sub> = 0.001 gives a very small error of below 1 mm indicating that the produced location estimate almost reaches the stopping point. Notice that in the setup, the average distance between stopping points and corresponding actual positions of sensors is about 16.52 m. As a result, <italic>τ</italic><sub>1</sub> ≤ 0.1 looks appropriate by giving a mean error less than 0.1 m for all cases of <italic>δ</italic><sub>1</sub> values.</p>
<p>Moreover, the figure also shows that the estimation error generally reduces as <italic>δ</italic><sub>1</sub> increases for all the considered <italic>τ</italic><sub>1</sub> settings. For this setup, the estimation errors reach their lowest values at around <italic>δ</italic><sub>1</sub> = 0.4. The errors then jump to higher values as <italic>δ</italic><sub>1</sub> increases further indicating diverging of the algorithm. In terms of the accuracy, it is the best choice to fix <italic>δ</italic><sub>1</sub> = 0.4.</p>
<p>While the previous results suggest that <italic>τ</italic><sub>1</sub> ≤ 0.1 and <italic>δ</italic><sub>1</sub> = 0.4 gives a very close location to the stopping point, it is also necessary to consider the convergence speed measured by number of iterations in executions. <xref ref-type="fig" rid="f5-sensors-10-05171-v2">Figure 5</xref> plots the number of executed iterations using different combinations of <italic>τ</italic><sub>1</sub> and <italic>δ</italic><sub>1</sub>. Since <italic>τ</italic><sub>1</sub> governs the termination of iterations, it can be expected that a smaller <italic>τ</italic><sub>1</sub> gives a more strict constraint on termination, thus lengthens the converging process and results in more number of iterations. Meanwhile, <italic>δ</italic><sub>1</sub> directly governs the convergence speed in the way that a larger <italic>δ</italic><sub>1</sub> gives a faster convergence. However, it is observed in <xref ref-type="fig" rid="f5-sensors-10-05171-v2">Figure 5</xref> that <italic>δ</italic><sub>1</sub> beyond 0.4 suddenly increases the number of iterations from tens to hundreds, suggesting that <italic>δ</italic><sub>1</sub> &gt; 0.4 gives a too rapid position adjustment thus introduces a lot of oscillations in position updates. To give concurrent consideration to both the estimation error and the convergence speed, the optimal choice for phase 1 in this setup is <italic>τ</italic><sub>1</sub> = 0.001 and <italic>δ</italic><sub>1</sub> = 0.4.</p></sec>
<sec sec-type="methods">
<label>4.1.2.</label>
<title>Parameter Design of Phase 2</title>
<p>Similar to that of phase 1, in <xref ref-type="table" rid="t5-sensors-10-05171-v2">Algorithm 2</xref>, the setting of <italic>τ</italic><sub>2</sub> and <italic>δ</italic><sub>2</sub> decides the termination condition of the loop in the algorithm, which in turns decides the location estimation error. In this phase, we investigate the evolution of location estimation error during the execution of <xref ref-type="table" rid="t5-sensors-10-05171-v2">Algorithm 2</xref>, where the location estimation error is measured by the distance between the estimated location and the true location of a particular sensor. Precisely,
<disp-formula>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">error</mml:mi>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></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:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></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>where (<italic>x<sub>e,i</sub></italic>,<italic>y<sub>e,i</sub></italic>) is the estimated location and (<italic>x<sub>i</sub></italic>,<italic>y<sub>i</sub></italic>) is the true location of <italic>Sensor<sub>i</sub></italic>, <italic>i</italic> ∈ 𝕊.</p>
<p>The evolution of location estimation error for a particular sensor is plotted in <xref ref-type="fig" rid="f6-sensors-10-05171-v2">Figure 6</xref> where each curve is obtained by averaging over ten executions. In the figure, the symbols represent the termination point of the algorithm with various <italic>τ</italic><sub>2</sub> values. The figure shows three curves with different <italic>δ</italic><sub>2</sub> values: (i) when <italic>δ</italic><sub>2</sub> is set to a very small value, for example <italic>δ</italic><sub>2</sub> = 0.001, the algorithm takes more iterations to terminate, and the error drops smoothly over the iteration loops; (ii) when <italic>δ</italic><sub>2</sub> is set to a relatively large value, for example <italic>δ</italic><sub>2</sub> = 0.05, the algorithm generally takes much lower computation to terminate. Over the execution, the estimated location fluctuates greatly which indicates that the algorithm operates near the instability boundary due to a high value of <italic>δ</italic><sub>2</sub>; (iii) when <italic>δ</italic><sub>2</sub> is set to a suitable value, for example <italic>δ</italic><sub>2</sub> = 0.01, the error reduces sharply in the beginning of the algorithm execution and then stays steadily with small fluctuations showing the stationary properties. This indicates that if the setting the chosen appropriately, the algorithm achieves quick convergence and stability with low error. To give concurrent consideration to both the estimation error and the convergence speed, the optimal choice for phase 2 in this setup is <italic>τ</italic><sub>2</sub> = 45 and <italic>δ</italic><sub>2</sub> = 0.01.</p>
<p>One extension of the algorithm is that we can let <xref ref-type="table" rid="t5-sensors-10-05171-v2">Algorithm 2</xref> execute continuously by not applying <italic>τ</italic><sub>2</sub> for the termination condition. This allows the algorithm to cope with a certain mobility of sensors as this modification allows the sensors to continuously update and adjust their estimated location.</p></sec>
<sec>
<label>4.1.3.</label>
<title>Overall Accuracy</title>
<p>Using the chosen values for parameters, we test the overall accuracy of our proposed localization solution using the measure of location estimation error given in (9). <xref ref-type="fig" rid="f8-sensors-10-05171-v2">Figure 8a</xref> depicts the estimated locations from phase 1 (shown in hollow triangles) and the corresponding true locations (shown in solid triangles). The errors are obvious. In <xref ref-type="fig" rid="f8-sensors-10-05171-v2">Figure 8b</xref>, we show the estimated locations from phase 2 (shown in solid triangles) and the corresponding true locations (shown in hollow triangles). The refinement due to phase 2 is clearly illustrated with many close pairs of triangles and the matched shape of sensor deployment. Numerically, the average errors in phase 1 and 2 are 15.65 m and 6.93 m respectively. Normalizing to sensor transmission range <italic>R</italic>, phase 2 estimation gives 0.35<italic>·R</italic> in average. In <xref ref-type="fig" rid="f7-sensors-10-05171-v2">Figure 7</xref> which shows the CDF of the location estimation errors, we further see that with the effort of phase 2, 90% of the location estimation are improved from more than 30 m to 10 m.</p></sec>
<sec>
<label>4.1.4.</label>
<title>Performance Comparison to Related Approaches</title>
<p>To further show the performance advantages of our proposed method, we compare the accuracy performance of our proposed solution to other solution that can be deployed to perform localization in the same environment without additional specialized localization hardware. For this performance comparison, we select the <italic>k</italic>-nearest neighbors (kNN) approach, where <italic>k</italic> neighbors are the <italic>k</italic> pre-mapped geographic points whose RF fingerprints are closet matching to that of a sensor, and each of the k neighbors is weighed inversely proportional to its Euclidean distance in signal space from the sensor whose location is being estimated [<xref ref-type="bibr" rid="b23-sensors-10-05171-v2">23</xref>]. We implement a script following [<xref ref-type="bibr" rid="b23-sensors-10-05171-v2">23</xref>], and <italic>k</italic> = 3 is used in the script for this performance comparison.</p>
<p>One additional requirement for kNN approach is the database construction of RSS fingerprints through a site-survey prior to the localization. For the database construction, the more sampling points are performed, the better is the performance. With the same setup of the map size, the placement of beacons and the number of sensors, as well as the same path loss model and log-normal shadowing, we conduct performance studies for the kNN approach using different number of survey points via simulation, and report the results in <xref ref-type="table" rid="t2-sensors-10-05171-v2">Table 2</xref>. For each number of survey points, we execute kNN ten times and take average over ten times for the final mean estimation error. As can be seen, only for 25,600 (<italic>i.e.</italic>, 160 by 160) survey points, the kNN approach achieves just below 16 m, which is of 2.3 times the localization error of our proposed method. We also observe from the table that further increasing of the survey points to 250,000 does not have significant improvement in the accuracy. This confirms that our solution is a good RSS-based localization candidate.</p>
<p>Furthermore, we compare our proposed solution to maximum-likelihood estimators (MLEs) for sensor location estimation [<xref ref-type="bibr" rid="b24-sensors-10-05171-v2">24</xref>] in the same one-hop setup. MLE works in a similar network setup that has a number of reference devices with known coordinates, and a number of blindfolded devices whose positions are to be estimated. With the combined range information between many pairs of devices and the known locations of reference devices, a Maximum-likelihood solution for the location of all of the blindfolded devices is determined. For this performance comparison, we used the MLE script implemented by Neal Patwari which can be obtained in [<xref ref-type="bibr" rid="b25-sensors-10-05171-v2">25</xref>]. Using the same system setup and sensor deployment shown in <xref ref-type="fig" rid="f8-sensors-10-05171-v2">Figure 8</xref>, we execute ten trials of MLE, take mean over all ten sets of estimated locations produced in different trials as the resultant location estimates, and plot these location estimates in <xref ref-type="fig" rid="f9-sensors-10-05171-v2">Figure 9c</xref>. The estimated locations produced by our algorithm as well as by kNN are also plotted for comparison. As can be seen in the figure, almost none of the location estimates can reach their actual locations, nor can them form a shape similar to that of the actual sensor deployment. Numerically, the mean localization error for MLE is 35.27 m, <italic>i.e.</italic>, 1.77<italic>·R</italic>, which is five times of our spring-relaxation solution.</p></sec></sec>
<sec>
<label>4.2.</label>
<title>Simulation for Two-hop Setup</title>
<p>We then enlarge the map to 350 m × 350 m to investigate the performance of our solution in two-hop networks. The same number of beacons and placement scheme are used for the beacons. Whereas the number of sensors <italic>Ns</italic> is gradually increased and sensors are randomly deployed which follows uniform distribution. Given the transmission range of beacon and sensor determined by propagation parameters listed in <xref ref-type="table" rid="t1-sensors-10-05171-v2">Table 1</xref>, the coverage of beacons is about 64.24%. In other words, about 64.24% sensors are of one-hop to some beacons, and about 35.76% sensors are of two-hop cases. The network connectivity (<italic>i.e.</italic>, average number of neighbors) can be calculated basing on a specific network topology. After applying our localization algorithm, the percentage of unsolved sensor nodes (<italic>i.e.</italic>, the percentage of sensors whose locations cannot be estimated using the localization technique) is computed, and the mean localization error of the location estimation is compared with that using MLE in the same network settings, as listed in <xref ref-type="table" rid="t3-sensors-10-05171-v2">Table 3</xref>.</p>
<p>Given the same beacon coverage, it can be expected that as the number of sensors increases, the network connectivity will increase, thus more sensors’ locations can be resolved using spring-relaxation, which is reflected in <xref ref-type="table" rid="t3-sensors-10-05171-v2">Table 3</xref>. It can also be observed that the average estimation error of our algorithm decreases when more neighbors present in the cooperative localization, whereas the average estimation error of MLE generally maintains at 170 m. The simulation results suggest that our algorithm outperforms MLE in terms of accuracy in the same network setup.</p></sec></sec>
<sec sec-type="conclusions">
<label>5.</label>
<title>Conclusions</title>
<p>In this paper, we proposed a localization solution consisting of two phases of localization algorithm based on spring-relaxation technique for large-scale distributed wireless sensor networks. We showed that spring-relaxation technique is suitable for multi-hop cooperative localization. Our proposed solution is based on the spring-relaxation technique and thus inherits its implementation simplicity. Moreover, our design requires only a few beacons with known locations to compute the location estimates of all sensors. In our simulation experiments, we demonstrated the overall accuracy of our design and favorable performance over both kNN and MLE approaches.</p></sec></body>
<back>
<ack>
<p>The authors wish to express their gratitude to the anonymous reviewers for their invaluable comments.</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-10-05171-v2"><label>1.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>He</surname><given-names>T.</given-names></name><name><surname>Krishnamurthy</surname><given-names>S.</given-names></name><name><surname>Stankovic</surname><given-names>J.A.</given-names></name><name><surname>Abdelzaher</surname><given-names>T.</given-names></name><name><surname>Luo</surname><given-names>L.</given-names></name><name><surname>Stoleru</surname><given-names>R.</given-names></name><name><surname>Yan</surname><given-names>T.</given-names></name><name><surname>Gu</surname><given-names>L.</given-names></name><name><surname>Hui</surname><given-names>J.</given-names></name><name><surname>Krogh</surname><given-names>B.</given-names></name></person-group><article-title>Energy-efficient surveillance system using wireless sensor networks</article-title><conf-name>Proceedings of the 2nd International Conference on Mobile Systems, Applications, and Services (MobiSys’04)</conf-name><conf-loc>Boston, MA, USA</conf-loc><conf-date>June 6–9, 2004</conf-date><publisher-name>ACM</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>2004</year><fpage>270</fpage><lpage>283</lpage></citation></ref>
<ref id="b2-sensors-10-05171-v2"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname><given-names>Z.</given-names></name><name><surname>Yu</surname><given-names>F.</given-names></name><name><surname>Chen</surname><given-names>L.</given-names></name><name><surname>Cao</surname><given-names>G.</given-names></name></person-group><article-title>CENet: A Cabinet Environmental Sensing Network</article-title><source>Sensors</source><year>2010</year><volume>10</volume><fpage>1021</fpage><lpage>1040</lpage><pub-id pub-id-type="doi">10.3390/s100201021</pub-id><pub-id pub-id-type="pmid">22205856</pub-id></citation></ref>
<ref id="b3-sensors-10-05171-v2"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Falck</surname><given-names>T.</given-names></name><name><surname>Baldus</surname><given-names>H.</given-names></name><name><surname>Espina</surname><given-names>J.</given-names></name><name><surname>Klabunde</surname><given-names>K.</given-names></name></person-group><article-title>Plug ’n play simplicity for wireless medical body sensors</article-title><source>Mob. Netw. Appl</source><year>2007</year><volume>12</volume><fpage>143</fpage><lpage>153</lpage><pub-id pub-id-type="doi">10.1007/s11036-007-0016-2</pub-id></citation></ref>
<ref id="b4-sensors-10-05171-v2"><label>4.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Gauger</surname><given-names>M.</given-names></name><name><surname>Minder</surname><given-names>D.</given-names></name><name><surname>Marrón</surname><given-names>P.J.</given-names></name><name><surname>Wacker</surname><given-names>A.</given-names></name><name><surname>Lachenmann</surname><given-names>A.</given-names></name></person-group><article-title>Prototyping sensor-actuator networks for home automation</article-title><conf-name>Proceedings of the Workshop on Real-world Wireless Sensor Networks (REALWSN ’08)</conf-name><conf-loc>Glasgow, Scotland</conf-loc><conf-date>April 1, 2008</conf-date><publisher-name>ACM</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>2008</year><fpage>56</fpage><lpage>60</lpage></citation></ref>
<ref id="b5-sensors-10-05171-v2"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kawsar</surname><given-names>F.</given-names></name><name><surname>Fujinami</surname><given-names>K.</given-names></name><name><surname>Park</surname><given-names>J.H.</given-names></name><name><surname>Nakajima</surname><given-names>T.</given-names></name><name><surname>Lee</surname><given-names>J.B.</given-names></name><name><surname>Rim</surname><given-names>K.W.</given-names></name></person-group><article-title>A Smart Object centric Indoor Location Model for Future Ubiquitous and Grid Services</article-title><source>J. Internet Technol (SCI-E)</source><year>2009</year><volume>10</volume><fpage>483</fpage><lpage>495</lpage></citation></ref>
<ref id="b6-sensors-10-05171-v2"><label>6.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Yu</surname><given-names>Y.</given-names></name><name><surname>Govindan</surname><given-names>R.</given-names></name><name><surname>Estrin</surname><given-names>D.</given-names></name></person-group><source>Geographical and energy aware routing: a recursive data dissemination protocol for wireless sensor networks</source><comment>Technical Report; UCLA/CSD-TR-01-0023;</comment><publisher-name>UCLA Computer Science Department Technical Report</publisher-name><publisher-loc>Los Angeles, CA, USA</publisher-loc><year>2001</year></citation></ref>
<ref id="b7-sensors-10-05171-v2"><label>7.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Bandyopadhyay</surname><given-names>S.</given-names></name><name><surname>Coyle</surname><given-names>E.J.</given-names></name></person-group><article-title>An Energy Efficient Hierarchical Clustering Algorithm for Wireless Sensor Networks</article-title><conf-name>Proceedings of the 22nd Annual Joint Conference of the IEEE Computer and Communications Societies (INFOCOM’03)</conf-name><publisher-name>Springer-Verlag</publisher-name><publisher-loc>San Franciso, CA, USA</publisher-loc><conf-date>March 2003</conf-date><fpage>1713</fpage><lpage>1723</lpage></citation></ref>
<ref id="b8-sensors-10-05171-v2"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Szu</surname><given-names>H.</given-names></name></person-group><article-title>Geometric Topology for Information Acquisition by Means of Smart Sensor Web</article-title><source>IJIA: Int. J. Inform. Acquis</source><year>2004</year><volume>1</volume><fpage>1</fpage><lpage>22</lpage><pub-id pub-id-type="doi">10.1142/S0219878904000082</pub-id></citation></ref>
<ref id="b9-sensors-10-05171-v2"><label>9.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Estrin</surname><given-names>D.</given-names></name><name><surname>Girod</surname><given-names>L.</given-names></name><name><surname>Pottie</surname><given-names>G.</given-names></name><name><surname>Srivastava</surname><given-names>M.</given-names></name></person-group><article-title>Instrumenting the world with wireless sensor networks</article-title><conf-name>Proceedings of the International Conference on Acoustics, Speech, and Signal Processing (ICASSP’01)</conf-name><conf-loc>Salt Lake City, Utah, USA</conf-loc><conf-date>May 2001</conf-date><volume>4</volume><fpage>2033</fpage><lpage>2036</lpage></citation></ref>
<ref id="b10-sensors-10-05171-v2"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Parkinson</surname><given-names>B.W.</given-names></name></person-group><article-title>The global positioning system (navstar)</article-title><source>J. Geodesy</source><year>1979</year><volume>53</volume><fpage>89</fpage><lpage>108</lpage></citation></ref>
<ref id="b11-sensors-10-05171-v2"><label>11.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Cho</surname><given-names>H.</given-names></name><name><surname>Kang</surname><given-names>M.</given-names></name><name><surname>Park</surname><given-names>J.H.</given-names></name><name><surname>Park</surname><given-names>B.</given-names></name><name><surname>Kim</surname><given-names>H.</given-names></name></person-group><article-title>Performance Analysis of Location Estimation Algorithm in ZigBee Networks Using Received Signal Strength</article-title><conf-name>Proceedings of the 21st International Conference on Advanced Information Networking and Applications Workshops (AINAW’07)</conf-name><publisher-name>IEEE Computer Society</publisher-name><publisher-loc>Washington, DC, USA</publisher-loc><month>September</month><year>2007</year><fpage>302</fpage><lpage>306</lpage></citation></ref>
<ref id="b12-sensors-10-05171-v2"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Patwari</surname><given-names>N.</given-names></name><name><surname>Ash</surname><given-names>J.N.</given-names></name><name><surname>Kyperountas</surname><given-names>S.</given-names></name><name><surname>III</surname><given-names>A.O.H.</given-names></name><name><surname>Moses</surname><given-names>R.L.</given-names></name><name><surname>Correal</surname><given-names>N.S.</given-names></name></person-group><article-title>Locating the nodes: cooperative localization in wireless sensor networks</article-title><source>IEEE Trans. Signal Process</source><year>2005</year><volume>22</volume><fpage>54</fpage><lpage>69</lpage><pub-id pub-id-type="doi">10.1109/MSP.2005.1458287</pub-id></citation></ref>
<ref id="b13-sensors-10-05171-v2"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hussain</surname><given-names>S.</given-names></name><name><surname>Matin</surname><given-names>A.W.</given-names></name><name><surname>Islam</surname><given-names>O.</given-names></name></person-group><article-title>Genetic algorithm for hierarchical wireless sensor networks</article-title><source>J Networks (JNW)</source><year>2007</year><volume>2</volume><fpage>87</fpage><lpage>97</lpage></citation></ref>
<ref id="b14-sensors-10-05171-v2"><label>14.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname><given-names>J.</given-names></name><name><surname>Andrew</surname><given-names>L.L.</given-names></name><name><surname>Foh</surname><given-names>C.H.</given-names></name><name><surname>Zukerman</surname><given-names>M.</given-names></name><name><surname>Chen</surname><given-names>H.H.</given-names></name></person-group><article-title>Connectivity, Coverage and Placement in Wireless Sensor Networks</article-title><source>Sensors</source><year>2009</year><volume>9</volume><fpage>7664</fpage><lpage>7693</lpage><pub-id pub-id-type="doi">10.3390/s91007664</pub-id><pub-id pub-id-type="pmid">22408474</pub-id></citation></ref>
<ref id="b15-sensors-10-05171-v2"><label>15.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Priyantha</surname><given-names>N.</given-names></name><name><surname>Balakrishnan</surname><given-names>H.</given-names></name><name><surname>Demaine</surname><given-names>E.</given-names></name><name><surname>Teller</surname><given-names>S.</given-names></name></person-group><article-title>Anchor-Free Distributed Localization in Sensor Networks</article-title><comment>Technical report 892,</comment><publisher-name>MIT Laboratory for Computer Science</publisher-name><publisher-loc>Cambridge, MA, USA</publisher-loc><year>2003</year></citation></ref>
<ref id="b16-sensors-10-05171-v2"><label>16.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Franceschini</surname><given-names>F.</given-names></name><name><surname>Galetto</surname><given-names>M.</given-names></name><name><surname>Maisano</surname><given-names>D.</given-names></name><name><surname>Mastrogiacomo</surname><given-names>L.</given-names></name></person-group><article-title>A review of localization algorithms for distributed wireless sensor networks in manufacturing</article-title><source>Int. J. Comput. Integr. Manuf</source><year>2009</year><volume>22</volume><fpage>698</fpage><lpage>716</lpage><pub-id pub-id-type="doi">10.1080/09511920601182217</pub-id></citation></ref>
<ref id="b17-sensors-10-05171-v2"><label>17.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Savvides</surname><given-names>A.</given-names></name><name><surname>Srivastava</surname><given-names>M.</given-names></name><name><surname>Girod</surname><given-names>L.</given-names></name><name><surname>Estrin</surname><given-names>D.</given-names></name></person-group><article-title>Localization in Sensor Networks</article-title><source>Wireless Sensor Networks</source><publisher-name>Springer</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>2004</year><fpage>327</fpage><lpage>349</lpage></citation></ref>
<ref id="b18-sensors-10-05171-v2"><label>18.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Rappaport</surname><given-names>T.S.</given-names></name></person-group><source>Wireless Communications: Principles and Practice</source><edition>2 ed</edition><publisher-name>Prentice Hall PTR</publisher-name><publisher-loc>Saddle River, NJ, USA</publisher-loc><year>2002</year></citation></ref>
<ref id="b19-sensors-10-05171-v2"><label>19.</label><citation citation-type="web"><person-group person-group-type="author"><collab>ZigBee Alliance</collab></person-group><source>ZigBee Specifications</source><comment>version 1.0 r13, 2006; Available online: <ext-link xlink:href="http://www.zigbee.org" ext-link-type="uri">http://www.zigbee.org</ext-link> (accessed on 15 July 2008).</comment></citation></ref>
<ref id="b20-sensors-10-05171-v2"><label>20.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Howard</surname><given-names>A.</given-names></name><name><surname>Mataric</surname><given-names>M.</given-names></name><name><surname>Sukhatme</surname><given-names>G.</given-names></name></person-group><article-title>Relaxation on a mesh: A formalism for generalized localization</article-title><conf-name>Proceedings of International Conference on Intelligent Robots and Systems (IROS)</conf-name><conf-loc>Maui, HI, USA</conf-loc><conf-date>29 Octobre – 3 Novembre</conf-date><year>2001</year><fpage>375</fpage><lpage>380</lpage></citation></ref>
<ref id="b21-sensors-10-05171-v2"><label>21.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Dabek</surname><given-names>F.</given-names></name><name><surname>Cox</surname><given-names>R.</given-names></name><name><surname>Kaashoek</surname><given-names>F.</given-names></name><name><surname>Morris</surname><given-names>R.</given-names></name></person-group><article-title>Vivaldi: a decentralized network coordinate system</article-title><source>SIGCOMM Comput. Commun. Rev</source><year>2004</year><volume>34</volume><fpage>15</fpage><lpage>26</lpage></citation></ref>
<ref id="b22-sensors-10-05171-v2"><label>22.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Bose</surname><given-names>A.</given-names></name><name><surname>Foh</surname><given-names>C.H.</given-names></name></person-group><article-title>A practical path loss model for indoor WiFi positioning enhancement</article-title><conf-name>Proceedings of the 6th International Conference on Information, Communications and Signal Processing (ICICS’07)</conf-name><conf-loc>Singapore</conf-loc><conf-date>December 2007</conf-date><fpage>1</fpage><lpage>5</lpage></citation></ref>
<ref id="b23-sensors-10-05171-v2"><label>23.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Bahl</surname><given-names>P.</given-names></name><name><surname>Padmanabhan</surname><given-names>V.N.</given-names></name></person-group><article-title>RADAR: an in-building RF-based user location and tracking system</article-title><conf-name>Proceedings of the 19th Annual Joint Conference of the IEEE Computer and Communications Societies (INFOCOM’00 )</conf-name><conf-loc>Tel Aviv, Israel</conf-loc><conf-date>March 2000</conf-date><volume>2</volume><fpage>775</fpage><lpage>784</lpage></citation></ref>
<ref id="b24-sensors-10-05171-v2"><label>24.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Patwari</surname><given-names>N.</given-names></name><name><surname>III</surname><given-names>A.O.H.</given-names></name><name><surname>Perkins</surname><given-names>M.</given-names></name><name><surname>Correal</surname><given-names>N.S.</given-names></name><name><surname>O’Dea</surname><given-names>R.J.</given-names></name></person-group><article-title>Relative Location Estimation in Wireless Sensor Networks</article-title><source>IEEE Trans. Signal Process</source><year>2003</year><volume>51</volume><fpage>2137</fpage><lpage>2148</lpage><pub-id pub-id-type="doi">10.1109/TSP.2003.814469</pub-id></citation></ref>
<ref id="b25-sensors-10-05171-v2"><label>25.</label><citation citation-type="other"><comment>Wireless Sensor Network Localization Measurement Repository.</comment></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-sensors-10-05171-v2" position="float">
<label>Figure 1.</label>
<caption>
<p>The simple example of five beacons and a sensor.</p></caption>
<graphic xlink:href="sensors-10-05171-v2f1.gif"/></fig>
<fig id="f2-sensors-10-05171-v2" position="float">
<label>Figure 2.</label>
<caption>
<p>The plot of <italic>F</italic><sub><italic>x</italic><sub><italic>i</italic></sub></sub>(<italic>x</italic>) for <xref ref-type="disp-formula" rid="FD4">Equations (4)</xref> and <xref ref-type="disp-formula" rid="FD5">(5)</xref> with <italic>x<sub>i</sub></italic> = 1 and different <italic>y<sub>i</sub></italic> values.</p></caption>
<graphic xlink:href="sensors-10-05171-v2f2.gif"/></fig>
<fig id="f3-sensors-10-05171-v2" position="float">
<label>Figure 3.</label>
<caption>
<p>A scenario for a beacon node and two sensor nodes.</p></caption>
<graphic xlink:href="sensors-10-05171-v2f3.gif"/></fig>
<fig id="f4-sensors-10-05171-v2" position="float">
<label>Figure 4.</label>
<caption>
<p>The estimation error with different <italic>τ</italic><sub>1</sub> and <italic>δ</italic><sub>1</sub>.</p></caption>
<graphic xlink:href="sensors-10-05171-v2f4.gif"/></fig>
<fig id="f5-sensors-10-05171-v2" position="float">
<label>Figure 5.</label>
<caption>
<p>The convergence speed with different <italic>τ</italic><sub>1</sub> and <italic>δ</italic><sub>1</sub>.</p></caption>
<graphic xlink:href="sensors-10-05171-v2f5.gif"/></fig>
<fig id="f6-sensors-10-05171-v2" position="float">
<label>Figure 6.</label>
<caption>
<p>The evolution of location estimation error for the observed sensor with different <italic>τ</italic><sub>2</sub> and <italic>δ</italic><sub>2</sub>.</p></caption>
<graphic xlink:href="sensors-10-05171-v2f6.gif"/></fig>
<fig id="f7-sensors-10-05171-v2" position="float">
<label>Figure 7.</label>
<caption>
<p>CDF of the location estimation error from two phases.</p></caption>
<graphic xlink:href="sensors-10-05171-v2f7.gif"/></fig>
<fig id="f8-sensors-10-05171-v2" position="float">
<label>Figure 8.</label>
<caption>
<p>The estimated locations from two phases comparing to the true locations. (a) phase 1 estimated locations; (b) phase 2 estimated locations.</p></caption>
<graphic xlink:href="sensors-10-05171-v2f8.gif"/></fig>
<fig id="f9-sensors-10-05171-v2" position="float">
<label>Figure 9.</label>
<caption>
<p>Location estimation produced by our algorithm versus KNN and MLE. (a) our estimated locations; (b) KNN estimated locations; (c) MLE estimated locations.</p></caption>
<graphic xlink:href="sensors-10-05171-v2f9.gif"/></fig>
<table-wrap id="t1-sensors-10-05171-v2" position="float">
<label>Table 1.</label>
<caption>
<p>The variables involved in <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref>.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle">Variable</th>
<th align="center" valign="middle">Definition</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top"><italic>d</italic></td>
<td align="center" valign="top">estimated distance between the transmitter and the receiver [m]</td></tr>
<tr>
<td align="center" valign="top"><italic>P<sub>TX</sub></italic></td>
<td align="center" valign="top">transmitted power level [dBm]</td></tr>
<tr>
<td align="center" valign="top"><italic>P<sub>RX</sub></italic></td>
<td align="center" valign="top">received power level [dBm]</td></tr>
<tr>
<td align="center" valign="top"><italic>G<sub>TX</sub></italic></td>
<td align="center" valign="top">antenna gain of the transmitter [dBi]</td></tr>
<tr>
<td align="center" valign="top"><italic>G<sub>RX</sub></italic></td>
<td align="center" valign="top">antenna gain of the receiver [dBi]</td></tr>
<tr>
<td align="center" valign="top">λ</td>
<td align="center" valign="top">signal wavelength [m]</td></tr>
<tr>
<td align="center" valign="top"><italic>n</italic></td>
<td align="center" valign="top">path loss exponent</td></tr>
<tr>
<td align="center" valign="top"><italic>X<sub>α</sub></italic></td>
<td align="center" valign="top">Gaussian random variable with a standard deviation of <italic>α</italic></td></tr></tbody></table></table-wrap>
<table-wrap id="t2-sensors-10-05171-v2" position="float">
<label>Table 2.</label>
<caption>
<p>The accuracy performance of the kNN approach with various number of sampling points equally spread on a 100 m by 100 m map.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle">The number of survey points</th>
<th align="center" valign="middle">Average accuracy (m)</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">5 by 5</td>
<td align="center" valign="top">24.88</td></tr>
<tr>
<td align="center" valign="top">10 by 10</td>
<td align="center" valign="top">22.15</td></tr>
<tr>
<td align="center" valign="top">20 by 20</td>
<td align="center" valign="top">18.90</td></tr>
<tr>
<td align="center" valign="top">40 by 40</td>
<td align="center" valign="top">17.73</td></tr>
<tr>
<td align="center" valign="top">80 by 80</td>
<td align="center" valign="top">16.11</td></tr>
<tr>
<td align="center" valign="top">160 by 160</td>
<td align="center" valign="top">15.81</td></tr>
<tr>
<td align="center" valign="top">500 by 500</td>
<td align="center" valign="top">15.31</td></tr></tbody></table></table-wrap>
<table-wrap id="t3-sensors-10-05171-v2" position="float">
<label>Table 3.</label>
<caption>
<p>Sensor deployment parameters and accuracy performance of the proposed algorithm versus MLE on a 350 m by 350 m square map.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle">Ns</th>
<th align="center" valign="middle">Connectivity</th>
<th align="center" valign="middle">Unsolved (%)</th>
<th align="center" valign="middle">Mean error (m)</th>
<th align="center" valign="middle">Mean error of MLE (m)</th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">100</td>
<td align="center" valign="top">4.13</td>
<td align="center" valign="top">13%</td>
<td align="center" valign="top">42.4</td>
<td align="center" valign="top">172.72</td></tr>
<tr>
<td align="center" valign="top">200</td>
<td align="center" valign="top">5.56</td>
<td align="center" valign="top">5%</td>
<td align="center" valign="top">26.02</td>
<td align="center" valign="top">176.93</td></tr>
<tr>
<td align="center" valign="top">300</td>
<td align="center" valign="top">6.06</td>
<td align="center" valign="top">2.33%</td>
<td align="center" valign="top">24.72</td>
<td align="center" valign="top">160.86</td></tr>
<tr>
<td align="center" valign="top">400</td>
<td align="center" valign="top">7.03</td>
<td align="center" valign="top">0.6%</td>
<td align="center" valign="top">23.94</td>
<td align="center" valign="top">171.24</td></tr>
<tr>
<td align="center" valign="top">500</td>
<td align="center" valign="top">7.99</td>
<td align="center" valign="top">0.5%</td>
<td align="center" valign="top">23.12</td>
<td align="center" valign="top">174.31</td></tr>
<tr>
<td align="center" valign="top">600</td>
<td align="center" valign="top">8.82</td>
<td align="center" valign="top">0.33%</td>
<td align="center" valign="top">22.63</td>
<td align="center" valign="top">161.91</td></tr></tbody></table></table-wrap></sec></back></article>
