# Dynamic Indoor Localization Using Maximum Likelihood Particle Filtering
## 5 Experimental Validation  
In this section, we evaluate the performance of our proposed indoor localization method. To this end, we compare it with that of two methods based on particle filtering (PF). The first one is a newly proposed RSS-based method described in [20], which we refer to as PF-RSS. In order to assess the advantage resulting from using CSI measurements instead of RSS ones, the second method is the CSI-based version the PF-RSS one. It is obtained by using the PF method, described in Section 3, instead of the proposed MLPF method. We refer to it as PF-CSI. We also consider the dynamic localization method from [25], which we call MLKF, and only applies to linear Gaussian motion models like the one given in Appendix B. We also consider the localization performance obtained via static localization. To this end, we use the static localization method proposed in [25], which, as shown in that work, outperforms other available static positioning methods like FILA [28], DeepFi [29], and PhaseFi [30]. As APs we used TP-Link TL-WDR4310 routers with the OpenWrt platform installed. To acquire CSI values we use the Atheros CSI tool [31]. It provides CSI values of 56 subcarriers, and for each one, two 10 bit values are used to represent its phase and amplitude. Motion capture cameras with millimeter-level accuracy are used to obtain the ground truth position. For the target we use a two-wheel robot controlled by a NVIDIA Jetson Nano developer board, equipped with an Atheros AR9590 network interface controller. We consider a target whose motion is described by the velocity model given in Appendix A.1, with \(\sigma_{\rm{v}}^{2}=0.36\), \(\sigma_{\omega}^{2}=0.072\) and \(\sigma_{\gamma}^{2}=0.072\). To generate the measurements we pass the acquired CSI phase values through the linear calibration stage proposed in [30] (SS II.B), then unwrap the resulting phases and use the resulting phase differences as fingerprints. The whole procedure for generating fingerprints is described in [25]. The measurement model is given by the following Gaussian kernel expansion  
\[m(y_{t})=\sum_{n=1}^{N}\kappa_{n}\exp\Bigl{(}-\chi\|y_{t}-p_{n}\|^{2}\Bigr{)}, \tag{20}\]  
where \(p_{n}\in\mathbb{R}^{2}\), \(n\in[1,2,\ldots,N]\), denote the positions used to build the fingerprint database. Following [32] (Chapter 4.3.2) we choose \(\chi=\frac{1}{2}I^{1/3}\). Also, \(\kappa=[\kappa_{1},\ldots,\kappa_{N}]^{\top}\) is computed so that, for each \(n=1,\ldots,N\), \(m(p_{n})\) matches the CSI measured at \(p_{n}\). As performance metric we use the mean squared localization error \(\epsilon\), i.e., if the estimated pose at time \(t\) is \(\hat{x}_{t}=\left[\hat{y}_{t}^{\top},\hat{\theta}_{t}\right]^{\top}\) and the ground truth is \(y_{t}\), then  
\[\epsilon=\frac{1}{T}\sum_{t=1}^{T}\|g_{t}-y_{t}\|^{2}.\]  
For the PF method, following [23] we use \(I=1000\) particles. Also, for the MLKF method, we use the linear Gaussian motion model described in Appendix B, with \(\sigma_{p}^{2}=0.12\) and \(\sigma_{\iota}^{2}=0.25\). In the first experiment, we aim to evaluate the performance in large environments. To this end we use an empty room of \(7\times 16\) m\({}^{2}\). Only one AP is placed at the corner of the room as shown in Figure 2. To build the fingerprinting database, we measured CSI's at \(N=70\) positions, one meter apart from each other, on a grid as also shown in the same figure. As the target moves within the room, we estimate its position every \(\tau=0.5\) seconds. As we can see from Table 1, the proposed MLPF method, with only 10 particles, clearly outperforms the outcomes of static positioning and particle filtering. Its performance is comparable to that of the MLKF. However, it outperforms the latter if we increase the number of particles to 50. This is due to the use of a non-linear motion model which yields more accurate statistical knowledge of the target's position at each sample time.