# Evaluation of Multi-Sensor Fusion Methods for Ultrasonic Indoor Positioning
## 3 Proposed Fusion Methods
### Tightly Coupled Data Fusion  
A tightly coupled approach is supposed to integrate the multiple-sensor raw data (i.e., distance differences) for the position estimation. There are two ways to combine acquired data using specific filters, such as the EKF to deal with the nonlinearities of the positioning equation system. The first way is fusing data in the prediction step of the filter, which employs the values given by the sensors essentially as a control input. So, some sensors are used in the prediction step, whereas the rest of the sensors are used in the update step to correct the prediction [33]. The second way is known as the measurement fusion method [34]; it is the simplest form and consists of fusing data through the observation vector of the filter [35]. The prediction step is then totally based on a mathematical motion model, whereas the update and correction are performed by employing the observations of the sensors [36]. In the implementation of the tightly coupled approach used hereinafter, the second option is involved, due to the direct combination of all the measurements, coming from the ultrasonic sensors, which are used as the observation vector. Thus, this vector consists of the distance differences (obtained from TDOAs) between the ultrasonic transmittersand the mobile receiver. The most relevant advantage is that it does not lose information coming from the pre-processing of the ultrasonic measurements. The initial position to apply the EKF is estimated using the Gauss-Newton algorithm with the first set of measurements, and for the rest of the steps the positions will be updated feeding the EKF directly with the raw measurements taken. For a single ULPS, the number of required distance differences is at least four. The EKF is also based on a loop of two steps: prediction (13) and updating (14). This algorithm linearizes the state vector and its covariance matrix, applying several observations [37]. Those observations are computed from the US measurements and presented as the distance differences at instant k, (\(\Delta d_{ij,k}\)) between the mobile receiver (x, y, z) and the beacons \(i\), (x\({}_{i}\), \(y\), \(z_{i}\)), and \(j\), (x\({}_{j}\), \(y\), \(z_{j}\)). The distance differences \(\Delta d_{ij,k}\) are computed from the TDOAs according to Equations (10) and (11):  
\[\Delta d_{ij,k}=c\cdot TDOA_{ij,k} \tag{10}\]  
\[\Delta d_{ij}=d_{i}-d_{j}=\sqrt{\left(x-x_{i}\right)^{2}+\left(y-y_{i}\right)^ {2}+\left(z-z_{i}\right)^{2}}-\sqrt{\left(x-x_{j}\right)^{2}+\left(y-y_{j} \right)^{2}+\left(z-z_{i}\right)^{2}} \tag{11}\]  
where \(c=340\) m/s is the velocity of sound in air; and \(TDOA_{ij,k}\) are the corresponding TDOAs between beacons \(i\) and \(j\) at instant \(k\). The state \(\mathbf{X_{k}}\) and measurement \(\mathbf{Z_{k}}\) are given by non-linear functions as in Equation (12):  
\[\mathbf{X_{k}}=f(\mathbf{X_{k-1}},\boldsymbol{u}_{k}\ )+\boldsymbol{w}_{k} \mathbf{Z_{k}}=h(\mathbf{X_{k}})+\boldsymbol{v}_{k} \tag{12}\]  
where \(\boldsymbol{w}_{k}\) is the process noise related to every beacon's state vector and \(\boldsymbol{v}_{k}\) is the measurement noise at instant \(k\). The prediction of the state vector \(\overset{\boldsymbol{\wedge}\boldsymbol{\wedge}}{\mathbf{X_{k}}}^{-}\) and its covariance \(\mathbf{P_{k}^{-}}\) can be obtained with Equation (13):  
\[\overset{\boldsymbol{\wedge}\boldsymbol{\wedge}}{\mathbf{X_{k}}}^{-}=f\left( \overset{\boldsymbol{\wedge}}{\mathbf{X_{k-1}}},\ \boldsymbol{u}_{k}\right) \tag{13}\]  
\[\mathbf{P_{k}^{-}}=\mathbf{A_{k}}\cdot\mathbf{P_{k-1}}\cdot\mathbf{A_{k}^{T}} +\mathbf{Q}\]  
where \(\boldsymbol{u}_{k}\) includes information about the movement model (random in a sphere around the previous point position in our case with a radius of 10 cm); \(\mathbf{Q}\) is the covariance matrix of the process; and \(\mathbf{A_{k}}\) is the derivative of \(f\left(\overset{\boldsymbol{\wedge}}{\mathbf{X_{k-1}}},\ \boldsymbol{u}_{k}\right)\) with respect to the state vector.