|
Algorithm 3 SFKNN |
-
1:
Inputs: (LocalizationRequest, RadioMapDatabase)
-
2:
Load metadata from RadioMapDatabase including estimated AP.position and AP.range of all APs
-
3:
Extract valid APs from LocalizationRequest to DetectedAPs
-
4:
CheckForSpoofing(DetectedAPs, metadata)
-
5:
for each combination of APs in DetectedAPs do
-
6:
if distance(AP1.position, AP2.position) > (AP1.range + AP2.range) then
-
7:
Return: Spoofing detected
-
8:
end if
-
9:
end for
-
10:
if Spoofing detected then
-
11:
Return: Localization failed - Spoofing detected
-
12:
else
-
13:
EstimatedPosition = KNN(LocalizationRequest, RadioMapDatabase)
-
14:
Use the KNN algorithm to estimate position based on valid fingerprints
-
15:
Euclidean distance is computed only with valid fingerprints
-
16:
Return: EstimatedPosition
-
17:
end if
|