<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s90402760</article-id>
<article-id pub-id-type="publisher-id">sensors-09-02760</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Adapting Mobile Beacon-Assisted Localization in Wireless Sensor Networks</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Teng</surname><given-names>Guodong</given-names></name><xref ref-type="corresp" rid="c1-sensors-09-02760"><sup>*</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Zheng</surname><given-names>Kougen</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Dong</surname><given-names>Wei</given-names></name></contrib>
<aff id="af1-sensors-09-02760">College of Computer Science, Zhejiang University, Hangzhou 310027, P.R. China; E-Mails: <email>zkg@zju.edu.cn</email>; <email>dongw@zju.edu.cn</email></aff></contrib-group>
<author-notes>
<corresp id="c1-sensors-09-02760">
<label>*</label>Author to whom correspondence should be addressed. E-Mail: <email>teng@zju.edu.cn</email></corresp></author-notes>
<pub-date pub-type="collection">
<year>2009</year></pub-date>
<pub-date pub-type="epub">
<day>20</day>
<month>4</month>
<year>2009</year></pub-date>
<volume>9</volume>
<issue>4</issue>
<fpage>2760</fpage>
<lpage>2779</lpage>
<history>
<date date-type="received">
<day>26</day>
<month>3</month>
<year>2009</year></date>
<date date-type="rev-recd">
<day>14</day>
<month>4</month>
<year>2009</year></date>
<date date-type="accepted">
<day>16</day>
<month>4</month>
<year>2009</year></date></history>
<permissions>
<copyright-statement>© 2009 by the authors; licensee MDPI, Basel, Switzerland</copyright-statement>
<copyright-year>2009</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>The ability to automatically locate sensor nodes is essential in many Wireless Sensor Network (WSN) applications. To reduce the number of beacons, many mobile-assisted approaches have been proposed. Current mobile-assisted approaches for localization require special hardware or belong to centralized localization algorithms involving some deterministic approaches due to the fact that they explicitly consider the impreciseness of location estimates. In this paper, we first propose a range-free, distributed and probabilistic Mobile Beacon-assisted Localization (MBL) approach for static WSNs. Then, we propose another approach based on MBL, called Adapting MBL (A-MBL), to increase the efficiency and accuracy of MBL by adapting the size of sample sets and the parameter of the dynamic model during the estimation process. Evaluation results show that the accuracy of MBL and A-MBL outperform both Mobile and Static sensor network Localization (MSL) and Arrival and Departure Overlap (ADO) when both of them use only a single mobile beacon for localization in static WSNs.</p></abstract>
<kwd-group>
<kwd>Wireless Sensor Networks (WSNs)</kwd>
<kwd>Localization</kwd>
<kwd>Mobile Beacon-assisted Localization (MBL)</kwd>
<kwd>Adapting Mobile Beacon-assisted Localization (A-MBL)</kwd>
<kwd>Particle filter</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Wireless Sensor Networks (WSNs) are composed of large numbers of tiny sensor devices with wireless communication capabilities. WSN systems have been developed recently for numerous applications such as military surveillance [<xref ref-type="bibr" rid="b1-sensors-09-02760">1</xref>], environmental monitoring [<xref ref-type="bibr" rid="b2-sensors-09-02760">2</xref>,<xref ref-type="bibr" rid="b3-sensors-09-02760">3</xref>], target tracking [<xref ref-type="bibr" rid="b4-sensors-09-02760">4</xref>,<xref ref-type="bibr" rid="b5-sensors-09-02760">5</xref>], habitat monitoring [<xref ref-type="bibr" rid="b6-sensors-09-02760">6</xref>] and structural monitoring [<xref ref-type="bibr" rid="b7-sensors-09-02760">7</xref>], etc. Because many of them require sensor position information, <italic>localization</italic> has been an important problem in WSNs [<xref ref-type="bibr" rid="b8-sensors-09-02760">8</xref>] and several localization systems and algorithms have been proposed in the past. The large body of solutions for the sensor node localization problem can be categorized based on whether the localization techniques are <italic>Range-based</italic> or <italic>Range-free</italic>, whether the localization algorithms are <italic>Centralized</italic> or <italic>Distributed</italic>, and whether localization results are <italic>Deterministic</italic> or <italic>Probabilistic</italic>.</p>
<p>In most existing WSNs, sensors are static [<xref ref-type="bibr" rid="b9-sensors-09-02760">9</xref>]. The localization of these <italic>static WSNs</italic> relies on several beacons which know their locations scattered throughout the sensor networks and the precision of the localization increases with the number of beacons. The main problem with an increased number of beacons is that they are more expensive than the rest of the sensor nodes, and after these sensor nodes have been localized, the beacons become useless. The leads us to believe that a single mobile beacon which can travel the entire deployment region based on some traverse route can be used to help localize the entire network. Using a single mobile beacon that knows its position is broadly equivalent to using many static beacons each broadcasting once.</p>
<p>In this paper, we propose two mobile beacon-assisted localization approaches, <italic>Mobile Beacon-assisted Localization</italic> (MBL) and Adapting MBL (A-MBL) for static WSNs. Compared to some proposed mobile-assisted approaches [<xref ref-type="bibr" rid="b10-sensors-09-02760">10</xref>–<xref ref-type="bibr" rid="b12-sensors-09-02760">12</xref>], MBL and A-MBL do not require any specially designed hardware due to the range-free technique employed. Compared to the algorithm requiring the gathering of connectivity data (range or proximity) from the network to a more computationally powerful device [<xref ref-type="bibr" rid="b13-sensors-09-02760">13</xref>], MBL and A-MBL focus on distributed algorithms. As the approaches described in [<xref ref-type="bibr" rid="b14-sensors-09-02760">14</xref>,<xref ref-type="bibr" rid="b12-sensors-09-02760">12</xref>], MBL and A-MBL adopt probabilistic methods which give an area where a sensor might reside, along with the likelihood of such an estimate. Like the Arrival and Departure Overlap (ADO) approach [<xref ref-type="bibr" rid="b15-sensors-09-02760">15</xref>], MBL and A-MBL rely on direct Arriver and Leaver information from a single mobile-assisted beacon. Especially, inspired by ideas from [<xref ref-type="bibr" rid="b16-sensors-09-02760">16</xref>,<xref ref-type="bibr" rid="b17-sensors-09-02760">17</xref>], we adopt an adapting mechanism to improve the efficiency and accuracy of MBL.</p>
<p>This paper offers the following two major contributions:
<list list-type="bullet">
<list-item>
<p>We propose a range-free, distributed and probabilistic MBL approach. This approach outperforms both Mobile and Static sensor network Localization (MSL) and ADO when both of them use only a single mobile beacon for localization in static WSNs.</p></list-item>
<list-item>
<p>We propose another approach based on MBL, called A-MBL, to increase the efficiency and accuracy of MBL by adapting the size of sample sets and the parameter of the dynamic model during the estimation process.</p></list-item></list></p>
<p>The rest of this paper is organized as follows: Section 2 defines mobile beacon-assisted localization problem from Bayesian filter and particle filter perspective. Section 3 presents details of the proposed MBL and A-MBL algorithms. Section 4 shows and discusses our evaluation results. Section 5 gives an overview of related works. Finally, Section 6 concludes our work.</p></sec>
<sec>
<label>2.</label>
<title>Description of the Problem</title>
<sec>
<label>2.1.</label>
<title>Mobile Beacon-assisted Localization Problem</title>
<p>Let us consider a sensor network with <italic>M</italic> static sensor nodes in a 2D plane which do not have <italic>a priori</italic> known locations (called <italic>unknown nodes</italic>) and a single mobile node (called <italic>beacon</italic>), equipped with localization hardware, e.g., GPS, which allows it to know its location at all times. After random deployment of the unknown nodes in a fixed-size area, the beacon traverses the sensor network while broadcasting packets which contain the coordinates of itself and other information. Any unknown node receiving these packets from the beacon (called <italic>observation</italic>) can recognize that it is in the area around the beacon’s current location with a certain probability. With each observation in a series of different time, the unknown node’s location is bounded in the beacon’s transmission area. The accuracy can be improved when the unknown node obtains more observations from the beacon. Location estimates and observations are assumed to be available at discrete times. For dynamic state estimation, the discrete-time approach is widespread and convenient [<xref ref-type="bibr" rid="b18-sensors-09-02760">18</xref>].</p></sec>
<sec>
<label>2.2.</label>
<title>Problem Description with Bayesian Filter</title>
<p>If we solve the above-mentioned localization problem with a probabilistic approach, we are interested in estimating the unknown node’s <italic>real location R</italic> at the current time-step <italic>t</italic>, given knowledge about the initial location estimate and all observations <italic>O</italic><sub>1:<italic>t</italic></sub> = {<italic>O</italic><sub>1</sub>,…,<italic>O<sub>t</sub></italic>} up to the current time <italic>t</italic>. This localization problem is an instance of the <italic>Bayesian filtering</italic> problem which requires the estimation of the state of a system that changes over time using a sequence of noisy measurements made on the system [<xref ref-type="bibr" rid="b18-sensors-09-02760">18</xref>], where we are interested in constructing the posterior density <italic>p</italic>(<italic>l<sub>t</sub></italic>| <italic>O</italic><sub>1:<italic>t</italic></sub>) of the current location estimate <italic>l<sub>t</sub></italic> conditioned on all observations <italic>o</italic><sub>1: <italic>t</italic></sub> from the beacon. To define this localization problem from a Bayesian filter perspective, we assume that we have an <italic>initial distribution</italic>, a <italic>dynamic model</italic> and an <italic>observation model</italic>:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mi>o</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>f</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mtext>for</mml:mtext>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>≥</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>g</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mtext>for</mml:mtext>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>≥</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>By <xref ref-type="disp-formula" rid="FD2">Equation (2)</xref> and <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref> we mean that <italic>l<sub>t</sub></italic> and <italic>o<sub>t</sub></italic> are assumed to be generated by functions <italic>f</italic>(<italic>·</italic>) and <italic>g</italic>(<italic>·</italic>), respectively. The precise form of the functions implies via a change of variables the transition probability density <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>l</italic><sub>0:<italic>t</italic></sub>, <italic>o</italic><sub>1:<italic>t</italic>−1</sub>) and the observation probability density <italic>p</italic>(<italic>o<sub>t</sub></italic>|<italic>l</italic><sub>0:<italic>t</italic></sub>, <italic>o</italic><sub>1:<italic>t</italic>−1</sub>). We denote by <italic>l</italic><sub>0:<italic>t</italic></sub> = {<italic>l</italic><sub>0</sub>,…,<italic>l<sub>t</sub></italic>}, the location estimate up to time <italic>t</italic>. Note that we could assume Markov transitions and conditional independence to simplify the model due to the constraints in computing and memory power of the sensor node, i.e. current location estimate <italic>l<sub>t</sub></italic> is only dependent on the previous location estimate <italic>l</italic><sub><italic>t</italic>−1</sub> and the current observation <italic>o<sub>t</sub></italic> is only dependent on the current location estimate <italic>l<sub>t</sub></italic>, then the dynamic model <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>l</italic><sub>0:<italic>t</italic>−1</sub><italic>, o</italic><sub>1:<italic>t</italic>−1</sub>) = <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>l</italic><sub><italic>t</italic>−1</sub>) and the observation model <italic>p</italic>(<italic>o<sub>t</sub></italic>|<italic>l</italic><sub>0:<italic>t</italic></sub>, <italic>o</italic><sub>1:<italic>t</italic>−1</sub>) = <italic>p</italic>(<italic>o<sub>t</sub></italic>|<italic>l<sub>t</sub></italic>). The posterior density <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>o</italic><sub>1:<italic>t</italic></sub>) = <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>o<sub>t</sub></italic>) may be obtained after <italic>initialization</italic>, recursively, in two stages: a <italic>prediction</italic> stage and an <italic>update</italic> stage.</p>
<p><bold>Initialization</bold>: It is assumed that the initial <italic>p</italic>(<italic>l</italic><sub>0</sub>|<italic>o</italic><sub>0</sub>) ≡ <italic>p</italic>(<italic>l<sub>o</sub></italic>) of the location estimate, which is also known as the prior density, is available (<italic>o</italic><sub>0</sub> being the set of no observations).</p>
<p><bold>Prediction</bold>: Suppose that the posterior density <italic>p</italic>(<italic>l<sub>t</sub></italic><sub>−1</sub>|<italic>o</italic><sub><italic>t</italic>−1</sub>) at time <italic>t</italic>−1 is available. The prediction stage involves using a dynamic model <xref ref-type="disp-formula" rid="FD2">Equation (2)</xref> to obtain the prior density <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>o</italic><sub><italic>t</italic>−1</sub>) of the location estimate at time <italic>t</italic> via the Chapman-Kolmogorov equation:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>∫</mml:mo>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">dl</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mrow>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><bold>Update</bold>: At time step <italic>t</italic>, an observation <italic>o<sub>t</sub></italic> becomes available, and this may be used to update the prior density via Bayes’ rule:
<disp-formula id="FD5">
<label>(5)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>where the normalizing constant
<disp-formula id="FD6">
<label>(6)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>∫</mml:mo>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">dl</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>depends on the likelihood function <italic>p</italic>(<italic>o<sub>t</sub></italic>|<italic>l<sub>t</sub></italic>) defined by the observation model <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref>. In the update stage <xref ref-type="disp-formula" rid="FD5">Equation (5)</xref>, the observation <italic>o<sub>t</sub></italic> is used to modify the prior density to obtain the required posterior density of the current location estimate.</p></sec>
<sec>
<label>2.3.</label>
<title>Problem Description with Particle Filter</title>
<p>To address the complexity of the integration step in Bayesian filter, many optimal or suboptimal approaches are proposed. The recurrence relations <xref ref-type="disp-formula" rid="FD4">Equation (4)</xref> and <xref ref-type="disp-formula" rid="FD5">Equation (5)</xref> form the basic for the optimal or suboptimal Bayesian solution. Solutions do exist in a restrictive set of cases [<xref ref-type="bibr" rid="b18-sensors-09-02760">18</xref>], including the <italic>Kalman filter</italic> (optimal Bayesian filter) and <italic>particle filter</italic> (suboptimal Bayesian filter) which approximates the optimal Bayesian solution, etc.</p>
<p>The Kalman filter assumes that the posterior density at every time step is Gaussian and, hence, parameterized by a mean and covariance, provided that certain assumptions hold: <italic>f</italic>(<italic>·</italic>) and g(·) in the dynamic model and the observation model are known and also are a linear function. In many situation of interest, such as mobile beacon-assisted localization problem in our scenarios, the assumptions made above do not hold. The Kalman filter cannot, therefore, be used as described – approximations are necessary.</p>
<p>The particle filter solutions offer a number of significant advantages compared with other techniques currently available, including the Kalman filter. These advantages arise principally from the generality of the approach, which allows inference of full posterior distributions in general state-space models, which may be both nonlinear and non-Gaussian.</p>
<p>Thus, in this paper, we use a particle filter (also called <italic>sequential Monte Carlo method</italic>) to perform a Bayesian filter on a sample representation. The key idea is to represent the required posterior density by a set of random samples with associated weights and to compute estimates based on these samples and weights [<xref ref-type="bibr" rid="b18-sensors-09-02760">18</xref>]. As the number of samples becomes very large, this characterization of particle filter becomes an equivalent representation to the usual functional description of the posterior density, and the particle filter approaches the suboptimal Bayesian estimate.</p>
<p>In order to develop the details of the algorithm, let 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mo>&lt;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>&gt;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>...</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula> denotes a <italic>random measure</italic> that characterizes the posterior density <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>o<sub>t</sub></italic>), where
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msub>
<mml:mi>L</mml:mi>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>...</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>, is a set of support <italic>samples</italic> (or called <italic>particles</italic>) with associated <italic>weights</italic> 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msub>
<mml:mi>W</mml:mi>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>...</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula>. The weights are normalized such that
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<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:msubsup>
<mml:mi> </mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:math></inline-formula>. Then, the posterior density at <italic>t</italic> can be approximated as:
<disp-formula id="FD7">
<label>(7)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<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:mi> </mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mi>δ</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula>where <italic>δ</italic>(·) is Dirac delta function
<disp-formula id="FD8">
<label>(8)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">otherwise</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>samples <italic>l<sup>i</sup></italic> are easily generated from a <italic>proposal density</italic> (or called <italic>importance density</italic>) <italic>q</italic>(<italic>·</italic>):
<disp-formula id="FD9">
<label>(9)</label>
<mml:math display="block">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msup>
<mml:mo>∼</mml:mo>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula>where the symbol ∼ denotes sample generated sign, i.e., the samples on the left side are generated from the probability density on the right side. Weights are defined by:
<disp-formula id="FD10">
<label>(10)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>∝</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula>where the symbol ∝ is used to denote proportionality up to a normalization constant.</p>
<p>The proposal density is chosen to factorize such that:
<disp-formula id="FD11">
<label>(11)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>To derive the weight update equation, <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>o<sub>t</sub></italic>) from <xref ref-type="disp-formula" rid="FD5">Equation (5)</xref> is expressed via Bayes’ rule:
<disp-formula id="FD12">
<label>(12)</label>
<mml:math display="block">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mtd>
<mml:mtd>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mo>∝</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mo>∝</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The weight update equation can then be shown to be (the proposal density is chosen to be dynamic model <xref ref-type="disp-formula" rid="FD2">Equation (2)</xref>, i.e.
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>):
<disp-formula id="FD13">
<label>(13)</label>
<mml:math display="block">
<mml:mtable columnalign="left">
<mml:mtr>
<mml:mtd>
<mml:msubsup>
<mml:mi>w</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup></mml:mtd>
<mml:mtd>
<mml:mo>∝</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mo>∝</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mo>∝</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>q</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mrow>
<mml:mo>∝</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>The generic particle filter proceeds for localization are as follows:
<list list-type="simple">
<list-item>
<p><bold>Initialization</bold>: <italic>N</italic> samples and weights are chosen from the initial distribution <xref ref-type="disp-formula" rid="FD14">Equation (14)</xref> and the initial observation <xref ref-type="disp-formula" rid="FD15">Equation (15)</xref>, respectively.
<disp-formula id="FD14">
<label>(14)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>∼</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mi>o</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD15">
<label>(15)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>o</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p></list-item>
<list-item>
<p><bold>Prediction</bold>: It starts from the set of samples 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>...</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula> computed in the previous iteration, and applies the dynamic model to each sample 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> by sampling from the density <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>l<sub>t</sub></italic><sub>−1</sub>), i.e. for each particle 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> draw one sample 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> from <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>l<sub>t</sub></italic><sub>−1</sub>) by:
<disp-formula id="FD16">
<label>(16)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>∼</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p></list-item>
<list-item>
<p><bold>Update</bold>: It takes into account the observation <italic>o<sub>t</sub></italic>. Each weight 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> of the sample in 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>...</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula> is obtained by the importance weight <xref ref-type="disp-formula" rid="FD13">Equation (13)</xref>, i.e. the likelihood of 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>...</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:math></inline-formula> given <italic>o<sub>t</sub></italic>.</p></list-item></list></p></sec></sec>
<sec>
<label>3.</label>
<title>Mobile Beacon-Assisted Localization</title>
<sec>
<label>3.1.</label>
<title>MBL</title>
<p><bold>Assumption</bold>: We assume that all unknown nodes are randomly deployed in an area of size <italic>S</italic> and each sensor (unknown node or beacon) has the same ideal radio range <italic>r</italic>. The algorithm does not assume very tightly synchronized clocks. The beacon is capable of moving a distance <italic>v<sub>b</sub></italic> in a time step in any direction where 0 ≤ <italic>v<sub>b</sub></italic> ≤ <italic>v<sub>max</sub></italic>. The beacon knows <italic>v<sub>max</sub></italic>, but it does not know the value of <italic>v<sub>b</sub></italic> or the direction of movement in any time step. At time <italic>t</italic>, every unknown node within the radio range of the beacon will hear a location announcement from that beacon. In a realistic deployment, it would be necessary to deal with network collisions and account for missed messages [<xref ref-type="bibr" rid="b19-sensors-09-02760">19</xref>].</p>
<p><bold>Initialization</bold>: In this stage, all unknown nodes have no information about their locations. The initial set of samples <xref ref-type="disp-formula" rid="FD17">Equation (17)</xref> for each unknown node is chosen randomly from the whole deployed area and represented by a set of uniformly distributed samples with equal weights <xref ref-type="disp-formula" rid="FD18">Equation (18)</xref>. The weight equal to one represents the importance of corresponding sample, which infers one of the location estimates of the unknown node. The beacon’s current initial position <xref ref-type="disp-formula" rid="FD19">Equation (19)</xref> is also chosen randomly from the whole deployment area. The beacon’s previous initial position (for further use) is chosen randomly from out of the deployment area and out of the radio range of any unknown node <xref ref-type="disp-formula" rid="FD20">Equation (20)</xref>:
<disp-formula id="FD17">
<label>(17)</label>
<mml:math display="block">
<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:mo stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>∼</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>S</mml:mi></mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD18">
<label>(18)</label>
<mml:math display="block">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mn>1</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD19">
<label>(19)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>∼</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>S</mml:mi></mml:mfrac>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD20">
<label>(20)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>∼</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mover accent="true">
<mml:mi>S</mml:mi>
<mml:mo>¯</mml:mo></mml:mover></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>∧</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>&gt;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>where <italic>L<sub>0</sub></italic> denotes the initial set of each sample, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mn>0</mml:mn>
<mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> denotes the initial weight of each sample, <italic>beacon<sub>c</sub></italic> denotes the beacon’s current location, <italic>d(beacon<sub>p</sub>,R)</italic> denotes the distance between locations <italic>beacon<sub>p</sub></italic> and <italic>R</italic>, <italic>R</italic> denotes the unknown node’s real location, <italic>S̄</italic> denotes the area out of the deployment area, and <italic>beacon<sub>p</sub></italic> represents the beacon’s previous location.</p>
<p><bold>Prediction</bold>: In this stage, we adopt a dynamic model that the unknown node is capable of moving a distance <italic>v<sub>node</sub></italic> in a time step in any direction where 0 ≤ <italic>v<sub>node</sub></italic> ≤ <italic>α</italic>. The unknown node knows <italic>v<sub>node</sub></italic>, but it does not know the value of <italic>v<sub>node</sub></italic> or the direction of movement in any time step. Then, the unknown node generates new samples as follows:
<disp-formula id="FD21">
<label>(21)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo> </mml:mo>
<mml:mtext>is selected from</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:mtext>where</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>∈</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>for all</mml:mtext>
<mml:mo> </mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi mathvariant="normal">i</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mrow>
<mml:mi mathvariant="normal">N</mml:mi>
<mml:mo stretchy="false">}</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where <italic>P<sub>t</sub></italic> represents approximation of prior density at time <italic>t</italic> after prediction stage, <italic>L</italic><sub><italic>t</italic>−<italic>1</italic></sub> represents approximation of posterior density at time <italic>t</italic>−<italic>1</italic>, and the transition equation for each sample described as follows:
<disp-formula id="FD22">
<label>(22)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mrow>
<mml:mi>π</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>α</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">filter</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">TRUE</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mn>0</mml:mn>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">filter</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">FALSE</mml:mi>
<mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>The parameter <italic>α</italic> is needed for unknown nodes to provide enough variability in choosing new samples, i.e., the parameter <italic>α</italic> is used to limit a sample <italic>impoverishment</italic> phenomenon. Every time step, the beacon randomly moves a distance <italic>v<sub>b</sub></italic> in any direction from the previous location. A new sample is generated from each current sample by randomly choosing a point within a circle centered at the current location of the sample and the radius <italic>α</italic> when the <italic>filter(R)</italic> equal to <italic>TRUE</italic>, where <italic>filter(R)</italic> represents the filter condition of real location <italic>R</italic> of the unknown node. The details of condition <italic>filter(R)</italic> will be described in next stage (update stage). In general, the smaller the parameter a, the higher the accuracy of localization is obtained, but the longer time the stable phase of localization process is achieved. The appropriate value <italic>α</italic> is a tradeoff between the high precision of localization and the short period of localization time. Here, the appropriate value <italic>α</italic> could be determined empirically, such as <italic>α=</italic>0.1<italic>r</italic>.</p>
<p><bold>Update</bold>: In this stage, the unknown node filters the impossible samples based on new observations. The unknown node updates samples as follows:
<disp-formula id="FD23">
<label>(23)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>U</mml:mi>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">{</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo> </mml:mo>
<mml:mtext>where</mml:mtext>
<mml:mo> </mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>∈</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>and</mml:mtext>
<mml:mo> </mml:mo>
<mml:mi>w</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">}</mml:mo></mml:mrow></mml:math></disp-formula>where <italic>U<sub>t</sub></italic> represents approximation of posterior density at time <italic>t</italic> after the update stage, and the weight 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> will be obtained by 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<p>In order to state the description of observation
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mrow/></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, we define four states for every unknown node during the localization process.</p>
<p><italic>Outsider</italic>: The unknown node is out of the radio range of the beacon, i.e.,
<disp-formula id="FD24">
<label>(24)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>&gt;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><italic>Insider</italic>: The unknown node is within the radio range of the beacon, i.e.,
<disp-formula id="FD25">
<label>(25)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><italic>Arriver</italic>: The unknown node receives the current location announcement of the beacon, but did not receive the location announcement from the beacon’s previous location, i.e.,
<disp-formula id="FD26">
<label>(26)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>∧</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>&gt;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p><italic>Leaver</italic>: The unknown node received the preceding location announcement from the beacon, but does not receive the location announcement from the beacon’s current location, i.e.,
<disp-formula id="FD27">
<label>(27)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>&gt;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>∧</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>In this paper, we only rely on observations from the beacon. This has two advantages. First, the number of unknown nodes will not affect the accuracy of localization. Second, the computation and communication costs drop drastically, since nodes are no longer involved in the localization of other nodes [<xref ref-type="bibr" rid="b9-sensors-09-02760">9</xref>]. There are two possible ways to gather observations from the beacon:
<list list-type="order">
<list-item>
<p>Once the unknown node is in Insider state, it gathers this observation, i.e. the filter condition of the real location <italic>R</italic> for any unknown node is:
<disp-formula id="FD28">
<label>(28)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">filter</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">TRUE</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mi>r</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">FALSE</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">otherwise</mml:mi>
<mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p></list-item>
<list-item>
<p>When the unknown node is in Arriver or Leaver state, it gathers this observation, i.e. the filter condition of the real location <italic>R</italic> for any unknown node is:
<disp-formula id="FD29">
<label>(29)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">filter</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">TRUE</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">AL</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">TRUE</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">FALSE</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">otherwise</mml:mi>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula>where AL represents Arriver or Leaver state:
<disp-formula id="FD30">
<label>(30)</label>
<mml:math display="block">
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>A</mml:mi>
<mml:mi>L</mml:mi></mml:mtd>
<mml:mtd>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>∧</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>&gt;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd/>
<mml:mtd>
<mml:mo>∨</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>&gt;</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo>∧</mml:mo>
<mml:mi>d</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">beacon</mml:mi></mml:mrow>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mi>r</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p></list-item></list></p>
<p>From an implementation perspective, in the first way, the beacon just transmits information about its own current location. Once the unknown node hears a location announcement from that beacon, an observation (also called <italic>constraint</italic>) is built to update.</p>
<p>In the second way, the beacon transmits both its current location and its location at the previous time step in each announcement. The unknown node needs to save state (Insider or Outsider) in previous time step with a tag:
<disp-formula id="FD31">
<label>(31)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">tag</mml:mi>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">TRUE</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">state</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">Insider</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="italic">FALSE</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">state</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">Outsider</mml:mi>
<mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>This procedure at an unknown node is then as described by <xref ref-type="table" rid="t3-sensors-09-02760">Algorithm 1</xref>. As can be seen, the tag which represented by variable <italic>StateTag</italic> is initialized to FALSE when the localization started (step 1–3). Then, we get the filter condition of location <italic>R</italic> for an unknown node (step 4–10). Finally, we get <italic>StateTag</italic> with step12–15.</p>
<table-wrap id="t3-sensors-09-02760" position="anchor">
<label>Algorithm 1.</label>
<caption>
<p>State at an unknown node.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top">1:</td>
<td align="left" valign="top"><bold>If</bold> t=0 <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">2:</td>
<td align="left" valign="top"> StateTag=FALSE</td></tr>
<tr>
<td align="left" valign="top">3:</td>
<td align="left" valign="top"><bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">4:</td>
<td align="left" valign="top">filter(R)=FALSE</td></tr>
<tr>
<td align="left" valign="top">5:</td>
<td align="left" valign="top"><bold>if</bold> Insider ∧ (StateTag=FALSE) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">6:</td>
<td align="left" valign="top"> filter(R)=TRUE</td></tr>
<tr>
<td align="left" valign="top">7:</td>
<td align="left" valign="top"><bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">8:</td>
<td align="left" valign="top"><bold>if</bold> Outsider ∧ (StateTag=TRUE) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">9:</td>
<td align="left" valign="top"> filter(R)=TRUE</td></tr>
<tr>
<td align="left" valign="top">10:</td>
<td align="left" valign="top"><bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">11:</td>
<td align="left" valign="top"><bold>if</bold> Insider <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">12:</td>
<td align="left" valign="top"> StateTag=TRUE</td></tr>
<tr>
<td align="left" valign="top">13:</td>
<td align="left" valign="top"><bold>else</bold></td></tr>
<tr>
<td align="left" valign="top">14:</td>
<td align="left" valign="top"> StateTag=FALSE</td></tr>
<tr>
<td align="left" valign="top">15:</td>
<td align="left" valign="top"><bold>end if</bold></td></tr></tbody></table></table-wrap>
<p>The first way was adopted by Monte Carlo Localization (MCL) [<xref ref-type="bibr" rid="b19-sensors-09-02760">19</xref>] and MSL [<xref ref-type="bibr" rid="b9-sensors-09-02760">9</xref>]. As the approach ADO, we adopt second way in the update stage, however. We will evaluate the accuracy of them in Section 4.</p>
<p>Then, the weight of sample is determined by the filter condition:
<disp-formula id="FD32">
<label>(32)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">filter</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">TRUE</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mn>0</mml:mn>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">if</mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi> </mml:mi>
<mml:mi mathvariant="italic">filter</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>R</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">FALSE</mml:mi>
<mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p><bold>Resampling</bold>: A common problem with particle filter is the <italic>degeneracy</italic> phenomenon. The degeneracy implies that a large computational effort is devoted to updating particles whose contribution to the approximation to <italic>p</italic>(<italic>l<sub>t</sub></italic>|<italic>o</italic><sub>l:<italic>t</italic></sub>) is almost zero. A suitable measure of degeneracy of the algorithm is the effective sample size <italic>N<sub>eff</sub></italic> defined as:
<disp-formula id="FD33">
<label>(33)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi mathvariant="italic">eff</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<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:mi> </mml:mi>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>notice that <italic>N<sub>eff</sub></italic> ≤ <italic>N</italic>, and small <italic>N<sub>eff</sub></italic> indicates severe degeneracy. The method by which the effects of degeneracy can be reduced is to use <italic>resampling</italic> whenever a significant degeneracy is observed (i.e., when <italic>N<sub>eff</sub></italic> falls below some threshold <italic>N<sub>T</sub></italic>). The basic idea of resampling is to eliminate particles that have small weights and to concentrate on particle with large weights. We adopt a Systematic resampling algorithm [<xref ref-type="bibr" rid="b20-sensors-09-02760">20</xref>] in this paper since it is simple to implement, takes <italic>O(N<sub>s</sub>)</italic> time, and minimizes the Monte Carlo variation.</p>
<p>Finally, in order to give more clear description of MBL, we describe the main stages as a state machine diagram with labeled transitions, see <xref ref-type="fig" rid="f1-sensors-09-02760">Figure 1</xref>.</p></sec>
<sec>
<label>3.2.</label>
<title>A-MBL</title>
<sec>
<label>3.2.1.</label>
<title>Number of Samples</title>
<p>For reference, we first evaluate the trend of location error defined by <xref ref-type="disp-formula" rid="FD35">Equation (35)</xref> of four different MBL exemplars (evaluation results shown in <xref ref-type="fig" rid="f2-sensors-09-02760">Figure 2</xref>). <xref ref-type="fig" rid="f2-sensors-09-02760">Figure 2</xref> shows that, under the same conditions (<italic>S</italic>=1,000×1,000, <italic>α=</italic>0.1<italic>r</italic>), keeping more samples improves efficiency in the beginning of localization. The time complexity of the update stage and the memory requirement to keep samples both are linear in the number of samples needed for the estimation, however. Therefore, the attempt will be made to make more effective use of the available samples, thereby allowing sample sets of reasonable size. As a result, with a fixed number of samples one has to choose a tradeoff so as to allow address efficiency, time and space complexity problem. Before we introduce our method for adaptive particle filter, let us first discuss two existing technique to changing the number of samples during the filter process.</p>
<p><bold>Likelihood-based adaptation</bold> [<xref ref-type="bibr" rid="b21-sensors-09-02760">21</xref>]: The intuition behind this approach is as follows. If the sample set is well in tune with the sensor reading, each individual importance weight is large and the sample set remains small. If we adopt this approach, we will choose smaller sample set than previous when 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<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:msubsup>
<mml:mi> </mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>≥</mml:mo>
<mml:mi mathvariant="italic">threshold</mml:mi></mml:mrow></mml:math></inline-formula>, i.e. the sum of weight 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<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:msubsup>
<mml:mi> </mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> has always been greater than a certain value (threshold) since the beginning of a certain time during the localization, the number of sample will be reduced. As shown in <xref ref-type="fig" rid="f3-sensors-09-02760">Figure 3</xref>, the sum of weights for a single unknown node changes over time in MBL. It is clear that more severe fluctuations of weight changing over time in MBL, however. Thus, the conditions of likelihood-based adaptation for MBL shall be deemed invalid.</p>
<p><bold>KLD-Sampling adaptation</bold> [<xref ref-type="bibr" rid="b17-sensors-09-02760">17</xref>]: The key idea of the KLD-sampling approach is to bound the error introduced by the sample-based belief representation. At each iteration, this approach generates samples until their number is large enough to guarantee that the KL-distance between the maximum likelihood estimate and the underlying posterior does not exceed a pre-specified bound. However, the additional cost of KLD-sampling is higher, especially for sensor node, since each lookup takes time logarithmic in the size of the state space. Thus, it is inefficient for us to adopt this approach.</p></sec>
<sec>
<label>3.2.2.</label>
<title>Parameter α</title>
<p>As shown in <xref ref-type="fig" rid="f2-sensors-09-02760">Figure 2</xref>, under the same conditions (<italic>S</italic>=500×500, N=50), a greater value of <italic>α</italic> improves the efficiency in the beginning of localization and improves accuracy at the other extreme. The question is how to determine the value of parameter <italic>α</italic> to achieve both high precision of localization and a short localization time period. We find that the localization error ultimately will remain stable regardless of the value of <italic>α</italic>. Thus, the key idea is to reduce the value of <italic>α</italic> when the stable phase of localization process is achieved, i.e., the dynamic model maintains greater value of <italic>α</italic> in the beginning of localization to achieve shorter localization time and updates to smaller value of <italic>α</italic> to obtain higher precision.</p>
<p>To judge the localization to reach the stable phase, a simple and intuitive approach is to adopt <italic>coefficient of variation c<sub>v</sub></italic> of recent location estimating results, which is defined as:
<disp-formula id="FD34">
<label>(34)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi></mml:mrow>
<mml:mi>v</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mi>σ</mml:mi>
<mml:mi>μ</mml:mi></mml:mfrac>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>where <italic>σ</italic> and <italic>μ</italic> is the <italic>standard deviation</italic> and the <italic>mean</italic> of recent location estimating results, respectively. When <italic>c<sub>v</sub></italic>&lt;<italic>ε</italic>, we update <italic>α</italic> by <italic>α=ηα</italic>, where <italic>ε</italic> is a pre-specified threshold and <italic>η</italic> is adjustment factor for <italic>α</italic>. However, when <italic>N</italic> is relatively small, the coefficient of variation is not good to judge the stable phase for a single unknown node, and maintaining recent location estimating results requires additional memory for sensor node. Thus, it is also inefficient for us to adopt this approach.</p></sec>
<sec>
<label>3.2.3.</label>
<title>Our proposed approach and implementation</title>
<p>We adopt two predefined adjustment tables in our approach, one for the number of samples <italic>N</italic>, the other for the parameter α (examples shown in <xref ref-type="table" rid="t1-sensors-09-02760">Table 1</xref> and <xref ref-type="table" rid="t2-sensors-09-02760">2</xref>). The two tables which include the following fields: TIME, N and TIME, ALPHA. Once some record in the table is matched, the number of samples and the value of <italic>α</italic> in the unknown node will be adjusted according to the corresponding time. The table of <italic>N</italic> and <italic>α</italic> used in this paper was determined empirically. In general, the size of these two tables is very small. Both the implementation and computation overhead of this approach are also small. Thus, we adopt this approach to adapting previous proposed algorithm MBL.</p>
<p>The implementation details are described in <xref ref-type="table" rid="t4-sensors-09-02760">Algorithm 2</xref>, where <italic>L<sub>N</sub></italic> is the adjustment list of the number of sample and <italic>L<sub>N</sub>.length</italic> is the length of the list, so does the <italic>L<sub>α</sub></italic> to the parameter <italic>α</italic>. The beacon transmits the information about these tables when contacting the unknown node for the first time (step 2–6), and the unknown node keeps the value in the list <italic>L<sub>N</sub></italic> and <italic>L<sub>α</sub></italic>. Then, the unknown node adjusts the number of samples <italic>N</italic> (step 7–13). In step 8, the <italic>N</italic> which is on the left of assignment denotes new number of samples. The 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> denotes the samples with new <italic>N</italic> in step 11 and the 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> denotes the weights with new <italic>N</italic> in step 12. The parameter <italic>α</italic> (step 14–17) based on above information from the beacon. Finally, the complete A-MBL for every unknown node is shown in <xref ref-type="table" rid="t5-sensors-09-02760">Algorithm 3</xref>.</p>
<table-wrap id="t4-sensors-09-02760" position="anchor">
<label>Algorithm 2.</label>
<caption>
<p>adaptive step in unknown node.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top">1:</td>
<td align="left" valign="top"><bold>procedure</bold> ADAPTING</td></tr>
<tr>
<td align="left" valign="top">2:</td>
<td align="left" valign="top"><bold>if</bold> (<italic>d</italic>(<italic>beacon,l</italic>)≤<italic>r</italic>)∧(<italic>firstContracted=FALSE</italic>) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">3:</td>
<td align="left" valign="top"> <italic>L<sub>N</sub></italic> [<italic>k<sub>N</sub></italic>]← <italic>InitValueFromBeacon</italic></td></tr>
<tr>
<td align="left" valign="top">4:</td>
<td align="left" valign="top"> <italic>L<sub>α</sub></italic>[<italic>k<sub>α</sub></italic>]←<italic>InitValueFromBeacon</italic></td></tr>
<tr>
<td align="left" valign="top">5:</td>
<td align="left" valign="top"> <italic>firstContract←TRUE</italic></td></tr>
<tr>
<td align="left" valign="top">6:</td>
<td align="left" valign="top"><bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">7:</td>
<td align="left" valign="top"><bold>if</bold> (<italic>t</italic> = <italic>L<sub>N</sub></italic>[<italic>k<sub>N</sub></italic>].<italic>t</italic>) ∧ (<italic>k<sub>N</sub></italic> &lt; <italic>L<sub>N</sub></italic>.<italic>length</italic>) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">8:</td>
<td align="left" valign="top"> <italic>N<sub>p</sub> ← N</italic></td></tr>
<tr>
<td align="left" valign="top">9:</td>
<td align="left" valign="top"> <italic>N ← L<sub>N</sub></italic> [<italic>k<sub>N</sub></italic>].<italic>N</italic></td></tr>
<tr>
<td align="left" valign="top">10:</td>
<td align="left" valign="top"> <italic>k<sub>N</sub> ← k<sub>N</sub></italic> +1</td></tr>
<tr>
<td align="left" valign="top">11:</td>
<td align="left" valign="top"> 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>←</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>j</mml:mi></mml:msubsup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>←</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>←</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">12:</td>
<td align="left" valign="top"> 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>←</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>j</mml:mi></mml:msubsup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>←</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>N</mml:mi>
<mml:mo>;</mml:mo>
<mml:mi>j</mml:mi>
<mml:mo>←</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi>p</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">13:</td>
<td align="left" valign="top"><bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">14:</td>
<td align="left" valign="top"><bold>if</bold> (<italic>t</italic> = <italic>L<sub>α</sub></italic>[<italic>k<sub>α</sub></italic>].<italic>t</italic>) ∧ (<italic>k<sub>α</sub></italic> &lt; <italic>L<sub>α</sub></italic>.<italic>length</italic>) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">15:</td>
<td align="left" valign="top"> <italic>α</italic> ← <italic>L<sub>α</sub></italic>[<italic>k<sub>α</sub></italic>].<italic>α</italic></td></tr>
<tr>
<td align="left" valign="top">16:</td>
<td align="left" valign="top"> <italic>k<sub>α</sub></italic> ← <italic>k<sub>α</sub></italic> + 1</td></tr>
<tr>
<td align="left" valign="top">17:</td>
<td align="left" valign="top"><bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">18:</td>
<td align="left" valign="top"><bold>end procedure</bold></td></tr></tbody></table></table-wrap>
<table-wrap id="t5-sensors-09-02760" position="anchor">
<label>Algorithm 3.</label>
<caption>
<p>A-MBL.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top">1:</td>
<td align="left" valign="top"> <italic>k<sub>α</sub></italic> ← 0</td></tr>
<tr>
<td align="left" valign="top">2:</td>
<td align="left" valign="top"> <italic>k<sub>N</sub></italic> ← 0</td></tr>
<tr>
<td align="left" valign="top">3:</td>
<td align="left" valign="top"> <italic>firstContracted</italic> ← <italic>FALSE</italic></td></tr>
<tr>
<td align="left" valign="top">4:</td>
<td align="left" valign="top"><bold>for</bold> <italic>i</italic> ← 1, <italic>N</italic> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">5:</td>
<td align="left" valign="top"> <italic>INITIALIZATION</italic></td></tr>
<tr>
<td align="left" valign="top">6:</td>
<td align="left" valign="top"><bold>end for</bold></td></tr>
<tr>
<td align="left" valign="top">7:</td>
<td align="left" valign="top"><bold>for</bold> <italic>t</italic> ← 1,<italic>T</italic> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">8:</td>
<td align="left" valign="top"> <bold>for</bold> <italic>i</italic> ← 1, <italic>N</italic> <bold>do</bold></td></tr>
<tr>
<td align="left" valign="top">9:</td>
<td align="left" valign="top">  
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>∼</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">10:</td>
<td align="left" valign="top">  
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>←</mml:mo>
<mml:mi>p</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>o</mml:mi></mml:mrow>
<mml:mi>t</mml:mi></mml:msub>
<mml:mo stretchy="false">|</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">11:</td>
<td align="left" valign="top"> <bold>end for</bold></td></tr>
<tr>
<td align="left" valign="top">12:</td>
<td align="left" valign="top"> 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>←</mml:mo>
<mml:mi mathvariant="italic">NORMALIZE</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">13:</td>
<td align="left" valign="top"> 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mi mathvariant="italic">eff</mml:mi></mml:msub>
<mml:mo>←</mml:mo>
<mml:mi mathvariant="italic">NEFF</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">14:</td>
<td align="left" valign="top"><bold>if</bold> (<italic>N<sub>eff</sub></italic> &lt; <italic>N<sub>T</sub></italic> ∧ <italic>filter</italic>(<italic>l</italic>) = <italic>TRUE</italic>) <bold>then</bold></td></tr>
<tr>
<td align="left" valign="top">15:</td>
<td align="left" valign="top">  
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mo stretchy="false">{</mml:mo>
<mml:mo>&lt;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>j</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>j</mml:mi></mml:msubsup>
<mml:mo>&gt;</mml:mo>
<mml:mo stretchy="false">}</mml:mo>
<mml:mo>←</mml:mo>
<mml:mi mathvariant="italic">RESAMPLING</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo stretchy="false">{</mml:mo>
<mml:mo>&lt;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>l</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi></mml:mrow>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi></mml:msubsup>
<mml:mo>&gt;</mml:mo>
<mml:mo stretchy="false">}</mml:mo>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula></td></tr>
<tr>
<td align="left" valign="top">16:</td>
<td align="left" valign="top"> <bold>end if</bold></td></tr>
<tr>
<td align="left" valign="top">17:</td>
<td align="left" valign="top"> <italic>ADAPTING</italic></td></tr>
<tr>
<td align="left" valign="top">18:</td>
<td align="left" valign="top"><bold>end for</bold></td></tr></tbody></table></table-wrap></sec></sec></sec>
<sec>
<label>4.</label>
<title>Evaluation</title>
<sec>
<label>4.1.</label>
<title>Assumption</title>
<p>The key metric [<xref ref-type="bibr" rid="b9-sensors-09-02760">9</xref>] for evaluating a localization algorithm is the accuracy of the location estimates or <italic>localization error</italic>. This is computed as follows:
<disp-formula id="FD35">
<label>(35)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">Error</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>M</mml:mi></mml:mfrac>
<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>M</mml:mi></mml:munderover>
<mml:mi> </mml:mi>
<mml:mo>∥</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>R</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>∥</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>where <italic>M</italic> is the number of unknown nodes, <italic>R<sub>i</sub></italic> denotes the real location of the <italic>i</italic>-th unknown node, <italic>e<sub>i</sub></italic> denotes the location estimate of the <italic>i</italic>-th unknown sensor where <italic>i=</italic>1<italic>,…,M</italic> and □<italic>e<sub>i</sub></italic> − <italic>R<sub>i</sub></italic>□ denotes the distance between locations <italic>e<sub>i</sub></italic> and <italic>R<sub>i</sub></italic>. The errors shown in the simulation results are in terms of the radio range, i.e., the errors shown are computed by dividing the error in <xref ref-type="disp-formula" rid="FD35">Equation (35)</xref> by the radio range of sensors. Most parameter settings for our simulations are those used in [<xref ref-type="bibr" rid="b19-sensors-09-02760">19</xref>, <xref ref-type="bibr" rid="b9-sensors-09-02760">9</xref>]. Our results were obtained using sensors randomly distributed in a 500 units × 500 units square field, i.e. S=500×500. In our experiments, we set ideal radio range <italic>r=</italic>100, the number of unknown nodes <italic>M=</italic>100, the number of samples for an unknown node <italic>N=</italic>50, the parameter α=0.1r in the prediction stage, the maximum speed of beacon <italic>v<sub>max</sub>=</italic>1.0<italic>r</italic> and two predefined adjustment tables (shown in <xref ref-type="table" rid="t1-sensors-09-02760">Table 1</xref> and <xref ref-type="table" rid="t2-sensors-09-02760">2</xref>) for adapting unless otherwise specified. Other simulation parameters of the unknown node are based on the MicaZ sensor node. The beacon’s movement is implemented using random waypoint mobility model.</p>
<p>In this section, we first evaluate MBL algorithm under various parameters configuration, such as the maximum speed of the beacon, the number of samples for an unknown node, and the impact of parameters <italic>α</italic> in the prediction stage. Then, under the same conditions (e.g. only use a single mobile beacon for localization), we compare the efficiency and accuracy of MBL, A-MBL, MSL, and ADO in different parameters configuration. In addition, we will consider a noisy environment with random noise added to measurements.</p></sec>
<sec>
<label>4.2.</label>
<title>Parameters of MBL</title>
<p><bold>Maximum speed of the beacon</bold>: <xref ref-type="fig" rid="f4-sensors-09-02760">Figure 4</xref> shows the convergence of MBL algorithm under four different <italic>v<sub>max</sub></italic> scenarios. In general, the faster the speed of the beacon, the quicker the stable phase is reached. Because the faster the speed of the beacon, the more the number of unknown nodes which the beacon could contact with. When <italic>v<sub>max</sub></italic> is greater than or equal to 0.6<italic>r</italic>, the convergence of MBL is particularly fast, and the localization process can be divided into the initialization phase and the stable phase. In the initialization phase, the estimate error decreases dramatically as new observations (the localization is improved by both the current observation and previous observations) are incorporated. In the stable phase, the impact of filter and the beacon’s mobility reach some balance, and the estimate error fluctuates around a minimum value. When <italic>v<sub>max</sub></italic> is greater than or equal to 0.8<italic>r</italic>, the curves of convergence (e.g. <italic>v<sub>max</sub>=</italic>1.0<italic>r</italic> and <italic>v<sub>max</sub>=</italic>1.2<italic>r</italic> shown in <xref ref-type="fig" rid="f4-sensors-09-02760">Figure 4</xref>) are very close to each other. Based on above comparison, we set <italic>v<sub>max</sub>=</italic>1.0<italic>r</italic> as the default parameters configuration. When the time is greater than 1000 under this default parameters configuration, the error fluctuates slightly about a constant value (nearly 0.1).</p>
<p><bold>Number of samples for MBL</bold>: Maintaining more samples for the MCL algorithm can improve accuracy, but requires additional memory [<xref ref-type="bibr" rid="b19-sensors-09-02760">19</xref>]. Based on this comment, we should select an appropriate number of samples which does not affect the accuracy of localization and also does not waste memory either. <xref ref-type="fig" rid="f5-sensors-09-02760">Figure 5</xref> shows the impact of sample size on location accuracy. The estimate error drops rapidly at the beginning, since a small number of samples cannot adequately reflect the probability distribution. The estimate error is fairly stable after sample size 50 and the accuracy improves only minimally by increasing the number of samples to 100. Hence, MBL is efficient in both memory and computation when the number of sample is close to 50. So, we choose 50 as default sample quantity to save memory and achieve good accuracy.</p>
<p><bold>Parameter</bold> <italic>α</italic> <bold>for MBL</bold>: <xref ref-type="fig" rid="f6-sensors-09-02760">Figure 6</xref> shows the impact of parameter <italic>α</italic> on location accuracy. If <italic>α</italic> = 0, i.e., all samples of the unknown node always keep static in the prediction stage. As a result, it cannot provide enough variability in choosing new samples. Hence, to improve the accuracy, the algorithms should increase the number of samples for each unknown node. In <xref ref-type="fig" rid="f6-sensors-09-02760">Figure 6</xref>, when <italic>α=</italic>0, the number of samples is needed to reach about 5,000 in order to achieve the similar precision as <italic>α=</italic>0.1<italic>r</italic> (but this number of samples is just 50). The parameter <italic>α</italic> significantly improves the accuracy and reduces the number of samples. Based on a number of experimental results, we adopt <italic>α=</italic>0.1<italic>r</italic> and the number of samples <italic>N</italic>=50 for an unknown node as default values.</p></sec>
<sec>
<label>4.3.</label>
<title>Comparison of Different Algorithms</title>
<p>In order to compare different algorithms under the same conditions, MSL in our evaluation will only use a single mobile beacon for localization.</p>
<p><bold>Efficiency</bold>: The graph in <xref ref-type="fig" rid="f7-sensors-09-02760">Figure 7</xref> shows the efficiency comparison for MBL (<italic>α</italic>=0.01<italic>r</italic>), A-MBL under same conditions except the parameter <italic>α</italic>. In order to obtain close precision, MBL spends more time with a fixed <italic>α</italic> than A-MBL with adapting <italic>α</italic> obtained from predefined adjustment tables.</p>
<p><bold>Accuracy</bold>: <xref ref-type="fig" rid="f8-sensors-09-02760">Figure 8</xref> shows the comparison of accuracy for MBL, A-MBL, MSL and ADO under same maximum speed of the beacon (<italic>v<sub>max</sub></italic>). <xref ref-type="fig" rid="f8-sensors-09-02760">Figure 8</xref> illustrates that the curve of ADO drops to a certain value, then to the horizon, because the Arriver and Leaver information only be used once by ADO when the beacon passes by traverse route. Even though the beacon in ADO pass by the radio ranges of the unknown node on many occasions, the accuracy of unknown node will not be improved. Thus, as the time goes on, the average accuracy of all unknown nodes does not decrease. As shown in <xref ref-type="fig" rid="f8-sensors-09-02760">Figure 8</xref>, MBL and MSL, these two curvature of the curves are very similar to each other. As the time goes on, these two curves both reach to the stable phase. MBL shows nearly 50% better performance and nearly equal time of localization when compared to the MSL. Before the parameter <italic>α</italic> in A-MBL adjusted, the accuracy of MBL and A-MBL are very close. Once the parameter <italic>α</italic> in A-MBL has been adjusted, the accuracy of A-MBL is further improved. The accuracy of MBL still keeps stable, however. Thus, it can be seen from the <xref ref-type="fig" rid="f8-sensors-09-02760">Figure 8</xref> that A-MBL outperforms MBL, MSL and ADO.</p>
<p><bold>Speed of the beacon</bold>: <xref ref-type="fig" rid="f9-sensors-09-02760">Figure 9</xref> shows how the localization error varies with the changing speed of the beacon. As a result, the faster speed of the beacon, the worse accuracy of ADO is achieved. Because the faster speed of the beacon which just travels the whole deployment area of a sensor network only once, the more the numbers of unknown nodes do not be localized. With further increase in the speed of beacon, the accuracy of MBL is close to MSL, for the area of Arriver and Leaver will become smaller. Finally, when <italic>v<sub>b</sub></italic> ≥ 2<italic>r</italic>, the area of Arriver and Leaver is equal to zero, and then MBL will degrade to MSL. The emergence of the significant error when the beacon (<italic>v<sub>max</sub></italic>=20) at low speed, just because the time (<italic>t</italic>=3,000) is too short for convergence of MBL, A-MBL, and MSL. As a result of <xref ref-type="fig" rid="f9-sensors-09-02760">Figure 9</xref>, A-MBL always performs better than both MBL and MSL in some range of speed.</p>
<p><bold>Number of the unknown nodes</bold>: In this experiment we vary the number of unknown nodes from 20 to 200. We set the time of beacon movement as 3,000 to achieve the stable phase. As shown in <xref ref-type="fig" rid="f10-sensors-09-02760">Figure 10</xref>, the number of unknown nodes will not affect the accuracy of A-MBL, MBL and MSL, just because each of them only use the beacon for localization in our evaluations (not from neighborhood information).</p></sec>
<sec>
<label>4.4.</label>
<title>Irregularity</title>
<p>All of our previous experiments assumed an ideal scenario where location sensory data are not influenced by irregular radio range and any receiver within the radio range of sender will hear the packets from that sender. However, on the one hand, variability in actual radio transmission patterns can have a substantial impact on localization accuracy depending on the localization technique [<xref ref-type="bibr" rid="b19-sensors-09-02760">19</xref>]. On the other hand, the packet reception depends not only on the sender, but also on the receiver.</p>
<p><xref ref-type="fig" rid="f11-sensors-09-02760">Figure 11</xref> shows the impact of degree of irregularity on estimate error. The MBL and A-MBL are not substantially affected. We use degree of irregularity (DOI) to denote the maximum radio range variation in the direction of radio propagation. For example, if DOI = 0.1, then the actual radio range in each direction is randomly chosen from [0.9r, 1.1r].</p>
<p>If the unknown node (receiver) within radio range of the beacon (sender) will not hear a location announcement (such as network collisions or missed packages) from that beacon at some time, the beacon must keep moving for longer time to send location information which the unknown node could receive them, i.e. the time to achieve final stable phase of accuracy as ideal state will be extended. The accuracy of MBL and A-MBL will not be affected in such scenarios.</p></sec></sec>
<sec>
<label>5.</label>
<title>Related Works</title>
<p>In this section, we provide a brief survey focusing on mobile-assisted localization approaches suitable for WSNs. MAL [<xref ref-type="bibr" rid="b11-sensors-09-02760">11</xref>] proposed by Priyantha <italic>et al.</italic> involves a mobile-assisted localization method which employs a mobile user to assist in measuring distances between node pairs until these distance constraints form a “globally rigid” structure that guarantees a unique localization. In [<xref ref-type="bibr" rid="b10-sensors-09-02760">10</xref>], Kim <italic>et al.</italic> propose a novel range-based localization scheme which involves a movement strategy with a low computational complexity of mobile beacon, called mobile beacon-assisted localization (MBAL).</p>
<p>Different from above range-based deterministic mobile beacon-assisted approaches, many range-base probabilistic approaches have been proposed. Sichitiu <italic>et al.</italic> [<xref ref-type="bibr" rid="b12-sensors-09-02760">12</xref>] propose a radio frequency (RF) based (i.e. the received signal strength indicator (RSSI) is used for ranging) localization method using Bayesian inference for processing information from one mobile beacon. Caballero <italic>et al.</italic> [<xref ref-type="bibr" rid="b22-sensors-09-02760">22</xref>] present range-based (which process the RSSI value in each node in order to localize the nodes of a static wireless network) methods for the 3D localization of an outdoor WSN by using a single flying beacon-node on-board an autonomous helicopter. The technique is based on particle filtering and allows a distributed computation of the position of the nodes. Marinakis <italic>et al.</italic> [<xref ref-type="bibr" rid="b23-sensors-09-02760">23</xref>] present, based on Markov Chain Monte Carlo (MCMC) methodology, a hybrid Inference for Sensor Network Localization using a Mobile Robot, However, this method requires a special hardware platform for the above inference technique: a mobile robot is observed by one of the component stationary cameras in a sensor network. Ihler <italic>et al.</italic> [<xref ref-type="bibr" rid="b24-sensors-09-02760">24</xref>] present and demonstrate range-based (scenarios in which each sensor is equipped with a wireless and/or acoustic transceiver and distance is estimated by received signal strength or time delay of arrival between sensor locations) the utility of nonparametric belief propagation (NBP), a generalization of particle filtering, for both estimating sensor locations and representing location uncertainties. Peng <italic>et al.</italic> [<xref ref-type="bibr" rid="b14-sensors-09-02760">14</xref>] propose a range-based (which measure the RSS at different distances between a transmitter and a receiver pair) probabilistic, constraint-based approach robust to range measurement inaccuracies.</p>
<p>All above range-based approaches are constrained by the expensive cost and high energy consumptions of the ranging hardware devices. Furthermore, in many practical situations, the measurements are far from accurate (and even sometimes unobtainable) due to highly dynamic environments [<xref ref-type="bibr" rid="b25-sensors-09-02760">25</xref>].</p>
<p>Due to the hardware limitations and energy constraints of sensor nodes, range-free localization approaches are cost-effective alternatives to range-based approaches. Walking GPS [<xref ref-type="bibr" rid="b26-sensors-09-02760">26</xref>] is a range-free localization, in which the deployer (either person or vehicle) carries a GPS device that periodically broadcasts its location. Each node computes its location estimate according to either the broadcasting positions of the moving beacon or the positions of its neighbors. ADO provides a distributed method to localization of sensor nodes using a single moving beacon where sensor nodes compute their position estimate based on the range-free technique. The method uses the arrival and departure information of a walking beacon.</p>
<p>Our proposed method differs significantly from previous range-base or range-free mobile-assisted localization works because we adopt range-free techniques and solve the problem from particle filter perspective.</p>
<p>Our work is similar to that of Hang <italic>et al.</italic> [<xref ref-type="bibr" rid="b13-sensors-09-02760">13</xref>], which discusses the Monte Carlo sampling steps in the context of the localization using a single beacon for various types of observations such as ranging, Angle of Arrival (AoA), connectivity and combinations of those. This method works more like an online algorithm, in which all computation is done at the beacon.</p>
<p>Coates <italic>et al.</italic> [<xref ref-type="bibr" rid="b27-sensors-09-02760">27</xref>] present two distributed particle filtering algorithms for Sensor Networks. Different from our work which locate static unknown nodes, this approach is used to track posterior distributions in Markovian state-space models using sensor networks.</p>
<p>The range-free algorithm MCL proposed by Hu <italic>et al.</italic> only works in mobile sensor networks. MCL works well in mobile sensor networks as long as the speed of movement is not very low. The paper proposes two possible filter approaches. The first approach adopts Arriver and Leaver information (i.e. beacon transmits both its current location and its location at the previous time step in each announcement). The second adopts the current neighborhood (beacons and unknowns nodes) information. The other range-free algorithm called MSL proposed by Rudafshani <italic>et al</italic>., works well when some or all nodes are static or mobile. Unlike MCL in the prediction stage, the parameter <italic>α</italic> is needed for MSL to work well when no sensors move. Each node maintains a set of weighted samples denoting its possible locations and its weight is determined using the current neighborhood information. Though these approaches are not especially for a single mobile-assisted sensor networks, our work is inspired by above approaches. In the prediction stage, we adopt the parameter <italic>α</italic> proposed by MSL. In the update stage, we adopt Arriver and Leaver information proposed by MCL.</p></sec>
<sec sec-type="conclusions">
<label>6.</label>
<title>Conclusions</title>
<p>In this paper, we propose two range-free, distributed and probabilistic mobile beacon-assisted localization approaches for static WSNs, MBL and A-MBL. Evaluation results show that the accuracy of A-MBL outperforms MBL, MSL and ADO in static WSNs when all of them use only a single mobile beacon for localization. As future work, two new issues will be considered. First, whether the use of information from unknown nodes (especially the neighbor nodes) which may have greater communication cost to increase efficiency and accuracy in mobile beacon-assisted localization needs further research. Second, though adopting predefined adjustment tables in A-MBL is convenient and effective, obtaining these tables is difficult. We will also consider some of self-adaptive mechanism in our approaches to achieve more flexibility.</p></sec></body>
<back>
<ack>
<p>This work is supported by the National Basic Research Program of China (973 Program) under grant No. 2006CB303000.</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-09-02760"><label>1.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Volgyesi</surname><given-names>P.</given-names></name><name><surname>Balogh</surname><given-names>G.</given-names></name><name><surname>Nadas</surname><given-names>A.</given-names></name><name><surname>Nash</surname><given-names>C.B.</given-names></name><name><surname>Ledeczi</surname><given-names>A.</given-names></name></person-group><article-title>Shooter localization and weapon classification with soldier-wearable networked sensors</article-title><conf-name>The 5th International Conference on Mobile Systems, Applications and Services</conf-name><conf-loc>New York, NY, USA</conf-loc><conf-date>2007</conf-date><fpage>113</fpage><lpage>126</lpage></citation></ref>
<ref id="b2-sensors-09-02760"><label>2.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Manes</surname><given-names>G.</given-names></name><name><surname>Fantacci</surname><given-names>R.</given-names></name><name><surname>Chiti</surname><given-names>F.</given-names></name><name><surname>Ciabatti</surname><given-names>M.</given-names></name><name><surname>Collodi</surname><given-names>G.</given-names></name><name><surname>Palma</surname><given-names>D.D.</given-names></name><name><surname>Manes</surname><given-names>A.</given-names></name></person-group><article-title>Enhanced system design solutions for wireless sensor networks applied to distributed environmental monitoring</article-title><conf-name>The 32nd IEEE Conference on Local Computer Networks</conf-name><conf-loc>Washington, DC, USA</conf-loc><comment>IEEE,</comment><conf-date>2007</conf-date><fpage>807</fpage><lpage>814</lpage></citation></ref>
<ref id="b3-sensors-09-02760"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Song</surname><given-names>G.M.</given-names></name><name><surname>Zhou</surname><given-names>Y.X.</given-names></name><name><surname>Ding</surname><given-names>F.</given-names></name><name><surname>Song</surname><given-names>A.G.</given-names></name></person-group><article-title>A Mobile Sensor Network System for Monitoring of Unfriendly Environments</article-title><source>Sensors</source><year>2008</year><volume>8</volume><fpage>7259</fpage><lpage>7274</lpage><pub-id pub-id-type="doi">10.3390/s8117259</pub-id></citation></ref>
<ref id="b4-sensors-09-02760"><label>4.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Mechitov</surname><given-names>K.</given-names></name><name><surname>Sundresh</surname><given-names>S.</given-names></name><name><surname>Kwon</surname><given-names>Y.</given-names></name><name><surname>Agha</surname><given-names>G.</given-names></name></person-group><article-title>Poster abstract: cooperative tracking with binarydetection sensor networks</article-title><conf-name>Proceedings of the 1st international conference on Embedded networked sensor systems</conf-name><conf-loc>New York, NY, USA</conf-loc><conf-date>2003</conf-date><fpage>332</fpage><lpage>333</lpage></citation></ref>
<ref id="b5-sensors-09-02760"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname><given-names>X.</given-names></name><name><surname>Wang</surname><given-names>S.</given-names></name><name><surname>Ma</surname><given-names>J.J.</given-names></name></person-group><article-title>An improved particle filter for target tracking in sensor systems</article-title><source>Sensors</source><year>2007</year><volume>7</volume><fpage>144</fpage><lpage>156</lpage><pub-id pub-id-type="doi">10.3390/s7010144</pub-id></citation></ref>
<ref id="b6-sensors-09-02760"><label>6.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Szewczyk</surname><given-names>R.</given-names></name><name><surname>Mainwaring</surname><given-names>A.</given-names></name><name><surname>Polastre</surname><given-names>J.</given-names></name><name><surname>Anderson</surname><given-names>J.</given-names></name><name><surname>Culler</surname><given-names>D.</given-names></name></person-group><article-title>An analysis of a large scale habitat monitoring application</article-title><conf-name>Proceedings of the 2nd International Conference on Embedded Networked Sensor Systems</conf-name><conf-loc>New York, NY, USA</conf-loc><conf-date>2004</conf-date><fpage>214</fpage><lpage>226</lpage></citation></ref>
<ref id="b7-sensors-09-02760"><label>7.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Mechitov</surname><given-names>K.</given-names></name><name><surname>Kim</surname><given-names>W.</given-names></name><name><surname>Agha</surname><given-names>G.</given-names></name><name><surname>Nagayama</surname><given-names>T.</given-names></name></person-group><article-title>High-frequency distributed sensing for structure monitoring</article-title><conf-name>The First International Workshop on Networked Sensing Systems</conf-name><conf-loc>Tokyo, Japan</conf-loc><conf-date>2004</conf-date></citation></ref>
<ref id="b8-sensors-09-02760"><label>8.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Kwon</surname><given-names>Y.</given-names></name><name><surname>Agha</surname><given-names>G.</given-names></name></person-group><article-title>Passive localization: Large size sensor network localization based on environmental events</article-title><conf-name>IEEE International Conference on Information Processing in Sensor Networks</conf-name><conf-loc>St. Louis, Missouri, USA</conf-loc><conf-date>2008</conf-date><fpage>3</fpage><lpage>14</lpage></citation></ref>
<ref id="b9-sensors-09-02760"><label>9.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Rudafshani</surname><given-names>M.</given-names></name><name><surname>Datta</surname><given-names>S.</given-names></name></person-group><article-title>Localization in wireless sensor networks</article-title><conf-name>The 6th international conference on Information processing in sensor networks</conf-name><conf-loc>Cambridge, Massachusetts, USA, ACM</conf-loc><conf-date>2007</conf-date><fpage>51</fpage><lpage>60</lpage></citation></ref>
<ref id="b10-sensors-09-02760"><label>10.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Kim</surname><given-names>K.</given-names></name><name><surname>Lee</surname><given-names>W.</given-names></name></person-group><article-title>MBAL: A mobile beacon-assisted localization scheme for wireless sensor networks</article-title><conf-name>The 16th International Conference on Computer Communications and Networks</conf-name><conf-loc>Honolulu, Hawaii USA</conf-loc><conf-date>2007</conf-date><fpage>57</fpage><lpage>62</lpage></citation></ref>
<ref id="b11-sensors-09-02760"><label>11.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Priyantha</surname><given-names>N.B.</given-names></name><name><surname>Balakrishnan</surname><given-names>H.</given-names></name><name><surname>Demaine</surname><given-names>E.D.</given-names></name><name><surname>Teller</surname><given-names>S.</given-names></name></person-group><article-title>Mobile-assisted localization in wireless sensor networks</article-title><conf-name>The 24th Annual Joint Conference of the IEEE Computer and Communications Societies</conf-name><conf-loc>Miami, USA</conf-loc><conf-date>2005</conf-date><fpage>172</fpage><lpage>183</lpage></citation></ref>
<ref id="b12-sensors-09-02760"><label>12.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Sichitiu</surname><given-names>M. L.</given-names></name><name><surname>Ramadurai</surname><given-names>V.</given-names></name></person-group><article-title>Localization of wireless sensor networks with a mobile beacon</article-title><conf-name>The First IEEE Conference on Mobile Ad-hoc and Sensor Systems</conf-name><conf-loc>Philadelphia, USA</conf-loc><conf-date>2004</conf-date><fpage>174</fpage><lpage>183</lpage></citation></ref>
<ref id="b13-sensors-09-02760"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Huang</surname><given-names>R.</given-names></name><name><surname>Zruba</surname><given-names>G.V.</given-names></name></person-group><article-title>Monte carlo localization of wireless sensor networks with a single mobile beacon</article-title><source>Wirel. Netw</source><year>2008</year><pub-id pub-id-type="doi">10.1007/s11276-008-0096-3</pub-id></citation></ref>
<ref id="b14-sensors-09-02760"><label>14.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Peng</surname><given-names>R.</given-names></name><name><surname>Sichitiu</surname><given-names>M.L.</given-names></name></person-group><article-title>Robust, probabilistic, constraint-based localization for wireless sensor networks</article-title><conf-name>The Second Annual IEEE Sensor and Ad Hoc Communications and Networks</conf-name><conf-loc>Santa Clara, California, USA</conf-loc><conf-date>2005</conf-date><fpage>541</fpage><lpage>550</lpage></citation></ref>
<ref id="b15-sensors-09-02760"><label>15.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Xiao</surname><given-names>B.</given-names></name><name><surname>Chen</surname><given-names>H.K.</given-names></name><name><surname>Zhou</surname><given-names>S.G.</given-names></name></person-group><article-title>A walking beacon-assisted localization in wireless sensor networks</article-title><conf-name>International Conference on Communications</conf-name><conf-loc>Glasgow, Scotland</conf-loc><conf-date>2007</conf-date><fpage>3070</fpage><lpage>3075</lpage></citation></ref>
<ref id="b16-sensors-09-02760"><label>16.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Beeson</surname><given-names>P.</given-names></name><name><surname>Murarka</surname><given-names>A.</given-names></name><name><surname>Kuipers</surname><given-names>B.</given-names></name></person-group><article-title>Adapting proposal distributions for accurate, efficient mobile robot localization</article-title><conf-name>IEEE International Conference on Robotics and Automation</conf-name><conf-loc>Orlando, Florida, USA</conf-loc><conf-date>2006</conf-date><fpage>49</fpage><lpage>55</lpage></citation></ref>
<ref id="b17-sensors-09-02760"><label>17.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fox</surname><given-names>D.</given-names></name></person-group><article-title>Adapting the sample size in particle filters through KLD-sampling</article-title><source>Int. J. Rob. Res</source><year>2003</year><volume>22</volume><fpage>985</fpage><lpage>1003</lpage><pub-id pub-id-type="doi">10.1177/0278364903022012001</pub-id></citation></ref>
<ref id="b18-sensors-09-02760"><label>18.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Arulampalam</surname><given-names>S.</given-names></name><name><surname>Maskell</surname><given-names>S.</given-names></name><name><surname>Gordon</surname><given-names>N.</given-names></name></person-group><article-title>A tutorial on particle filters for online nonlinear/non-gaussian bayesian tracking</article-title><source>IEEE Trans. Signal Process</source><year>2002</year><volume>50</volume><fpage>174</fpage><lpage>188</lpage><pub-id pub-id-type="doi">10.1109/78.978374</pub-id></citation></ref>
<ref id="b19-sensors-09-02760"><label>19.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Hu</surname><given-names>L.</given-names></name><name><surname>Evans</surname><given-names>D.</given-names></name></person-group><article-title>Localization for mobile sensor networks</article-title><conf-name>The 10th Annual International Conference on Mobile Computing and Networking</conf-name><conf-loc>New York, NY, USA</conf-loc><conf-date>2004</conf-date><fpage>45</fpage><lpage>57</lpage></citation></ref>
<ref id="b20-sensors-09-02760"><label>20.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kitagawa</surname><given-names>G.</given-names></name></person-group><article-title>Monte carlo filter and smoother for non-gaussian nonlinear state space models</article-title><source>J. Comput. Graph. Stat</source><year>1996</year><volume>5</volume><fpage>1</fpage><lpage>25</lpage></citation></ref>
<ref id="b21-sensors-09-02760"><label>21.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Fox</surname><given-names>D.</given-names></name><name><surname>Burgard</surname><given-names>W.</given-names></name><name><surname>Dellaert</surname><given-names>F.</given-names></name></person-group><article-title>Monte carlo localization: Efficient position estimation for mobile robots</article-title><conf-name>The Sixteenth National Conference on Artificial Intelligence</conf-name><conf-loc>Orlando, Florida, USA</conf-loc><conf-date>1999</conf-date><fpage>343</fpage><lpage>349</lpage></citation></ref>
<ref id="b22-sensors-09-02760"><label>22.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Caballero</surname><given-names>F.</given-names></name><name><surname>Merino</surname><given-names>L.</given-names></name><name><surname>Maza</surname><given-names>I.</given-names></name><name><surname>Ollero</surname><given-names>A.</given-names></name></person-group><article-title>A Particle Filtering method for Wireless Sensor Network Localization with an Aerial Robot Beacon</article-title><conf-name>IEEE International Conference on Robotics and Automation</conf-name><conf-loc>Pasadena, CA, USA</conf-loc><year>2008</year><fpage>596</fpage><lpage>601</lpage></citation></ref>
<ref id="b23-sensors-09-02760"><label>23.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Marinakis</surname><given-names>D.</given-names></name><name><surname>Meger</surname><given-names>D.</given-names></name><name><surname>Rekleitis</surname><given-names>I.</given-names></name><name><surname>Dudek</surname><given-names>G.</given-names></name></person-group><article-title>Hybrid Inference for Sensor Network Localization using a Mobile Robot</article-title><conf-name>Proceedings of the Twenty-Second AAAI Conference on Artificial Intelligence</conf-name><conf-loc>Vancouver, British Columbia, Canada</conf-loc><year>2007</year><fpage>1089</fpage><lpage>1094</lpage></citation></ref>
<ref id="b24-sensors-09-02760"><label>24.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ihler</surname><given-names>A.T.</given-names></name><name><surname>Fisher</surname><given-names>J.W.</given-names></name><name><surname>Moses</surname><given-names>R.L.</given-names></name><name><surname>Willsky</surname><given-names>A.S.</given-names></name></person-group><article-title>Nonparametric Belief Propagation for Self-Localization of Sensor Networks</article-title><source>IEEE J. Sel. Area Comm</source><year>2005</year><volume>23</volume><fpage>809</fpage><lpage>819</lpage><pub-id pub-id-type="doi">10.1109/JSAC.2005.843548</pub-id></citation></ref>
<ref id="b25-sensors-09-02760"><label>25.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Li</surname><given-names>M.</given-names></name><name><surname>Liu</surname><given-names>Y.</given-names></name></person-group><article-title>Rendered path: range-free localization in anisotropic sensor networks with holes</article-title><conf-name>The 13th Annual ACM International Conference on Mobile Computing and Networking</conf-name><conf-loc>Montreal, Quebec, Canada, ACM</conf-loc><conf-date>2007</conf-date><fpage>51</fpage><lpage>62</lpage></citation></ref>
<ref id="b26-sensors-09-02760"><label>26.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Stoleru</surname><given-names>R.</given-names></name><name><surname>He</surname><given-names>T.</given-names></name><name><surname>Stankovic</surname><given-names>J. A.</given-names></name></person-group><article-title>Walking gps: A practical solution for localization in manually deployed wireless sensor networks</article-title><conf-name>The 29th Annual IEEE International Conference on Local Computer Networks</conf-name><conf-loc>Tampa, FL, USA</conf-loc><conf-date>2004</conf-date><fpage>480</fpage><lpage>489</lpage></citation></ref>
<ref id="b27-sensors-09-02760"><label>27.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Coates</surname><given-names>M.</given-names></name></person-group><article-title>Distributed Particle Filters for Sensor Networks</article-title><conf-name>Third International Symposium on Information Processing in Sensor Networks</conf-name><conf-loc>Berkeley, CA, USA</conf-loc><conf-date>2004</conf-date><fpage>99</fpage><lpage>107</lpage></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-sensors-09-02760" position="float">
<label>Figure 1.</label>
<caption>
<p>State machine diagram of MBL</p></caption>
<graphic xlink:href="sensors-09-02760f1.gif"/></fig>
<fig id="f2-sensors-09-02760" position="float">
<label>Figure 2.</label>
<caption>
<p>Different exemplars of MBL.</p></caption>
<graphic xlink:href="sensors-09-02760f2.gif"/></fig>
<fig id="f3-sensors-09-02760" position="float">
<label>Figure 3.</label>
<caption>
<p>Sum of weight for MBL.</p></caption>
<graphic xlink:href="sensors-09-02760f3.gif"/></fig>
<fig id="f4-sensors-09-02760" position="float">
<label>Figure 4.</label>
<caption>
<p>Location convergence.</p></caption>
<graphic xlink:href="sensors-09-02760f4.gif"/></fig>
<fig id="f5-sensors-09-02760" position="float">
<label>Figure 5.</label>
<caption>
<p>Impact of sample size.</p></caption>
<graphic xlink:href="sensors-09-02760f5.gif"/></fig>
<fig id="f6-sensors-09-02760" position="float">
<label>Figure 6.</label>
<caption>
<p>Impact of parameter α.</p></caption>
<graphic xlink:href="sensors-09-02760f6.gif"/></fig>
<fig id="f7-sensors-09-02760" position="float">
<label>Figure 7.</label>
<caption>
<p>Comparison of efficiency.</p></caption>
<graphic xlink:href="sensors-09-02760f7.gif"/></fig>
<fig id="f8-sensors-09-02760" position="float">
<label>Figure 8.</label>
<caption>
<p>Comparison of accuracy.</p></caption>
<graphic xlink:href="sensors-09-02760f8.gif"/></fig>
<fig id="f9-sensors-09-02760" position="float">
<label>Figure 9.</label>
<caption>
<p>Speed of beacon.</p></caption>
<graphic xlink:href="sensors-09-02760f9.gif"/></fig>
<fig id="f10-sensors-09-02760" position="float">
<label>Figure 10.</label>
<caption>
<p>Number of unknown nodes.</p></caption>
<graphic xlink:href="sensors-09-02760f10.gif"/></fig>
<fig id="f11-sensors-09-02760" position="float">
<label>Figure 11.</label>
<caption>
<p>Impact of Irregularity.</p></caption>
<graphic xlink:href="sensors-09-02760f11.gif"/></fig>
<table-wrap id="t1-sensors-09-02760" position="float">
<label>Table 1</label>
<caption>
<p>Predefined adjustment tables for N.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="bottom"><bold>ID</bold></th>
<th align="center" valign="bottom"><bold>Time</bold></th>
<th align="center" valign="bottom"><bold>N</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">50</td></tr>
<tr>
<td align="center" valign="top">2</td>
<td align="center" valign="top">2,000</td>
<td align="center" valign="top">20</td></tr></tbody></table></table-wrap>
<table-wrap id="t2-sensors-09-02760" position="float">
<label>Table 2</label>
<caption>
<p>Predefined adjustment tables for α.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="bottom"><bold>ID</bold></th>
<th align="center" valign="bottom"><bold>Time</bold></th>
<th align="center" valign="bottom"><bold>Alpha</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">1</td>
<td align="center" valign="top">0</td>
<td align="center" valign="top">0.1</td></tr>
<tr>
<td align="center" valign="top">2</td>
<td align="center" valign="top">1,500</td>
<td align="center" valign="top">0.01</td></tr></tbody></table></table-wrap></sec></back></article>
