Spatial model-aided indoor tracking Master of Science Thesis Xu. Weilin Geomatics Spatial model-aided indoor tracking Master of Science Thesis For the degree of Master of Science in Geomatics at Delft University of Technology Xu. Weilin Student number: 4246004 Email: W.Xu@student.tudelft.nl Address: Zusterlaan 252, Delft June 24, 2014 Main tutor: Ph.D.Liu Liu L.Liu-1@tudelft.nl Graduation professor: Ass.Prof.Dr.S.Zlatanova s.zlatanova@tudelft.nl Advisor: ir.Wouter Penard w.penard@cgi.com Co-reader: Ph.D.Pirouz Nourian P.Nourian@tudelft.nl Faculty of Architecture and the Built Environment (Arch) · Delft University of Technology The work in this thesis was supported by CGI. Their cooperation is hereby gratefully acknowledged. c Copyright All rights reserved. Abstract In order to address the problem of indoor pedestrian tracking, this thesis reports a research on spatial models’ ability to reduce tracking error of a WiFi positioning system. There are three main objectives in this research. First, it is to build a suitable spatial model for tracking. Second, it is to develop a tracking algorithm that can make full use of the spatial model. Last, the tracking algorithm should be tested in a live environment. Based on literature study, a grid-based spatial model is chosen to be built because it is easy to design and maintain, has high flexibility, has accurate location data and is powerful for computation. The thesis explores various geometric, topological and semantic features of the grid model and select out the most useful features upon tracking purposes. Among geometric features, coordinate, buffer, orientation vector and Euclidean distance are used. Among semantic features, space, obstacle, and door are employed. Among topological features, the difference between straight-line distance and shortest path distance is chosen. We develop the tracking algorithm combining multiple tracking techniques. In addition to the spatial model and WiFi positioning system, the algorithm also includes magnetometers and grid filters. The former one measures the orientation of a pedestrian. The latter one allows integrating all selected features of the grid model with the measurements from both the WiFi positioning system and the magnetometer to compute the location recursively. To test the algorithm’s performance, we built a tracking system with database, web service and mobile client. Several experiments are carried out using the system in a real environment. The experiment results show that the algorithm is able to determine locations at reasonable places (in the correct space, outside obstacles and connected to the previous location) and derive the accurate moving direction of a pedestrian. Master of Science Thesis Xu. Weilin ii Xu. Weilin Master of Science Thesis Table of Contents Acknowledgements ix 1 Introduction 1 1-1 Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1-2 Challenges in indoor tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1-3 Objectives and research questions . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1-4 Research scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1-5 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1-5-1 Scientific contribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1-5-2 Societal contribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1-6 Chapters overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2 Background 7 2-1 WiFi positioning system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2-2 Modeling indoor space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2-2-1 Representations of spatial model . . . . . . . . . . . . . . . . . . . . . . 9 2-2-2 Cell-based models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2-3 Indoor tracking methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2-3-1 Dead reckoning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2-3-2 Grid filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2-3-3 Map matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2-3-4 Model based . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2-3-5 Integration of the selected tracking technologies . . . . . . . . . . . . . . 19 Master of Science Thesis Xu. Weilin iv Table of Contents 3 Spatial model-aided tracking algorithm 3-1 Spatial model’s feature . . . . . . . 3-1-1 Geometric features . . . . . 3-1-2 Semantic features . . . . . . 3-1-3 Topological features . . . . . 3-2 Design of tracking algorithm . . . . 3-2-1 Requirements analysis . . . . 3-2-2 Flowchart of algorithm . . . 3-2-3 Initialization . . . . . . . . . 3-2-4 Prediction . . . . . . . . . . 3-2-5 Update . . . . . . . . . . . . 3-2-6 Floor change process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Implementation and Testing 4-1 Preprocessing . . . . . . . . . . . . . . . . . . . . . . 4-1-1 Build grid model . . . . . . . . . . . . . . . . . 4-1-2 Set up Mobile device . . . . . . . . . . . . . . 4-2 Implementation of tracking system . . . . . . . . . . . 4-2-1 Database . . . . . . . . . . . . . . . . . . . . . 4-2-2 Web service . . . . . . . . . . . . . . . . . . . 4-2-3 Mobile client . . . . . . . . . . . . . . . . . . . 4-3 Experiment results and analysis . . . . . . . . . . . . . 4-3-1 Experiment contexts . . . . . . . . . . . . . . . 4-3-2 Case 1: Walking inside a space . . . . . . . . . 4-3-3 Case 2: Walking between spaces . . . . . . . . 4-3-4 Case 3: Walking with turning . . . . . . . . . . 4-3-5 Case 4: Comparison of tracking performance on 4-3-6 Case 5: Estimation error control . . . . . . . . 5 Conclusion and future work 5-1 Conclusion . . . . . . . . . 5-1-1 Spatial model . . . 5-1-2 Tracking algorithm 5-1-3 Implementation . . 5-2 Future work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . short . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . and long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 21 22 23 24 24 25 28 28 32 36 . . . . . . . . . . . . . . 43 43 43 47 48 50 50 51 51 51 51 52 54 54 54 . . . . . 57 57 57 58 59 59 Bibliography 61 Glossary 65 Appendix A: Mobile client 67 Appendix B: Tracking algorithm (parts) 73 Xu. Weilin Master of Science Thesis List of Figures 1-1 Relation between signal strength and distance . . . . . . . . . . . . . . . . . . . 2 2-1 WiFi fingerprinting positioning system . . . . . . . . . . . . . . . . . . . . . . . 8 2-2 Network based on functional cells . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 Network model based on vorinoi diagram . . . . . . . . . . . . . . . . . . . . . . 11 11 2-4 Network based on Constrained Delaunay triangulation . . . . . . . . . . . . . . . 12 2-5 Network model based on convex polygon . . . . . . . . . . . . . . . . . . . . . . 13 2-6 Grid graph model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2-7 Occupancy grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2-8 Markov chain model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-9 An illustration of grid filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 17 2-10 Map matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3-1 Geometric features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 An example of distance difference . . . . . . . . . . . . . . . . . . . . . . . . . . 22 23 3-3 The flowchart of the tracking algorithm . . . . . . . . . . . . . . . . . . . . . . 27 3-4 A clustering example of WiFi measured locations . . . . . . . . . . . . . . . . . 33 3-5 Update using WiFi measured locations . . . . . . . . . . . . . . . . . . . . . . . 35 3-6 Turning point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4-1 Modeling flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4-2 Grid model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3 Radio map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 47 4-4 Mobile device axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5 Tracking system structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 49 4-6 Entity-relationship diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4-7 Tracking inside a space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Master of Science Thesis Xu. Weilin vi List of Figures 4-8 Tracking between two spaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4-9 Tracking with turning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4-10 Comparison of short and long path . . . . . . . . . . . . . . . . . . . . . . . . . 55 4-11 Control of estimation error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 Xu. Weilin Master of Science Thesis List of Tables 2-1 Comparison of grid model and network model . . . . . . . . . . . . . . . . . . . 14 3-1 Data quality analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4-1 Comparison of grid granularity . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4-2 Comparison of positoning accuracy . . . . . . . . . . . . . . . . . . . . . . . . . 48 Master of Science Thesis Xu. Weilin viii Xu. Weilin List of Tables Master of Science Thesis Acknowledgements I would like to thank my supervisor Ph.D. Liu Liu for his support, guidance and advice throughout this project, Ass. Prof. Dr. S. Zlatanova and Ph.D. Pirouz Nourian for their valuable opinions to improve this work. I also thank Wouter Penard and the Company CGI Group for their valuable input and help on the thesis. I owe my special thanks to the researchers of Wuhan University for the WiFi positioning system provided by them, especially Taizhou Li and Jianjan wang for their help on implementing the WiFi positioning system. I would also like to thank my friend hailin Li for his help on collecting data as well as all those who have supported me during the course of this master degree. Delft, University of Technology June 24, 2014 Master of Science Thesis Xu. Weilin Xu. Weilin x Xu. Weilin Acknowledgements Master of Science Thesis Chapter 1 Introduction 1-1 Context The wide deployment of wireless networks promotes location-based services (LBS) on mobile devices. The precise location is the foundation of most LBS applications. For example, navigation, monitoring and emergency services, people and assets tracking, mobile advertising and pedestrian moving pattern-based analysis, etc. Hence, there is an increasing interest in developing effective positioning and tracking systems. Global Positioning System (GPS) is the widely used in outdoor environment, but it fails indoor due to the poor signals of satellites inside buildings. Therefore, many techniques (e.g. Bluetooth, WiFi, RFID, GSM) are considered as alternatives for localization in indoor environments. The boom of WiFi networks over the past few years let the WiFi localization technology obtain popularity rapidly. The cost of implementation of this technology is relatively low because it makes use of the existing infrastructures and does not rely on extra hardware except the mobile devices of users. Also, the number of private and public access points (APs) is increasing in the cities and the WiFi coverage is getting higher, thus higher precision can be provided [1]. Based on WiFi network, the location can be calculated through Cell identity, Time of Arrival(TOA), Time Difference of Arrival(TDOA), Angle of Arrival(AOA) or signal strength based methods [2]. Cell identity simply matches the target’s location with its connected AP. This method does not require complex conditions such as time synchronization and multiple APs, but it has very low accuracy due to its simplicity. The TOA, TDOA and AOA methods receptively measure the travel time from a transmitter to a receiver, the difference of travel time from several transmitters to a receiver and the angle from a transmitter to a receiver. Multi-path effects of indoor environment influence these three approaches greatly. Moreover, the TOA and TDOA require accurate time synchronization between transmitters and receivers. Hence, they are not optimal solutions for indoor positioning. The signal strength based approaches utilizes the distance-to-signal-strength relationship to estimate location of a mobile device. An example of the relation between signal strength and distance is given Master of Science Thesis Xu. Weilin 2 Introduction in figure 1-1. Because it is difficult to represent the relation between the signal strength and distance using simple analytical function [3], the fingerprinting method is often employed for location determination. This method measures the received signal strength (RSS) from Aps in two phases: off-line phase where the signal strength at various predefined locations is mapped, and on-line phase where the possibility of a location is estimated by comparing the signal strength at this location with the signal strength map obtained in the off-line phase. For this thesis, the WiFi fingerprinting method is chosen since it can provide acceptable localization accuracy and that it is not too complicated to be implemented. Figure 1-1: Relation between signal strength and distance [3] Spatial model is employed for various indoor applications. By far the most common application discussed in the literature is navigation, however there is also research on using spatial model for robotic exploration [4, 5], indoor tracking and spatial analysis [6]. Some examples of use of spatial models for tracking are given below. To facilitate tracking application, Jensen, Lu and Yang [7] utilize topological graph of indoor space to increase tracking accuracy and Lee and Chen [8] use a floor model including the accessibility of different zones of the floor to deduce a user current location. Spatial models can be categorized based on their representations, i.e. geometry, topology and semantics. Pure geometrical, topological or semantic model is rarely used, instead hybrid models with various levels-of-abstraction [9]. Two typical spatial models are network model and grid model. The former one uses vertex-edge representation and has an irregular decomposition of the space. The latter one represents the indoor space using a group of regular cells. By reviewing literature, we find that there is very little research on using complete features of indoor space (geometry, topology and semantics) for tracking. In the context of this thesis, geometric features are shapes and coordinates of indoor space and structures, topological features refer to spatial relations of geometric primitives, which can be adjacency or connectivity relation, and semantics is defined as information about high-level entities such as rooms, corridors, doors, and their relationships. This thesis builds a hybrid spatial model including the three types of features and uses this model to decrease tracking errors. Xu. Weilin Master of Science Thesis 1-2 Challenges in indoor tracking 1-2 3 Challenges in indoor tracking There are some challenges in WiFi fingerprinting technology. First this method suffers the electromagnetic interference. The WiFi signal frequency is in the 2.4 GHz public band which is also used by many other wireless signal transmitters, e.g., phone, bluetooth, microwave oven and video devices. In the online phase of fingerprinting, any other device in this frequency can change the RSS patterns of the positioning device. Second since the WiFi fingerprinting is divided into two phases, this method suffers from the RSS variance problem caused by differences in device type, antenna orientation, and environment changes between two phases [10]. Moreover, the accuracy of this method depends on sample points’ sampling space. Large amount of sample points are needed for a high positioning accuracy. Any changes in the WiFi network such as APs replacing and facilities upgrading can lead to re-sampling these points. Thus to build and maintain the fingerprinting database is a very time consuming work. These shortages of WiFi fingerprinting method indicate that the measured locations are not always reliable. In addition, it turns out to be worse when the target is moving. Tracking errors like improper locations (e.g. at a wrong room, a wall, or a table), wrong heading and jumps between consequent locations are often seen from the results of WiFi positioning system. To solve these tracking issues, some research has been conducted based on signal processing and combining multiple sensors (WiFi, Bluetooth and inertial measurement unit (IMU), etc.). However very little research makes use of the user’s movement and the indoor environment to enhance localization accuracy [8]. Thus, the thesis also confronts challenges in building an appropriate model for tracking purposes. Though there are several standards for indoor modeling such as IFC, KML, CityGML LoD4, they do not consider the tracking as the main purpose. Another standard for indoor spatial information, IndoorGML, which takes indoor navigation and tracking into consideration, is still under development. A set of problems in indoor modeling are summarized in the survey of Zlatanova [11]. Among them, the problems for tracking application are determining the composition of space and granularity of model. 1-3 Objectives and research questions Spatial models which can represent geometry, topology and semantics of indoor space include constraints information about a person’s location and moving path in an indoor environment. Therefore spatial models can contribute to detecting and correcting poor positioning results. The goal of this thesis is to propose and implement a spatial model-aided tracking algorithm that is able to reduce tracking errors of WiFi positioning systems and provide reasonable location estimation when the positioning results is poor or missing temporally. The main research question to be addressed is: What contributions can a spatial model make to decrease tracking errors of WiFi technology for indoor navigation? This research question is divided into three underlying questions: Master of Science Thesis Xu. Weilin 4 Introduction 1. What features of spatial model could be employed for tracking? A spatial model may have geometric, topological and semantic features. We think all of them can contribute to tracking, but what kind of geometric, topological and semantic features are suitable needs to be explored. 2. In what way can the selected features be integrated together to decrease tracking errors of a WiFi positioning system? Inaccurate locations measured by a WiFi positioning system can be filtered out according to model’s geometrical, topological and semantic features. For example, a location can be matched to the model based on geometric coordinates and its accessibility can be checked based on connectivity and semantics of the spatial model. Thus, it is significant to develop a tracking algorithm which can make use of the model’s features efficiently. 3. How can the spatial model aided tracking algorithm be implemented and tested? In order to test the algorithm in a live environment, a tracking system for mobile devices needs to be developed. Thus, the methodology of how to implement the system is studied. 1-4 Research scope The core of this research is to use spatial models to decrease the tracking errors of WiFi positioning system upon navigation purposes. The spatial model is the base of the tracking algorithm and it needs to be built by the author. Not all types of spatial models are looked at, but two most commonly used spatial models: grid-based model and network-based model. The tracking algorithm is not aimed to improve absolute positioning accuracy but decrease unreasonable locations. Finally the spatial model aided tracking method needs to implemented based a WiFi positioning system and tested in a live environment. However, There are several things not involved in this research: • The development of localization system. This research will use a WiFi positioning system developed by other researchers and implement the spatial model aided -tracking algorithm based on the localization system. • The construction efficiency of spatial models. The aim is to use spatial models, not to build spatial models. Thus the spatial models are created in a convenient way. • The moving pattern of a pedestrian. This thesis will not take various moving patterns of person into consideration, only the most common case that walking in a constant speed is considered by the tracking algorithm. • The implementation of navigation. The locations provided by the tracking system could be used for navigation purposes but the implementation of navigation service is not concerned by this research. 1-5 Contributions The values of this thesis research can be seen from both a scientific point of view and a societal point of view: Xu. Weilin Master of Science Thesis 1-6 Chapters overview 1-5-1 5 Scientific contribution The main contribution of this thesis in scientific field is that it proposes a tracking algorithm that makes use of the geometry, topology and semantics of a spatial model. From the literature review in the next chapter, it can be seen that most commonly used tracking methods are dead reckoning, Bayesian filters and map matching. These approaches employ very limited spatial information. Moreover, it is hard to find any research on how to integrate geometrical, topological and semantic features of indoor environment for tracking. Thus, this thesis first studies the suitable spatial model for tracking purposes by comparing various proposed spatial models in former research, then develops a tracking algorithm based on the selected spatial model, finally implements and tests the algorithm in a real environment. These three steps respectively answer the three research questions given. We consider this thesis can contribute to the joint research of spatial model and indoor tracking. Moreover, we develop the tracking algorithm based on a WiFi localization system developed by the researchers of Wuhan University. In addition, our algorithm can improve the initial positioning results of the system. Thus, the project can also benefit their research. 1-5-2 Societal contribution Tracking service is an important aspect of location-based service (e.g., tracking children, elderly, friends, customers, etc.) and is the basis of other location-based services (e.g., navigation, evaluation, mobile advertising, etc.). The growth of indoor LBS market is very impressive these years. The report of MarketsandMarkets [12] estimates indoor location market will grow from $ 448.6 million in 2013 to $2.6 billion in 2018 and there are at least 170 companies today working on indoor location, indoor maps, in-building tracking, and wayfinding (navigation) inside buildings. However, providing precise location inside buildings is challenging. The improvement of current tracking systems are expected by the market. With the boom in WiFi network, the WiFi based positioning technology gains great popularity now. However the shortages of WiFi positioning systems (introduced in 1-1) prevent this technology to be ubiquitous. The output of this research can improve the tracking performance of WiFi positioning system so that it could be more widely used. This project is carried out at the Company CGI Group that is a leading IT consulting, systems integration, outsourcing, and solutions company. The company has great interest in the field of indoor localization and navigation. Some customers of the company are looking for a solution for indoor localization and tracking issues. The company also owns the research results of this project and they may use it for real applications in future. 1-6 Chapters overview This thesis consists of 5 chapters which are organized as follows: Chapter 1 introduces the context of this research, the challenges in indoor tracking, the objective and scope of the thesis. Master of Science Thesis Xu. Weilin 6 Introduction Chapter 2 presents an overview of the existing indoor modeling methods and the common used tracking methods. Decisions on what types of model and what tracking methods should be used are made in this chapter based on literature study. Chapter 3 explains what features of the spatial model are selected upon tracking purposes and how a tracking algorithm including these features is designed. The requirements of the algorithm are first analyzed and then how the algorithm is developed based these requirements is illustrated. Chapter 4 presents the implementation of the tracking system and test results of the system in a live environment. Chapter 5 concludes this thesis research. Xu. Weilin Master of Science Thesis Chapter 2 Background This Chapter introduces the background of the thesis. The working principle of the WiFi positioning system is first explained. Then a literature study is carried out to find the suitable spatial model for the tracking. The grid model is selected according to the comparison of various models. At last, four existing tracking techniques are introduced and we determine to integrate three of them for this thesis: grid model, magnetometer and grid filter. 2-1 WiFi positioning system The WiFi positioning system used for this thesis is provided by the researchers of Wuhan University, which uses WiFi fingerprinting method to localize the mobile client. The framework of the system is depicted in figure 2-1. In the offline training phase, for each sampling point the RSS from several APs are measured. The system assumes that the RSS values from different APs are independent and have Gaussian distribution. The system estimates the distribution’s parameters rssi _para (mean and standard deviation) using a number of RSS from an access point AP (i). The coordinates of each sampling point x with its RSS distribution parameters for several APs (rss1_para,rss2_para,rss3_para . . .) are stored in database, also known as the radio map. In order to facilitate the matching process in the online phase, the system clusters the radio map’s sampling points according to the four strongest APs covering each point. The sampling points sharing common APs (four strongest APs) are grouped. In the later process, the system only searches the corresponding cluster of sampling points rather than the whole radio map. In the online location determination phase, the mobile client measures a signal strength vector rss = (rss1, rss2, rss3 . . .) from available APs at its location, then the positioning algorithm matches the vector rss to the radio map to find the sampling point x that maximizes the probability P (x|rss), i.e. we want arg maxx [P (x|rss)]. Master of Science Thesis Xu. Weilin 8 Background Figure 2-1: WiFi fingerprinting positioning system [13] The positioning algorithm is based on Bayes’ theorem [3]: P (x|rss) = P (rss|x)P (x) P (rss) (2-1) since P (rss) is a constant value for all x and the algorithm assumes that all sampling points are equally likely, i.e. P (x) = 1/C where C is the number of sampling points. We can get the equation 2-2 [13]: arg maxx [P (x|rss)] = arg maxx [P (rss|x)] (2-2) Therefore the problem now is to find the arg maxx [P (rss|x)]. The P (rss|x) is calculated using the radio map [13]: P (rss|x) = k Y P (rssi |x), i = 1, 2, . . . , k (2-3) i=1 Where P (rssi |x) represents the probability of receiving signal strength rssi from an access point AP (i) at location x, which can be obtained from the corresponding Gaussian distribution in the radio map. k is the number of available APs at location x. Due to the fact that the mobile client is continuously moving rather than static, the developers use time-average window (see formula 2-4 [13]) to smooth the resulting location estimate. It obtains the location estimate by averaging the last W locations estimates. Their tests show the optimal value for W is around 6. x̄t = Xu. Weilin t X 1 xi min(W, t) t−min(W,t)+1 (2-4) Master of Science Thesis 2-2 Modeling indoor space 9 In addition, the system implements device self-calibration based on the RSS histogram to reduce the influence of device variance. There is a linear relation between the RSS histogram of the user’s device which is created and updated in real time and the RSS histogram of the reference device which is obtained from the existing radio map [13]. According to the linear relation, the measured RSS can be adjusted and matched to the radio map. The system has an accuracy of 3.4m for 90% locations when the mobile client is static. However, we find that the accuracy of the system for a moving mobile client is lower according to our tests. In order to track a pedestrian in a complicated indoor environment, other technologies are needed to improve the performance of the positioning system. 2-2 2-2-1 Modeling indoor space Representations of spatial model Various indoor spatial models have been proposed by former researchers [14, 15, 16, 6, 9]. By reviewing these models, we find that they can be distinguished by their representation, i.e. geometry, topology and semantics. There are few pure geometric, topological or semantic model, but hybrid models using various levels-of-abstraction [9]. In this thesis, we want to construct a spatial model integrating geometric, topological and semantic features, thus in below the approaches to represent each type of feature are studied. The geometry of a spatial model depends on the subdivision of indoor space. The indoor space can be partitioned by either real boundaries of the subspace (walls and doors) or arbitrary boundaries defined by developers. The former method is not considered for this thesis because it lacks capability to represent the spatial entities at low level (e.g. sub room and objects inside room) and it is less suitable for navigation services [17]. The later method, also known as cell-based partition, tessellates the indoor space into a finite number of areas. These areas could be regular shapes like square grids, or irregular shapes such as triangles, trapezoids and Voronoi diagrams [17]. Several commonly used cell-based models are compared in the next section to determine which one is more suitable for tracking. The granularity of subdivision (the size of cell) determines level of detail of the spatial model (e.g. room-level, sub room-level, object-level). According to the survey of Domínguez, García and Feito [9], most presented spatial models use point, line and polygon to represent the indoor space and have detail in room-level. The topology of an indoor space may be modeled either as a fully 3D space, using for example cell complexes or as a linked collection of 2D layers [6]. Only the later approach is considered in this thesis because it is easier to implement and sufficient for tracking purposes. Two types of topological relations should be distinguished: connectivity and adjacency. Two spaces are connected only if there are doors or windows between them but they are adjacent as long as they share one item (like a wall). In the review of Domínguez, García and Feito [9], most presented spatial models utilize connectivity graph to represent topology of the indoor space. The connectivity graph can provide information about the accessibility between two locations that is useful for location determination. Thus our spatial model should have connectivity representation. The semantics of a spatial model describes the basic spatial and structural concepts of indoor environments [16]. The semantics is often referred to as ontology when it is not only used Master of Science Thesis Xu. Weilin 10 Background for representational purpose but also for reasoning [6]. Worboys [6] thinks it is significant to make distinction between the fixed structures which support indoor space (e.g. walls, doors, windows and floors) and the entities which are usually moveable (e.g. furniture and equipment). More detailed definitions of indoor ontology are given by Goetz and Zipf [18] as well as Tsetsos and Anagnostopoulos [16]. Goetz and Zipf classify the indoor space into room, corridor, hall and vertical passage, and defines obstacle and point of interest to represent indoor entities. Tsetsos and Anagnostopoulos define three subclasses for indoor space: corridor, room and floor, while the vertical passage are categorized to the class of path_element. Concepts of obstacle and point of interest are also used by them. For this thesis, we think it should also distinguish two semantic types: space (e.g., room, corridor, vertical passage) and object (e.g., obstacle and door). 2-2-2 Cell-based models This section introduces and compares several commonly used cell-based models. We classify these models into two categories according to their decompositions of the space. The first class is network model, which is generated by irregular subdivision, and the second class is grid model, which is obtained by regular subdivision. There are several approaches to build network models, such as Constrained Delaunay triangulation, Voronoi diagram, convex polygon-based and trapezoidal-based subdivision. This model has vertex-edge representation where vertices represent irregular cells, and edges represent connections between them. Moving from one vertex to the other one is allowed only when there is an edge between them. The edge indicates the distance or travel time between vertices. Moreover, the vertex can include semantic information about the location, e.g., room vertex, door vertex, obstacle vertex, etc. Four examples of the network model are given below. Network model based on functional cells (given in figure 2-2): Lorenz, et al. [19] divide the free space of the building into non-overlapping cells. The large room and long corridor are decomposed into several cells due to their size. The room with multiple functional areas is also subdivided according to their functionality, for example, an airport lounge may feature waiting areas, meeting points, areas in front of the different counters and security checks, passport control, etc. All of them serve a different purpose and they need to be represented by different cells. The cell centers are extracted as the vertices of network model, and two cells are connected by an edge. The model also contains semantic information. The vertices extracted from the room’s cells and the corridor’s cells are distinguished, the door that connects two rooms or a room and a corridor is represented by an edge. Their model is created mainly for way finding purposes. Xu. Weilin Master of Science Thesis 2-2 Modeling indoor space 11 Figure 2-2: Network based on functional cells [19] Network model based on generalized Voronoi graph (GVG) (given in figure 2-3): Wallgrün [20] derive the GVG from its corresponding generalized Vorinoi Diagram (GVD). The GVD is a retraction of the free space onto a network of curves reflecting the connectivity of free space. Figure 2-3a shows a simple two-dimensional environment and the corresponding GVD (fine lines) consisting of curves that intersect at meet points and end up in corners of the environment. Figure 2-3b shows the GVG, which is the graph corresponding to the GVD in figure 2-3a with vertices corresponding to meet or corner points and edges connecting vertices joined by Voronoi curves. This model well represents the topology of the environment and is suitable for path planning and spatial reasoning. (a) The generalized Voronoi diagram (b) The corresponding generalized Voronoi graph Figure 2-3: Network model based on Vorinoi diagram [20] Network model based on Constrained Delaunay triangulation: we construct the network model using constrained Delaunay triangulation (see figure 2-4). Because the initial result of triangulation of a complicate space has many skinny tangles, we combine these small triangles Master of Science Thesis Xu. Weilin 12 Background with the neighbor that has the smallest area. The centroids of triangles are extracted as vertices of space, a door or obstacle inside the space is represented by a vertex as well. To build the connectivity, the vertices inside a space are connected with their neighbors and the vertices in different spaces are connected through the door vertices. Figure 2-4: Network based on Constrained Delaunay triangulation Network model based on convex polygon: Lamarche and Donikian [21] derive the network model from convex polygons of the environment. Extra constraint segments are added to the parallel walls and corners of structures firstly, then the Delaunay triangulation is applied under the constraints of the added segments and walls, finally the triangles are integrated to generate convex cell (see figure 2-5a). Once the convex cell subdivision is computed, a graph containing topological relations is extracted. A vertex of this graph is a convex cell and an edge represents a free segment shared by two adjacent cells with a length greater than the width of the humanoid (see figure 2-5b). This spatial subdivision accurately maps the environment geometry and the extraction of narrow areas automatically identifies the most constrained parts of this environment. Thanks to this information, accessibility between adjacent cells can be filtered before any path planning computation by using the humanoid width. This network model is also designed for path finding. In this thesis, we only consider the grid model with square cells because it is the simplest and most often used shape. The grid model decomposes the space into regular units with meaning (semantic elements), for example a piece of room is considered a grid unit, and each grid unit is linked to its neighbors [14]. Since the grid model does not abstract the space, it is able to describe the location accurately and continuously. By reviewing literature, we find that less grid models are employed for indoor pedestrian navigation, however a similar model, called occupancy grid, are widely used for mobile robot navigation and tracking. In below, a grid Xu. Weilin Master of Science Thesis 2-2 Modeling indoor space 13 model of indoor spaces is first introduced, and then the occupancy grid is explained. (b) Network extracted from the subdivision (a) The subdivision of the environment Figure 2-5: Network model based on convex polygon [21] Li, Claramunt, and Ray [14] propose a grid graph model (see figure 2-6). They first represent the indoor space using cellular units (different elements of the indoor space like a room, a wall, etc.) and then overlap a grid graph on the cellular units, which is illustrated in figure 2-6a. Each vertex of the grid graph is connected to its eight neighbors (apart from the ones located on the boundary of the grid model) with horizontal, vertical, and diagonal edges. Finally, in order to reflect the geometrical information of cellular units in an indoor space, vertices and edges of the grid graph are labeled according to their memberships to the underlying cellular units. Each vertex that is contained by one and only one cellular unit has one and only one membership value, while the membership value of an edge is multivalued when this edge intersects several cellular units (see the figure 2-6b). The topological relationships among cellular units can be extracted from edges with multiple membership values. Their research also indicates that the extent and granularity are most important parameters for a grid model. The extent of the grid model is usually set as the extent of the indoor environment and the granularity of the grid model needs to be determined carefully according to the purpose of the application. (b) Intersections between cellular units and graph components (vertices and edges). (a) Overlap of the grid graph and cellular units. Figure 2-6: Grid graph model [14] An occupancy grid is a regular matrix consisting of equally-sized cells, and each cell can Master of Science Thesis Xu. Weilin 14 Background be connected to its eight neighboring cells. A high probability is assigned to cells within accessible space, while a low probability to cells occupied by obstacles. Simplicity and metric embeddedness are two advantages of the occupancy grid approach [22]. An example of occupancy grid is depicted in the figure 2-7. Figure 2-7: Occupancy grid [23] The pros and cons of both cell-based models are summarized in the table 2-1. Model network grid Advantages location based on an irregular tessellation object-based or empty space related analysis easy to tessellate the space efficient because more compact accurate location data continuous analysis easy to design and maintain high flexibility Disadvantages inaccurate location data Consumes excessive amounts of memory and processor time in large spaces Table 2-1: Comparison of grid model and network model [17] By reviewing all these models, we find that the network model has good representation of the topology of the environment and is often used for path planning. However, this model is considered less accurate since they lack geometric details on entities and places indoor. The grid model is selected for this thesis due to the following reasons: • The grid model is able to describe accurate location. The grid model usually has small cell size (less than 1 meter), thus almost any locations of the indoor environment can be reached through this model. Xu. Weilin Master of Science Thesis 2-3 Indoor tracking methods 15 • The grid model has high flexibility on the granularity. According to the complexity of indoor environment, different granularity of decomposition may be desired. For a simple environment with very little obstacles, a coarse decomposition is feasible, however for a complex environment with many sub-spaces and obstacles, a fine decomposition is needed to represent all details of the environment. It is very easy to adjust the granularity using grid model because its cells have same size and can be scaled together. But the granularity of cells of the network model is not uniform and it is more difficult to obtain a fine decomposition through this method. • The grid model is suitable for computation. The grid model can be also regarded as a matrix which enable many matrix-based computation. • The grid model is easy to implement and maintain. 2-3 Indoor tracking methods Various technologies have been proposed in the literature to solve tracking problems. They are briefly introduced below. 2-3-1 Dead reckoning Dead reckoning calculates a person’s current location by advancing a known position using course, speed, time and distance to be traveled. This data is measured by inertial measurement unit (IMU) equipped on the tracked device, for example, accelerometer for steps, gyroscope and magnetometer for heading. The uncertainty of dead reckoning positions grows with time thus it is necessary to check the position regularly [24]. As a result, this method is usually combined with other positioning technology (e.g. WiFi, RFID) to track the moving object. 2-3-2 Grid filter Grid filter is a discrete Bayesian filter, which probabilistically estimates a target’s location based on observations from sensors. Grid filter tessellates the environment into small patches, typically between 10 cm and 1 m in size. Each grid cell contains the probability that the person or object is in the cell [25]. To make the computation tractable, grid filter is based on the Markov chain model. The Markov Markov chain model is a system that its future state only depends on its current state and not the previous states. An illustration of the Markov chain model is given in figure 2-8. For location estimation, it assumes that sensor measurements depend only on an object’s current location and that an object’s location at time t depends only on the previous location at time t − 1. Locations before t − 1 provide no additional information. Master of Science Thesis Xu. Weilin 16 Background Figure 2-8: Markov chain model [26]: x(t) is the state at t, y(t) is the observation at t. The grid filter methods are widely used in the field of robotics [4, 5]. It computes the location in two phases: the prediction phase where the prior probability p− t of location xt is estimated based on the previous location xt−1 , the motion model ut (the control of the robot’s motion, mostly the velocity) and the map of tracking environment m, and the update phase where the posterior probability pt is computed by multiplying the prior probability with the conditional probability p(zt |xt ) that the measurement zt may be measured at xt . Thrun and Burgard and Fox [4] give the prediction formula 2-5 and update formula 2-6 of mobile robot localization and tracking. p− k,t = X p(xk,t | ut , xi,t−1 , m) pi,t−1 (2-5) pk,t = α p(zt | xk,t , m) p− k,t (2-6) i where xk,t and xi,t−1 denote individual locations (grid cells) at t and t − 1, p− k,t and pk,t are the prior and posterior probability over a grid cell xk,t , pi,t−1 is the posterior probability over a grid cell xi,t−1 , zt refers to measurements obtained from t − 1 to t, ut denotes the motion control of the robot, m refers to the map of the environment, α is a normalizing constant which lets pk,t between [0, 1]. An example of one dimensional grid filter is given in figure 2-9. In this example, the robot carries a door-sensing camera that cannot distinguish different doors. Each frame depicts the robot’s position in the hallway and the current belief b(x): The step (a) is the initial state where all grid cells are assigned the same probability since the actual location is unknown, in step (b) when the measurement is input, the probability of the robot’s location is updated. In step (c), the probability of location is predicted based on the previous measurement and the robot’s motion. When the new measurement is obtained in step (d), the probability is updated again. The two phases are repeated to obtain new locations. Xu. Weilin Master of Science Thesis 2-3 Indoor tracking methods 17 Figure 2-9: An illustration of grid filter [4]:(a) the robot’s location is unknown, bel(x) refers to initial probability {pk,0 }. (b) the sensor detects a door, bel(x) refers to the posterior probability {pk,1 } at t = 1. (c) the robot moves, bel(x) refers to the prior probability {p− k,2 } at t = 2. (d) the sensor detects another door, bel(x) refers to the posterior probability {pk,2 } at t = 2. (e) the robot moves again, bel(x) refers to the prior probability {p− k,3 } at t = 3. Additionally, (b) and (d) depict the p(z|x), the conditional probability of observing a door at different locations in the hallway. Master of Science Thesis Xu. Weilin 18 2-3-3 Background Map matching Map matching assumes the person can be only located along certain routes. The constraints of indoor construction are used to correct estimates of the position of a person moving within a building, e.g. people and objects do not pass through walls, they pass along corridors and through doorways [24]. Two commonly used map matching techniques are point-tovertex matching (match the measured location to a vertex of a route) in figure 2-10a and point-to-edge matching (match the measured location to an edge of a route) in figure 210b. Spassov [27] implements the later technique for continuous localization. Their results show there is 85% edges are identified correctly. This method performs quite well in corridor environment. There are no jumps of positions and the average distance to the middle of the corridor is acceptable. (a) Point-to-vertex matching (b) Point-to-edge matching Figure 2-10: Map matching 2-3-4 Model based Model based methods uses a vector model of the indoor environment to improve the estimation of the user’s location. This method considers more factors than the constraints of indoor space, which can be taken as an expansion of the mapping matching method. Girard et al. [28] define model based tracking is a method that combines the use of model features (such as walls, open areas or obstacles), information from the sensors (such as speed and direction) and information from the user (such as mean velocity and velocity variance [29]) and they use a grid model together with particle filter, ultrasound range sensors, and foot-mounted IMU for indoor pedestrian tracking. Jensen, Lu and Yang [7] propose a base graph model which represents the connectivity and accessibility of indoor space and use the model for RFIDbased tracking. More specifically, an deployment graph model of RFID reader is constructed from the base graph model and this model is then used in their algorithms for constructing and refining trajectories from raw RFID readings. Their experimental results show that the method can considerably improve the indoor tracking accuracy at low computational cost. Xu. Weilin Master of Science Thesis 2-3 Indoor tracking methods 2-3-5 19 Integration of the selected tracking technologies The four techniques above are commonly used tracking methods. However, there are some disadvantages of these methods: the dead reckoning is very dependent on the hardware (e.g. accelerometer, gyroscope, magnetometer, etc.), the grid filter needs continuous inputs of measurements from sensors, the map matching method is very simple but may have large matching errors, the model-based method also needs information from sensors or users. In order to overcome the disadvantage of an individual technique, we will use a combination of grid model, magnetometer and grid filter to improve the locations measured by WiFi positioning system. By integrating the grid model and grid filter, the geometric, topological and semantic features of the grid model can be used to predict the prior probability of the person’s location. In the later phase, the probability is updated using the measurements from WiFi positioning system. However, the WiFi measurements could have very low quality for the reasons given in section 1-2. Thus, it is better to also make use of measurements from other sensors rather than only the WiFi positioning system. Due to the restriction of hardware, this thesis only employs the magnetometer to measure the orientation of the walking person. When the WiFi measurement is not applicable, the orientation data can be used instead to update the location’s probability. Master of Science Thesis Xu. Weilin 20 Xu. Weilin Background Master of Science Thesis Chapter 3 Spatial model-aided tracking algorithm As the search question 1 and 2 are strongly related, they are studied together in this chapter. Question 1: What features of a spatial model could be employed for tracking? Question 2: In what way can the selected features be integrated together to decrease tracking error of WiFi positioning system? The section 3-1 analyzes various geometric, topological and semantic features of a spatial model and explains what features are considered to be useful for tracking. The section 3-2 describes the design processes of the tracking algorithm. In this section the requirements of the algorithm is looked at first. Then the flowchart of the algorithm and specific explanations of important processes in the flowchart are given in sub sections. 3-1 Spatial model’s feature As introduced in the previous chapter, the grid model is selected for this thesis. Thus, we will analyze all features of the model and figure out what features can contribute to the improvement of tracking performance. The features are classified into three categories: geometry, topology and semantics. They are looked at respectively in the following. 3-1-1 Geometric features The geometry is the base of a grid model. To make the model accurate, the grid cell size should be small (usually between 10 cm and 1m). For this thesis, 0.7m is used. More explanations about how the cell size is determined are given in section 4-1-1. Four geometric features of the model are introduced below. Geometric coordinates: We represent grid cells using center points of cells. With the coordinates of center points, the measured locations of WiFi positioning system can be mapped to the model using the point-to-vertex approach (introduced in section 2-3-3). Master of Science Thesis Xu. Weilin 22 Spatial model-aided tracking algorithm (a) Buffer: the blue rectangle is the buffer of the black grid cell with a radius of 3 times the cell size. (b) Distance: the black line is Euclidean distance and the blue lines are two paths that have the same Manhattan distance. (c) Orientation vector: two orientation vectors and the angle between them. Figure 3-1: Geometric features:(a) buffer, (b) distance, (c) orientation. Buffer: It costs a lot of computational processors to compute a location using the whole model because it commonly covers a large area and has fine-resolution grids. Thus, it is necessary to extract the relevant part of the model for the current location and only use this part for location determination. We use a buffer of the known previous location to represent the search region of the current location. The range of the buffer relays on the walking speed and the time interval of location determination. An example of buffer feature is depicted in figure 3-1a. Distance: For a grid model, there are two common approaches to compute the distance between two grid cells: Euclidean distance and Manhattan distance. The former one is the ordinary distance between two points and the latter one is the sum of the absolute differences of their Cartesian coordinates [30]. For Manhanttan distance, multiple paths could have the same distance value. An example of two distances are given in figure 3-1b. Orientation vector: We use an orientation vector to represent the direction from one grid cell to another. The angle between two vectors (e.g., v1(x1 , y1 ) and v2(x2 , y2 )) can be obtained through computing the dot product of two vectors [31] (see formula 3-1). An example of orientation vector is given in figure 3-1c. θ = arccos( 3-1-2 v1 · v2 ) kv1k kv2k (3-1) Semantic features According to the literature (see section 2-2-1), semantics such as floor, space (e.g., room, corridor and vertical passage), door, wall, obstacle and point of interest are commonly used. We think following semantic features are useful upon tracking purpose: Floor: the floor feature can help determine the change of floors. Space: we define a space is a region that is separated from other regions by a real boundary (e.g., room and hall) or a region that has a specific function (e.g., vertical passage). The wall Xu. Weilin Master of Science Thesis 3-1 Spatial model’s feature 23 can be represented by the boundary of the space, so it is not necessary to have semantics of wall. The space concept is important for tracking because users expect to be localized at the correct space even if the accurate location inside the space is hardly estimated. Moreover, the space of vertical passage can be used for tracking between floors. Door: we define a door as a connector between two separated spaces. The person has to pass the door when walking from one space to the other one. Obstacle: we define an obstacle as an object or a region that blocks the way that is not reachable. The obstacle is needed for building the connectivity graph of the grid model. And the user should not be localized inside any obstacle. 3-1-3 Topological features As introduced in the previous chapter, two types of topological relations are distinguished: adjacency and connectivity. We consider that the connectivity is more useful for tracking because it indicates if a grid cell can be reached from a predefined location. The adjacency relationship is less important but it is needed to build the connectivity graph of the grid model. We define the rule of connectivity as below: A grid cell is connected to its neighboring cells (at most 8) which do not belong to any obstacle and are in the same space of the grid cell. For grid cells in different spaces, they can be connected through the grid cell of a door. In addition to the connectivity graph, two other features based on this topology could also contribute to tracking: Shortest path: The shortest path here refers to the path with shortest distance. Based on the connectivity graph, there are several methods to compute the shortest path, e.g., Dijkstra’s algorithm, A∗ search algorithm, breadth-first-search, best-first-search, etc. A∗ search algorithm is used for this thesis because it has high computational efficiency in this case. The shortest path can not only represent the path between two grid cells but also gives an estimation on if one grid cell can be reached from the other one within a certain time period as it returns the path length. Figure 3-2: An example of distance difference: the orange line denotes the straight-line distance and the yellow line denotes the shortest path length returned by A∗ algorithm. Master of Science Thesis Xu. Weilin 24 Spatial model-aided tracking algorithm Distance difference: we define the distance difference as the difference between the straightline distance (Euclidean distance) and the shortest path distance from one grid cell to another. An example of the distance difference is depicted in figure 3-2. It is notable that the distance difference is small if there is no obstacle between two grid cells and it increases with the growth of obstruction between two grid cells. 3-2 3-2-1 Design of tracking algorithm Requirements analysis Before starting the design of tracking algorithm, several important questions need to be answered: Question 1: What kind of data does the algorithm deal with? The data used for this algorithm is listed in table 3-1, which can be categorized into two classes. The first type of data is realtime data obtained from mobile device. The two-dimensional location data is obtained per half second from WiFi positioning system but their quality is not always high. The time of when the location is acquired and the mobile device’s orientation at this time are measured using the clock and magnetometer of the device. The measured orientation has relative high accuracy when the device is kept forward the moving direction. The second type of data is model data. The grid model is used, which contains geometrical, topological and semantic information of the indoor environment. Question 2: What assumptions are made for this algorithm? Since the motion of human has great diversity and uncertainty, it is difficult to consider all cases in this thesis. Some assumptions are made to let the tracking situation be less complicated. • Assumption1: The start location of the person is known. • Assumption2: The pedestrian is walking in a constant speed. • Assumption3: The pedestrian is likely to walk in a constant direction and inside one space within a short time. • Assumption4: The mobile device’s forward orientation is the moving direction of the person. Question 3: What requirements must the algorithm meet? There are three requirements for this algorithm: 1. Spatial model-aided. The algorithm need to make full use of the geometric, topological and semantic features of the grid model and these features should be integrated in an efficient way. 2. Adaptability. The adaptability refers to two aspects. Firstly, the algorithm is able to deal with different walking cases, e.g. walking with turning, walking between different space and floor. Secondly, the algorithm can handle the exceptions like the WiFi positioning results are extremely poor or missing temporally. Xu. Weilin Master of Science Thesis 3-2 Design of tracking algorithm 25 3. Effectiveness. The effectiveness is that the algorithm can improve the tracking accuracy of the WiFi positioning system. Data location time orientation grid model Value x,y nanoseconds angle between the magnetic north direction and the y-axis of mobile device geometry, connectivity graph, semantics Quality medium (mostly around 3-5 meters) high high high Table 3-1: Data quality analysis 3-2-2 Flowchart of algorithm We design the tracking algorithm for the WiFi positioning system by integrating three other tracking techniques: magnetometer, grid model and grid filter. The grid filter (see section 2-3-2) with recursive predict and update steps is the base of the tracking algorithm in which the grid model is used instead of the map and the WiFi positioning system as well as the magnetometer are inputs of measurements. The measurements are acquired with a high frequency (every half second) but do not always have high accuracy. Thus, we use a set of measurements during a short time period for each location determination to avoid the effect of an individual inaccurate measurement. In this thesis, we use measurements obtained every 3 seconds to compute a new location because the moving distance of a pedestrian within 3 seconds is short and 6 measurements can be acquired on average. We use the formulas introduced in section 2-3-2 to compute the prior and posterior probability grids. Unlike the mobile robot, the motion of a pedestrian cannot be controlled, and to make the situation to be less complicated we assume the pedestrian walks in a constant speed. Thus, ut is excluded in our computation. The formulas 2-5 and 2-6 can be rewritten as below: p− k,t = X p(xk,t | xi,t−1 , m) pi,t−1 (3-2) pk,t = α p(zt | xk,t , m) p− k,t (3-3) i where xk,t and xi,t−1 denote individual locations (grid cells) at t and t−1, p− k,t and pk,t are prior probability and posterior probability over a grid cell xk,t , pi,t−1 is the posterior probability over a grid cell xi,t−1 , m represents the grid model, zt is the measurements obtained from t − 1 to t and α is a normalizing constant. To reduce computational load, we convert the {pi,t−1 } to a degenerate distribution [32] for the prediction of xt , suppose xt−1 denotes the grid cell with maximum posterior probability at t − 1, then ( pi,t−1 = Master of Science Thesis 1 0 if xi = xt−1 else (3-4) Xu. Weilin 26 Spatial model-aided tracking algorithm So the formula 3-2 can be simplified further as below: p− k,t = p(xk,t | xt−1 , m) (3-5) The usage of grid filter is to combine the different features of the grid model, also the measurements from the mobile device. By using them to compute the prior probability and posterior probability of the locations, their influence is integrated and accumulated. The flowchart of the algorithm in figure 3-3 gives an overview of the algorithm, where we can see there are three steps to track a pedestrian: initialization, prediction and update. The initialization step initializes the probability grids {pk,0 }, which is used as the input to predict the first location (xt=1 ). In prediction step, we employ the previous location, the grid model as well as the previous moving direction to calculate the prior probability of the current location. When the location is at t = 1 or after a turning, the previous moving direction is not known or not feasible for prediction. In the update step, we use the measurements obtained from mobile devices (WiFi positioning system and magnetometer) to update the prior probability grids and find the grid cell with maximum posterior probability. This grid cell is taken as the current location and used as the input for the prediction of the next location. The latter two steps, prediction and update are repeated over time until the tracking is over. The pseudocode of the tracking algorithm is given in Algorithm 1, the functions of ’Initialization’, ’Prediction’ and ’Update’ are respectively explained in the following sections. One thing should be noticed that the flowchart does not include the case of tracking between floors. Since the WiFi positioning system can only provide locations in two dimension, the change of floors is determined in a different way which is explained briefly in section 3-2-6. Data: x0 :the start location M :the grid model z :measurements including measured locations and orientations Result: a trajectory Initialization(x0 , M ); while t < T do // t starts from 1, T is the end time of the tracking Prediction(xt−1 , M ); Update(zt , M ); t = t+1; end Algorithm 1: Spatial model-aided tracking algorithm Xu. Weilin Master of Science Thesis 3-2 Design of tracking algorithm 27 Figure 3-3: The flowchart of the tracking algorithm The important terms and concepts used to describe the algorithm are clarified here to make the description in later sections understandable: • Computed location: the location computed by this algorithm, which is a grid cell. • WiFi measured location: the location measured by the WiFi positioning system. • Measured orientation: the orientation of the mobile device when WiFi location is acquired, which is measured by the compass of the mobile device. Master of Science Thesis Xu. Weilin 28 Spatial model-aided tracking algorithm • Orientation vector: the vector from the center of one grid cell to another. • Tracking interval: the time interval between two consecutive computed locations. • Measurements: all measurements acquired by the mobile device during tracking interval, each measurement contains three values: WiFi measured location, measured orientation, and time. • In moving direction: when we say a cell is in the moving direction, we mean the angle between the orientation vector of this cell and the moving direction is less than an threshold. • Clustering Distance threshold (CDT): the clustering threshold for WiFi measured locations. • Probability grids: the grid cells with initial, prior or posterior probabilities. 3-2-3 Initialization Since the start location is known, the {pk,0 } is initialized using the degenerate distribution (given in equation 3-4) where xt−1 is replaced by x0 . The pseudocode for this step is given in Function Initialization. Input: x0 :the start location {xk,0 } :grid cells at t = 0 Output: {pk,0 } :initial probability grids forall the xk,0 do if xk,0 = x0 then pk,0 ← 1 ; else pk,0 ← 0 ; end end return {pk,0 } Function Initialization 3-2-4 Prediction In prediction step (the pseudocode for this step is given in Function Prediction), the prior probability grids are computed based on three factors: The previous location. As it is very inefficient to use the entire model of the tracking environment to predict and update the location’s probability, we derive a sub model from the entire model based on the previous location, and the sub model is updated at each prediction step. Only the grid cells inside a buffer of the previous location are taken into consideration in later Xu. Weilin Master of Science Thesis 3-2 Design of tracking algorithm 29 processes while other grid cells obtain a probability of 0 by default. We set the radius of the buffer is 2 times the product of the average walking speed of human (1.4 m/s [33]) and the tracking interval (3 seconds). We think the person should not be outside the buffer within 3 seconds. The grid model. In order to determine the probability of the derived sub model, we make use of its semantic and topological features. Two semantic features are employed: obstacle and space. If the grid cell is an element of an obstacle, it gets probability as 0, and if the grid cell is at a different space than the space of the last location, its probability is decreased by dividing a constant value Ws . We set Ws as 2 in this case because we assume the probability of the current location in a new space is half of the probability in the old space. Among all topological features introduced in section 3-1-3, the distance difference is chosen. This is because that it can represent the connectivity between two grid cells and it is suitable for probability computation. The shortest path is not used because without the knowledge of the real walking speed, it is difficult to determine the distance threshold of the path. Moreover, the grid cells that are far from the previous location have been filtered out by the buffer so it is not necessary to use an absolute distance. We assume there is a negative relation between the distance difference and the probability, therefore the grid cell with larger distance difference is assigned lower probability. We use a discrete probability distribution for distance difference (see the equation 3-6). P1 P 2 when when P (∆d) = P 3 when P 4 when |∆d| ≤ d1 d1 < |∆d| ≤ d2 d2 < |∆d| ≤ d3 |∆d| > d3 (3-6) where ∆d denotes the distance difference, d1, d2, d3, d4 are thresholds of distance difference and P 1, P 2, P 3, P 4 are corresponding probabilities. In this research the d1, d2, d3 are set respectively as 1 m, 3 m and 5 m, P 1, P 2, P 3, P 4 are set receptively as 0.9, 0.7, 0.5 and 0.1. This is because we suppose that there are no obstacles between two grid cells if their distance difference is smaller than 1 m, there are no or a small obstacle between two grid cells if their distance difference is above 1 m but smaller than 3 m, and there are obstacles between two grid cells if their distance difference is larger than 5 m for our testing environment. Thus, the grid cells with distance difference smaller than 3 m get high probability (0.9 or 0.7) and cells that have distance difference larger than 5 m get low probability (0.1). Other cells get medium probability (0.5). The previous moving direction. If there is no turning at the previous location, we assume that there is a very high probability (Phigh = 0.8) that the current moving direction is same as the previous one and a low probability (Plow = 0.2) that the moving direction is changed. So we decrease the probability of grid cells outside the moving direction by dividing a constant value Wmd . Wmd is 4 in this case because Plow is a quarter of Phigh . To determine if a grid cell is inside the moving direction, we compare the angle between the orientation vector of the grid cell and the moving direction with a angle threshold AT. We set AT as 45 ◦ in this thesis. In this step, the spatial model’s geometric features (buffer and orientation vector) is used to extract the sub model and compare with the previous moving direction, its semantic (space Master of Science Thesis Xu. Weilin 30 Spatial model-aided tracking algorithm and obstacle) and topological features (distance difference) are employed to determine the prior probability. Input: xt−1 :the location at t − 1 zt−1 - md :the moving direction at t − 1 M :the entire grid model Output: o n :prior probability grids p− k,t // derive the sub model based on the previous location m ← UpdateModel(M, xt−1 ) ; foreach xk ∈ m do // compute prior probability using the grid model’s features p− k,t ← PredictbyModel(xk , xt−1 , m) ; // compute prior probability using the previous moving direction if xk outside zt−1 - md then − p− k,t ← pk,t /Wmd end end Function Prediction Input: M :the entire grid model xt−1 :the location at t − 1 Output: m :the sub model foreach mk ∈ M do B ← SetBuffer(xt−1 , radius) ; if mk inside B then add mk to m ; end end return m; Function UpdateModel Xu. Weilin Master of Science Thesis 3-2 Design of tracking algorithm 31 Input: xk :a candidate location at t xt−1 :the location at t − 1 m :the sub model Output: p(xk | xt−1 , m) :the prior probability of xk // mobstacle denotes the obstacle feature of xk in m if mobstacle of xk is true then p(xk | xt−1 , m) ← 0 ; else // mdistancediff denotes the distance difference feature of xk in m if mdistancediff of xk < d1 then p(xk | xt−1 , m) ← P1 ; else if mdistancediff of xk < d2 then p(xk | xt−1 , m) ← P2 ; else if mdistancediff of xk < d3 then p(xk | xt−1 , m) ← P3 ; else p(xk | xt−1 , m) ← P4 ; end // mspace denotes the space feature of a cell in m if mspace of xk 6= mspace of xt−1 then p(xk | xt−1 , m) ← p(xk | xt−1 , m)/Ws ; end end return p(xk | xt−1 , m) Function PredictbyModel Master of Science Thesis Xu. Weilin 32 3-2-5 Spatial model-aided tracking algorithm Update In this step, the probability grids are updated using new measurements. The pseudocode of this step is given in Function Update. As introduced before, to overcome the influence of a single inaccurate measurement, We use the measurements per 3 seconds to compute a new location. But the orientation of each measurement is checked once it is acquired. If its orientation is different from the previous moving direction, the process to deal with turning is started (see section Turning process). We update the moving direction using the mean value of new measured orientations and use it to filter WiFi measured locations (see section Remove outliers of WiFi measured locations). After removing outliers of WiFi measured locations, the next step is to determine the space property of the current location xt , namely to check if the new location is at a different space from previous location (see section Determine space property of the current location). Then the probability grid is updated based on the space property and filtered locations. If all WiFi measured locations are filtered out, the prior probability is updated based on the current moving direction (see section Compute posterior probability). The grid cell with maximum posterior probability is taken as the current location. In addition, we check the quality of the computed location every three tracking intervals (9 seconds) using all measurements obtained in this period (18 measurements on average). Details of this process are given in section Tracking quality check. Remove outliers of WiFi measured locations We use a set of measurements (zt ) in 3 seconds to compute the person’s current location. As the accuracy of WiFi positioning system is influenced by the dynamic environment, there could be outliers inside WiFi measured locations zt - mls. The number of zt - mls is not large, so we cannot eliminate the effect of outliers by just averaging all WiFi measured locations. Instead, we remove outliers using hierarchical clustering which groups WiFi measured locations to clusters based on the distance between themselves [34]. This method does not provide a single partitioning of the data set, but instead provide an extensive hierarchy of clusters that merge with each other at certain distances, also known as dendrogram. By cutting the dendrogram at different distance threshold, different clusters can be obtained. There are also multiple choices for distance function, such as single-linkage (the minimum of object distances), average-linkage (the average of object distances) and complete-linkage (the maximum of object distances). Based on our experiments, the average-linkage hierarchical clustering with distance threshold (CDT ) of 4 m has best performance and is used by the algorithm. A result of the clustering of WiFi measured locations is given in Figure 3-4, in which the six locations obtained in 3 seconds are clustered into three groups by a threshold 4m. The locations of the largest cluster (purple points) are considered more accurate than other measured locations (pink and yellow points in the bottom figure). Moreover, We think the moving direction zt - md is reliable and we also use it to detect the outliers of the WiFi measured locations. The process to filter out the outliers is given below: At first we look at the number of zt - mls, if there are very little measurements (only one or two), it indicates that the WiFi signal strength during this period is very poor and WiFi positioning system does not work normally. So we think these WiFi locations are not reliable, namely they are outliers. Otherwise, we cluster the measurements using average-linkage hierarchical clustering. We assume that the distance Xu. Weilin Master of Science Thesis 3-2 Design of tracking algorithm 33 between locations in 3 seconds should be smaller than 4 m. If there is more than one cluster, we think only one is trustful while others are outliers. In order to find the most reliable cluster, we compare two features of these clusters: direction and size. The direction of cluster is the orientation vector from the previous location to the cluster center. Finally the cluster whose direction inside the current moving direction and size is largest is kept. The pseudocode of this process is given in Function RemoveOutliers. Figure 3-4: The top figure is the dendrogram of average-linkage hierarchical clustering, the bottom figure is the clustering result with distance threshold as 4 m. Determine space property of the current location This process is applied after removing outliers of WiFi measured locations. We think the remaining locations are reliable and use them to determine the space property of the current location. In order to check the space property of WiFi measured locations, they are mapped to the grid model based on geometric coordinates. If most WiFi measured locations are still in the previous space, we believe the space of current location is also inside the previous space. When most WiFi measured locations are in a new space, further checking is carried out to confirm the change of space. To avoid ambiguity between two space, we use the door between two space as a transition zone. So when the location is not in a new space for certain, we put the location at the door. The pseudocode of this process is given in Functon DetermineSpace. From it we can see there are two conditions to enter a new space: 1. the door connected two spaces is in the moving direction 2. the previous location is at the door Master of Science Thesis Xu. Weilin 34 Spatial model-aided tracking algorithm Only when both conditions are met, the current location is considered to be at the new space. If only condition 1 is met, the current location is determined at the door. Otherwise, the current location is still at the previous space. In this way, the condition for entering a new space is relatively strict. The person has to be first localized at the door before getting into the new space, which also means most WiFi measured locations have to be in the new space twice. The advantage of this strict rule is that ambiguous situations such as locations are measured at wrong space temporally and the person going into and out the space very quickly can be dealt with. Compute posterior probability There are two ways to update the position probability grids. If there is no WiFi measured location is available, the probability is updated using the current moving direction, otherwise it is updated using WiFi measured locations. For the later approach, the current moving direction is not reused as that it has been applied to filter the WiFi measured locations. The second approach is looked at firstly since it is the common way to update the probability. We use a rectangular window function W (d) [35] to compute the conditional probability n o j p(zt | xk,t , m) based on each WiFi measured location ztj . As shown in equation 3-7, the function W (d) is the average of three sub window function with different window size. The usage of the average window function rather than a single window function is to make the conditional probability decrease with the increase of the distance to a WiFi measured location. In order to allow the windows of different measured location overlap, we set the largest windows size as CDT and other two size receptively as two-thirds and third of the CDT . Thus, the grid cell that is close to all WiFi measured locations get highest conditional probability. Then the conditional probability estimated by all WiFi measured locations are accumulated and normalized to get the final conditional probability {p(zt | xk,t , m)}. Lastly, the posterior probability of a grid cell is computed by multiplying its prior probability and conditional probability. An illustration of this approach is given in figure 3-5. Wi (d) = 1 for for for |d| < 21 ni |d| = 12 ni |d| > 21 ni W (d) = 3 1X Wi (d) 3 i=1 1/2 0 (3-7) 2 1 (n1 = CDT, n2 = CDT, n3 = CDT ) 3 3 where |d| denotes the distance from a grid cell to the a WiFi measured location, ni is the size of the rectangular window Wi . When all WiFi measured locations are filtered out, the posterior probability is calculated based on the current moving direction. We compute orientation vectors from the previous location to the grid cells with the highest prior probability, then find the grid cell whose orientation vector is closest to the current moving direction. Except this grid cell, other grid cells are updated to 0. The pseudocode to compute posterior probability grids in both ways are given in the function ComputePosteriorProbability. Xu. Weilin Master of Science Thesis 3-2 Design of tracking algorithm (a) rectangular window function 35 (b) conditional probability (c) posterior probability Figure 3-5: Update using WiFi measured locations: the red cell is the previous location, (a) the green cells are WiFi measured locations and blue rectangles are window function, (b) the conditional probability is represented by the darkness of the blue, the darker cell the higher probability, (c) the blue cells are cells with maximum posterior probability. Find the current location The grid cell with largest posterior probability is considered to be the current location. However, there could be multiple grid cells with the maximum probability, in this case, we choose the grid cell that is closest to the center of these grid cells. Tracking quality check Since the locations may be continuously estimated without using WiFi measured locations, there could be errors caused by inaccurate moving directions. In order to control this error, the location xt is checked per three tracking intervals. We use three tracking intervals (from t − 3 to t) because on average 18 measurements (in 9 seconds) can be obtained during this period and we suppose there should be reliable locations inside these measurements. All measurements obtained during this period are used to compute a location xcheck and an average moving direction mdcheck . We compute xcheck using the same processes to compute other locations but with different parameter settings. The buffer to update the grid model and the clustering threshold are enlarged because we use measurements of a longer period (three tracking intervals). Then the location xt is qualified by checking its distance to xcheck and the angle difference between its orientation vector zt - md and mdcheck . The threshold of distance (DT ) and angle (AT ) are set respectively as 8m and 45 ◦ because we think the xcheck is at the middle of the path from t − 3 to t and its distance to xt should not be larger than 8 m according to the average walking speed (1.4 m/s [33]). If the location xt is unqualified, it is replaced by xcheck . The pseudocode of this process is given in function TrackingqualityCheck. Turning process The turning process is triggered when a measured orientation is outside the previous moving direction. In order to make sure this change is really caused by turning rather than other coincidences (e.g., rotation of the mobile device), more measurements need to be acquired. If Master of Science Thesis Xu. Weilin 36 Spatial model-aided tracking algorithm the average orientation of these measurements is also outside the previous moving direction, then we confirm there is a turning. In order to adapt the general tracking procedure (prediction and update) to the case with turning, we introduce the concept of turning point. We assume that the direction change occurs only at the turning point. Thus, the locations before this point have the previous moving direction and locations after this point have a new moving direction. We use the turning point to replace the previous location, and then the general tracking procedure is suitable again. The pseudocode of this process is given in function TurningProcess. The approach to find the turning point is explained below: The main criterion for the turning point is that it must be inside the moving direction of the previous location as well as the opposite moving direction of the current location. To find the turning points, we firstly estimate the current location at the center of WiFi measured locations, then use this estimated location to back track the turning point. Since there could be multiple grid cells inside the intersection of two directions, more constraints are applied to find the most reasonable one: it should be at the same space of previous location, it should not be inside any obstacle, the paths from the previous location to the turning point and from the turning point to the current location should not blocked by any obstacle. An example of turning point is given in figure 3-6. Figure 3-6: Turning point: the right black point and vector (with the blue rectangle) are the previous location and its moving direction, the left black point and vector (with the blue rectangle) are the current location and its opposite moving direction. The red point is the turning point and the dash line is estimated turning path. 3-2-6 Floor change process As the spatial model and WiFi measured locations are all two dimensional, it is impossible to estimate the moving path between floors. But is possible to detect the change of floors. In the offline training phase of WiFi positioning (see section 2-1), the radio map is measured at each floor and the floor number is also stored. Thus in the online localization phase of WiFi positioning, the floor number of the matched location can be obtained. We define the condition of floor change below: If a WiFi measured location is matched to the radio map in different floor and the previous location is close to a vertical passage, we consider the person Xu. Weilin Master of Science Thesis 3-2 Design of tracking algorithm 37 is walking between floors, and when most WiFi measured locations of a tracking interval are located in a new floor, we assume the person is at the new floor now. Input:n o p− :prior probability grids k,t zt :measured orientations zt - mds and locations zt - mls from t − 1 to t {xt−1 , zt−1 - md, St−1 } :the location, the moving direction and the space at t − 1 m :the sub model Output: xt :the location at t zt - md :the moving direction at t if ∀ mdi ∈ zt - mds : mdi inside zt−1 - md then zt - md ← average(zt - mds) ; zt - mls ← RemoveOutliers(zt - md, zt - mls); if size(zt - mls) > 0) then // update using WiFi measured locations zt - mls Zt ← zt - mls; St ← DetermineSpace(zt - mls, zt - md, St−1 , m); n o { pk,t } ← ComputeP osteriorP robability(Zt , St , p− k,t ) ; else Zt ← zt - md ; St ← St−1 ; // update using the moving direction zt - md n o { pk,t } ← ComputeP osteriorP robability(Zt , St , p− k,t ) ; end else { pk,t } ← T urningP rocess(xt−1 , zt−1 - md, zt , M ) ; end xt ← F indCurrentLocation({ pk,t }) ; // the computed location is checked per three tracking intervals if t mod 3 = 0 then xt ← T rackingqualityCheck(xt , zt - md, M ) ; end return xt , zt - md Function Update Master of Science Thesis Xu. Weilin 38 Spatial model-aided tracking algorithm Input: zt - mls :measured locations zt - md :the moving direction at t Output: z̄t - mls :filtered locations C ← hierarchical clustering of zt - mls ; if size(C) > 1 then foreach c ∈ C do if c outside Zt - md then remove c from C ; end end // return the cluster containing most measured locations foreach c ∈ C do if size(c) = max then return c; end end else // when there is only one cluster, all measured locations are returned return zt - mls; end Function RemoveOutliers Xu. Weilin Master of Science Thesis 3-2 Design of tracking algorithm 39 Input: zt - mls :measured locations(filtered), zt - md :the moving direction at t St−1 :the space at t − 1 m :the sub model Output: St :the space at t // Smajority denotes the space property of the majority of measured locations find Smajority of zt - mls ; if Smajority = St−1 then St ← St−1 ; else if ∃ door ∈ m : door connects Smajority and St−1 and door is inside zt - md then if St−1 at door then St ← Smajority ; else St ← door ; end else St ← St−1 ; end end return St Function DetermineSpace Master of Science Thesis Xu. Weilin 40 Spatial model-aided tracking algorithm Input: Zt :the selected measurements at t, could be zt - mls or zt - md S o space at t nt :the − pk,t :prior probability grids Output: {pk,t } :posterior probability grids if Zt = zt - mls then // update using WiFi measured locations zt - mls forall the k do // initialize p(zt | xk,t , m) p(zt | xk,t , m) ← 0; if xk,t ∈ St then // apply the rectangular window function to each measured location foreach zi ∈ zt - mls do di ← distance(xk,t , zi ) ; compute W (di ) ; end Q p(zt | xk,t , m) ← W (di ) end pk,t ← α p(zt | xk,t , m) p− k,t ; end else // update using the current moving direction zt - md forall the k do // initialize p(zt | xk,t , m) p(zt | xk,t , m) ← 0; if xk,t ∈ St and p− k,t = max then compute angledif f between vector(xt−1 , xk,t ) and zt - md ; if angledif f = min then p(zt | xk,t , m) = 1; end end pk,t ← α p(zt | xk,t , m) p− k,t ; end end return {pk,t } Function ComputePosteriorProbability Xu. Weilin Master of Science Thesis 3-2 Design of tracking algorithm 41 Input: xt :the location at t zt - md :the moving direction at t M :the entire grid model Output: :the qualified location xt−3 , zt−3 - md ← get the previous location and moving direction at t − 3 ; zt−3:t ← get all measurements from t − 3 to t ; n o p− k,t , m ← P rediction(xt−3 , zt−3 - md, M ) ; n o xcheck , mdcheck ← U pdate( p− k,t , zt−3:t , zt−3 - md, m) ; if DistanceDiff(xt , xcheck ) < DT and AngleDiff(zt - md, mdcheck ) < AT then return xt ; else return xcheck ; end Function TrackingqualityCheck Input: xt−1 :the location at t-1 zt−1 - md :the moving direction at t-1 zt :measured orientations and locations from t − 1 to t M :the entire grid model Output: turning result zt+1 ← get more measurements ; mdaverage ← Average({zt+1 - mds}) ; if AngleDiff(zt−1 - md, mdaverage ) > AT difference xturn ← find the turning point ; n ◦ then // AT is a threshold of angle o p− k,t , m ← P rediction(xturn , M ) ; n o xt ← U pdate( p− k,t , zt:t+1 , m) ; return true; else return false; end Function TurningProcess Master of Science Thesis Xu. Weilin 42 Xu. Weilin Spatial model-aided tracking algorithm Master of Science Thesis Chapter 4 Implementation and Testing To answer research question 3: How can the spatial model aided tracking algorithm be implemented and tested? This chapter introduces the architecture of tracking system and explains how each layer of this system is implemented. Five tests are done using this system to check the performance of this tracking algorithm in a live environment. They respectively look at the algorithm’s ability to track a pedestrian in different situations, such as in one space, between two spaces, with turning and in a short distance. 4-1 4-1-1 Preprocessing Build grid model This section describes how a hybrid grid model containing geometry, topology and semantics is constructed. The raw data to build the model is the floor plan of the selected environment. The general modeling flow is depicted in figure 4-1. Extract geometry The grid cells are generated automatically by using GIS software, but two parameters need to be set: extend and granularity (grid size). Apparently, the former one should be set as the extent of the floor plan. The criteria for choosing a suitable grid size are: 1. Important indoor objects e.g., door, obstacle can be represented by grid cells. Namely, the grid size should be smaller than these objects’ size. Master of Science Thesis Xu. Weilin 44 Implementation and Testing Figure 4-1: Modeling flow 2. The occupancy of a grid should be as few as possible, the ideal situation is that each grid cell is only occupied by one space or object. This enables a grid cell to have a unique attribute. 3. The human factors such as step length or average walking speed should also be taken into consideration. 4. The size of the model should not be too large. With increasing the number of grid cells, the storage and computational load also go up and thus a too small cell size should be avoided. In order to find appropriate grid granularity for the tracking environment, a series of grid sizes ranging from 0.5 meters to 4 meters are compared in table 4-1. The total number of grid cells, their intersections with indoor space and objects and the uniqueness of grid cells are listed with respect to the size of grid. More intersections indicates more details of the environment can be represented. The uniqueness of grid cells shows the percentage of grid cells that have unique occupancy. granularity 4m 2m 1m 0.7m 0.5m number of grid cells 72 257 944 1725 3598 intersection 231 528 1442 2554 4442 uniqueness 31.2% 48.6% 65.5% 67.5% 81% Table 4-1: Comparison of grid granularity From the comparison in table 4-1, it is notable that when the granularity is smaller than 1 meter, most grid cells have unique occupancy. With the decrease of granularity, the intersections and uniqueness grows up but the number of grid cells also increase. Considering the localization frequency of WiFi positioning system is 0.5 second and the averaging walking Xu. Weilin Master of Science Thesis 4-1 Preprocessing 45 speed of human is 1.4 m/s [33] per second. A very fine granularity (less than 0.7m) is not necessary for the localization purpose. Moreover in the algorithm, we integrate a grid filter with the model and the common used size of grid filter is between 10 cm and 1 m according to the literature (see section 2-3-2). Therefore 0.7 m is used by this thesis. Extract semantics There are three types of semantic features: space, door, obstacle (introduced in section 3-1-2). For each grid cell, it must have one and only one space feature, but may have null or one object feature (door or obstacle). We derive the space and object feature of a grid cell by intersecting it with the floor plan. To ensure each grid cell has a unique space or obstacle feature, a filtering based on area is applied to the initial results of intersection. If a grid cell intersects with multiple spaces, than only the space that has the most occupancy is assigned to this grid cell. If a grid cell is occupied by obstacles the grid cell is determined to be obstacle only when more than half of it is occupied. As the door’s geometry in the floor plan is small and it hardly occupies half or more of a cell when it intersects with multiple cells, we assign door feature to a cell once it intersects with a door. However when a cell intersects with more than one door, only the door that has the most occupancy is assigned to this grid cell. Build topology We first create the adjacency graph that describes eight neighbors of a grid cell (for the grid cells at the boundary, there are less than eight neighbors). Then the connectivity of grid cells is derived based on the adjacency graph. A grid cell, which is not obstacle, is connected to its adjacent neighbors that have the same space property. Grid cells in different space are connected only through door cells. The final grid model is shown in figure 4-2. Master of Science Thesis Xu. Weilin 46 Implementation and Testing Figure 4-2: Grid model Xu. Weilin Master of Science Thesis 4-1 Preprocessing 4-1-2 47 Set up Mobile device Two types of data are measured real time for tracking: location and orientation. The first one is obtained by the WiFi positioning system and the second one is acquired by the magnetometer sensor of the mobile device. WiFi positioning system The first step is to create the radio map of the given area based on the RSSI data from all fixed APs. To get high positioning accuracy, we have dense sampling points (see figure 4-3a). The sampling interval ranges from 2 to 3 meters influenced by the obstacles in the indoor space. Then the sampling data is processed to generate the radio map (see figure 4-3b). During the online phase of WiFi positioning, the live RSS values are then compared to the radio map to find the closest match. (a) WiFi fingerprint sampling points (b) Visualization of the radio map Figure 4-3: Radio map The accuracy of WiFi positioning system is tested. According to the developer of the WiFi positioning system, 90% locations have an accuracy of 3.4m. However, in our testing environment the accuracy is lower. This may be due to the influence of the Wireless LAN Controller in our environment that adjusts the signal strength of access point based on the environment. We compare the positioning accuracy in 4 locations table 4-2. It is notable that the position accuracy is not the same everywhere, in some places the wifi locations are very accurate (0.9m) but in other place the positioning error is 10 times higher (9.2m). Master of Science Thesis Xu. Weilin 48 Implementation and Testing location l1 l2 l3 l4 stand deviation of x 1.68m 1.14m 1.89m 1.47m stand deviation of y 3.02m 0.31m 1.98m 1.75m accuracy 9.2m 4.8m 3.2m 0.9m Table 4-2: Comparison of positoning accuracy Magnetometer We use the magnetometer of the mobile device to measure its orientation. The coordinate system of mobile device is shown in figure 4-4. We use the angle between the magnetic north direction and the y-axis of mobile device to represent the orientation of the person because we ask people to hold the mobile device flat with the top forward. We test the accuracy of the measured orientation in two cases: still and walking in straight line. The angle’s stand deviation of the first case is around 2 degree and the stand deviation of the second case is around 9 degree. The person is likely to shake the mobile device during walking and thus the latter case has larger variance. Figure 4-4: Mobile device axis 4-2 Implementation of tracking system The architecture of the system is given in figure 4-5. The system has a three-layer architecture: the bottom layer is database where the spatial model is stored, the middle layer is web service where the tracking algorithm is implemented, the top layer is mobile device, where the measurements (location, orientation and time) are acquired and the tracking results are presented. The web service also has three layers: data access object (DAO) layer where the data from database is mapped to the web server, tracking service layer where the tracking Xu. Weilin Master of Science Thesis 4-2 Implementation of tracking system 49 algorithm is implemented, and controller layer where the communication between mobile device and service is controlled. However due to the limitation of time, the two parts indicated by dash line are not implemented. Currently the mobile client is not connected to the service in real time, thus the tracking is offline, which means the trajectory is computed after the walking, and the computed trajectories are stored in files instead of in database now. However, these two functions do not influence the research of this thesis. The performance of the tracking algorithm can still be tested using the incomplete system. As mentioned before, this thesis is carried out in the company CGI group who has a lot experience on system development. The experts from the company recommend the architecture of the system considering following advantages: • The mobile client is lightweight. We put most computation load at the sever layer so that the mobile client is only used to collect data and present the tracking results. • The low requirements for data transmission. The model data in need can be sent to the sever at start of the application, and during the tracking process the sever can retrieve the model data locally. Between the mobile client and server, only a few data is exchanged so it will not cause transmission problem. • The system has high efficiency. Since the server has strong computational capacity, the performance of the system is not restricted by the time complexity of the tracking algorithm. Figure 4-5: Tracking system structure Master of Science Thesis Xu. Weilin 50 4-2-1 Implementation and Testing Database For this system, the main function of database is to store the grid model. The open source spatial database PostGIS is used by this thesis. The entity-relationship diagram (ER diagram) of the grid model which illustrates the relationships between entities in the database [36], is given in figure 4-6. We can see the core component of the model is the grid cell that has relationships with all other components. It has many to one relationship with space, obstacle and door. Each space, obstacle or door is comprised of several grid cells. Every grid cell must be related to one and only one space but may be related none or one object (door or obstacle). To represent the connectivity between grid cells, the grid table is also related to itself. A grid cell can have at most 8 neighboring cells. The grid cell entity has an attribute of geometric coordinates. The space entity has three attributes: space_type which describes the structure type of the space (e.g., room, vertical passage, hall, etc.), usage_type of the space (e.g., work, print, washroom, etc.) and the floor of the space. The obstacle has an attribute of obstacle type (e.g., table, couch, shelf, etc.). The door is the connection between two spaces so that it has an attribute of the connected spaces (we assume the door can be opened from both sides, so the direction of connection is not included). All entities and the relationship ’Has neighbors’ are converted to tables in the database and other relationships are represented through foreign keys. Figure 4-6: Entity-relationship diagram 4-2-2 Web service The web service is the most important part in this system, because most of the computation is executed here. We build the web service using java technology. The program on the web service is developed using Spring framework (it gives infrastructural support for programming) and published on an open source web server Apache Tomcat. The combination of Xu. Weilin Master of Science Thesis 4-3 Experiment results and analysis 51 spring framework and tomcat server is widely used for web-based enterprise application and recommend by CGI Group Company. The web service has three layers: Data access object (DAO) layer is responsible for communication with database. It maps the model data from database to the server so that the computations based on the model can be carried out locally. This increases the efficiency of the system greatly. The DAO layer is implemented using the DAO module of Spring framework [37] with an open source object-relational mapping (ORM) library hibernate spatial [38]. The benefits of DAO module and ORM are that they allow data persistence and high performance of the application. The tracking service layer is where the proposed tracking algorithm is implemented. The program on this layer is mostly written by the author except two libraries used for shortest path computation (PatherFinder [39]) and clustering (Hac [40]). The controller layer is created to manage request-response between the mobile client and the server. 4-2-3 Mobile client The mobile client is developed based on Android 4.0+ operating system. The radio map of the indoor environment is stored on the mobile client in xml format. The main function this mobile client is to measure the location, orientation, and time of the mobile device. We developed an application which integrates the WiFi positioning system with the module to obtain the orientation and time from magnetometer and the device’s clock. Due to the limitation of time, the real-time communication between the mobile client and the web server is not realized yet. 4-3 4-3-1 Experiment results and analysis Experiment contexts The testing environment is the office of CGI Group company, at the A wing of the 8th floor (around 780 m2 ) and the middle part of the 10th floor (around 220 m2 ). On the 8th floor 63 WiFi APs are used for WiFi positioning and On the 10th floor 30 WiFi APs are used. These APs are not only from 8th or 10th floor but also from other floors. The mobile device used for testing is Motorola Moto G. Its OS is Android 4.4.2 and it has WiFi function and magnetometer sensor. We set the tracking interval of the algorithm as 3 seconds. The tests given below were carried out at different times. 4-3-2 Case 1: Walking inside a space The first case is walking inside a space. The objective of this test is to check if the proposed tracking algorithm can derive the moving trend of the walking person correctly and localize Master of Science Thesis Xu. Weilin 52 Implementation and Testing the person at an appropriate place (not inside obstacle and not in wrong space). The test results are given in figure 4-7. From the result, we can see though there are some obvious errors in the raw measurements of the WiFi positioning system, our algorithm still gets an accurate trajectory of the person. No location is inside obstacle or at a wrong space and the moving direction is correct. (a) wifi measured locations (b) tracking results Figure 4-7: Tracking inside a space: (a) the green points are WiFi measured locations, the orange line is the actual walking path of the person. (b) the red star is the start location and the blue points with the sequence numbers are locations computed by the tracking algorithm. As introduced in section 3-2-5, a location can be computed based on either WiFi measured locations or the moving direction. Later we call the location obtained via the first method measured location and the location obtained via the second method estimated location. For the tracking result of this case, the first two location point 1 and 2 are measured locations, points 3 to 5 are estimated due to the fact that no accurate WiFi measured location are available during this period. After that the location 6, 7 and 8 are measured locations again. It is notable that even though many WiFi measured locations used to compute location 6 are located inside a neighboring space, the location 6 is still calculated correctly in the old space by our algorithm. The last location 9 is estimated. In summary, the proposed algorithm has good performance on filtering unreliable WiFi measured locations, and it can provide reasonable estimation of person’s location when no accurate WiFi measured location is available. 4-3-3 Case 2: Walking between spaces The second case is walking between spaces. This test aims to check the algorithm’s capacity on switching the person’s locations between two spaces. We can see both locations 11 in Xu. Weilin Master of Science Thesis 4-3 Experiment results and analysis 53 figure 4-8b and figure 4-8c are at the door connecting two spaces. This is because it’s first time most WiFi measured locations are in a new space and the algorithm is not sure that the person really enters the new space. So the location is put at the transition zone between two spaces. The next time when most WiFi measured locations are in the new space again, the algorithm confirms that the person enters the new space and computes the location based on WiFi measured locations (location 12). It can be seen that there is a delay for entering a new space caused by the algorithm’s conformation process. However the delay is not obvious for one tracking interval (3 seconds). So we think the tracking algorithm’s performance on space change is also quite well. (a) WiFi measured locations (b) tracking results with more estimated locations (c) tracking results with more measured locations Figure 4-8: Tracking between two spaces: (a) the green points are WiFi measured locations, the orange line is the actual walking path of the person. (b) and (c) the red star is the start location and blue points with sequence numbers are locations computed by the tracking algorithm. In addition, this test also looks at the influence of the ratio of measured locations and estimated locations in a trajectory on the accuracy. Since there are always inaccurate WiFi measured locations during tracking, the trajectories always consist of both measured locations and estimated locations. It is significant to know which type of location is more accurate. A comparison is given by figure 4-8b and figure 4-8c. They use the same data to compute the person’s walking trajectory, but the test of figure 4-8b has a smaller tolerance for inaccurate WiFi measured locations than the test of 4-8c . Therefore more locations in this test are estimated, for example the locations from 2 to 6 are all estimated location in 4-8b while in the test of figure 4-8c, these locations are all measured location except location 6. It’s notable that the estimated locations are closer to the actual path in this case. We think the estimated location could be more accurate than measured location for a short walking distance when the moving direction is not changing, however there is also error caused by continuous estimations which can be seen in the later test. Master of Science Thesis Xu. Weilin 54 Implementation and Testing 4-3-4 Case 3: Walking with turning The third case is to check if the algorithm is able to deal with turning situations. The experiment result in figure 4-9 shows that the algorithm can find a reasonable turning point in the indoor environment and properly handle the change of moving direction. In this test, it can be seen that in the middle part of the trajectory, locations are computed at the wrong side of the obstacle. On the way from bottom to top, the error firstly happens at location 4 which is located at the wrong side of the obstacle, after that even though new WiFi measured locations are in the right side of the obstacle, the next location is still put at wrong side because the path to the other side is blocked. Until the location 8 that is at the end of the obstacle, the trajectory is adjusted. The same situation can be also seen on the way back from location 14 to 18. This type of error is caused by two factors: 1. the WiFi positioning system is not very accurate. This causes the algorithm to determine the location at the wrong side. 2. the algorithm takes the constraint of indoor environment into consideration so that the error can not be corrected immediately. We think this error is acceptable therefore it does not influence the general tracking trend and can be corrected over time. In addition, it is notable that the moving direction from 5 to 6 is opposite to the actual moving direction. This is due to the control of estimation error which is explained in the section 4-3-6. 4-3-5 Case 4: Comparison of tracking performance on short and long path The fourth case studies if the tracking distance has an effect on the performance of the algorithm. From the figure 4-10, we can see both the trajectories of short distance and long distance deviate from the actual path inside the orange box. This error looks less serious for the long trajectory because it is corrected later. The similar example can also be seen in the result of the last test. Based on these results, we think the tracking performance can be improved over time or tracking distance. 4-3-6 Case 5: Estimation error control The fifth case looks at the error caused by estimation and how the algorithm prevents the growth of this error. The test in figure 4-11a shows the maximum estimation error allowed by the algorithm. In figure 4-11b the location 1 and 2 are estimated locations because the WiFi measured locations are not inside the moving direction of the location 0. When computing location 3, the estimation error is over the threshold. The location 3 is adjusted by using WiFi measured locations obtained in a long period (from 1 to 3). Thus, the location 3 goes back. After that, location 4 and 5 are computed using WiFi measured locations. It proves that the estimation error will not increase over time. Xu. Weilin Master of Science Thesis 4-3 Experiment results and analysis (a) WiFi measured locations 55 (b) tracking results Figure 4-9: Tracking with turning: (a) the green points are WiFi measured locations, the orange line is the actual walking path of the person. (b) the red star is the start location, the blue points with sequence numbers are locations computed by the tracking algorithm and the black point is the turning point. Figure 4-10: Comparison of short and long path: the brown points and vector represent the locations computed by the algorithm and actual path of a short walking, the blue points and vector represent the locations computed by the algorithm and actual path of a long walking. Master of Science Thesis Xu. Weilin 56 Implementation and Testing (a) WiFi measured locations (b) tracking results Figure 4-11: Control of estimation error: (a) the green points are WiFi measured locations for the locations 1 to 5 in (b), the orange line is the actual walking path of the person. (b) the the blue points with sequence numbers are locations computed by the tracking algorithm. Xu. Weilin Master of Science Thesis Chapter 5 Conclusion and future work 5-1 Conclusion In this thesis, a spatial model-aided tracking algorithm based on WiFi positioning system is proposed and its performance is tested in a live environment. The conclusion is made with respect to the three sub research questions: 1. what features of spatial model could be employed for tracking? 2. In what way can the selected features be integrated together to decrease tracking errors of WiFi positioning system? 3. How can the spatial model aided tracking algorithm be implemented and tested? 5-1-1 Spatial model The grid model is suitable for tracking purpose. We compared several spatial models based on different decompositions of the indoor environment through literature study. We consider the grid model with regular subdivision of the indoor space is more appropriate because of following advantages: It is easy to design and maintain. It has high flexibility. It is able to provide accurate location data. Moreover, it is powerful for computation. All geometric, topological and semantic features can contribute to improving the tracking performance. As for geometric features, geometric coordinates, buffer, orientation, and distance are useful for tracking. The geometric coordinates is employed to match the measurements of WiFi positioning system to the model. The buffer of the previous location is used to derive a smaller model for computing the current location. The orientation vector from the previous location to a grid cell is compared with the measured direction by the mobile device to determine if the grid cell has a high probability to be the current location. The distance is used to derive the distance difference feature that is one determinant of the prior probability of the current location. As for semantic features, space, door and obstacle are employed. Master of Science Thesis Xu. Weilin 58 Conclusion and future work First these semantic features with the geometric coordinates are used together to derive the connectivity graph of the grid model. Then they are included in both prediction and update steps of the tracking algorithm. The ’space’ is a determinant of the prior probability and it is used to determine the space property in the update step. The ’obstacle’ is also a determinant of the prior probability it is used with the space to find the turning point. The ’door’ plays an important role in the change of spaces. It works as a transition zone between two spaces and successfully avoids ambiguous situations between spaces. As for topological features, various features are derived, e.g., adjacency graph, connectivity graph, shortest path distance and distance difference. These features are strongly related but not all of them are used. The distance difference and connectivity graph are employed by the algorithm respectively for prediction and finding the turning point. 5-1-2 Tracking algorithm The tracking algorithm integrates all selected features of the spatial model as well as measurements from WiFi positioning system and magnetometer using the grid filter. The grid filter is a technique initially used for mobile robot localization and tracking, but we successfully adapted it to pedestrian tracking. In the prediction step of the grid filter, the geometric features (buffer, orientation vector), topological features (distance difference) and semantic features (space, obstacle) are combined to determine the prior probability of the location. In the update step of the grid filter, the geometric coordinate feature is used to match the measured locations to the model, and the combinations of different types of features are employed for special cases, such as space change and turning. The orientation vector together with semantic features of space and door are used to determine the space property of locations at the border of two spaces. The orientation vector, the semantic features of space and obstacle, and connectivity graph are integrated to find the turning point. The tracking algorithm can reduce the tracking errors of the WiFi positioning system. We have tested the tracking algorithm for various cases in a live environment tracking. Our test results shows that the algorithm can not only adjust the inaccurate locations measured by the WiFi positioning system to a more reasonable place but also estimate a reliable location when the quality of WiFi positioning is too poor. Moreover, the algorithm has the ability to deal with complicated tracking cases like turning and passing spaces. However, it is difficult to assess the tracking results quantitatively because we don’t know the precise walking path. But by qualitatively comparing the computed trajectory and the actual path in the test result, we can see the algorithm is able to derive the moving direction of the pedestrian correctly and locate the pedestrian is always at a reasonable place (in the right space and outside obstacles), and there is no obvious jumps between locations. The performance of the algorithm is dependent on the input parameters, the indoor environment and the tracking distance. The test case 2 shows the tolerance of outliers of WiFi measured location can influence the tracking accuracy. From the test case 3 and 4, it can be seen that the accuracy of the trajectory is affected by the constraints of the environment and distance to track. The algorithm shows weakness on determining the location at the correct side of the obstacle, but this error can be corrected with the increase of the tracking distance. Xu. Weilin Master of Science Thesis 5-2 Future work 5-1-3 59 Implementation A tracking system is implemented to test the proposed algorithm. We developed a tracking system using java technology. The system has three layers: database where the spatial model is stored, web service where the tracking algorithm is implemented and mobile client where the location and orientation data is measured. The web service also has three layer: DAO layer, tracking service layer and control layer. The architecture of the system is recommended by the CGI group company because it has following advantages: lightweight mobile client, low requirements for data transmission, and high efficiency. The tracking algorithm is tested offline, because the mobile client is not connected to web service in real time, the algorithm is applied after the collection of all measurements. But the system has the ability to track the pedestrian online when it is fully implemented. 5-2 Future work The proposed tracking algorithm can provide a relatively accurate trajectory of the pedestrian under the given assumptions. But the following aspects of the algorithm and tracking system could be improved in future: The algorithm uses a constant walking speed that is not suitable for real situations. The walking speed of the person could be updated according to traveled distance and time. In order to measure the speed, other devices such as inertial measure unit (IMU) and pedometer are needed. With accurate speed, the algorithm can adjust the search region of the current location (buffer) dynamically. The algorithm uses the direction of the y-axis of mobile device to represent the person’s orientation. However, this direction may be not the walking direction of the person if the mobile device is rotated. It is necessary to adjust the direction based on the position of the mobile device. Most parameters of the algorithm are determined by experience or limited experiments. A research on how to optimize these parameters should be carried out in the future. The 2D grid model is used by this system. However, this model has limitations to represent the vertical space between floors. In order to estimate the trajectory between different floors, a 3D model could be considered. The system should be fully implemented and tested in the case of online tracking. The algorithm should be tested in a larger and more complex environment such as a large open space or a place with repetitive architectural patterns. It is significant to know if the size and complexity of the environment will influence the tracking performance. A quantitative evaluation method to assess the performance of the tracking algorithm needs to be studied. Master of Science Thesis Xu. Weilin 60 Xu. Weilin Conclusion and future work Master of Science Thesis Bibliography [1] J. Lloret, J. Tomas, A. Canovas, and I. Bellver, “Geowifi: A geopositioning system based on wifi networks,” in ICNS 2011, The Seventh International Conference on Networking and Services, pp. 38–43, 2011. [2] A. Bose and C. H. Foh, “A practical path loss model for indoor wifi positioning enhancement,” in Information, Communications & Signal Processing, 2007 6th International Conference on, pp. 1–5, IEEE, 2007. [3] M. Youssef, “Horus: A wlan-based indoor location determination system,” Department of Computer Science, University of Maryland, 2004. [4] S. Thrun, W. Burgard, and D. Fox, Probabilistic robotics. MIT press, 2005. [5] W. Burgard, D. Fox, and D. Hennig, “Fast grid-based position tracking for mobile robots,” in KI-97: Advances in Artificial Intelligence, pp. 289–300, Springer, 1997. [6] M. Worboys, “Modeling indoor space,” in Proceedings of the 3rd ACM SIGSPATIAL International Workshop on Indoor Spatial Awareness, pp. 1–6, ACM, 2011. [7] C. S. Jensen, H. Lu, and B. Yang, “Graph model based indoor tracking,” in Mobile Data Management: Systems, Services and Middleware, 2009. MDM’09. Tenth International Conference on, pp. 122–131, IEEE, 2009. [8] D. L. Lee and Q. Chen, “A model-based wifi localization method,” in Proceedings of the 2nd international conference on Scalable information systems, p. 40, ICST (Institute for Computer Sciences, Social-Informatics and Telecommunications Engineering), 2007. [9] B. Domínguez, Á. García, and F. Feito, “Semantic and topological representation of building indoors: an overview,” CNKI Proc., The International Society for Photogrammtery and Remote Sensing (ISPRS), 2011. [10] Y. Kim, H. Shin, and H. Cha, “Smartphone-based wi-fi pedestrian-tracking system tolerating the rss variance problem,” in Pervasive Computing and Communications (PerCom), 2012 IEEE International Conference on, pp. 11–19, IEEE, 2012. Master of Science Thesis Xu. Weilin 62 Bibliography [11] S. Zlatanova, G. Sithole, M. Nakagawa, and Q. Zhu, “Problems in indoor mapping and modelling,” ISPRS-International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, vol. 1, no. 4, pp. 63–68, 2013. [12] F. Donovan, “Indoor location market to reach $ 4 billion in 2018, predicts abi.” http://www.fiercemobileit.com/story/indoor-location-market-reach-4-billion-2018predicts-abi/2013-10-18, October 2013. [13] M. Zhao, “The wifi-based positioning technologies with smart mobile device,” Master’s thesis, Wuhan University, 2013. [14] X. Li, C. Claramunt, and C. Ray, “A grid graph-based model for the analysis of 2d indoor spaces,” Computers, Environment and Urban Systems, vol. 34, no. 6, pp. 532–540, 2010. [15] E.-P. Stoffel, B. Lorenz, and H. J. Ohlbach, “Towards a semantic spatial model for pedestrian indoor navigation,” in Advances in Conceptual Modeling–Foundations and Applications, pp. 328–337, Springer, 2007. [16] V. Tsetsos, C. Anagnostopoulos, P. Kikiras, and S. Hadjiefthymiades, “Semantically enriched navigation for indoor environments,” International Journal of Web and Grid Services, vol. 2, no. 4, pp. 453–478, 2006. [17] I. Afyouni, C. Ray, and C. Claramunt, “Spatial models for context-aware indoor navigation systems: A survey,” Journal of Spatial Information Science, no. 4, pp. 85–123, 2014. [18] M. Goetz and A. Zipf, “Extending openstreetmap to indoor environments: bringing volunteered geographic information to the next level,” Proceedings of the Urban and Regional Data Management: Udms Annual 2011, pp. 47–58, 2011. [19] B. Lorenz, H. J. Ohlbach, and E.-P. Stoffel, “A hybrid spatial model for representing indoor environments,” in Web and Wireless Geographical Information Systems, pp. 102– 112, Springer, 2006. [20] J. O. Wallgrün, “Hierarchical voronoi-based route graph representations for planning, spatial reasoning, and communication,” in Proceedings of the 4th International Cognitive Robotics Workshop (CogRob-2004), pp. 64–69, Citeseer, 2004. [21] F. Lamarche and S. Donikian, “Crowd of virtual humans: a new approach for real time navigation in complex and structured environments,” in Computer Graphics Forum, vol. 23, pp. 509–518, Wiley Online Library, 2004. [22] G. Franz, H. Mallot, J. Wiener, and K. Neurowissenschaft, “Graph-based models of space in architecture and cognitive science-a comparative analysis,” in Proceedings of the 17th International Conference on Systems Research, Informatics and Cybernetics, pp. 30–38, 2005. [23] J. Röning, J. Riekki, and T. Seppänen, “Annual report 2008 of intelligent systems group.” http://www.infotech.oulu.fi/Annual/2008/isg.html, 2008. [24] L. E. Miller, Indoor navigation for first responders: a feasibility study. Citeseer, 2006. Xu. Weilin Master of Science Thesis 63 [25] D. Fox, D. Schulz, G. Borriello, J. Hightower, and L. Liao, “Bayesian filtering for location estimation,” IEEE pervasive computing, vol. 2, no. 3, pp. 24–33, 2003. [26] Wikipedia, “Hidden markov model.” http://en.wikipedia.org/wiki/Hidden_Markov_model, 2014. [Online; accessed 21-June-2014]. [27] I. Spassov, “Algorithms for map-aided autonomous indoor pedestrian positioning and navigation,” EPFL Thesis, Lausanne, 2007. [28] G. Girard, S. Côté, S. Zlatanova, Y. Barette, J. St-Pierre, and P. Van Oosterom, “Indoor pedestrian navigation using foot-mounted imu and portable ultrasound range sensors,” Sensors, vol. 11, no. 8, pp. 7606–7624, 2011. [29] M. Khider, S. Kaiser, P. Robertson, and M. Angermann, “The effect of maps-enhanced novel movement models on pedestrian navigation performance.,” in The 12th annual European Navigation Conference (ENC 2008), 2012. [30] Wikipedia, “Taxicab geometry.” http://en.wikipedia.org/wiki/Manhattan_distance, 2014. [Online; accessed 10-June-2014]. [31] MathWorld, “Dot product.” http://mathworld.wolfram.com/DotProduct.html, 2014. [Online; accessed 22-June-2014]. [32] Wikipedia, “Degenerate distribution.” http://en.wikipedia.org/wiki/Degenerate_distribution, 2013. [Online; accessed 14-June-2014]. [33] Wikipedia, “Preferred walking speed.” http://en.wikipedia.org/wiki/Preferred_walking_speed, 2014. [Online; accessed 15-June-2014]. [34] S. Theodoridis and K. Koutroumbas, Pattern recognition. Academic Press, 2009. [35] MathWorld, “Rectangle function.” http://mathworld.wolfram.com/RectangleFunction.html, 2014. [Online; accessed 14-June-2014]. [36] R. Ramakrishnan and J. Gehrke, Database management systems, vol. 3. McGraw-Hill New York, 2003. [37] Spring, “Spring framwork.” http://spring.io/projects, 2014. [Online; accessed 22-June2014]. [38] Hibernate, “Hibernate ogm.” http://hibernate.org/ogm/, 2014. [Online; accessed 22June-2014]. [39] P. Lager, “Path finder library.” http://www.lagers.org.uk/pfind/index.html, 2014. [Online; accessed 23-April-2014]. [40] Software and P. E. R. Group, “Hac - a java class library for hierarchical agglomerative clustering.” http://sape.inf.usi.ch/hac.html, 2013. [Online; accessed 15-May-2014]. Master of Science Thesis Xu. Weilin 64 Xu. Weilin Bibliography Master of Science Thesis Glossary LBS location-based services GPS Global Positioning System RSS received signal strength RSSI received signal strength indicator APs access points IFC Industry Foundation Classes KML Keyhole Markup Language GVD generalized Vorinoi Diagram GVG generalized Vorinoi Graph IMU inertial measurement unit OS operating system ER diagram entity-relationship diagram ORM object-relational mapping DAO Data access object Master of Science Thesis Xu. Weilin 66 Xu. Weilin Glossary Master of Science Thesis Appendix A: Mobile client 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class Tracking extends ActionBarActivity { private ArrayList<String> locationData = new ArrayList<String >() ; private Location location ; private SensorManager mSensorManager ; private Sensor mOrientationSensor , mAccelerometerSensor ; private float mTargetDirection , mAccelerometer ; private Boolean hasOritensionSensor , hasAccelerometerSensor , hasRegisterSensorTOSensorManger , hasRegisterSensorTASensorManger ; float x ; float y ; String result ; private TextView text1 ; private TextView text2 ; boolean start ; long starttime ; long stoptime ; double measuretime ; @Override protected void onCreate ( Bundle savedInstanceState ) { super . onCreate ( savedInstanceState ) ; setContentView ( R . layout . activity_tracking ) ; } 22 23 24 25 26 27 28 @Override public boolean onCreateOptionsMenu ( Menu menu ) { // Inflate the menu; this adds items to the action bar if it is present . getMenuInflater ( ) . inflate ( R . menu . tracking , menu ) ; return true ; } 29 30 31 32 33 34 35 @Override public boolean onOptionsItemSelected ( MenuItem item ) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button , so long // as you specify a parent activity in AndroidManifest .xml. int id = item . getItemId ( ) ; Master of Science Thesis Xu. Weilin 68 Appendix A: Mobile client if ( id == R . id . action_settings ) { return true ; } return super . onOptionsItemSelected ( item ) ; 36 37 38 39 40 } 41 42 43 44 45 46 47 48 49 50 /* * start tracking */ public void start ( View view ) { start=true ; text1=(TextView ) findViewById ( R . id . textView1 ) ; text1 . setText ( " processing " ) ; localize ( ) ; starttime=System . nanoTime ( ) ; 51 52 } 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 /* * stop tracking and record measurements */ public void stop ( View view ) { start=false ; removeSensorFromSensorManger ( ) ; stoptime=System . nanoTime ( ) ; text2=(TextView ) findViewById ( R . id . textView2 ) ; text2 . setText ( "save" ) ; /* String Path = Environment . getExternalStorageDirectory () . getPath ();*/ String Path = "/ storage / emulated / legacy / whuapp " ; /* String Path = Environment . getDataDirectory (). getPath ();*/ try { FileWriter writer = new FileWriter ( Path+"/test.txt" , true ) ; writer . append ( "\n" ) ; for ( String point : locationData ) { writer . append ( point+"\n" ) ; 72 } double seconds= ( double ) ( stoptime−starttime ) / 1 0 0 0 0 0 0 0 0 0 . 0 ; writer . append ( "time:"+seconds ) ; writer . append ( "\n" ) ; writer . close ( ) ; } catch ( IOException e ) { // TODO Auto - generated catch block e . printStackTrace ( ) ; } 73 74 75 76 77 78 79 80 81 82 } 83 84 85 86 87 88 /** * initial sensor * * @param mSensorManager * SensorManageråŕźèśą Xu. Weilin Master of Science Thesis 69 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 */ private void initSensor ( SensorManager mSensorManager ) { this . mSensorManager = mSensorManager ; if ( ( mOrientationSensor = mSensorManager . getDefaultSensor ( Sensor . TYPE_ORIENTATION ) ) != null ) { hasOritensionSensor = true ; } if ( ( mAccelerometerSensor = mSensorManager . getDefaultSensor ( Sensor . TYPE_ACCELEROMETER ) ) != null ) { hasAccelerometerSensor = true ; } } 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 private SensorEventListener mySensorEventListener = new SensorEventListener ( ) { public void onAccuracyChanged ( Sensor sensor , int accuracy ) { } public void onSensorChanged ( SensorEvent event ) { Sensor sensor = event . sensor ; if ( sensor . getType ( )==Sensor . TYPE_ORIENTATION ) { // get direction float direction = event . values [ SensorManager . DATA_X ] ∗ −1.0f ; // change direction to 0~360 degree mTargetDirection = normalizeDegree ( direction ) ; mTargetDirection = normalizeDegree ( mTargetDirection ∗ −1.0f ) ; // } else if ( sensor . getType ( )==Sensor . TYPE_ACCELEROMETER ) { // get accelerometer mAccelerometer=getAccelerometer ( event ) ; } 121 } 122 123 }; 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 /** * register sensor to SensorManger */ protected void registerSensorToSensorManger ( ) { if ( hasOritensionSensor ) { mSensorManager . registerListener ( mySensorEventListener , mOrientationSensor , SensorManager . SENSOR_DELAY_GAME ) ; hasRegisterSensorTOSensorManger = true ; } if ( hasAccelerometerSensor ) { mSensorManager . registerListener ( mySensorEventListener , mAccelerometerSensor , Master of Science Thesis Xu. Weilin 70 Appendix A: Mobile client SensorManager . SENSOR_DELAY_GAME ) ; hasRegisterSensorTASensorManger = true ; 139 140 } 141 142 } 143 144 145 146 147 148 149 150 151 152 153 154 /** * remove sensor from SensorManger */ protected void removeSensorFromSensorManger ( ) { if ( hasOritensionSensor | | hasAccelerometerSensor ) { mSensorManager . unregisterListener ( mySensorEventListener ) ; hasRegisterSensorTOSensorManger = false ; hasRegisterSensorTASensorManger = false ; } 155 156 } 157 158 159 160 161 162 163 164 165 166 167 168 /** * change angle to 0~360 degree * * @param measured degree * * @return normalized angle */ private float normalizeDegree ( float degree ) { return ( degree + 7 2 0 ) % 3 6 0 ; } 169 170 171 private float getAccelerometer ( SensorEvent event ) { float [ ] values = event . values ; 172 // Movement float x = values [ 0 ] ; float y = values [ 1 ] ; float z = values [ 2 ] ; float accelationSquareRoot =z−SensorManager . GRAVITY_EARTH ; return accelationSquareRoot ; 173 174 175 176 177 178 179 } 180 181 182 183 184 185 186 187 188 189 public void localize ( ) { mSensorManager = ( SensorManager ) getSystemService ( Context . SENSOR_SERVICE ) ; location = Location . getInstance ( mSensorManager , Tracking . this , getIntent ( ) ) ; initSensor ( mSensorManager ) ; if ( hasOritensionSensor | | hasAccelerometerSensor ) { registerSensorToSensorManger ( ) ; } location . startLocation ( ) ; Xu. Weilin Master of Science Thesis 71 location . addOnLocationChangedListener ( new onLocationChangedListener ( ) { public void parseLocation ( LocationEvent e ) { if ( start ) { x = e . getX ( ) ; y = e . getY ( ) ; measuretime=(System . nanoTime ( )−starttime ) / 1 0 0 0 0 0 0 0 0 0 . 0 ; result=e . getResult ( ) ; x=x +507400; y=y +6791600; String measure = x + "," + y +","+measuretime+","+ mTargetDirection+","+mAccelerometer+","+result ; locationData . add ( measure ) ; } } }) ; 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 } } Master of Science Thesis Xu. Weilin 72 Xu. Weilin Appendix A: Mobile client Master of Science Thesis Appendix B: Tracking algorithm (parts) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public Grid tracking ( Grid pgrid , List<Geometry> measurements , Map<String , String> params ) { Double ori = Double . parseDouble ( params . get ( "ori" ) ) ; Double velocity= Double . parseDouble ( params . get ( " velocity " ) ) ; Double tinterval=Double . parseDouble ( params . get ( " tinterval " ) ) ; Double oriweight = Double . parseDouble ( params . get ( " oriweight " ) ) ; Double preori=Double . parseDouble ( params . get ( " preori " ) ) ; List<Double> mpara = new ArrayList<Double >() ; Collection<Grid> mgrids =new HashSet<Grid >() ; Map<String , Integer> spacevalue =new HashMap<String , Integer >() ; Map<Grid , Double> posterior = new HashMap<Grid , Double >() ; mpara . add ( velocity ) ; mpara . add ( tinterval ) ; Collection<Grid> gridmodel = updateGridModel ( pgrid , mpara , getGrids ( ) ) ; Map<Grid , Double> priori = prediction ( pgrid , gridmodel , preori , oriweight ); if ( measurequalityCheck ( pgrid , measurements , params ) . size ( ) >0){ measurements=measurequalityCheck ( pgrid , measurements , params ) ; mgrids = mapPointtomodel ( measurements , gridmodel ) ; spacevalue=spaceCheck ( mgrids , pgrid , ori , velocity ∗ tinterval ) ; posterior = probabilityUpdate ( mgrids , spacevalue , gridmodel , priori ,3.0) ; /* Grid location = pgrid ;*/ Grid location = findMaxpos ( posterior ) ; return location ; 23 24 25 } else { return estimateLocation ( priori , ori , pgrid ) ; 26 27 } 28 29 30 31 32 } /** * derive the sub model */ Master of Science Thesis Xu. Weilin 74 Appendix B: Tracking algorithm (parts) public Collection<Grid> updateGridModel ( Grid pgrid , List<Double> para , Collection<Grid> model ) { Double ratio= 2 . 0 ; Double extend = ratio ∗ para . get ( 0 ) ∗ para . get ( 1 ) ; Collection<Grid> newgridmodel = new ArrayList<Grid >() ; for ( Grid grid : model ) { if ( grid . getGeometry ( ) . coveredBy ( pgrid . getGeometry ( ) . buffer ( extend ) ) ){ newgridmodel . add ( grid ) ; 33 34 35 36 37 38 39 40 } 41 42 } return newgridmodel ; 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 } /** * prediction step: * compute priori probability */ public Map<Grid , Double> prediction ( Grid pgrid , Collection<Grid> gridmodel , Double ori , Double oriweight ) { Map<Grid , Double> priori = new HashMap<Grid , Double >() ; Double totalpos = 0 . 0 ; for ( Grid grid : gridmodel ) { Double pos ; if ( grid . getObs_id ( )==null ) { GraphNode [ ] path= getRoute ( pgrid . getId ( ) , grid . getId ( ) ) ; Double shortestpath=getRouteDistance ( path ) ; Double distance = pgrid . getGeometry ( ) . getCentroid ( ) . distance ( grid . getGeometry ( ) . getCentroid ( ) ) ; Double pos0=getPreprob ( Math . abs ( shortestpath−distance ) ) ; if ( grid . getSpace_id ( )==pgrid . getSpace_id ( ) ) { pos=pos0 ; } else { pos=pos0 ∗ 0 . 5 ; } } else { pos = 0 . 0 ; } if ( ori<=2∗Math . PI ) { if ( oriCheck ( pgrid . getGeometry ( ) , grid . getGeometry ( ) , ori , 1 0 . 0 , Math . PI / 4 ) ) { pos=pos ∗ oriweight ; } } 73 74 75 76 77 78 79 80 priori . put ( grid , pos ) ; } return priori ; } /** * remove outliers of WiFi measured location */ Xu. Weilin Master of Science Thesis 75 81 82 83 84 85 86 87 88 89 private List<List<Integer>> removeOutliers ( List<List<Integer>> clusters , List<Double [] > clustercenters , Grid pgrid , Map<String , String> params ) { Double ori = Double . parseDouble ( params . get ( "ori" ) ) ; Double velocity= Double . parseDouble ( params . get ( " velocity " ) ) ; Double tinterval=Double . parseDouble ( params . get ( " tinterval " ) ) ; Double range = 2∗ velocity ∗ tinterval ; int msize = Integer . parseInt ( params . get ( " msize " ) ) ; List<List<Integer>> newclusters = new ArrayList<List<Integer >>() ; List<Double [] > newclustercenters= new ArrayList<Double [ ] > ( ) ; int size=clustercenters . size ( ) ; 90 91 92 93 94 95 96 97 98 99 100 101 102 for ( int i =0; i<size ; i++){ GeometryFactory gf = new GeometryFactory ( ) ; Point pt =gf . createPoint ( new Coordinate ( clustercenters . get ( i ) [ 0 ] , clustercenters . get ( i ) [ 1 ] ) ) ; if ( oriCheck ( pgrid . getGeometry ( ) , pt , ori , range , Math . PI / 3 ) ) { newclusters . add ( clusters . get ( i ) ) ; newclustercenters . add ( clustercenters . get ( i ) ) ; } } clusters . clear ( ) ; clustercenters . clear ( ) ; clusters=newclusters ; clustercenters=newclustercenters ; 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 if ( clusters . size ( ) >1){ int max =0; int ind =0; int sum =0; for ( int i=0;i<clusters . size ( ) ; i++){ sum=sum+clusters . get ( i ) . size ( ) ; if ( clusters . get ( i ) . size ( )>max ) { max=clusters . get ( i ) . size ( ) ; ind=i ; } } if ( max>=sum / 2 ) { List<Integer> maincluster = clusters . get ( ind ) ; clusters . clear ( ) ; clusters . add ( maincluster ) ; } else { clusters . clear ( ) ; } } return clusters ; } /** * determine space property */ private Map<String , Integer> spaceCheck ( Collection<Grid> mgrids , Grid pgrid , Double ori , Double range ) { Map<Integer , Integer> map = new HashMap<Integer , Integer >() ; Master of Science Thesis Xu. Weilin 76 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 Appendix B: Tracking algorithm (parts) Door spacedoor= new Door ( ) ; for ( Grid mgrid : mgrids ) { Integer count = map . get ( mgrid . getSpace_id ( ) ) ; map . put ( mgrid . getSpace_id ( ) , ( count==null ) ? 1 : count+1) ; } Integer max =0; for ( Integer value : map . values ( ) ) { if ( value>max ) { max=value ; } } Integer space=−1; Integer sdoor =−1; Map<String , Integer>spacemap = new HashMap<String , Integer >() ; Integer previousspace=pgrid . getSpace_id ( ) ; for ( Integer key : map . keySet ( ) ) { if ( map . get ( key )==max ) { if ( key==previousspace ) { space=previousspace ; break ; } else { space=key ; } } } if ( space != previousspace ) { for ( Door door : getDoors ( ) ) { int sp1=door . getSpace1 ( ) ; int sp2=door . getSpace2 ( ) ; if ( ( space==sp1&&previousspace==sp2 ) | | ( space==sp2&&previousspace== sp1 ) ) { spacedoor = door ; break ; } } if ( spacedoor . getId ( ) <0){ space = previousspace ; } else { Set<Grid> doorgrids = spacedoor . getGrid ( ) ; for ( Grid doorgrid : doorgrids ) { if ( oriCheck ( pgrid . getGeometry ( ) , doorgrid . getGeometry ( ) , ori , range , Math . PI / 4 ) ) { if ( pgrid . getDoor_id ( )==null | | pgrid . getDoor_id ( ) != spacedoor . getId ( ) ) { sdoor=spacedoor . getId ( ) ; } } } } } if ( sdoor <0){ spacemap . put ( " space " , space ) ; 179 Xu. Weilin Master of Science Thesis 77 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 } else { spacemap . put ( "door" , sdoor ) ; } return spacemap ; } /** * update step: * compute posterior probability */ private Map<Grid , Double> probabilityUpdate ( Collection<Grid> mgrids , Map< String , Integer> spacevalue , Collection<Grid> gridmodel , Map<Grid , Double> priori , double range ) { if ( spacevalue . get ( "door" )==null ) { for ( Grid grid : gridmodel ) { Double count = 0 . 0 ; for ( Grid mgrid : mgrids ) { if ( grid . getSpace_id ( )==spacevalue . get ( " space " ) ) { if ( mgrid . getGeometry ( ) . buffer ( range / 3 ) . contains ( grid . getGeometry ( ) ) ) { count=count +3; } else if ( mgrid . getGeometry ( ) . buffer ( 2 ∗ range / 3 ) . contains ( grid . getGeometry ( ) ) ) { count=count +2; } else if ( mgrid . getGeometry ( ) . buffer ( range ) . contains ( grid . getGeometry ( ) ) ) { count=count +1; } } } Double pos=count / mgrids . size ( ) ; priori . put ( grid , priori . get ( grid ) ∗ pos ) ; } } else { try { Door door = getProjectService ( ) . getDoorByID ( spacevalue . get ( "door" )); Double pos ; for ( Grid grid : gridmodel ) { if ( hasDoor ( door , grid ) ) { pos = 1 . 0 ; } else { pos = 0 . 0 ; } priori . put ( grid , priori . get ( grid ) ∗ pos ) ; } } catch ( ProjectServiceException e ) { // TODO Auto - generated catch block e . printStackTrace ( ) ; } } return priori ; } 226 Master of Science Thesis Xu. Weilin 78 227 228 229 230 231 232 233 234 235 236 237 238 239 Appendix B: Tracking algorithm (parts) private Grid estimateLocation ( Map<Grid , Double> priori , Double ori , Grid pgrid ) { List<Grid> candidates =new ArrayList<Grid >() ; for ( Grid key : priori . keySet ( ) ) { if ( priori . get ( key ) >0.5&&oriCheck ( pgrid . getGeometry ( ) , key . getGeometry ( ) , ori , 1 0 . 0 , Math . PI / 4 )&&key . getSpace_id ( )==pgrid . getSpace_id ( ) ) { GraphNode [ ] path= getRoute ( pgrid . getId ( ) , key . getId ( ) ) ; Double distance=getRouteDistance ( path ) ; if ( distance <4){ candidates . add ( key ) ; } } } if ( candidates . size ( ) ==0){ return pgrid ; } else if ( candidates . size ( ) ==1){ return candidates . get ( 0 ) ; } else { double max = 0 . 0 ; Grid location = pgrid ; for ( Grid each : candidates ) { Double [ ] vector1={Math . sin ( ori ) , Math . cos ( ori ) } ; Double [ ] vector2={each . getGeometry ( ) . getCentroid ( ) . getX ( )−pgrid . getGeometry ( ) . getCentroid ( ) . getX ( ) , each . getGeometry ( ) . getCentroid ( ) . getY ( )−pgrid . getGeometry ( ) . getCentroid ( ) . getY ( ) }; if ( getAngleofvectors ( vector1 , vector2 )>max ) { max=getAngleofvectors ( vector1 , vector2 ) ; location=each ; } } return location ; } 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 } Xu. Weilin Master of Science Thesis

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertising