# A Passive RF Testbed for Human Posture Classification in FM Radio Bands
## 2 Experimental Testbed
### Software  
The synchronized SDRs connected to the reference and surveillance antennas are controlled through software using the GNU Radio development toolkit. GNU Radio [16] is a free and open-source software toolkit for studying, developing, and setting up SDR systems. Given that GNU Radio provides great flexibility when building a Graphical User Interface (GUI), this toolkit was chosen to program the SDR systems. We used the GUI GNU Radio Companion (GRC) to create flowgraphs of code blocks. GRC allows converting a flowgraph into a Python file, which can later be executed from the terminal. The necessary packages that allow the use of GNU Radio applications were installed with the aid of PyBOMBS [17]. We acquired the data by running a Python script that is generated from the respective GRC flowgraph. A block diagram of the GRC flowgraph is illustrated in Figure 4. A description of the parameters set for the RF sensing system's offline data acquisition is presented in Table 4.  
Figure 3: Schematic of a person performing the posture labeled as Class 2—None. \begin{table}
\begin{tabular}{c c} \hline \hline
**Class** & **Posture Description** \\ \hline
0 & Standing in front of a chair \\ \hline
1 & Sitting on a chair \\ \hline
2 & None \\ \hline \hline \end{tabular}
\end{table} 
Table 3: Human posture description and labeling. The first two blocks depicted in Figure 4 (Osmocom Source) are the source blocks sampling the RF signal, which represent the two RX channels sampled by the two bladeRF 2.0 micro boards. For each one of the two sources, we tuned the center frequency to the radio station's broadcast frequency B (in Table 4), we set the sample rate to A, and we also set the bias-tee gain to five different gains in C. The Analog-to-Digital Converter (ADC) collects the In-phase and Quadrature component (I/Q) samples from each RX channel, and these samples pass through the first two preprocessing blocks: the Skip Head and the Remove DC Spike blocks. The first one skips the first D\(\times\frac{\text{A}}{\text{E}}\) samples that come from the source block, representing the number of samples corresponding to D = 10 us of data acquisition. This is an arbitrary value that was chosen to reflect some possible initial configurations from each bladeRF. The second block removes the center frequency I/Q DC spike with an Infinite Impulse Response (IIR) filter. In the next stage, the data are filtered by a Low-Pass Filter block. This block filters the receiving data with a Hamming window in order to select all frequencies lower than the defined cutoff frequency G and reject all higher frequencies. We set the transition width between stop-band and pass-band to H, the gain to F, and the decimation rate of the filter to E. This decimation rate redefines the sample rate to \(\frac{\text{A}}{\text{E}}=\frac{4\text{MS/s}}{16}=250\) kS/s. The purpose of this filter is to allow us to only work within the bandwidth of the baseband FM signal. The Head block copies the first \(\frac{\text{A}}{\text{E}}\times\)J samples to the output. Note that, at this point, the sample rate is equal to 250 kS/s, and the Acquisition Period is the data acquisition time in which we used different times in J to form the datasets. Given the Acquisition Period, \begin{table}
\begin{tabular}{c c} \hline \hline
**Parameter Label** & **Value (s)** \\ \hline A & 4 MS/s \\ \hline B & 104.3 MHz \\ \hline C & 16, 18, 20, 35, and 55 dB \\ \hline D & 10 μs \\ \hline E & 16 \\ \hline F & 2 dB \\ \hline G & 100 kHz \\ \hline H & 10 kHz \\ \hline I & Hamming \\ \hline J & 20, 30, 90, and 180 s \\ \hline K & reference\_file\_path \\ \hline L & surveillance\_file\_path \\ \hline \hline \end{tabular}
\end{table} 
Table 4: Description of the RF sensing system parameters set for offline data acquisition and described in the blocks in Figure 4.  
Figure 4: Block diagram of GNU Radio Companion flowgraph for offline data acquisition.