<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!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" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Built Environ.</journal-id>
<journal-title>Frontiers in Built Environment</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Built Environ.</abbrev-journal-title>
<issn pub-type="epub">2297-3362</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fbuil.2017.00065</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Built Environment</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>A Framework for Occupancy Tracking in a Building <italic>via</italic> Structural Dynamics Sensing of Footstep Vibrations</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Poston</surname> <given-names>Jeffrey D.</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="cor1">&#x0002A;</xref>
<uri xlink:href="http://frontiersin.org/people/u/390626"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Buehrer</surname> <given-names>R. Michael</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Tarazaga</surname> <given-names>Pablo A.</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://frontiersin.org/people/u/446777"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Wireless&#x00040;VT, Electrical and Computer Engineering Department, Virginia Tech</institution>, <addr-line>Blacksburg, VA</addr-line>, <country>United States</country></aff>
<aff id="aff2"><sup>2</sup><institution>VT-SIL, Mechanical Engineering Department, Virginia Tech</institution>, <addr-line>Blacksburg, VA</addr-line>, <country>United States</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Hae Young Noh, Carnegie Mellon University, United States</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Donghyeon Ryu, New Mexico Institute of Mining and Technology, United States; Hongki Jo, University of Arizona, United States; Pei Zhang, Carnegie Mellon University, United States</p></fn>
<corresp content-type="corresp" id="cor1">&#x0002A;Correspondence: Jeffrey D. Poston, <email>poston&#x00040;vt.edu</email></corresp>
<fn fn-type="other" id="fn001"><p>Specialty section: This article was submitted to Structural Sensing, a section of the journal Frontiers in Built Environment</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>06</day>
<month>11</month>
<year>2017</year>
</pub-date>
<pub-date pub-type="collection">
<year>2017</year>
</pub-date><volume>3</volume>
<elocation-id>65</elocation-id>
<history>
<date date-type="received">
<day>11</day>
<month>04</month>
<year>2017</year>
</date>
<date date-type="accepted">
<day>11</day>
<month>10</month>
<year>2017</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2017 Poston, Buehrer and Tarazaga.</copyright-statement>
<copyright-year>2017</copyright-year>
<copyright-holder>Poston, Buehrer and Tarazaga</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>Counting the number of occupants in building areas over time&#x02014;occupancy tracking&#x02014;provides valuable information for responding to emergencies, optimizing thermal conditions or managing personnel. This capability is distinct from tracking individual building occupants as they move within a building, has lower complexity than conventional tracking algorithms require, and avoids privacy concerns that tracking individuals may pose. The approach proposed here is a novel combination of data analytics applied to measurements from a building&#x02019;s structural dynamics sensors (e.g., accelerometers or geophones). Specifically, measurements of footstep-generated structural waves provide evidence of occupancy in a building area. These footstep vibrations can be distinguished from other vibrations, and, once identified, the footsteps can be located. These locations, in turn, form the starting point of estimating occupancy in an area. In order to provide a meaningful occupancy count, however, it is first necessary to associate discrete footsteps with individuals. The proposed framework incorporates a tractable algorithm for this association task. The proposed algorithms operate online, updating occupancy count over time as new footsteps are detected. Experiments with measurements from a public building illustrate the operation of the proposed framework. This approach offers an advantage over others based on conventional technologies by avoiding the cost of a separate sensor system devoted to occupancy tracking.</p>
</abstract>
<kwd-group>
<kwd>smart building</kwd>
<kwd>structural dynamics</kwd>
<kwd>occupancy</kwd>
<kwd>tracking</kwd>
<kwd>vibration</kwd>
</kwd-group>
<counts>
<fig-count count="12"/>
<table-count count="3"/>
<equation-count count="5"/>
<ref-count count="58"/>
<page-count count="14"/>
<word-count count="11185"/>
</counts>
</article-meta>
</front>
<body>
<sec id="S1" sec-type="introduction">
<label>1</label> <title>Introduction</title>
<sec id="S1-1">
<label>1.1</label> <title>Research Motivation</title>
<p>A building&#x02019;s structural dynamics instrumentation holds the potential to provide a new awareness about building occupants: <italic>occupancy tracking</italic>, counting the number of occupants in building areas over time. Recently, several research groups reported that this kind of instrumentation, namely, accelerometer or geophone sensors, could detect footstep-generated structural waves produced by building occupants (Dobbler et al., <xref ref-type="bibr" rid="B14">2014</xref>; Hamilton et al., <xref ref-type="bibr" rid="B24">2014</xref>; Pan et al., <xref ref-type="bibr" rid="B42">2017</xref>). This understanding enabled a number of independent approaches to locating occupants by means of their footstep vibrations [e.g., Bahroun et al. (<xref ref-type="bibr" rid="B2">2014</xref>), Pan et al. (<xref ref-type="bibr" rid="B40">2014</xref>), Mirshekari et al. (<xref ref-type="bibr" rid="B35">2016</xref>), Poston et al. (<xref ref-type="bibr" rid="B44">2017</xref>)]. Furthermore, extracting features from the footstep measurements and applying the features to statistical models of human gait shows promise for distinguishing among individuals by their characteristic gait (Pan et al., <xref ref-type="bibr" rid="B41">2015</xref>) or determining gender (Bales et al., <xref ref-type="bibr" rid="B3">2016</xref>).</p>
<p>With footstep-based localization as a starting point, this paper proposes an algorithmic framework for occupancy tracking. This is valuable information for several applications. Clearly, this occupancy tracking would be vital to public safety agencies responding to an emergency in the building. Also, this information enables occupancy-based heating and cooling (Erickson et al., <xref ref-type="bibr" rid="B16">2009</xref>; Goyal et al., <xref ref-type="bibr" rid="B20">2013</xref>; Zhang et al., <xref ref-type="bibr" rid="B58">2013</xref>), a technology that could provide more cost effective thermal control than existing practice. More generally, occupancy tracking could augment current technology for personnel management and building security.</p>
</sec>
<sec id="S1-2">
<label>1.2</label> <title>Related Work</title>
<p>The survey in Teixeira et al. (<xref ref-type="bibr" rid="B50">2010</xref>) documents a number of systems that could count the number of occupants in an area. A great many of these rely on wireless technologies for wide sensing coverage in a building. Other technologies (e.g., floor-based pressure switch or gage, ultrasonic, pyroelectric/infrared, etc.) typically require greater sensor densities than wireless. In some wireless system designs occupants need to carry a device with the requiste technology. The references cited within Gu et al. (<xref ref-type="bibr" rid="B22">2009</xref>) provide examples of this kind of system. These device-oriented systems offer a means to locate individuals and then occupancy counting is a byproduct, but this approach does pose a burden on the occupant of carrying a specific device. Other designs (e.g, Woyach et al. (<xref ref-type="bibr" rid="B55">2006</xref>), Xu et al. (<xref ref-type="bibr" rid="B56">2013</xref>), Zeng et al. (<xref ref-type="bibr" rid="B57">2016</xref>)) free the occupant from this burden, because the system deduces occupancy by observing how a person&#x02019;s body influences radio wave propagation between the system&#x02019;s radio transmitters and receivers. In practice, this latter method requires a meticulous survey within the building of how an object at a given location changes radio wave propagation. Detecting, counting, and tracking persons by computer vision techniques is a well-established technology (Sarkar et al., <xref ref-type="bibr" rid="B46">2005</xref>; Teixeira et al., <xref ref-type="bibr" rid="B51">2009</xref>; Lu et al., <xref ref-type="bibr" rid="B34">2014</xref>). Given the state-of-the-art in facial recognition, however, this camera-based technology does pose troubling privacy concerns.</p>
<p>Distinct from the question of selecting the sensor modality is the question of the estimation framework. In some prior work, the building occupancy is treated as a Markov chain with the states being the number of persons in each room and the transitions between states corresponding to movement between adjacent rooms. Representative examples of Markovian frameworks for occupancy include Erickson and Cerpa (<xref ref-type="bibr" rid="B15">2010</xref>) and Liao and Barooah (<xref ref-type="bibr" rid="B33">2010</xref>). As these authors acknowledge, however, formulating that kind of model requires care to avoid an enormous number of states and may need a measurement campaign in order to obtain meaningful prior distributions for the states and transitions. By contrast, if an estimation technique is meant for real time, online processing of measurements then the technique&#x02019;s computational burden requires careful consideration. Moreover, for wide applicability, it is preferable to have estimations that need little or no prior characterization of building occupancy statistical distributions.</p>
</sec>
<sec id="S1-3">
<label>1.3</label> <title>Scope and Organization</title>
<p>The aim of this research is to introduce an algorithmic framework for occupancy tracking derived from measurements of footstep-generated vibrations. The paper&#x02019;s contributions include:
<list list-type="bullet">
<list-item><p>A framework that incorporates a computationally tractable (i.e., polynomial time) method for online processing of continuous building sensor measurements.</p></list-item>
<list-item><p>A framework that accommodates a variety of footstep-based localization methods reported in the literature.</p></list-item>
<list-item><p>A demonstration of the framework with actual measurements from a public building, Goodwin Hall on the campus of Virginia Tech, originally instrumented only to study structural dynamics.</p></list-item>
</list></p>
<p>To expand a bit on the last point, given the myriad of possible sensor configurations, occupant movement patterns, footstep localization techniques, and statistical feature extraction, an individual experiment or simulation result cannot encompass all cases of these factors. What the demonstration experiments do offer is a template quantifying the interplay of footstep localization accuracy and movement pattern on the overall occupancy tracking accuracy. With this template, one can craft other experiments to evaluate the framework&#x02019;s performance in other circumstances to assess if it meets accuracy requirements of a particular application. For example, in the previously mentioned occupancy-based heating and cooling application, one study concluded &#x0201C;Results show that 20% occupancy estimation errors have negligible impact (0.28%) on HVAC energy savings estimation of 14%&#x0201D; (Erickson et al., <xref ref-type="bibr" rid="B16">2009</xref>).</p>
<p>The remainder of the paper is organized as follows: Section <xref ref-type="sec" rid="S2-4">2.1</xref> delineates the occupancy tracking capability from existing tracking algorithms and explains algorithmic complexity considerations. Section <xref ref-type="sec" rid="S2-5">2.2</xref> describes the process of detecting footsteps and distinguishing them from other vibration-generating events in a building. Section <xref ref-type="sec" rid="S2-6">2.3</xref> explains the algorithm for associating detected footsteps with the proper individuals in a construct known as a <italic>track</italic>. Section <xref ref-type="sec" rid="S2-7">2.4</xref> then shows how to determine from these tracks the occupancy over time in one or more regions of a building. Then, in Section <xref ref-type="sec" rid="S3">3</xref>, the paper turns to a set of experiments demonstrating operation of the framework with actual measurements from a public building, Goodwin Hall on the campus of Virginia Tech. After reviewing some background for this experimental work (Section <xref ref-type="sec" rid="S3-8">3.1</xref>), Section <xref ref-type="sec" rid="S3-9">3.2</xref> documents the sensor configuration and the means for establishing ground truth in the experiments. Then, Section <xref ref-type="sec" rid="S3-10">3.3</xref> describes the specific scenarios for building occupant movement and choice of system parameters for the demonstration experiments Section <xref ref-type="sec" rid="S3-11">3.4</xref> discusses the results. Finally, the paper closes with Section <xref ref-type="sec" rid="S4">4</xref> commenting on the limitations of this work and potential enhancements to the framework to overcome some limitations.</p>
</sec>
</sec>
<sec id="S2" sec-type="methods">
<label>2</label> <title>Methodology</title>
<sec id="S2-4">
<label>2.1</label> <title>Occupancy Tracking versus Tracking Occupants</title>
<p>There are important distinctions between occupancy tracking, the focus of this paper&#x02019;s proposed framework, and tracking occupants. If the latter capability were implemented one could, in principle, query the estimated locations of each tracked individual and tally at regular time intervals all persons within a region of interest to generate occupancy reports. Tracking each occupant, however, has the burden of maintaining state estimates (e.g., position, velocity) for each of them even when, for example, they stop moving to sit at a desk. Nonetheless, it is worthwhile to review some prior literature on this <italic>multitarget tracking</italic> problem studied for radar and sonar systems [e.g., Bar-Shalom and Tse (<xref ref-type="bibr" rid="B8">1975</xref>), Reid (<xref ref-type="bibr" rid="B45">1979</xref>), Fortmann et al. (<xref ref-type="bibr" rid="B18">1983</xref>), Bar-Shalom and Fortmann (<xref ref-type="bibr" rid="B7">1988</xref>), Bar-Shalom (<xref ref-type="bibr" rid="B5">1990</xref>, <xref ref-type="bibr" rid="B6">1992</xref>), Blackman and Popoli (<xref ref-type="bibr" rid="B10">1999</xref>), Bar-Shalom and Blair (<xref ref-type="bibr" rid="B4">2000</xref>)] due to common aspects of the two problems. A sequence of radar or sonar detections associated with a particular object (target) enable estimation of the object&#x02019;s trajectory by techniques such as Kalman filtering (Kalman, <xref ref-type="bibr" rid="B30">1960</xref>) or particle filtering (Gordon et al., <xref ref-type="bibr" rid="B19">1993</xref>). The resulting sequence of state estimates is known as a <italic>track</italic>. In order for this track to be meaningful, the detections must have been assigned to the correct object. One approach known as joint probabilistic data association (JPDA) (Fortmann et al., <xref ref-type="bibr" rid="B18">1983</xref>) aims to find a match by drawing from optimization techniques developed for the <italic>assignment problem</italic> (Kuhn, <xref ref-type="bibr" rid="B32">1955</xref>) in operations research. There are two fundamental issues with JPDA for analyzing building occupants. First, JPDA relies on a fixed, known number of tracks. Second, it performs the matching at one instant; thus, it can only be locally optimal at that point in time. Another approach that does account for the time history of detections is the multiple hypothesis test (MHT) (Reid, <xref ref-type="bibr" rid="B45">1979</xref>). At the time of each new detection MHT evaluates a set of hypotheses over the entire set totaling <italic>N<sub>T</sub></italic> detections to date. The hypotheses for the new detection include: it is a false alarm, it belongs to track &#x00023;1, &#x00023;2,&#x02009;&#x02026;&#x02009;,&#x02009;<italic>N<sub>T</sub></italic>. This approach offers optimality in a maximum likelihood sense; however, it does pose complexity concerns. The need to consider an ever-growing set of hypotheses over all time history produces an exponental growth in computation.</p>
<p>Instead of seeking a jointly optimal solution, this paper&#x02019;s aim is to identify assignments that are at least sequentially optimal. The step-by-step nature of a person&#x02019;s walking gait lends itself to a sequential formulation. For the problem of finding the most likely sequence of events the algorithmic strategy known as <italic>dynamic programming</italic> (Bellman, <xref ref-type="bibr" rid="B9">1957</xref>) finds a best fit by decomposing the global search into a series of tractable subproblems, and this strategy can accommodate cases where the input is corrupted by measurement error. Furthermore, this class of optimization offers polynomial time algorithms. Many fields of study produced dynamic programming algorithms. A few examples include genetics where sequence alignment algorithms (Needleman and Wunsch, <xref ref-type="bibr" rid="B38">1970</xref>; Smith and Waterman, <xref ref-type="bibr" rid="B48">1981</xref>) match gene sequences, speech processing where the dynamic time warping algorithm (Velichko and Zagoruyko, <xref ref-type="bibr" rid="B52">1970</xref>) assists with word recognition and digital communications where the Viterbi algorithm (Viterbi, <xref ref-type="bibr" rid="B53">1967</xref>) decodes information sent with error correcting codes. For this paper a modified form of the Viterbi algorithm and, in particular, its <italic>trellis data structure</italic> (Forney, <xref ref-type="bibr" rid="B17">1973</xref>) provides the framework for organizing footsteps into per person trajectories.</p>
<p>The overall process of converting raw measurements from a building&#x02019;s structural dynamics instrumentation into occupancy tracking estimates consists of three major stages. As illustrated in Figure <xref ref-type="fig" rid="F1">1</xref> these stages correspond to the organization of the processing algorithms into three modules.</p>
<fig position="float" id="F1">
<label>Figure 1</label>
<caption><p>The overall process for converting measurements from vibration sensors to occupancy estimates. The module names on left correspond to the three major processing steps as explained in Sections <xref ref-type="sec" rid="S2-5">2.2</xref>&#x02013;<xref ref-type="sec" rid="S2-7">2.4</xref> in greater detail.</p></caption>
<graphic xlink:href="fbuil-03-00065-g001.tif"/>
</fig>
<p>First, the <monospace>Footstep Event Detection Module</monospace> (Section <xref ref-type="sec" rid="S2-5">2.2</xref>) examines vibrations observed in the building structure for evidence of a footstep, and when one is detected the module reports the footstep&#x02019;s time and location. Second, the sequence of detected footsteps becomes input for the <monospace>Footstep Track Identification Module</monospace> (Section <xref ref-type="sec" rid="S2-6">2.3</xref>) that finds the most appropriate partitioning of footsteps into per person groupings. Due to the complexity of this module, there are pseudocode listings for each major algorithm, collected at the end of the paper with the figures. Third, using the identified tracks as input the <monospace>Footstep Track Evaluation Module</monospace> (Section <xref ref-type="sec" rid="S2-7">2.4</xref>) determines entry and exit of persons from a region of interest and thereby obtains the occupancy tracking results.</p>
</sec>
<sec id="S2-5">
<label>2.2</label> <title>Footstep Event Detection Module</title>
<p>In the course of conducting the experimental work for this research, the authors observed that a wide range of events in a building could generate impulsive vibrations qualitatively similar to footsteps. Observed examples included items knocked off a desk, objects dropped by a person, and, especially prevalent, doors being closed. Although there are footstep-specific detectors capable of distinguishing these events from footsteps, it is helpful to have a simple, initial test to screen out events that cannot be from footsteps so that the footstep detector is not overwhelmed by irrelevant data. This practical issue was not fully addressed in the cited prior work (Bahroun et al., <xref ref-type="bibr" rid="B2">2014</xref>; Pan et al., <xref ref-type="bibr" rid="B40">2014</xref>; Mirshekari et al., <xref ref-type="bibr" rid="B35">2016</xref>; Poston et al., <xref ref-type="bibr" rid="B44">2017</xref>) on footstep localization. In fact, the technique proposed in Bahroun et al. (<xref ref-type="bibr" rid="B2">2014</xref>) relies exclusively on the magnitude of a sensor signal exceeding some given threshold and, consequently, is incapable of distinguishing footsteps from other impulsive, vibration-generating events of similar magnitude.</p>
<p>An expedient, first stage screening method is to compute the energy of the vibration signals and then to check if the duration of an event exceeding an energy threshold, &#x003B3;<sub>Energy</sub>, has a plausible time duration for a footstep. Figure <xref ref-type="fig" rid="F2">2</xref> shows the differences that occur in the duration of footsteps and one of the most prevalent sources of impulsive vibrations indoors, doors being closed. This plot comes from averaging a dozen measurements of Goodwin Hall accelerometers (PCB Piezotronics, Inc., model 352B). Figure <xref ref-type="fig" rid="F2">2</xref> shows the accumulation of event energy observed by the sensors in millisecond increments. The footstep reaches the 90% of its total energy after a duration of 28&#x02009;ms, whereas the door closing event takes 370&#x02009;ms to reach 90%. This result is for hard soled shoes. For soft soled shoes the result is a somewhat longer duration (&#x0007E;100&#x02009;ms) as previously noted in Mirshekari et al. (<xref ref-type="bibr" rid="B35">2016</xref>) and Poston et al. (<xref ref-type="bibr" rid="B44">2017</xref>) and would benefit from a separate screening check. A well-known result is that when a signal is modeled as a Gaussian random variable then the summation of a total of &#x003BD; power samples produces an energy estimate that is a Chi-Square random variable, <inline-formula><mml:math id="M1"><mml:msubsup><mml:mrow><mml:mn>&#x003C7;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003BD;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo class="MathClass-punc">,</mml:mo></mml:math></inline-formula> with &#x003BD; degrees of freedom. The Chi-Square probability density function, <inline-formula><mml:math id="M2"><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003C7;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003BD;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula>, is defined in terms of the Gamma function, &#x00393;(<italic>z</italic>), as
<disp-formula id="E1"><label>(1)</label><mml:math id="M3"><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003C7;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003BD;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mfrac><mml:mrow><mml:msup><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mfrac><mml:mrow><mml:mn>&#x003BD;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mfrac><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003BD;</mml:mi><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mn>&#x00393;</mml:mn><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>&#x003BD;</mml:mi><mml:mn>2</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>x</mml:mi><mml:mo class="MathClass-rel">&#x02265;</mml:mo><mml:mn>0</mml:mn></mml:math></disp-formula>
and <inline-formula><mml:math id="M4"><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003C7;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003BD;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> for <italic>x</italic>&#x02009;&#x0003C;&#x02009;0; the Gamma function definition is <inline-formula><mml:math id="M5"><mml:mn>&#x00393;</mml:mn><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x0221E;</mml:mo></mml:mrow></mml:msubsup><mml:mtext>&#x02009;</mml:mtext><mml:msup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mi>u</mml:mi></mml:mrow></mml:msup><mml:mi mathvariant="italic">du</mml:mi></mml:math></inline-formula>. The energy detector&#x02019;s performance in terms of the probability of false alarm, <italic>P<sub>FA</sub></italic>, and probability of detection, <italic>P<sub>D</sub></italic>, given the sensor&#x02019;s noise power, <inline-formula><mml:math id="M6"><mml:msubsup><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, that can be documented at system installantion, the incoming signal power, <inline-formula><mml:math id="M7"><mml:msubsup><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>S</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula>, and a designed detection threshold, &#x003B3;<sub>Energy</sub>, is (Kay, <xref ref-type="bibr" rid="B31">1998</xref>):
<disp-formula id="E2"><label>(2a)</label><mml:math id="M8"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">FA</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mi>Q</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003C7;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003BD;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msub><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003B3;</mml:mn></mml:mrow><mml:mrow><mml:mtext>Energy</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced><mml:mspace width="0.3em" class="thinspace"/><mml:mspace width="0.3em" class="thinspace"/><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E3"><label>(2b)</label><mml:math id="M9"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>D</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd class="align-even"><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msub><mml:mrow><mml:mi>Q</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003C7;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003BD;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msub><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mn>&#x003B3;</mml:mn></mml:mrow><mml:mrow><mml:mtext>Energy</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>S</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
and <inline-formula><mml:math id="M10"><mml:msub><mml:mrow><mml:mi>Q</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003C7;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003BD;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msubsup><mml:mrow><mml:mo class="MathClass-op">&#x0222B;</mml:mo></mml:mrow><mml:mrow><mml:mn>&#x003B1;</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-rel">&#x0221E;</mml:mo></mml:mrow></mml:msubsup><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003C7;</mml:mn></mml:mrow><mml:mrow><mml:mn>&#x003BD;</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mrow></mml:msub><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mi mathvariant="italic">du</mml:mi></mml:math></inline-formula>. Two short examples illustrate how these performance relations guide the design of an energy detector screening test. The first example is from a conservative viewpoint of managing false alarms. If, in the absence of any actual footsteps, it is tolerable to have a false alarm on average once per 5&#x02009;min then, given the case of 28-ms test periods, that means one false alarm in 1.07&#x02009;&#x000D7;&#x02009;10<sup>4</sup> tests is tolerable, suggesting a false alarm specification of <italic>P<sub>FA</sub></italic>&#x02009;&#x0003D;&#x02009;10<sup>&#x02212;4</sup>. An energy detector satisfies the specification with a threshold of <inline-formula><mml:math id="M11"><mml:msub><mml:mrow><mml:mn>&#x003B3;</mml:mn></mml:mrow><mml:mrow><mml:mtext>Energy</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>2</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>3</mml:mn><mml:mi>&#x003BD;</mml:mi><mml:msubsup><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> from the relation in equation (<xref ref-type="disp-formula" rid="E2">2a</xref>), &#x003BD;&#x02009;&#x0003D;&#x02009;28. With this design <italic>P<sub>D</sub></italic>&#x02009;&#x02265;&#x02009;0.8 for a signal to noise ratio (SNR) of 3&#x02009;dB or larger. The second example is from the viewpoint maintaining a high probability of detection of an event that might be a footstep. From the relation in equation (<xref ref-type="disp-formula" rid="E2">2b</xref>) with <inline-formula><mml:math id="M12"><mml:msub><mml:mrow><mml:mn>&#x003B3;</mml:mn></mml:mrow><mml:mrow><mml:mtext>Energy</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>35</mml:mn><mml:mi>&#x003BD;</mml:mi><mml:msubsup><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> and a SNR of 3&#x02009;dB or larger, the detector has <italic>P<sub>D</sub></italic>&#x02009;&#x0003E;&#x02009;0.99 under a relaxation to <italic>P<sub>FA</sub></italic>&#x02009;&#x0003D;&#x02009;10<sup>&#x02212;1</sup>.</p>
<fig position="float" id="F2">
<label>Figure 2</label>
<caption><p>Comparison of the cumulative distribution of energy over time for footsteps (left, solid red curve) and doors being closed (right, solid blue curve). The dashed vertical red line at 28&#x02009;ms shows where the footstep energy reaches its 90th percentile of its total energy and the dashed vertical blue line at 370&#x02009;ms shows where the door closing event energy reaches its 90th percentile.</p></caption>
<graphic xlink:href="fbuil-03-00065-g002.tif"/>
</fig>
<p>Of course, there are many kinds of vibration-generating events in buildings, and energy duration alone would be insufficient for footstep identification. When vibration signals do pass this preliminary check then a footstep detector inspects the signals more carefully by means of, for example, a matched filter test as explained in Poston et al. (<xref ref-type="bibr" rid="B44">2017</xref>) or some other feature statistics (e.g., Pan et al. (<xref ref-type="bibr" rid="B40">2014</xref>), Mirshekari et al. (<xref ref-type="bibr" rid="B35">2016</xref>)). This footstep detector test has its own formulation of detection criteria and has performance characteristics in terms of <italic>P<sub>FA</sub></italic> and <italic>P<sub>D</sub></italic> that are distinct from the energy detector.</p>
<p>It is known (e.g., Pan et al. (<xref ref-type="bibr" rid="B40">2014</xref>), Poston et al. (<xref ref-type="bibr" rid="B44">2017</xref>)) that the footstep detector statistics have exponentially decaying energy as range between footstep to sensor increases linearly. Hence, the possiblity of two or more footsteps happening simultaneously and causing an ambiguous detection is only a relevant concern for when they are in range of being detected by common set of sensors. In other words, the total number of building occupants is not the source of concern; instead, it is the number occupants in sustained proximity to one another. The operating assumption of this paper is that at the final output of this module each detection corresponds to exactly one footstep. In dense, moving crowds, however, making that assumption may be inappropriate. Later, Section <xref ref-type="sec" rid="S4">4</xref> revisits this concern and discusses possible remedies.</p>
<p>Once a single footstep has been detected then it can be located using existing methods (e.g., Poston et al. (<xref ref-type="bibr" rid="B44">2017</xref>)). A located footstep also receives a <italic>grid cell</italic> annotation consistent with the footstep&#x02019;s location on the building floor plan. Figure <xref ref-type="fig" rid="F3">3</xref> shows how a building floor can be partitioned into a set of disjoint grid cells <inline-formula><mml:math id="M13"><mml:mi mathvariant="script">G</mml:mi><mml:mtext>&#x02009;</mml:mtext><mml:mo class="MathClass-punc">:</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mfenced separators="" open="{" close="}"><mml:mrow><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mi>J</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:math></inline-formula> with each grid cell small enough to only contain one person at the time of a footstep. For example, the first footstep location, <italic>x</italic><sub>1</sub>, (leftmost in Figure <xref ref-type="fig" rid="F3">3</xref>) goes into grid cell <italic>g</italic><sub>2</sub>, the next, <italic>x</italic><sub>2</sub> (in the upper left doorway) goes into <italic>g</italic><sub>5</sub> and so forth. As explained in the next section, it is useful to consider these grid cells as states of the trellis.</p>
<fig position="float" id="F3">
<label>Figure 3</label>
<caption><p>Example portion of a building floor plan partitioned into grid cells labeled <italic>g</italic><sub>1</sub>, <italic>g</italic><sub>2</sub>,&#x02009;&#x02026;&#x02009;,&#x02009;<italic>g</italic><sub>23</sub>. The symbols <italic>x</italic><sub>1</sub>, <italic>x</italic><sub>2</sub>,&#x02009;&#x02026;&#x02009;,&#x02009;<italic>x</italic><sub>7</sub> mark the reported locations of detected footsteps.</p></caption>
<graphic xlink:href="fbuil-03-00065-g003.tif"/>
</fig>
<p>To summarize, the output of this module is a sequence of footstep event records. Each record contains the attributes of the detection time, <italic>t</italic>, the estimated location, <inline-formula><mml:math id="M14"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mtext mathvariant="bold">x</mml:mtext></mml:mrow><mml:mo class="MathClass-op">&#x0005E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>F</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, and the location&#x02019;s corresponding grid cell, <italic>g</italic>. For the remainder of this paper when it is necessary to refer to a particular attribute (e.g., time <italic>t</italic>) of a specific record (e.g., the <italic>m</italic><sub>th</sub> detection) then the notation is <monospace>f</monospace> [<italic>m</italic>].<monospace>t</monospace> for this value.</p>
</sec>
<sec id="S2-6">
<label>2.3</label> <title>Footstep Track Identification Module</title>
<p>This module partitions footstep event records into per person groupings known as <italic>tracks</italic>, &#x1D4AF;, each of which contains a unique TrackID and a set of footsteps, <inline-formula><mml:math id="M15"><mml:msub><mml:mrow><mml:mi mathvariant="script">T</mml:mi></mml:mrow><mml:mrow><mml:mi>F</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, assigned to the track. Figure <xref ref-type="fig" rid="F4">4</xref> provides an overview of this module&#x02019;s processing. The computations for the partitioning rely on a data structure known as a <italic>trellis</italic>. The trellis structure has an array with rows corresponding to each possible grid cell and columns corresponding to distinct time ranges. Furthermore, the trellis has <italic>branches</italic> interconnecting some adjacent array elements. These branches correspond to probabilities of transitioning from a location at a given time to another location at a later time. Readers familiar with the workings of the Viterbi algorithm (Viterbi, <xref ref-type="bibr" rid="B53">1967</xref>) will recognize some similarities between that algorithm and this module&#x02019;s processing; however, there are important differences, thus motivating a full description of this module&#x02019;s operation. In particular, here calculations advance at an <italic>event-driven pace</italic> as footstep events are detected, not on a uniform time step basis as is customary for the Viterbi algorithm.</p>
<fig position="float" id="F4">
<label>Figure 4</label>
<caption><p>Overview of the <monospace>Footstep Track Identification Module</monospace> processing. The processing stages annotated to the right with named algorithms have detailed pseudocode listed in Algorithms <xref ref-type="table" rid="T1">1</xref>&#x02013;<xref ref-type="table" rid="T3">3</xref>.</p></caption>
<graphic xlink:href="fbuil-03-00065-g004.tif"/>
</fig>
<table-wrap position="float" id="T1">
<label>Algorithm 1</label>
<caption><p>FindTrellisStart.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left">1:</td>
<td align="left"><bold>function</bold> FINDTRELLISSTART</td>
</tr>
<tr>
<td align="left">2:</td>
<td align="left">&#x02003;Inputs: Either {<monospace>f</monospace>[<italic>m</italic>],&#x02009;&#x02026;&#x02009;,&#x02009;<monospace>f</monospace>[<italic>m</italic>&#x02009;&#x0002B;&#x02009;<italic>M</italic>&#x02009;&#x02212;&#x02009;1]} or <inline-formula><mml:math id="M16"><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>A</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>S</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:mfenced></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">3:</td>
<td align="left">&#x02003;Constants: <italic>T</italic><sub>StepMin</sub>, <italic>T</italic><sub>StepMax</sub></td>
</tr>
<tr>
<td align="left">4:</td>
<td align="left">&#x02003;<bold>if</bold> {<monospace>f</monospace>[<italic>m</italic>],&#x02009;&#x02026;&#x02009;,&#x02009;<monospace>f</monospace>[<italic>m</italic>&#x02009;&#x0002B;&#x02009;<italic>M</italic>&#x02009;&#x02212;&#x02009;1]} given <bold>then</bold>&#x02003;&#x02003;&#x02003; &#x025B9; First pass over event batch</td>
</tr>
<tr>
<td align="left">5:</td>
<td align="left">&#x02003;&#x02003;&#x1D49E;<sub><italic>A</italic></sub> &#x02190;{<monospace>f</monospace>[<italic>m</italic>],&#x02009;&#x02026;&#x02009;,&#x02009;<monospace>f</monospace>[<italic>m</italic>&#x02009;&#x0002B;&#x02009;<italic>M</italic>&#x02009;&#x02212;&#x02009;1]}</td>
</tr>
<tr>
<td align="left">6:</td>
<td align="left">&#x02003;&#x02003;<inline-formula><mml:math id="M17"><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>S</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:mi>&#x02205;</mml:mi></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">7:</td>
<td align="left">&#x02003;&#x02003;<italic>i</italic> &#x02190;<italic>m</italic></td>
</tr>
<tr>
<td align="left">8:</td>
<td align="left">&#x02003;<bold>else</bold> <inline-formula><mml:math id="M18"><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>A</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>S</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:mfenced></mml:math></inline-formula> given&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x025B9; All additional passes over event batch</td>
</tr>
<tr>
<td align="left">9:</td>
<td align="left">&#x02003;&#x02003;<inline-formula><mml:math id="M19"><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:munder accentunder="true"><mml:mrow><mml:mtext>argmin</mml:mtext></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:munder><mml:mfenced separators="" open="{" close="}"><mml:mrow><mml:mtext>f</mml:mtext><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mtext>&#x02009;</mml:mtext><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>A</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">10:</td>
<td align="left">&#x02003;<bold>end if</bold></td>
</tr>
<tr>
<td align="left">11:</td>
<td align="left">&#x02003;<italic>t</italic><sub>Begin</sub>&#x02009;&#x0003D;&#x02009;<monospace>f</monospace>[<italic>i</italic>].<monospace>t</monospace></td>
</tr>
<tr>
<td align="left">12:</td>
<td align="left">&#x02003;<bold>while</bold> <inline-formula><mml:math id="M20"><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-rel">&#x02264;</mml:mo><mml:mi>M</mml:mi><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow><mml:mo class="MathClass-bin">&#x02227;</mml:mo><mml:mtext>f</mml:mtext><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo><mml:mtext>t</mml:mtext><mml:mo class="MathClass-rel">&#x02209;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mtext>Begin</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mtext>StepMin</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mtext>Begin</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mtext>StepMax</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:math></inline-formula> <bold>do</bold></td>
</tr>
<tr>
<td align="left">13:</td>
<td align="left">&#x02003;&#x02003;Move <monospace>f</monospace>[<italic>i</italic>&#x02009;&#x0002B;&#x02009;1] from &#x1D49E;<sub><italic>A</italic></sub> to <inline-formula><mml:math id="M21"><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>S</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">14:</td>
<td align="left">&#x02003;&#x02003;<italic>i</italic> &#x02190;<italic>i</italic>&#x02009;&#x0002B;&#x02009;1</td>
</tr>
<tr>
<td align="left">15:</td>
<td align="left">&#x02003;&#x02003;<inline-formula><mml:math id="M22"><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mtext>Begin</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula>&#x02009;&#x0003D;&#x02009;<monospace>f</monospace>[<italic>i</italic>].<monospace>t</monospace></td>
</tr>
<tr>
<td align="left">16:</td>
<td align="left">&#x02003;<bold>end while</bold></td>
</tr>
<tr>
<td align="left">17:</td>
<td align="left">&#x02003;<bold>return</bold>: <inline-formula><mml:math id="M23"><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>A</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>S</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, <italic>i</italic></td>
</tr>
<tr>
<td align="left">18:</td>
<td align="left"><bold>end function</bold></td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap position="float" id="T2">
<label>Algorithm 2</label>
<caption><p>Calculate Footstep Trellis in Forward Phase.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left">1:</td>
<td align="left"><bold>function</bold> TRELLISFORWARD &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">2:</td>
<td align="left">&#x02003;Inputs: <inline-formula><mml:math id="M24"><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>A</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mi mathvariant="script">G</mml:mi></mml:math></inline-formula>, <italic>i</italic> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">3:</td>
<td align="left">&#x02003;Constants: <inline-formula><mml:math id="M25"><mml:msub><mml:mrow><mml:mn>&#x003B3;</mml:mn></mml:mrow><mml:mrow><mml:mtext>CostMax</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mtext>StepMin</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mtext>StepMax</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">4:</td>
<td align="left">&#x02003;<italic>k</italic> &#x02190;1 &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">5:</td>
<td align="left">&#x02003;<inline-formula><mml:math id="M26"><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula> if <italic>j</italic>&#x02009;&#x0003D;&#x02009;<italic>i</italic> else &#x0221E;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">6:</td>
<td align="left">&#x02003;<inline-formula><mml:math id="M27"><mml:msubsup><mml:mrow><mml:mn>&#x003B2;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula> &#x02190;<italic>i</italic> if <italic>j</italic>&#x02009;&#x0003D;&#x02009;<italic>i</italic> else &#x02205;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">7:</td>
<td align="left">&#x02003;<monospace>continue_forward</monospace> &#x02190;TRUE &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">8:</td>
<td align="left">&#x02003;<bold>while</bold> <monospace>continue_forward</monospace> <bold>do</bold> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">9:</td>
<td align="left">&#x02003;&#x02003;<inline-formula><mml:math id="M28"><mml:msub><mml:mrow><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:mtext>f</mml:mtext><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:munder accentunder="true"><mml:mrow><mml:mtext>arg</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:munder><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003C;</mml:mo><mml:mo class="MathClass-rel">&#x0221E;</mml:mo></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow></mml:math></inline-formula> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">10:</td>
<td align="left">&#x02003;&#x02003;<bold>if</bold> {<monospace>f</monospace>}<sub><italic>k</italic></sub>&#x02009;&#x0003D;&#x02009;&#x02205;<bold>then</bold>&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">11:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<italic>K</italic> &#x02190;<italic>k</italic> &#x02212;1 &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">12:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<monospace>continue_forward</monospace> &#x02190;FALSE &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">13:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<bold>return:</bold> &#x003B2;, {<monospace>f</monospace>}<sub>1</sub>, &#x02026;, {<monospace>f</monospace>}<sub>K</sub>, &#x003A0;, <italic>K</italic> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">14:</td>
<td align="left">&#x02003;&#x02003;<bold>end if</bold> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">15:</td>
<td align="left">&#x02003;&#x02003;<inline-formula><mml:math id="M29"><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mtext>Begin</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:munder accentunder="true"><mml:mrow><mml:mtext>min</mml:mtext></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:munder><mml:msub><mml:mrow><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:mtext>f</mml:mtext><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">.</mml:mo><mml:mtext>t</mml:mtext></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow> <mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mtext>StepMin</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">16:</td>
<td align="left">&#x02003;&#x02003;<inline-formula><mml:math id="M30"><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mtext>End</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:munder accentunder="true"><mml:mrow><mml:mtext>max</mml:mtext></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:munder><mml:msub><mml:mrow><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:mtext>f</mml:mtext><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo><mml:mtext>t</mml:mtext></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msub><mml:mrow> <mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mtext>StepMax</mml:mtext></mml:mrow></mml:msub></mml:math></inline-formula> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">17:</td>
<td align="left">&#x02003;&#x02003;<inline-formula><mml:math id="M31"><mml:msub><mml:mrow><mml:mfenced separators="" open="{" close="}"><mml:mrow><mml:mtext>f</mml:mtext></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:mtext>f</mml:mtext><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>A</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-bin">&#x02229;</mml:mo><mml:mtext>f</mml:mtext><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mtext>&#x02009;</mml:mtext><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo><mml:mtext>t</mml:mtext><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mtext>Begin</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:msub><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mtext>End</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:math></inline-formula> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">18:</td>
<td align="left">&#x02003;&#x02003;<bold>if</bold> {<monospace>f</monospace>}<inline-formula><mml:math id="M32"><mml:msub><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>&#x02009;&#x0003D;&#x02009;&#x02205;<bold>then</bold>&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">19:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<italic>K</italic> &#x02190;<italic>k</italic> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">20:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<monospace>continue_forward</monospace> &#x02190;FALSE &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">21:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<bold>return:</bold> &#x003B2;, &#x003A0;, <italic>K</italic>&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">22:</td>
<td align="left">&#x02003;&#x02003;<bold>end if</bold> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">23:</td>
<td align="left">&#x02003;&#x02003;<bold>for</bold> each <monospace>f</monospace>[&#x02009;<italic>j</italic>] &#x02208;{<monospace>f</monospace>}<inline-formula><mml:math id="M33"><mml:msub><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> <bold>do</bold> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">24:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<bold>for</bold> each <monospace>f</monospace>[<italic>i</italic>] &#x02208;{<monospace>f</monospace>}<inline-formula><mml:math id="M34"><mml:msub><mml:mrow><mml:mtext>&#x02009;</mml:mtext></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> <bold>do</bold> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">25:</td>
<td align="left">&#x02003;&#x02003;&#x02003;&#x02003;<inline-formula><mml:math id="M35"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext>log</mml:mtext><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mtext>Pr</mml:mtext><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mtext>f</mml:mtext><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mtext>&#x02009;&#x02009;</mml:mtext><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo><mml:mtext>g</mml:mtext><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mtext>f</mml:mtext><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo><mml:mtext>g</mml:mtext></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:math></inline-formula> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">26:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<bold>end for</bold> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">27:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<inline-formula><mml:math id="M36"><mml:msub><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:munder accentunder="true"><mml:mrow><mml:mtext>argmin</mml:mtext></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:munder><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow> <mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced></mml:math></inline-formula> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">28:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<inline-formula><mml:math id="M37"><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext>&#x02009;</mml:mtext><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow> <mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow> <mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">29:</td>
<td align="left">&#x02003;&#x02003;&#x02003;<inline-formula><mml:math id="M38"><mml:msubsup><mml:mrow><mml:mn>&#x003B2;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext>&#x02009;</mml:mtext><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub></mml:math></inline-formula> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">30:</td>
<td align="left">&#x02003;&#x02003;<bold>end for</bold> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">31:</td>
<td align="left">&#x02003;&#x02003;<italic>k</italic> &#x02190;<italic>k</italic>&#x02009;&#x0002B;&#x02009;1 &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">32:</td>
<td align="left">&#x02003;<bold>end while</bold> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
<tr>
<td align="left">33:</td>
<td align="left"><bold>end function</bold> &#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap position="float" id="T3">
<label>Algorithm 3</label>
<caption><p>Traceback Optimal Path In Trellis.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left">1:</td>
<td align="left"><bold>function</bold> TRELLISTRACEBACK</td>
</tr>
<tr>
<td align="left">2:</td>
<td align="left">&#x02003;Input: &#x003B2;,&#x02009;&#x0007B;<monospace>f</monospace>&#x0007D;<sub><italic>k</italic>&#x0003D;1</sub>,&#x02009;&#x02026;&#x02009;,&#x02009;&#x0007B;<monospace>f</monospace>&#x0007D;<sub><italic>k</italic>&#x0003D;<italic>K</italic></sub>,&#x02009;&#x003A0;,&#x02009;<italic>K</italic></td>
</tr>
<tr>
<td align="left">3:</td>
<td align="left">&#x02003;<inline-formula><mml:math id="M39"><mml:msub><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:munder accentunder="true"><mml:mrow><mml:mtext>argmin</mml:mtext></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:munder><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">4:</td>
<td align="left">&#x02003;<inline-formula><mml:math id="M40"><mml:msub><mml:mrow><mml:mi mathvariant="script">T</mml:mi></mml:mrow><mml:mrow><mml:mi>F</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:mtext>f</mml:mtext><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mi>K</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">5:</td>
<td align="left">&#x02003;TrackID &#x02190;GenerateNewTrackID</td>
</tr>
<tr>
<td align="left">6:</td>
<td align="left">&#x02003;<bold>for</bold> <italic>k</italic> &#x02190;<italic>K</italic> &#x02212;1, <italic>K</italic> &#x02212;2, &#x02026;, 1 <bold>do</bold></td>
</tr>
<tr>
<td align="left">7:</td>
<td align="left">&#x02003;&#x02003;<inline-formula><mml:math id="M41"><mml:msub><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:msubsup><mml:mrow><mml:mn>&#x003B2;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">8:</td>
<td align="left">&#x02003;&#x02003;<inline-formula><mml:math id="M42"><mml:msub><mml:mrow><mml:mi mathvariant="script">T</mml:mi></mml:mrow><mml:mrow><mml:mi>F</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:mtext>f</mml:mtext><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="script">T</mml:mi></mml:mrow><mml:mrow><mml:mi>F</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">9:</td>
<td align="left">&#x02003;<bold>end for</bold>&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x02003;&#x025B9;(<italic>a</italic> &#x02225; <italic>b</italic>) means concatenate lists a, b</td>
</tr>
<tr>
<td align="left">10:</td>
<td align="left">&#x02003;<inline-formula><mml:math id="M43"><mml:mi mathvariant="script">T</mml:mi><mml:mo class="MathClass-rel">&#x02190;</mml:mo><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mtext>TrackID</mml:mtext><mml:mo class="MathClass-rel">&#x02225;</mml:mo><mml:msub><mml:mrow><mml:mi mathvariant="script">T</mml:mi></mml:mrow><mml:mrow><mml:mi>F</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:math></inline-formula></td>
</tr>
<tr>
<td align="left">11:</td>
<td align="left">&#x02003;<bold>return:</bold>&#x1D4AF;</td>
</tr>
<tr>
<td align="left">12:</td>
<td align="left"><bold>end function</bold></td>
</tr>
<tr>
<td align="left"/>
</tr>
</tbody>
</table>
</table-wrap>
<p>This module processes the incoming queue of footstep events in a batch of <italic>M</italic> events at a time. These are sequential events <italic>m</italic>, <italic>m</italic>&#x02009;&#x0002B;&#x02009;1, <italic>m</italic>&#x02009;&#x0002B;&#x02009;2,&#x02009;&#x02026;&#x02009;,&#x02009;<italic>m</italic>&#x02009;&#x0002B;&#x02009;<italic>M</italic>&#x02009;&#x02212;&#x02009;1 extending in time over <italic>t</italic>&#x02009;&#x02208;&#x02009;[<italic>t</italic><sub>BatchBegin</sub>, <italic>t</italic><sub>BatchEnd</sub>] where <italic>t</italic><sub>BatchBegin</sub>&#x02009;&#x0003D;&#x02009;<monospace>f</monospace> [<italic>m</italic>].<monospace>t</monospace>, <italic>t</italic><sub>BatchEnd</sub>&#x02009;&#x0003D;&#x02009;<monospace>f</monospace> [<italic>m</italic>&#x02009;&#x0002B;&#x02009;<italic>M</italic>&#x02009;&#x02212;&#x02009;1].<monospace>t</monospace> and the value of <italic>M</italic> is the smallest of:
<list list-type="simple">
<list-item><label>(A)</label> <p>the number of events prior to an interevent time gap, <italic>T</italic><sub>gap</sub>, too large to be explained by a slow walking cadence or a missed footstep</p></list-item>
<list-item><label>(B)</label> <p>the number of events that can be accumulated while still providing a tolerable delay in reporting occupancy result.</p></list-item>
</list></p>
<p>The set of event records under consideration in the batch being processed is known as the <italic>active catalog</italic>, &#x1D49E;<sub>A</sub>. Initially, the <monospace>Footstep Track Identification Module</monospace> operates with the first batch of events (i.e., starting with <italic>m</italic>&#x02009;&#x0003D;&#x02009;1) from a building that was previously unoccupied. Thereafter, a current batch&#x02019;s processing needs to be linked to the results produced from processing the previous batch. The linkage is explained at the end of this section.</p>
<p>The first task of this module is to select relevant footstep records for generating the first track and to initialize the trellis. Setting <italic>t</italic><sub>begin</sub>&#x02009;&#x0003D;&#x02009;<monospace>f</monospace> [<italic>m</italic>].<monospace>t</monospace>, the time of the first event, this module searches for events within a time window, <italic>T</italic><sub>Win</sub>, covering the range from the fastest to slowest plausible interstep periods, resp. <italic>T</italic><sub>StepMin</sub> and <italic>T</italic><sub>StepMax</sub> as established in prior human gait research (e.g., Grieve and Gear (<xref ref-type="bibr" rid="B21">1966</xref>), Murray et al. (<xref ref-type="bibr" rid="B37">1966</xref>), Oberg et al. (<xref ref-type="bibr" rid="B39">1993</xref>), Bohannon (<xref ref-type="bibr" rid="B11">1997</xref>)). That is, the search is for the subset of events in the active catalog with <monospace>f</monospace> [<italic>i</italic>].<monospace>t</monospace>&#x02009;&#x02208;<monospace>&#x02009;</monospace>[<italic>t</italic><sub>begin</sub>&#x02009;&#x0002B;&#x02009;<italic>T</italic><sub>StepMin</sub>, <italic>t</italic><sub>begin</sub>&#x02009;&#x0002B;&#x02009;<italic>T</italic><sub>StepMax</sub>]. If this search returns no events then f [<italic>m</italic>] is removed from <inline-formula><mml:math id="M44"><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>A</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and added to the <italic>singleton catalog</italic>, &#x1D49E;<sub>S</sub>, and the search process increments to the next event until finding a non-empty set of events in the time window that follows. The pseudocode listing in <monospace>FindTrellisStart</monospace> (Algorithm <xref ref-type="table" rid="T1">1</xref>) implements this search procedure for both the first track generation as well as subsequent tracks.</p>
<p>When one or more footsteps within <italic>T</italic><sub>Win</sub> have been located then the first two trellis time stages (array columns) are initialized as follows. The first trellis stage, <italic>k</italic>&#x02009;&#x0003D;&#x02009;1, holds the first footstep identified by <monospace>FindTrellisStart</monospace> in a trellis row corresponding to the footstep&#x02019;s grid cell, <italic>g<sub>i</sub></italic>. The second trellis stage, <italic>k</italic>&#x02009;&#x0003D;&#x02009;2, holds the set of footsteps found to be within <italic>T</italic><sub>Win</sub>; each footstep assigned to a trellis row corresponding to the footstep&#x02019;s reported grid cell. Figure <xref ref-type="fig" rid="F5">5</xref> illustrates the formation of the trellis structure from grid cells and time windows.</p>
<fig position="float" id="F5">
<label>Figure 5</label>
<caption><p>Trellis generation from the example footstep records shown in Figure <xref ref-type="fig" rid="F3">3</xref>. Starting from the first footstep at location <italic>x</italic><sub>1</sub> (in grid cell <italic>g</italic><sub>2</sub>), the search for stage <italic>k</italic>&#x02009;&#x0003D;&#x02009;2 footsteps identifies {(<italic>x</italic><sub>3</sub>, <italic>g</italic><sub>7</sub>), (<italic>x</italic><sub>4</sub>, <italic>g</italic><sub>11</sub>), (<italic>x</italic><sub>5</sub>, <italic>g</italic><sub>12</sub>)} as being within the required <italic>T</italic><sub>Win</sub>. Each of these stage <italic>k</italic>&#x02009;&#x0003D;&#x02009;2 footsteps has a distinct transition likelihood from stage <italic>k</italic>&#x02009;&#x0003D;&#x02009;1, denoted Pr (<italic>g<sub>j</sub></italic>&#x0007C;<italic>g</italic><sub>2</sub>), <italic>j</italic>&#x02009;&#x0003D;&#x02009;7, 11, 12.</p></caption>
<graphic xlink:href="fbuil-03-00065-g005.tif"/>
</fig>
<p>Between adjacent trellis stages, there are trellis branches connecting the populated trellis array elements. These branches model the probability of moving from the <italic>i</italic><sub>th</sub> trellis state (grid cell) at time stage <italic>k</italic> to the <italic>j</italic><sub>th</sub> state at time stage <italic>k</italic>&#x02009;&#x0002B;&#x02009;1. Stated more explicitly, the branch models a conditional likelihood Pr (<monospace>f</monospace> [<italic>j</italic>].<monospace>g</monospace>&#x0007C;<monospace>f</monospace> [<italic>i</italic>].<monospace>g</monospace>) of the observed step size given what is known about human gait. In practice, for reasons of numerically stability, it is preferable to work with the negative log likelihood rather than the raw transition likelihood. This log scale quantity is known as a <italic>branch metric</italic> or <italic>branch cost</italic> and is <inline-formula><mml:math id="M45"><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo class="MathClass-op">&#x000AF;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext>log</mml:mtext><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mtext>Pr</mml:mtext><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mtext>f</mml:mtext><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mtext>&#x02009;</mml:mtext><mml:mi>j</mml:mi></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">.</mml:mo><mml:mtext>g&#x02009;</mml:mtext><mml:mo class="MathClass-rel">&#x0007C;</mml:mo><mml:mtext>&#x02009;f</mml:mtext><mml:mfenced separators="" open="[" close="]"><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:mfenced><mml:mo class="MathClass-punc">.</mml:mo><mml:mtext>g</mml:mtext></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:math></inline-formula>. A branch cost beyond a large threshold value, &#x003B3;<sub>CostMax</sub> means that the transition is so improbable that it can be removed from further consideration.</p>
<p>These branch costs are important, because finding the minimum cost path through the trellis equates to finding the most probable sequence of footstep events that will form a track. In order to account for these costs the trellis contains several additional parameters that are computed incrementally as the trellis progresses in time stages <italic>k</italic>&#x02009;&#x0003D;&#x02009;1, 2,&#x02009;&#x02026;&#x02009;,&#x02009;<italic>K</italic>. Every trellis state, <italic>j</italic>, at a given stage <italic>k</italic>&#x02009;&#x0002B;&#x02009;1 keeps a record of which incoming branch from the previous stage, <italic>k</italic>, has the lowest cost; this is known as the <italic>best branch</italic>, <inline-formula><mml:math id="M46"><mml:msubsup><mml:mrow><mml:mn>&#x003B2;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula>. For the purpose of initializing the trellis and advancing per stage branch calculations, unoccupied trellis states (i.e., grid cells lacking footsteps) are treated as having infinite transition costs to other states, thereby removing them from further consideration. As the trellis progresses from one time stage to the next, it also records for each trellis state, <italic>i</italic>, the accumulated costs of traversing a particular sequence of previous states and branches. This accumulated costs when one arrives at a state is known as the <italic>state cost</italic>, <inline-formula><mml:math id="M47"><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula>. The first stage has a cost of zero for the only occupied state and infinite cost otherwise. For stages thereafter the state cost computation has a recursive evaluation. At stage <italic>k</italic>&#x02009;&#x0002B;&#x02009;1 state <italic>j</italic> checks <inline-formula><mml:math id="M48"><mml:msubsup><mml:mrow><mml:mn>&#x003B2;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula> to find the best incoming branch and adds that branch cost to the previously computed state cost at the state <italic>i</italic> from which the best branch arrived. This sum is the new <inline-formula><mml:math id="M49"><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula> cost subtotal. This stage-by-stage process of finding footsteps in a viable time window, computing branch costs and updating state cost subtotals continues until no more viable trellis transitions exist or all footstep events in the current batch have been evaluated. This is known as the <italic>trellis forward traversal</italic> or forward phase of trellis calculations. The pseudocode listing in <monospace>TrellisForward</monospace> (Algorithm <xref ref-type="table" rid="T2">2</xref>) implements these stagewise trellis computations.</p>
<p>Once the forward phase is complete then a backward traversal, known as the <italic>trellis traceback</italic>, identifies the optimal path as the one with the lowest total cost. The pseudocode listing in <monospace>TrellisTraceback</monospace> (Algorithm <xref ref-type="table" rid="T3">3</xref>) extracts the path. The sequence of footstep events along this path constitute a track entered into the track catalog, &#x1D49E;<sub>T</sub>, and those footstep records then are removed from the active catalog, &#x1D49E;<sub>A</sub>.</p>
<p>At this point the <monospace>Footstep Track Identification Module</monospace> resets the trellis array, resets the trellis stage counter <italic>k</italic> to 1 and fetches the earliest available event in &#x1D49E;<sub>A</sub> whereupon the module repeats the previously described sequence of Algorithms <xref ref-type="table" rid="T1">1</xref>&#x02013;<xref ref-type="table" rid="T3">3</xref> to identify the next footstep track. After repeating this cycle until no more events remain in &#x1D49E;<sub>A</sub>, this module may need to complete one more step before relinquishing the tracks in &#x1D49E;<sub>T</sub> to the next processing module, the <monospace>Footstep Track Evaluation Module</monospace>.</p>
<p>Specifically, it is necessary to check if any tracks could extend over multiple batches of event processing and, therefore, influence the re-initialization of the <monospace>Footstep Track Identification Module</monospace> for the next batch of events. The check consists of identifying any <inline-formula><mml:math id="M50"><mml:msub><mml:mrow><mml:mi mathvariant="script">T</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub><mml:mtext>&#x02009;</mml:mtext><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mrow><mml:mi mathvariant="script">C</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> that extend to the end of the time covered by the current batch of events. The set of such tracks is <inline-formula><mml:math id="M51"><mml:mrow><mml:mo class="MathClass-open">&#x0007B;</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi mathvariant="script">T</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:mrow><mml:mo class="MathClass-close">&#x0007D;</mml:mo></mml:mrow><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>l</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>2</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:mo class="MathClass-op">&#x02026;</mml:mo><mml:mo class="MathClass-punc">,</mml:mo><mml:mi>L</mml:mi></mml:math></inline-formula>. The lowest cost state at the trellis end stage of each of these tracks is <inline-formula><mml:math id="M52"><mml:msubsup><mml:mrow><mml:mi mathvariant="script">T</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:math></inline-formula>. In preparation for the next batch of events, the first trellis stage <italic>k</italic>&#x02009;&#x0003D;&#x02009;1 has its states, <italic>g<sub>j</sub></italic>, <italic>j</italic>&#x02009;&#x0003D;&#x02009;1, 2,&#x02009;&#x02026;&#x02009;,&#x02009;<italic>J</italic>, re-initialized with normalized cost subtotals to account for these events as well as the first event in the next batch:
<disp-formula id="E4"><label>(3)</label><mml:math id="M53"><mml:mtable columnalign="left" class="align"><mml:mtr><mml:mtd columnalign="right" class="align-odd"></mml:mtd><mml:mtd class="align-even"><mml:mtext>If</mml:mtext><mml:mspace width="1em" class="quad"/><mml:mi>j</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:msubsup><mml:mrow><mml:mi mathvariant="script">T</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:msub><mml:mrow><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x022C6;</mml:mo></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mspace width="1em" class="quad"/><mml:mtext>Then</mml:mtext><mml:mspace width="1em" class="quad"/><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mtext>log</mml:mtext><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>L</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:mfrac></mml:mrow></mml:mfenced><mml:mtext>Else</mml:mtext><mml:mspace width="1em" class="quad"/><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mo class="MathClass-rel">&#x0221E;</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
<p>With this final step completed, the <monospace>Footstep Track Evaluation Module</monospace> can begin assessing what the track trajectories imply for occupancy.</p>
</sec>
<sec id="S2-7">
<label>2.4</label> <title>Footstep Track Evaluation Module</title>
<p>A change in occupancy state arises when a person enters or exits a monitored region. The task of determining this state change is akin to what is required in the location-based services technique known as <italic>geofencing</italic> (Munson and Gupta, <xref ref-type="bibr" rid="B36">2002</xref>). In this paper, the region specification is in terms of a 2D building coordinate system (e.g., the positive Y axis faces North, and the positive X axis faces East). The region consists of a polygon with a finite number of vertices, and it may be either convex or non-convex. There are existing algorithms for determining if a queried point (e.g., a footstep location) is within either a simple polygon (Shimrat, <xref ref-type="bibr" rid="B47">1962</xref>) or a non-simple (i.e., self-intersecting) polygon (Chinn and Steenrod, <xref ref-type="bibr" rid="B12">1966</xref>), and these became well-established first for computer graphics (Sutherland et al., <xref ref-type="bibr" rid="B49">1974</xref>) and later in techniques for processing queries to geospatial databases (Jacox and Samet, <xref ref-type="bibr" rid="B28">2007</xref>; Ilarri et al., <xref ref-type="bibr" rid="B26">2010</xref>). When there is only one region of interest then a point either wholly inside the polygon or on a boundary line segment is treated as being in the region. On the other hand, when floor plan is subdivided into multiple, disjoint regions to monitor there needs to be a rule for determining which one of a neighboring set of regions contains a point that falls on a boundary. A common geospatial processing convention is that a point on a South or West border of a region is treated as belonging to the region whereas a point on a North or East border belongs to a neighbor region. In formal terms, a query function, <italic>q</italic>(&#x02009;), inspects a single footstep&#x02019;s location <monospace>f</monospace>&#x02009;[<italic>m</italic>].<bold>x</bold><sub><monospace>F</monospace></sub>, to determine if it is in a monitored region, &#x0211B;,
<disp-formula id="E5"><label>(4)</label><mml:math id="M54"><mml:mtext>q</mml:mtext><mml:mfenced separators="" open="(" close=")"><mml:mrow><mml:mtext>f</mml:mtext><mml:mrow><mml:mo class="MathClass-open">[</mml:mo><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo class="MathClass-close">]</mml:mo></mml:mrow><mml:mo class="MathClass-punc">.</mml:mo><mml:msub><mml:mrow><mml:mtext mathvariant="bold">x</mml:mtext></mml:mrow><mml:mrow><mml:mtext>F</mml:mtext></mml:mrow></mml:msub><mml:mo class="MathClass-punc">,</mml:mo><mml:mi mathvariant="script">R</mml:mi></mml:mrow></mml:mfenced><mml:mo class="MathClass-rel">&#x0003D;</mml:mo><mml:mn>1</mml:mn><mml:mtext>&#x02003;if&#x02003;</mml:mtext><mml:msub><mml:mrow><mml:mtext mathvariant="bold">x</mml:mtext></mml:mrow><mml:mrow><mml:mi>F</mml:mi></mml:mrow></mml:msub><mml:mo class="MathClass-rel">&#x02208;</mml:mo><mml:mi mathvariant="script">R</mml:mi><mml:mo class="MathClass-punc">,</mml:mo><mml:mn>0</mml:mn><mml:mtext>&#x02009;otherwise</mml:mtext></mml:math></disp-formula></p>
<p>Evaluating a sequence of footsteps in a track, &#x1D4AF;<sub>l</sub>, with this function generates an output sequence of ones and zeros corresponding to a person&#x02019;s presence in or absence from the region of interest at the times of the footsteps. Moreover, evaluating the entire ensemble of tracks in the track catalog this way produces a count of the total occupancy for the region over time.</p>
</sec>
</sec>
<sec id="S3">
<label>3</label> <title>Experiments</title>
<sec id="S3-8">
<label>3.1</label> <title>Overview</title>
<p>The setting for the experimental work was Goodwin Hall on the campus of Virginia Tech, a public building containing offices, classrooms, and laboratories. In 2014, during the latter stages of construction, this building had sensor mounts welded to many steel girders for the original purpose of studying structural dynamics of the entire building. At present, there are over 200 accelerometers active on these mounts. The sensor mount design accomodates a triaxial (i.e., X, Y, Z) sensor configuration, if needed. All sensors measured in this study have a uniaxial configuration (Z axis facing the Earth) on steel girders that support a concrete floor slab; the next section provides specifications for the sensors in these experiments and their layout. Thus, these sensors are able observe footstep-generated vibrations originating from the above floor. The reader seeking additional information about the implementation of the sensor system and its integration with the building can consult (Hamilton et al., <xref ref-type="bibr" rid="B24">2014</xref>; Hamilton, <xref ref-type="bibr" rid="B23">2015</xref>).</p>
<p>Several considerations shaped the formulation of these demonstration experiments. One consideration is showing the influence that location estimation error and the building occupant movement patterns have on the framework&#x02019;s performance. Evaluating movement patterns with several levels of sustained proximity among occupants illustrates the sensitivity of occupancy estimation to correct footstep-to-track assignment. Another consideration is accounting for non-ideal behavior of detection and localization algorithms. The formulation to address these considerations is a hybrid of actual measurements of movement patterns combined with Monte Carlo simulation of detection and localization impairments. The intent here is to offer a template for others to apply to investigate specific cases of interest rather than to attempt an experimental design that encompases all variations in sensor configuration, occupant mobility, and algorithm performance. Furthermore, to show scaling characteristics beyond what the floorplan of Goodwin Hall permits for testing, an additional experiment synthesized larger, more populated scenarios by combining separate instances of test data.</p>
<p>Section <xref ref-type="sec" rid="S3-10">3.3</xref> elaborates on the specific parameter settings and system configurations selected to satisfy these considerations. All experiments were conducted in accordance with approved protocols for experiments involving human subjects (Institutional Review Board, <xref ref-type="bibr" rid="B27">2015&#x02013;2017</xref>).</p>
</sec>
<sec id="S3-9">
<label>3.2</label> <title>Sensor Configuration and Ground Truth Determination</title>
<p>Figure <xref ref-type="fig" rid="F6">6</xref> shows the test area in Goodwin Hall along with the positions of the 12 underfloor sensors. For this testing, all accelerometers were PCB Piezotronics, Inc., model 352B accelerometers with a nominal sensitivity of 1&#x02009;V/g and a frequency range from 2&#x02009;Hz to 10&#x02009;kHz (PCB Piezotronics Inc, <xref ref-type="bibr" rid="B43">2002</xref>). The sensors connect to a data acquisition system by coaxial cable installed during the building&#x02019;s construction. In these experiments, the data acquisition system [VTI Instruments model EMX-2450 (VTI Instruments, <xref ref-type="bibr" rid="B54">2014</xref>)] sampled all sensors synchronously at a rate of 32,768 samples per second with 24 bits of resolution.</p>
<fig position="float" id="F6">
<label>Figure 6</label>
<caption><p>The test area in Goodwin hall on the campus of Virginia Tech. The pairs of dashed lines (<inline-graphic xlink:href="fbuil-03-00065-i001.tif"/>) show the outlines of steel girders that have mounted sensors active in this study, and square symbols&#x02009;<inline-graphic xlink:href="fbuil-03-00065-i002.tif"/>S<sub>1</sub>,&#x02009;&#x02026;&#x02009;,&#x02009;<inline-graphic xlink:href="fbuil-03-00065-i003.tif"/>S<sub>12</sub>, mark the sensor locations on the girders.</p></caption>
<graphic xlink:href="fbuil-03-00065-g006.tif"/>
</fig>
<p>In order to provide ground truth for building occupant movement a 1-D LIDAR (Garmin model LIDAR-Lite v2, accuracy&#x02009;&#x000B1;&#x02009;0.025&#x02009;m) positioned behind an individual&#x02019;s starting point measured their movement over time. Furthermore, a precision real-time clock (Maxim Integrated DS3231, &#x000B1;2&#x02009;ppm) triggered each LIDAR measurement and simultaneously sent a synchronization pulse to a spare channel of the building&#x02019;s instrumentation system at a rate of 64&#x02009;Hz. The measurement rate of 64&#x02009;Hz limited the change in range from one sample to the next to the order of the LIDAR&#x02019;s accuracy even in the case of very brisk walking. Thus, the log of LIDAR measurements was synchronized with the building&#x02019;s accelerometer measurements, and this enabled the linking of the detection time of each footstep to the ground truth log of the individual&#x02019;s location.</p>
</sec>
<sec id="S3-10">
<label>3.3</label> <title>Demonstration Scenarios and Parameter Settings</title>
<p>The first three demonstration scenarios show several canonical motion patterns of two persons in a hallway as they walk past one another, meet and confer with one another or walk together. The scenarios are denoted the crossing scenario, the pivot scenario and the together scenario. Additionally, each scenario considered the case of two persons entering and exiting the monitored region. The choice of two persons for the first three scenarios provides a simple enough case that the influence of their movement patterns on the occupancy tracking framework can be readily understood. Additional experiment scenarios account for extensions to more populated cases as explained at the end of this section. The dimensions of the monitored region, 2&#x02009;m&#x02009;&#x000D7;&#x02009;6&#x02009;m, are believed to be small enough to serve as a lower limit on useful region size (e.g., a shared workspace) and large enough to contain multiple footsteps from each person.</p>
<p>The crossing scenario shown in Figure <xref ref-type="fig" rid="F7">7</xref> (top) has two persons start at opposite ends of a hallway and begin walking toward one another. Then, they enter the region of interest from opposite sides, pass one another and continue on their respective headings until reaching the end of the hallway. Their paths are displaced from one another by nominally 1&#x02009;m in the dimension orthogonal to the length of the hallway. The pivot scenario shown in Figure <xref ref-type="fig" rid="F7">7</xref> (middle) begins in a similar manner as the crossing scenario but without the 1&#x02009;m displacement of paths. After entering the region they each pivot 180<sup>&#x02218;</sup> and return to their respective origins. The together scenario shown in Figure <xref ref-type="fig" rid="F7">7</xref> (bottom) has two persons begin at the same end of the hallway, displaced from one another by nominally 1&#x02009;m in the dimension orthogonal to the length of the hallway. At the same starting time and at nominally the same speed they begin walking toward the opposite end of the hallway. They enter the region together, continue in the same direction, exit the region together, and maintain their heading until stopping at the end of the hallway.</p>
<fig position="float" id="F7">
<label>Figure 7</label>
<caption><p>From top to bottom the diagrams show the crossing scenario, the pivot scenario and the together scenario. Each diagram has blue arrows <inline-graphic xlink:href="fbuil-03-00065-i004.tif"/> for the ground truth of movement for each step of person &#x00023;1 and red arrows <inline-graphic xlink:href="fbuil-03-00065-i005.tif"/> for person &#x00023;2. The blue circles <inline-graphic xlink:href="fbuil-03-00065-i006.tif"/> and red squares <inline-graphic xlink:href="fbuil-03-00065-i007.tif"/> show examples of the estimated footstep locations produced by the localization algorithm in Poston et al. (<xref ref-type="bibr" rid="B44">2017</xref>) for person &#x00023;1 and &#x00023;2, respectively. The highlighted green area is the region of interest.</p></caption>
<graphic xlink:href="fbuil-03-00065-g007.tif"/>
</fig>
<p>The choice of a nominal 1&#x02009;m separation in all these scenarios stems from the hybrid approach of real experimental measurements coupled with Monte Carlo simulation of error sources. Observe that when the <monospace>Footstep Track Identification Module</monospace> operates with footstep records both the actual spatial separation of footsteps and the location estimation error combine to produce the reported interstep distance evaluated by the trellis branch cost calculation. By standarizing the nominal separation of building occupants in some way the experiment&#x02019;s Monte Carlo trials can sweep one parameter related to localization accuracy. More precisely, each experiment trial was formed as follows. Starting with the ground truth of footstep detections and localizations, a series of progressively greater localization errors was created by adding to the true (X, Y) footstep coordinates a circular Gaussian random variable having zero mean and SD, &#x003C3;<italic><sub>L</sub></italic>, in each coordinate ranging from zero to to 1&#x02009;m with increments of 0.1&#x02009;m. For each of these localization error levels there were 1,000 trials.</p>
<p>Another aspect of non-ideal localization behavior is failing to provided an estimate due to missed detections. Several factors influence the probability of detection: the attenuation of the footstep-generated structural waves from footstep origin to sensor, the sensitivity of the sensor model, the detector design, the measurement noise and any other error source.</p>
<p>The cited related work (Bahroun et al., <xref ref-type="bibr" rid="B2">2014</xref>; Mirshekari et al., <xref ref-type="bibr" rid="B35">2016</xref>; Poston et al., <xref ref-type="bibr" rid="B44">2017</xref>) studied these factors. For these specific experiments there was no difficulty in locating footsteps from the actual measurements; therefore, to account for non-ideal behavior there was an additional emulation stage to make localization fail stochastically. The emulation introduced a probability of a missed detection, <italic>P<sub>M</sub></italic>, at series of increasing levels, <inline-formula><mml:math id="M55"><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>M</mml:mi></mml:mrow></mml:msub><mml:mtext>&#x02009;</mml:mtext><mml:mo class="MathClass-punc">:</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mfenced separators="" open="{" close="}"><mml:mrow><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">,</mml:mo><mml:msup><mml:mrow><mml:mn>10</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo><mml:msup><mml:mrow><mml:mn>10</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo><mml:msup><mml:mrow><mml:mn>10</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced></mml:math></inline-formula>. Each combination of scenario, localization error level and trial received this set of <italic>P<sub>M</sub></italic> treatments.</p>
<p>As explained in Section <xref ref-type="sec" rid="S2-6">2.3</xref>, the <monospace>Footstep Track Identification Module</monospace> algorithms incorporate parameters <italic>T</italic><sub>StepMin</sub> and <italic>T</italic><sub>StepMax</sub> to account for the range of interstep periods in human gait. The parameter settings for these experiments relied on the range documented in the prior research findings of Grieve and Gear (<xref ref-type="bibr" rid="B21">1966</xref>), Murray et al. (<xref ref-type="bibr" rid="B37">1966</xref>), Oberg et al. (<xref ref-type="bibr" rid="B39">1993</xref>), and Bohannon (<xref ref-type="bibr" rid="B11">1997</xref>). Specifically, considering a step cadence from a leisurely 91 steps/minute to a very brisk 169 steps/minute established the range of interstep periods, <italic>T</italic><sub>StepMax</sub>&#x02009;&#x0003D;&#x02009;659&#x02009;ms and <italic>T</italic><sub>StepMin</sub>&#x02009;&#x0003D;&#x02009;355&#x02009;ms, respectively. The previously introduced time gap threshold, <italic>T<sub>Gap</sub></italic>, between events for terminating a search for tracks and starting a new search is <italic>T<sub>Gap</sub></italic>&#x02009;&#x0003D;&#x02009;2<italic>T</italic><sub>StepMax</sub>. The trellis branch metric calculations treated the distribution of step length as Gaussian with mean &#x003BC;<italic><sub>S</sub></italic>&#x02009;&#x0003D;&#x02009;0.75&#x02009;m and SD &#x003C3;<italic><sub>S</sub></italic>&#x02009;&#x0003D;&#x02009;0.1&#x02009;m. An additional assumption of these calculations is that for whatever footstep localization algorithm is in use, a location error bound has been quantified, and this error bound is available as an input parameter to the occupancy tracking algorithms. For the purpose of selecting the threshold for the maximum admissible trellis branch cost, &#x003B3;<sub>CostMax</sub>, the premise is that it should account for both 99% of expected step lengths as well as 99% of the location uncertanty of a <italic>pair</italic> of successive footsteps. Thus, the computation for the maximum distance was <italic>d</italic><sub>Max</sub>&#x02009;&#x0003D;&#x02009;3&#x003C3;<italic><sub>S</sub></italic>&#x02009;&#x0002B;&#x02009;6&#x003C3;<italic><sub>L</sub></italic>.</p>
<p>These experiments collected two performance metrics, the footstep-to-track misassignment error rate and the occupancy estimation root mean square error (RMSE). For the latter, there are two ways of reporting occupancy error in order to gain insight about the contribution of a subset of the framework versus the entire framework. The first type of reporting is for the case of a given, true footstep-to-track assignment. The second report is for estimated assignments of footsteps to identified tracks. The intent of reporting occupancy error in these two ways is to examine the influence of localization error alone and in conjunction with track assignment errors. Due to limitations on space for figures, the plots related to the pivot and together scenario as well as plots for cases of missed detections are in Supplementary Material to this paper. After first reviewing experimental results under the original condition, <italic>P<sub>M</sub></italic>&#x02009;&#x0003D;&#x02009;0, of no missed detections this section then turns to examining the influence of higher <italic>P<sub>M</sub></italic> levels.</p>
<p>Extending the experiments to investigate larger areas and more populated scenario despite the physical limitations of the Goodwin Hall floor plan is possible by synthesizing a new test area that combines independent replications of the existing hallway configuration and instances of test data. The enlarged area comes from <italic>n</italic>&#x02009;&#x0003D;&#x02009;1, 2,&#x02009;&#x02026;&#x02009;,&#x02009;<italic>N<sub>R</sub></italic> replications of the original hall area and sensor network as illustrated in Figure <xref ref-type="fig" rid="F8">8</xref>. The first replication has its coordinates translated South from the original hall coordinates sufficiently to avoid overlap with the original. Thereafter, for <italic>n</italic>&#x02009;&#x0003D;&#x02009;2, 3,&#x02009;&#x02026;&#x02009;,&#x02009;<italic>N<sub>R</sub></italic>, the <italic>n</italic><sub>th</sub> replication has its coordinates translated South from the (n&#x02009;&#x02212;&#x02009;1)<sub>th</sub> to avoid overlap. Then, each of the <italic>N<sub>R</sub></italic> replications receives a pair of occupants moving as in the original crossing scenario but with coordinates translated and with an independent realization of time offset and localization error. Additionally, the region for monitoring occupancy has its area increased proportionally. Thus, the density of occupants per unit area of floor plan and per unit area of the monitored region remains the same as the first three experimental scenarios. This experiment observed occupancy estimation error as the number of replications covered the range <italic>n</italic>&#x02009;&#x0003D;&#x02009;0, 1,&#x02009;&#x02026;&#x02009;,&#x02009;9 (i.e., the number of occupants was 2, 4,&#x02009;&#x02026;&#x02009;,&#x02009;20).</p>
<fig position="float" id="F8">
<label>Figure 8</label>
<caption><p>Method of generating a large floor plan by replicating the original Goodwin Hall test area <italic>N<sub>R</sub></italic> times, each replication translated South (downward on the page) first from the original and thereafter from the prior replication to avoid overlap.</p></caption>
<graphic xlink:href="fbuil-03-00065-g008.tif"/>
</fig>
</sec>
<sec id="S3-11">
<label>3.4</label> <title>Results</title>
<p>For the crossing scenario (Figures <xref ref-type="fig" rid="F9">9</xref>&#x02013;<xref ref-type="fig" rid="F11">11</xref>), the misassignment rate is negligible until the localization error term <inline-formula><mml:math id="M56"><mml:msub><mml:mrow><mml:mn>&#x003C3;</mml:mn></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow></mml:msub><mml:mi>&#x02273;</mml:mi><mml:mn>0</mml:mn><mml:mo class="MathClass-punc">.</mml:mo><mml:mn>4</mml:mn><mml:mtext> m</mml:mtext></mml:math></inline-formula>. Comparision of occupancy estimation error in this scenario for a given, true track assignment (Figure <xref ref-type="fig" rid="F10">10</xref>) and for an estimated track assignment (Figure <xref ref-type="fig" rid="F11">11</xref>) shows both grow in estimation error with increasing &#x003C3;<italic><sub>L</sub></italic>, and the estimated track results also undergo some enlargement of the error confidence interval (i.e., the 95% interval enlarges by&#x02009;&#x02248;&#x02009;1.5&#x000D7;). Thus, for this scenario the assignment error rate has a modest influence compared to the per footstep localization error.</p>
<fig position="float" id="F9">
<label>Figure 9</label>
<caption><p>The misassignment rate in the crossing scenario.</p></caption>
<graphic xlink:href="fbuil-03-00065-g009.tif"/>
</fig>
<fig position="float" id="F10">
<label>Figure 10</label>
<caption><p>The occupancy count RMSE using true footstep assignment in the crossing scenario.</p></caption>
<graphic xlink:href="fbuil-03-00065-g010.tif"/>
</fig>
<fig position="float" id="F11">
<label>Figure 11</label>
<caption><p>The occupancy count RMSE using estimated footstep assignment in the crossing scenario.</p></caption>
<graphic xlink:href="fbuil-03-00065-g011.tif"/>
</fig>
<p>In the pivot scenario (Figures S1&#x02013;S3 in Supplementary Material), the almost perfect footstep-to-track assignment performance in Figure S1 in Supplementary Material can be attributed to the effectiveness of the thesholding operation applied to the trellis branch metrics in scenarios where persons are rarely in close proximity of one another even though their footsteps occur over the same time interval. As explained in Section <xref ref-type="sec" rid="S2-6">2.3</xref>, the thresholding via &#x003B3;<sub>CostMax</sub> enables the algorithm to remove early in its processing very unlikely footstep assignments from further consideration. Consequently, the occupancy estimation results for the case of estimated track assignments (Figure S3 in Supplementary Material) is nearly identical to the case of having true track assignments (Figure S2 in Supplementary Material). This is in contrast to the previous crossing scenario that exhibited a modest growth in occupancy error with increasing assignment error.</p>
<p>In the together scenario (Figures S4&#x02013;S6 in Supplementary Material) sustained proximity of individuals to one another means that every footstep is at risk of misassignment for non-negligible localization error. Figure S4 in Supplementary Material shows that the misassignment rate reaches 50% after the onset of non-negligible localization error, because the algorithms are operating in a regime where location estimates do not offer sufficient information for distinguishing individuals, and, thus, the algorithms have an equally probable chance of making the correct assignment or not.</p>
<p>When there is a nonzero probability of missed detections, <italic>P<sub>M</sub></italic>, even a scenario containg a single person may have a poor misassignment rate but still produce accurate occupancy estimates. The reason is that a missed detection may cause premature termination of the single person&#x02019;s track and the creation of a new track for any footsteps remaining after the time of the missed detection. Consequently, in the assessment of footstep-to-track assignment errors, all assignments to the new track are, strictly speaking, incorrect. From the standpoint of occupancy count, however, this generally does not influence the overall outcome, except for the gap (i.e., delayed occupancy update) caused by the missed detection. In consideration of this factor, the remainder of this section refrains from referencing misassignment rate plots and instead examines occupancy RMSE.</p>
<p>Evaluating the scenarios at increasing levels of miss probability, <inline-formula><mml:math id="M57"><mml:msub><mml:mrow><mml:mi>P</mml:mi></mml:mrow><mml:mrow><mml:mi>M</mml:mi></mml:mrow></mml:msub><mml:mtext>&#x02009;</mml:mtext><mml:mo class="MathClass-punc">:</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mfenced separators="" open="{" close="}"><mml:mrow><mml:msup><mml:mrow><mml:mn>10</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo><mml:msup><mml:mrow><mml:mn>10</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo class="MathClass-punc">,</mml:mo><mml:msup><mml:mrow><mml:mn>10</mml:mn></mml:mrow><mml:mrow><mml:mo class="MathClass-bin">&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced></mml:math></inline-formula>, produced insignificant error growth compared to <italic>P<sub>M</sub></italic>&#x02009;&#x0003D;&#x02009;0 until reaching <italic>P<sub>M</sub></italic>&#x02009;&#x0003D;&#x02009;10<sup>&#x02212;1</sup>. At 10<sup>&#x02212;1</sup> the results in all scenarios diverged from meaningful occupancy estimates.</p>
<p>Figures S7&#x02013;S9 in Supplementary Material show the overall estimation result that relies on identified tracks. In the original results (i.e., Figures <xref ref-type="fig" rid="F9">9</xref>&#x02013;<xref ref-type="fig" rid="F11">11</xref>; Figures S1&#x02013;S6 in Supplementary Material) where <italic>P<sub>M</sub></italic>&#x02009;&#x0003D;&#x02009;0 the occupancy estimates had a small accuracy penalty when footstep-to-track assignment was estimated from identified tracks as compared to the case of given, true footstep-to-track assignment. By contrast, at <italic>P<sub>M</sub></italic>&#x02009;&#x0003D;&#x02009;10<sup>&#x02212;1</sup> when the true footstep-to-track assignment is known the occupancy estimation performance remains nearly on par with the <italic>P<sub>M</sub></italic>&#x02009;&#x0003D;&#x02009;0 case as shown in Figures S10&#x02013;S12 in Supplementary Material, respectively. This rate of missed detections sufficiently disrupts the track formation process to thwart accurate occupancy estimation.</p>
<p>The experiments formed by replicating the original hall area and occupants by <italic>n</italic>&#x02009;&#x0003D;&#x02009;0, 1,&#x02009;&#x02026;&#x02009;,&#x02009;9 times (i.e., with 2, 4,&#x02009;&#x02026;&#x02009;,&#x02009;20 occupants) produced the occupancy estimation error reported in Figure <xref ref-type="fig" rid="F12">12</xref>. This plot shows error normalized by the number of occupants to illustrate scaling characteristics. The consistency at large scale comes from the trellis path calculations explained in Section <xref ref-type="sec" rid="S2-6">2.3</xref>. Recall that the <monospace>Footstep Track Identification Module</monospace> evaluates the suitability of a sequence of footstep records for belonging to a track by means of the accumlated trellis state cost, <inline-formula><mml:math id="M58"><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula>. Thus, even though there are more tracks (occupants) to consider, it remains unlikely under constant occupancy density per unit area that an incorrect set of footsteps will <italic>repeatedly</italic> produce a set of best branch metrics, <inline-formula><mml:math id="M59"><mml:msubsup><mml:mrow><mml:mn>&#x003B2;</mml:mn></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo class="MathClass-bin">&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula>, necessary to produce the best state cost, <inline-formula><mml:math id="M60"><mml:msubsup><mml:mrow><mml:mn>&#x003A0;</mml:mn></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo class="MathClass-open">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo class="MathClass-close">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula>. Provided the localization error remains modest with respect to the region size and step size the track identification and subsequent occupancy estimatation will maintain their accuracy.</p>
<fig position="float" id="F12">
<label>Figure 12</label>
<caption><p>Occupancy estimation RMSE per person as a function of increasing numbers of occupants on a proportionally sized floor plan and monitored region as explained in Section <xref ref-type="sec" rid="S3-10">3.3</xref>. This normalized occupancy error is shown for several levels of localization error, &#x003C3;<italic><sub>L</sub></italic>.</p></caption>
<graphic xlink:href="fbuil-03-00065-g012.tif"/>
</fig>
</sec>
</sec>
<sec id="S4" sec-type="discussion">
<label>4</label> <title>Discussion</title>
<p>This paper proposed an algorithmic framework that, when coupled with an accurate footstep localization technique, provides occupancy tracking in a building; however, there are several limitations to the framework as proposed. As noted in Section <xref ref-type="sec" rid="S2-5">2.2</xref>, the creation of the footstep event record relies on each footstep detection corresponding to exactly one footstep. In the case of a dense, moving crowd, however, there is the possibility that two or more simultaneous footsteps would be detected by the same set of adjacent sensors. If this happens then the footstep event detection module would need to unmix the superimposed signals to extract each footstep event. This footstep signal unmixing is a version of the blind source separation task often addressed in other settings with an independent components analysis (ICA) technique (Jutten and Herault, <xref ref-type="bibr" rid="B29">1991</xref>; Comon, <xref ref-type="bibr" rid="B13">1994</xref>; Hyvarinen and Oja, <xref ref-type="bibr" rid="B25">2000</xref>). In this setting, however, the task is not trivial. The original formulation of ICA relies on the mixture being an <italic>additive</italic> mixture of component signals. By contrast, footstep-generated structural waves can undergo reflection or refraction at structural boundaries and even within a single concrete floor slab can undergo dispersion. Thus, a more accurate formulation is treating multiple, simultaneous footsteps as a <italic>convolutive</italic> mixture of component signals. Furthermore, without prior measurement or modeling of the building&#x02019;s transfer function to footstep excitation at various locations, the unmixing task carries the responsibilities of <italic>semi-blind deconvolution</italic> too. For these reasons, devising a general purpose algorithm for separating simultaneous footstep signals appears to be a substantial undertaking and has been deferred for future study.</p>
<p>These experiments indicate that track formation algorithms rely on the probability of missing a detection being no worse than 10<sup>&#x02212;1</sup>. Furthermore, in the event of missing footsteps for either the case of a small region or the case of steps that are parallel to a boundary but straddle it, the system may be incapable of accurate occupancy counting. To overcome this limitation the framework could draw from auxiliary information from other sensor systems to corroborate the estimated number of persons entering or exiting the building region.</p>
<p>In some cases a building&#x02019;s sensor configuration and a selected footstep localization method may not provide sufficient accuracy for an intended application. In addition to obvious remedies such as improving sensor density there may be an algorithmic remedy requiring no additional sensor infrastructure. As noted in the introduction, prior literature (Pan et al., <xref ref-type="bibr" rid="B41">2015</xref>; Bales et al., <xref ref-type="bibr" rid="B3">2016</xref>) extracted statistical features from footstep measurements that enable discrimination among individuals beyond the location and time parameters considered in this paper. Additionally, if the algorithms undertake actual tracking of occupants&#x02014;not just occupancy tracking&#x02014;the accuracy has the potential to improve, because the algorithms incorporate all information from a set of observed footsteps and per person state variables (e.g., velocity). Incorporating this additional information, of course, entails greater complexity but is a promising direction for future research.</p>
<p>Public safety applications motivate another direction for extending this framework. For example, it is well known that current technology for locating cellular emergency calls made from indoor locations is inaccurate due to the interaction of the cellular radio waves with the building&#x02019;s structure, but this location information can be crucial in an emergency. In Abdelbar and Buehrer (<xref ref-type="bibr" rid="B1">2016</xref>), the authors propose a fusion technique for integrating the cellular caller&#x02019;s information with a more accurate location estimate provided by some building-provided indoor localization service. In some emergencies the caller may not be the one in need of assistance, there may be many callers or the incident may be widespread. Accordingly, the public safety first responders would benefit from a fusion of the occupancy tracking information too.</p>
</sec>
<sec id="S5">
<title>Ethics Statement</title>
<p>This study was carried out in accordance with the recommendations of &#x0201C;VT IRB 15-681: Human Subject Gait Measurement (2015&#x02013;2016),&#x0201D; Virginia Tech Institutional Review Board (VT IRB) with written informed consent from all subjects. All subjects gave written informed consent in accordance with the Declaration of Helsinki. The protocol was approved by the VT IRB.</p>
</sec>
<sec id="S6">
<title>Author Contributions</title>
<p>JP, RB, and PT have all contributed to the conception or design of the work, have revised the work critically, have given final approval of the version to be published, and have agreed to be accountable for all aspects of the work in ensuring that questions related to the accuracy or integrity of any part of the work are appropriately investigated and resolved.</p>
</sec>
<sec id="S7">
<title>Conflict of Interest Statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest. The reviewer, PZ, and handling editor declared their shared affiliation.</p>
</sec>
</body>
<back>
<ack>
<p>The authors appreciate the comments from the anonymous reviewers on improving the paper. The experimental work was conducted in Virginia Tech&#x02019;s Smart Infrastructure Laboratory (VT-SIL), a laboratory with equipment provided by Dytran Instruments, Inc., Oregano Systems, PCB Piezotronics, Inc., VTI Instruments and VT-SIL patrons.</p>
</ack>
<fn-group>
<fn fn-type="financial-disclosure">
<p><bold>Funding.</bold> This research was supported in part by the Virginia Tech Institute for Critical Technology and Applied Science (ICTAS).</p></fn>
</fn-group>
<sec id="S8" sec-type="supplementary-material">
<title>Supplementary Material</title>
<p>The Supplementary Material for this article can be found online at <uri xlink:href="http://www.frontiersin.org/article/10.3389/fbuil.2017.00065/full&#x00023;supplementary-material">http://www.frontiersin.org/article/10.3389/fbuil.2017.00065/full&#x00023;supplementary-material</uri>.</p>
<supplementary-material xlink:href="image_1.pdf" id="SM1" mimetype="applicationn/pdf" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</sec>
<ref-list>
<title>References</title>
<ref id="B1"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Abdelbar</surname> <given-names>M.</given-names></name> <name><surname>Buehrer</surname> <given-names>R. M.</given-names></name></person-group> (<year>2016</year>). &#x0201C;<article-title>Improving cellular positioning indoors through trajectory matching</article-title>,&#x0201D; in <conf-name>2016 IEEE/ION Position, Location and Navigation Symposium (PLANS)</conf-name>, <conf-loc>Savannah, GA</conf-loc>, <fpage>219</fpage>&#x02013;<lpage>224</lpage>.</citation></ref>
<ref id="B2"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bahroun</surname> <given-names>R.</given-names></name> <name><surname>Michel</surname> <given-names>O.</given-names></name> <name><surname>Frassati</surname> <given-names>F.</given-names></name> <name><surname>Carmona</surname> <given-names>M.</given-names></name> <name><surname>Lacoume</surname> <given-names>J.</given-names></name></person-group> (<year>2014</year>). <article-title>New algorithm for footstep localization using seismic sensors in an indoor environment</article-title>. <source>J. Sound Vibr.</source> <volume>333</volume>, <fpage>1046</fpage>&#x02013;<lpage>1066</lpage>.<pub-id pub-id-type="doi">10.1016/j.jsv.2013.10.004</pub-id></citation></ref>
<ref id="B3"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bales</surname> <given-names>D.</given-names></name> <name><surname>Tarazaga</surname> <given-names>P.</given-names></name> <name><surname>Kasarda</surname> <given-names>M.</given-names></name> <name><surname>Batra</surname> <given-names>D.</given-names></name> <name><surname>Woolard</surname> <given-names>A.</given-names></name> <name><surname>Poston</surname> <given-names>J. D.</given-names></name> <etal/></person-group> (<year>2016</year>). <article-title>Gender classification of walkers via underfloor accelerometer measurements</article-title>. <source>IEEE Internet Things J.</source> <volume>3</volume>, <fpage>1259</fpage>&#x02013;<lpage>1266</lpage>.<pub-id pub-id-type="doi">10.1109/JIOT.2016.2582723</pub-id></citation></ref>
<ref id="B4"><citation citation-type="book"><person-group person-group-type="editor"><name><surname>Bar-Shalom</surname> <given-names>Y.</given-names></name> <name><surname>Blair</surname> <given-names>W. D.</given-names></name></person-group> (eds) (<year>2000</year>). <source>Multitarget-Multisensor Tracking: Applications and Advances</source>, Vol. <volume>3</volume>. <publisher-loc>Boston</publisher-loc>: <publisher-name>Artech House</publisher-name>.</citation></ref>
<ref id="B5"><citation citation-type="book"><person-group person-group-type="editor"><name><surname>Bar-Shalom</surname> <given-names>Y.</given-names></name></person-group> (ed.) (<year>1990</year>). <source>Multitarget-Multisensor Tracking: Applications and Advances</source>, Vol. <volume>1</volume>. <publisher-loc>Boston</publisher-loc>: <publisher-name>Artech House</publisher-name>.</citation></ref>
<ref id="B6"><citation citation-type="book"><person-group person-group-type="editor"><name><surname>Bar-Shalom</surname> <given-names>Y.</given-names></name></person-group> (ed.) (<year>1992</year>). <source>Multitarget-Multisensor Tracking: Applications and Advances</source>, Vol. <volume>2</volume>. <publisher-loc>Boston</publisher-loc>: <publisher-name>Artech House</publisher-name>.</citation></ref>
<ref id="B7"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Bar-Shalom</surname> <given-names>Y.</given-names></name> <name><surname>Fortmann</surname> <given-names>T. E.</given-names></name></person-group> (<year>1988</year>). <source>Tracking and Data Association</source>, Vol. <volume>179</volume>. <publisher-loc>Boston</publisher-loc>: <publisher-name>Academic Press</publisher-name>.</citation></ref>
<ref id="B8"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bar-Shalom</surname> <given-names>Y.</given-names></name> <name><surname>Tse</surname> <given-names>E.</given-names></name></person-group> (<year>1975</year>). <article-title>Tracking in a cluttered environment with probabilistic data association</article-title>. <source>Automatica</source> <volume>11</volume>, <fpage>451</fpage>&#x02013;<lpage>460</lpage>.<pub-id pub-id-type="doi">10.1016/0005-1098(75)90021-7</pub-id></citation></ref>
<ref id="B9"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Bellman</surname> <given-names>R.</given-names></name></person-group> (<year>1957</year>). <source>Dynamic Programming</source>. <publisher-loc>Princeton, NJ</publisher-loc>: <publisher-name>Princeton University Press</publisher-name>.</citation></ref>
<ref id="B10"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Blackman</surname> <given-names>S. S.</given-names></name> <name><surname>Popoli</surname> <given-names>R.</given-names></name></person-group> (<year>1999</year>). <source>Design and Analysis of Modern Tracking Systems</source>. <publisher-loc>Boston</publisher-loc>: <publisher-name>Artech House</publisher-name>.</citation></ref>
<ref id="B11"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bohannon</surname> <given-names>R. W.</given-names></name></person-group> (<year>1997</year>). <article-title>Comfortable and maximum walking speed of adults aged 20-79 years: refernce values and determinants</article-title>. <source>Age Ageing</source> <volume>26</volume>, <fpage>15</fpage>&#x02013;<lpage>19</lpage>.<pub-id pub-id-type="doi">10.1093/ageing/26.1.15</pub-id></citation></ref>
<ref id="B12"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Chinn</surname> <given-names>W. G.</given-names></name> <name><surname>Steenrod</surname> <given-names>N. E.</given-names></name></person-group> (<year>1966</year>). <source>First Concepts of Topology: The Geometry of Mappings of Segments, Curves, Circles, and Disks</source>. <publisher-loc>Washington, DC</publisher-loc>: <publisher-name>Mathematical Association of America</publisher-name>.</citation></ref>
<ref id="B13"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Comon</surname> <given-names>P.</given-names></name></person-group> (<year>1994</year>). <article-title>Independent component analysis, a new concept?</article-title> <source>Sig. Process.</source> <volume>36</volume>, <fpage>287</fpage>&#x02013;<lpage>314</lpage>.<pub-id pub-id-type="doi">10.1016/0165-1684(94)90029-9</pub-id></citation></ref>
<ref id="B14"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Dobbler</surname> <given-names>K.</given-names></name> <name><surname>Fiser</surname> <given-names>M.</given-names></name> <name><surname>Fellner</surname> <given-names>M.</given-names></name> <name><surname>Rettenbacher</surname> <given-names>B.</given-names></name></person-group> (<year>2014</year>). &#x0201C;<article-title>Vibroacoustic monitoring: techniques for human gait analysis in smart homes</article-title>,&#x0201D; in <source>Ambient Assisted Living</source>, eds <person-group person-group-type="editor"><name><surname>Wichert</surname> <given-names>R.</given-names></name> <name><surname>Klausing</surname> <given-names>H.</given-names></name></person-group> (<publisher-loc>Berlin</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>47</fpage>&#x02013;<lpage>58</lpage>.</citation></ref>
<ref id="B15"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Erickson</surname> <given-names>V. L.</given-names></name> <name><surname>Cerpa</surname> <given-names>A. E.</given-names></name></person-group> (<year>2010</year>). &#x0201C;<article-title>Occupancy based demand response HVAC control strategy</article-title>,&#x0201D; in <conf-name>Proceedings of the 2nd ACM Workshop on Embedded Sensing Systems for Energy-Efficiency in Building</conf-name>, <conf-loc>Zurich</conf-loc>, <fpage>7</fpage>&#x02013;<lpage>12</lpage>.</citation></ref>
<ref id="B16"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Erickson</surname> <given-names>V. L.</given-names></name> <name><surname>Lin</surname> <given-names>Y.</given-names></name> <name><surname>Kamthe</surname> <given-names>A.</given-names></name> <name><surname>Brahme</surname> <given-names>R.</given-names></name> <name><surname>Surana</surname> <given-names>A.</given-names></name> <name><surname>Cerpa</surname> <given-names>A. E.</given-names></name> <etal/></person-group> (<year>2009</year>). &#x0201C;<article-title>Energy efficient building environment control strategies using real-time occupancy measurements</article-title>,&#x0201D; in <conf-name>Proceedings of the First ACM Workshop on Embedded Sensing Systems for Energy-Efficiency in Buildings</conf-name>, <conf-loc>Berkeley, CA</conf-loc>, <fpage>19</fpage>&#x02013;<lpage>24</lpage>.</citation></ref>
<ref id="B17"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Forney</surname> <given-names>G. D.</given-names> <suffix>Jr.</suffix></name></person-group> (<year>1973</year>). &#x0201C;<article-title>The Viterbi algorithm</article-title>&#x0201D;, <conf-name>Proceedings of the IEEE</conf-name>, <volume>61</volume>, <fpage>268</fpage>&#x02013;<lpage>278</lpage>.<pub-id pub-id-type="doi">10.1109/PROC.1973.9030</pub-id></citation></ref>
<ref id="B18"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fortmann</surname> <given-names>T. E.</given-names></name> <name><surname>Bar-Shalom</surname> <given-names>Y.</given-names></name> <name><surname>Scheffe</surname> <given-names>M.</given-names></name></person-group> (<year>1983</year>). <article-title>Sonar tracking of multiple targets using joint probabilistic data association</article-title>. <source>IEEE J. Oceanic Eng.</source> <volume>OE-8</volume>, <fpage>173</fpage>&#x02013;<lpage>184</lpage>.<pub-id pub-id-type="doi">10.1109/JOE.1983.1145560</pub-id></citation></ref>
<ref id="B19"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Gordon</surname> <given-names>N. J.</given-names></name> <name><surname>Salmond</surname> <given-names>D. J.</given-names></name> <name><surname>Smith</surname> <given-names>A. F. M.</given-names></name></person-group> (<year>1993</year>). &#x0201C;<article-title>Novel approach to nonlinear/non-Gaussian Bayesian state estimation</article-title>&#x0201D;, <conf-name>Proceedings of the IEEE</conf-name>, <volume>140</volume>, <fpage>107</fpage>&#x02013;<lpage>113</lpage>.<pub-id pub-id-type="doi">10.1049/ip-f-2.1993.0015</pub-id></citation></ref>
<ref id="B20"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Goyal</surname> <given-names>S.</given-names></name> <name><surname>Ingley</surname> <given-names>H. A.</given-names></name> <name><surname>Barooah</surname> <given-names>P.</given-names></name></person-group> (<year>2013</year>). <article-title>Occupancy-based zone-climate control for energy-efficient buildings: complexity vs. performance</article-title>. <source>Appl. Energy</source> <volume>106</volume>, <fpage>209</fpage>&#x02013;<lpage>221</lpage>.<pub-id pub-id-type="doi">10.1016/j.apenergy.2013.01.039</pub-id></citation></ref>
<ref id="B21"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Grieve</surname> <given-names>D. W.</given-names></name> <name><surname>Gear</surname> <given-names>R. J.</given-names></name></person-group> (<year>1966</year>). <article-title>The relationships between length of stride, step frequency, time of swing and speed of walking for children and adults</article-title>. <source>Ergonomics</source> <volume>9</volume>, <fpage>379</fpage>&#x02013;<lpage>399</lpage>.<pub-id pub-id-type="doi">10.1080/00140136608964399</pub-id></citation></ref>
<ref id="B22"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gu</surname> <given-names>Y.</given-names></name> <name><surname>Lo</surname> <given-names>A.</given-names></name> <name><surname>Niemegeers</surname> <given-names>I.</given-names></name></person-group> (<year>2009</year>). <article-title>A survey of indoor positioning systems for wireless personal networks</article-title>. <source>IEEE Commun. Surv. Tutorials</source> <volume>11</volume>, <fpage>13</fpage>&#x02013;<lpage>32</lpage>.<pub-id pub-id-type="doi">10.1109/SURV.2009.090103</pub-id></citation></ref>
<ref id="B23"><citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Hamilton</surname> <given-names>J. M.</given-names></name></person-group> (<year>2015</year>). <source>Design and Implementation of Vibration Data Acquisition in Goodwin Hall for Structural Health Monitoring, Human Motion, and Energy Harvesting Research</source>. Masters Thesis, <publisher-loc>Virginia Tech</publisher-loc>.</citation></ref>
<ref id="B24"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Hamilton</surname> <given-names>J. M.</given-names></name> <name><surname>Joyce</surname> <given-names>B. S.</given-names></name> <name><surname>Kasarda</surname> <given-names>M. E.</given-names></name> <name><surname>Tarazaga</surname> <given-names>P. A.</given-names></name></person-group> (<year>2014</year>). &#x0201C;<article-title>Characterization of human motion through floor vibration</article-title>,&#x0201D; in <source>Dynamics of Civil Structures</source>, Vol. <volume>4</volume>, ed. <person-group person-group-type="editor"><name><surname>Catbas</surname> <given-names>F. N.</given-names></name></person-group> (<publisher-loc>Orlando, FL</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>163</fpage>&#x02013;<lpage>170</lpage>.</citation></ref>
<ref id="B25"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hyvarinen</surname> <given-names>A.</given-names></name> <name><surname>Oja</surname> <given-names>E.</given-names></name></person-group> (<year>2000</year>). <article-title>Independent component analysis: algorithms and applications</article-title>. <source>Neural Net.</source> <volume>13</volume>, <fpage>411</fpage>&#x02013;<lpage>430</lpage>.<pub-id pub-id-type="doi">10.1016/S0893-6080(00)00026-5</pub-id></citation></ref>
<ref id="B26"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Ilarri</surname> <given-names>S.</given-names></name> <name><surname>Mena</surname> <given-names>E.</given-names></name> <name><surname>Illarramendi</surname> <given-names>A.</given-names></name></person-group> (<year>2010</year>). <article-title>Location-dependent query processing: where we are and where we are heading</article-title>. <source>ACM Comput. Surv.</source> <volume>42</volume>, <fpage>1</fpage>&#x02013;<lpage>73</lpage>.<pub-id pub-id-type="doi">10.1145/1670679.1670682</pub-id></citation></ref>
<ref id="B27"><citation citation-type="book"><collab>Institutional Review Board</collab>. (<year>2015&#x02013;2017</year>). <source>Virginia Tech IRB 15-681: Human Subject Gait Measurement</source>. <publisher-loc>Blacksburg, VA</publisher-loc>: <publisher-name>Virginia Tech</publisher-name>.</citation></ref>
<ref id="B28"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jacox</surname> <given-names>E. H.</given-names></name> <name><surname>Samet</surname> <given-names>H.</given-names></name></person-group> (<year>2007</year>). <article-title>Spatial join techniques</article-title>. <source>ACM Trans. Database Syst.</source> <volume>32</volume>, <fpage>1</fpage>&#x02013;<lpage>44</lpage>.<pub-id pub-id-type="doi">10.1145/1206049.1206056</pub-id></citation></ref>
<ref id="B29"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jutten</surname> <given-names>C.</given-names></name> <name><surname>Herault</surname> <given-names>J.</given-names></name></person-group> (<year>1991</year>). <article-title>Blind separation of sources, part I: an adaptive algorithm based on neuromimetic architecture</article-title>. <source>Sig. Process.</source> <volume>24</volume>, <fpage>1</fpage>&#x02013;<lpage>10</lpage>.<pub-id pub-id-type="doi">10.1016/0165-1684(91)90079-X</pub-id></citation></ref>
<ref id="B30"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kalman</surname> <given-names>R. E.</given-names></name></person-group> (<year>1960</year>). <article-title>A new approach to linear filtering and prediction problems</article-title>. <source>Trans. ASME</source> <volume>82</volume>, <fpage>35</fpage>&#x02013;<lpage>45</lpage>.<pub-id pub-id-type="doi">10.1115/1.3662552</pub-id></citation></ref>
<ref id="B31"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Kay</surname> <given-names>S. M.</given-names></name></person-group> (<year>1998</year>). <source>Fundamentals of Statistical Signal Processing: Detection Theory</source>. <publisher-loc>Englewood Cliffs, NJ</publisher-loc>: <publisher-name>Prentice-Hall PTR</publisher-name>.</citation></ref>
<ref id="B32"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kuhn</surname> <given-names>H. W.</given-names></name></person-group> (<year>1955</year>). <article-title>The Hungarian method for the assignment problem</article-title>. <source>Naval Res. Logist. Q.</source> <volume>2</volume>, <fpage>83</fpage>&#x02013;<lpage>97</lpage>.<pub-id pub-id-type="doi">10.1002/nav.3800020109</pub-id></citation></ref>
<ref id="B33"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Liao</surname> <given-names>C.</given-names></name> <name><surname>Barooah</surname> <given-names>P.</given-names></name></person-group> (<year>2010</year>). &#x0201C;<article-title>An integrated approach to occupancy modeling and estimation in commercial buildings</article-title>,&#x0201D; in <conf-name>American Control Conference (ACC), 2010</conf-name>, <conf-loc>Baltimore, MD</conf-loc>, <fpage>3130</fpage>&#x02013;<lpage>3135</lpage>.</citation></ref>
<ref id="B34"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lu</surname> <given-names>J.</given-names></name> <name><surname>Wang</surname> <given-names>G.</given-names></name> <name><surname>Moulin</surname> <given-names>P.</given-names></name></person-group> (<year>2014</year>). <article-title>Human identity and gender recognition from gait sequences with arbitrary walking directions</article-title>. <source>IEEE Trans. Inf. Forensic. Sec.</source> <volume>9</volume>, <fpage>51</fpage>&#x02013;<lpage>61</lpage>.<pub-id pub-id-type="doi">10.1109/TIFS.2013.2291969</pub-id></citation></ref>
<ref id="B35"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Mirshekari</surname> <given-names>M.</given-names></name> <name><surname>Pan</surname> <given-names>S.</given-names></name> <name><surname>Zhang</surname> <given-names>P.</given-names></name> <name><surname>Noh</surname> <given-names>H. Y.</given-names></name></person-group> (<year>2016</year>). &#x0201C;<article-title>Characterizing wave propagation to improve indoor step-level person localization using floor vibration</article-title>,&#x0201D; in <source>SPIE Smart Structures and Materials&#x0002B; Nondestructive Evaluation and Health Monitoring</source> (<publisher-loc>Las Vegas, NV</publisher-loc>: <publisher-name>International Society for Optics and Photonics</publisher-name>), <fpage>980305</fpage>.</citation></ref>
<ref id="B36"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Munson</surname> <given-names>J. P.</given-names></name> <name><surname>Gupta</surname> <given-names>V. K.</given-names></name></person-group> (<year>2002</year>). &#x0201C;<article-title>Location-based notification as a general-purpose service</article-title>,&#x0201D; in <conf-name>Proceedings of the 2nd International Workshop on Mobile Commerce (ACM)</conf-name>, <conf-loc>San Diego, CA</conf-loc>, <fpage>40</fpage>&#x02013;<lpage>44</lpage>.</citation></ref>
<ref id="B37"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Murray</surname> <given-names>M. P.</given-names></name> <name><surname>Kory</surname> <given-names>R. C.</given-names></name> <name><surname>Clarkson</surname> <given-names>B. H.</given-names></name> <name><surname>Sepic</surname> <given-names>S. B.</given-names></name></person-group> (<year>1966</year>). <article-title>Comparison of free and fast speed walking patterns of normal men</article-title>. <source>Am. J. Phys. Med. Rehabil.</source> <volume>45</volume>, <fpage>8</fpage>&#x02013;<lpage>24</lpage>.<pub-id pub-id-type="doi">10.1097/00002060-196602000-00002</pub-id></citation></ref>
<ref id="B38"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Needleman</surname> <given-names>S. B.</given-names></name> <name><surname>Wunsch</surname> <given-names>C. D.</given-names></name></person-group> (<year>1970</year>). <article-title>A general method applicable to the search for similarities in the amino acid sequence of two proteins</article-title>. <source>J. Mol. Biol.</source> <volume>48</volume>, <fpage>443</fpage>&#x02013;<lpage>453</lpage>.<pub-id pub-id-type="doi">10.1016/0022-2836(70)90057-4</pub-id></citation></ref>
<ref id="B39"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Oberg</surname> <given-names>T.</given-names></name> <name><surname>Karsznia</surname> <given-names>A.</given-names></name> <name><surname>Oberg</surname> <given-names>K.</given-names></name></person-group> (<year>1993</year>). <article-title>Basic gait parameters: reference data for normal subjects, 10-79 years of age</article-title>. <source>J. Rehabil. Res. Dev.</source> <volume>30</volume>, <fpage>210</fpage>&#x02013;<lpage>223</lpage>.</citation></ref>
<ref id="B40"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Pan</surname> <given-names>S.</given-names></name> <name><surname>Bonde</surname> <given-names>A.</given-names></name> <name><surname>Jing</surname> <given-names>J.</given-names></name> <name><surname>Zhang</surname> <given-names>L.</given-names></name> <name><surname>Zhang</surname> <given-names>P.</given-names></name> <name><surname>Noh</surname> <given-names>H. Y.</given-names></name></person-group> (<year>2014</year>). &#x0201C;<article-title>BOES: building occupancy estimation system using sparse ambient vibration monitoring</article-title>,&#x0201D; in <source>SPIE</source>, <publisher-loc>Santa Fe, NM</publisher-loc>, <fpage>90611O</fpage>&#x02013;<lpage>90611O</lpage>.</citation></ref>
<ref id="B41"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Pan</surname> <given-names>S.</given-names></name> <name><surname>Wang</surname> <given-names>N.</given-names></name> <name><surname>Qian</surname> <given-names>Y.</given-names></name> <name><surname>Velibeyoglu</surname> <given-names>I.</given-names></name> <name><surname>Noh</surname> <given-names>H. Y.</given-names></name> <name><surname>Zhang</surname> <given-names>P.</given-names></name></person-group> (<year>2015</year>). &#x0201C;<article-title>Indoor person identification through footstep induced structural vibration</article-title>,&#x0201D; in <source>ACM HotMobile</source>, <publisher-loc>Santa Fe, NM</publisher-loc>, <fpage>81</fpage>&#x02013;<lpage>86</lpage>.</citation></ref>
<ref id="B42"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Pan</surname> <given-names>S.</given-names></name> <name><surname>Xu</surname> <given-names>S.</given-names></name> <name><surname>Mirshekari</surname> <given-names>M.</given-names></name> <name><surname>Zhang</surname> <given-names>P.</given-names></name> <name><surname>Noh</surname> <given-names>H. Y.</given-names></name></person-group> (<year>2017</year>). <article-title>Collaboratively adaptive vibration sensing system for high-fidelity monitoring of structural responses induced by pedestrians</article-title>. <source>Front. Built Environ.</source> <volume>3</volume>:<fpage>28</fpage>.<pub-id pub-id-type="doi">10.3389/fbuil.2017.00028</pub-id></citation></ref>
<ref id="B43"><citation citation-type="web"><collab>PCB Piezotronics Inc</collab>. (<year>2002</year>). &#x0201C;<article-title>Model 352b High resolution, ceramic shear ICP accel., 1000 mV/g, 2 to 10k Hz, 10-32</article-title>,&#x0201D; in <source>Installation and Operating Manual</source>, 10-32. Manual Number 18292, Rev. B, <publisher-loc>Depew, NY</publisher-loc>. Available at: <uri xlink:href="http://www.pcb.com/contentstore/docs/PCB_Corporate/Vibration/Products/Manuals/352B.pdf">http://www.pcb.com/contentstore/docs/PCB_Corporate/Vibration/Products/Manuals/352B.pdf</uri></citation></ref>
<ref id="B44"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Poston</surname> <given-names>J. D.</given-names></name> <name><surname>Buehrer</surname> <given-names>R. M.</given-names></name> <name><surname>Tarazaga</surname> <given-names>P. A.</given-names></name></person-group> (<year>2017</year>). <article-title>Indoor footstep localization from structural dynamics instrumentation</article-title>. <source>Mech. Syst. Sig. Process.</source> <volume>88</volume>, <fpage>224</fpage>&#x02013;<lpage>239</lpage>.<pub-id pub-id-type="doi">10.1016/j.ymssp.2016.11.023</pub-id></citation></ref>
<ref id="B45"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Reid</surname> <given-names>D. B.</given-names></name></person-group> (<year>1979</year>). <article-title>An algorithm for tracking multiple targets</article-title>. <source>IEEE Trans. Autom. Control</source> <volume>AC-24</volume>, <fpage>843</fpage>&#x02013;<lpage>854</lpage>.<pub-id pub-id-type="doi">10.1109/TAC.1979.1102177</pub-id></citation></ref>
<ref id="B46"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sarkar</surname> <given-names>S.</given-names></name> <name><surname>Phillips</surname> <given-names>P. J.</given-names></name> <name><surname>Liu</surname> <given-names>Z.</given-names></name> <name><surname>Vega</surname> <given-names>I. R.</given-names></name> <name><surname>Grother</surname> <given-names>P.</given-names></name> <name><surname>Bowyer</surname> <given-names>K. W.</given-names></name></person-group> (<year>2005</year>). <article-title>The HumanID gait challenge problem: data sets, performance, and analysis</article-title>. <source>IEEE Trans. Pattern Anal. Mach. Intell.</source> <volume>27</volume>, <fpage>162</fpage>&#x02013;<lpage>177</lpage>.<pub-id pub-id-type="doi">10.1109/TPAMI.2005.39</pub-id><pub-id pub-id-type="pmid">15688555</pub-id></citation></ref>
<ref id="B47"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shimrat</surname> <given-names>M.</given-names></name></person-group> (<year>1962</year>). <article-title>Algorithm 112: position of point relative to polygon</article-title>. <source>Commun. ACM</source> <volume>5</volume>, <fpage>434</fpage>.<pub-id pub-id-type="doi">10.1145/368637.368653</pub-id></citation></ref>
<ref id="B48"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Smith</surname> <given-names>T. F.</given-names></name> <name><surname>Waterman</surname> <given-names>M. S.</given-names></name></person-group> (<year>1981</year>). <article-title>Identification of common molecular subsequences</article-title>. <source>J. Mol. Biol.</source> <volume>147</volume>, <fpage>195</fpage>&#x02013;<lpage>197</lpage>.<pub-id pub-id-type="doi">10.1016/0022-2836(81)90087-5</pub-id></citation></ref>
<ref id="B49"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sutherland</surname> <given-names>I. E.</given-names></name> <name><surname>Sproull</surname> <given-names>R. F.</given-names></name> <name><surname>Schumacker</surname> <given-names>R. A.</given-names></name></person-group> (<year>1974</year>). <article-title>A characterization of ten hidden-surface algorithms</article-title>. <source>ACM Comput. Surv.</source> <volume>6</volume>, <fpage>1</fpage>&#x02013;<lpage>55</lpage>.<pub-id pub-id-type="doi">10.1145/356625.356626</pub-id></citation></ref>
<ref id="B50"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Teixeira</surname> <given-names>T.</given-names></name> <name><surname>Dublon</surname> <given-names>G.</given-names></name> <name><surname>Savvides</surname> <given-names>A.</given-names></name></person-group> (<year>2010</year>). <article-title>A survey of human-sensing: methods for detecting presence, count, location, track, and identity</article-title>. ENALAB Technical Report 09-2010. <publisher-loc>New Haven, CT</publisher-loc>: <publisher-name>Yale University</publisher-name>. Available at: <uri xlink:href="http://thiagot.com/papers/teixeira_techrep10_survey_of_human_sensing.pdf">http://thiagot.com/papers/teixeira_techrep10_survey_of_human_sensing.pdf</uri></citation></ref>
<ref id="B51"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Teixeira</surname> <given-names>T.</given-names></name> <name><surname>Jung</surname> <given-names>D.</given-names></name> <name><surname>Dublon</surname> <given-names>G.</given-names></name> <name><surname>Savvides</surname> <given-names>A.</given-names></name></person-group> (<year>2009</year>). &#x0201C;<article-title>PEM-ID: identifying people by gait-matching using cameras and wearable accelerometers</article-title>,&#x0201D; in <conf-name>Distributed Smart Cameras, 2009. ICDSC 2009. Third ACM/IEEE International Conference on</conf-name>, <fpage>1</fpage>&#x02013;<lpage>8</lpage>.</citation></ref>
<ref id="B52"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Velichko</surname> <given-names>V. M.</given-names></name> <name><surname>Zagoruyko</surname> <given-names>N. G.</given-names></name></person-group> (<year>1970</year>). <article-title>Automatic recognition of 200 words</article-title>. <source>Int. J. Man Mach. Stud.</source> <volume>2</volume>, <fpage>223</fpage>&#x02013;<lpage>234</lpage>.<pub-id pub-id-type="doi">10.1016/S0020-7373(70)80008-6</pub-id></citation></ref>
<ref id="B53"><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Viterbi</surname> <given-names>A.</given-names></name></person-group> (<year>1967</year>). <article-title>Error bounds for convolutional codes and an asymptotically optimum decoding algorithm</article-title>. <source>IEEE Trans. Inf. Theory</source> <volume>13</volume>, <fpage>260</fpage>&#x02013;<lpage>269</lpage>.<pub-id pub-id-type="doi">10.1109/TIT.1967.1054010</pub-id></citation></ref>
<ref id="B54"><citation citation-type="web"><collab>VTI Instruments</collab>. (<year>2014</year>). <source>EMX-4250/4251 Data Sheet</source>. <publisher-loc>Irvine, CA</publisher-loc>. Available at: <uri xlink:href="http://www.vtiinstruments.com/files/DATASHEET/EMX_4250_4251.PDF">http://www.vtiinstruments.com/files/DATASHEET/EMX_4250_4251.PDF</uri></citation></ref>
<ref id="B55"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Woyach</surname> <given-names>K.</given-names></name> <name><surname>Puccinelli</surname> <given-names>D.</given-names></name> <name><surname>Haenggi</surname> <given-names>M.</given-names></name></person-group> (<year>2006</year>). &#x0201C;<article-title>Sensorless sensing in wireless networks: implementation and measurements</article-title>,&#x0201D; in <conf-name>Modeling and Optimization in Mobile, Ad hoc and Wireless Networks, 2006 4th International Symposium on</conf-name>, <conf-loc>Boston, MA</conf-loc>, <fpage>1</fpage>&#x02013;<lpage>8</lpage>.</citation></ref>
<ref id="B56"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Xu</surname> <given-names>C.</given-names></name> <name><surname>Firner</surname> <given-names>B.</given-names></name> <name><surname>Moore</surname> <given-names>R. S.</given-names></name> <name><surname>Zhang</surname> <given-names>Y.</given-names></name> <name><surname>Trappe</surname> <given-names>W.</given-names></name> <name><surname>Howard</surname> <given-names>R.</given-names></name> <etal/></person-group> (<year>2013</year>). &#x0201C;<article-title>SCPL: Indoor device-free multi-subject counting and localization using radio signal strength</article-title>,&#x0201D; in <conf-name>Information Processing in Sensor Networks (IPSN), 2013 ACM/IEEE International Conference on</conf-name>, <conf-loc>Philadelphia, PA</conf-loc>, <fpage>79</fpage>&#x02013;<lpage>90</lpage>.</citation></ref>
<ref id="B57"><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Zeng</surname> <given-names>Y.</given-names></name> <name><surname>Pathak</surname> <given-names>P. H.</given-names></name> <name><surname>Mohapatra</surname> <given-names>P.</given-names></name></person-group> (<year>2016</year>). &#x0201C;<article-title>WiWho: Wifi-based person identification in smart spaces</article-title>,&#x0201D; in <conf-name>Proceedings of the 15th International Conference on Information Processing in Sensor Networks</conf-name>, <conf-loc>Vienna</conf-loc>, <fpage>4</fpage>.</citation></ref>
<ref id="B58"><citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>J.</given-names></name> <name><surname>Lutes</surname> <given-names>R. G.</given-names></name> <name><surname>Liu</surname> <given-names>G.</given-names></name> <name><surname>Brambley</surname> <given-names>M. R.</given-names></name></person-group> (<year>2013</year>). <source>Energy Savings for Occupancy-Based Control (OBC) of Variable-Air-Volume (VAV) Systems</source>. <publisher-loc>Richland, WA</publisher-loc>: <publisher-name>Pacific Northwest National Laboratory</publisher-name>. Vol. <volume>PNNL-22072</volume>.</citation></ref>
</ref-list>
</back>
</article>