# Leveraging Hybrid RF-VLP for High-Accuracy Indoor Localization with Sparse Anchors
## 3 Prototype and Experimental Setup  
In order to evaluate the performance of the proposed localization system, we build a prototype system within a controlled indoor environment measuring \(1.93\) m \(\times\)\(1.93\) m \(\times\)\(2.57\) m.  
The system includes three commercial off-the-shelf (COTS) white LEDs acting as positioning anchors, mounted on the ceiling at coordinates \(\mathbf{l}_{1}=(0,0)\) m, \(\mathbf{l}_{2}=(0,1.93)\) m and \(\mathbf{l}_{3}=(1.93,0)\) m, all at a height of \(h=2.57\) m (see Figure 3b). Each LED transmits a modulated optical signal at a different frequency, where \(f_{1}=7\) kHz, \(f_{2}=2\) kHz, \(f_{3}=5\) kHz. Note that despite the fact that there is an existing overlap of LED coverage due to the spatial constraints of our laboratory, each receiver uses frequency division to utilize signals from a single LED.  
We deploy 12 receivers on the ground, organized into three groups corresponding to the coverage areas of the three LEDs, with each group containing four receivers (Figure 3a). The receiver hardware is constructed using commercial ESP32-S3 microcontrollers (MCUs) producted by Espressif Systems, Shanghai, China. A solar panel measuring \(37\) mm \(\times\)\(68\) mm serves as the light sensor for each receiver. The receiver circuit converts the optical current into voltage signal and feeds it to the ESP32-S3 MCU. For signal processing, the analog-to-digital converter (ADC) of the ESP32-S3 samples the optical signal at a frequency of \(f_{S}=20\) Ksps. We apply a fast Fourier transform (FFT) to the sampled data to extract the amplitude of each LED's signal, which is then used to estimate the distance between the receiver and the corresponding LED anchor.  
Regarding the Bluetooth functionality, the ESP32-S3's 2.4 GHz wireless interface is employed for BLE communication and ranging. Each receiver operates as a BLE mesh node, sharing a common network key to facilitate secure communication. We implement custom BLE vendor server and client models on each receiver. The vendor client periodically broadcasts messages containing the receiver's ID, associated LED anchor ID, optical RSS, and a list of BLE RSS measurements between itself and other receivers (BLE RSS\({}_{m}\) for receiver Rx\({}_{m}\)), as illustrated in Figure 4. The message's time-to-live (TTL) is set to zero to prevent forwarding. The vendor server on each receiver collects incoming messages and stores the pertinent information for localization processing. The raw BLE RSS measurements collected between receivers are shown in Figure 5a. It is evident from the data that the raw signal contains noticeable outliers and Gaussian noise, which can be attributed to interference from the hardware components as well as noise from the 2.4 GHz signal band. To mitigate the impact of this noise, we apply both a Hample filter and a Gaussian filter to the raw signal. The filtered RSS data, shown in Figure 5b, demonstrate a significant reduction in noise, resulting in a cleaner and more stable signal. This preprocessing step is  
Figure 3: LED anchor and example receiver setup.  
essential for improving the accuracy of subsequent positioning calculations by reducing the influence of undesirable signal fluctuations and external interferences.