Datasets and code used in AdaRF. The paper can be found in https://dl.acm.org/citation.cfm?doid=3361560.3351271.
There are 5 datasets and each one contains a training data and test data. The detailed description are:
Dataset | Experiment Times |
Tag Number |
Tag Separation |
Frequency Number |
Sample Number |
|
---|---|---|---|---|---|---|
D1 | Train | 250 | 5 | 20cm | 1 | 1250 |
Test | 24 | 3 | 20cm | 8 | 72 | |
D2 | Train | 40 | 6 | 8cm | 1 | 240 |
Test | 16 | 8 | 8cm | 8 | 108 | |
D3 | Train | 96 | 8 | 4-1cm | 1 | 768 |
Test | 16 | 8 | 4-10cm | 8 | 108 | |
D4 | Train | 40 | 8 | 8cm | 1 | 320 |
Test | 9 | 10 | 8cm | 8 | 90 | |
D5 | Train | 20 | 11 | 4cm | 1 | 220 |
Test | 4 | 200 | 4cm | 8 | 80 |
In the training data or test data, each folder represent an experiment. There are 50 CSV files in an experiment and each file represent the signal profile collected at an aperture point. In the each CSV file, it consists of the following information:
- EPC: the unique ID of an RFID tag. 24 digits.
- antennaindex: the index of antenna. DEFAULT: 1.
- frequency: the frequency of each item. Range from 920.625 MHz to 924.125 MHz with a step of 0.5 MHz.
- time: INVALID.
- RSSI: a negative real number.
- phase: a real number ranging from 0 to 2pi.
- dopplershift: the dopplershift reported by Impinj reader, which might be inaccurate indicator and is not used in our system.
- velocity: INVALID.
- x: the x-coordinate of the aperture point with the unit of m.
- y: the y-coordinate of the aperture point with the unit of m. DEFAULT: 0. "1.63" is INVALID.
- z: the z-coordinate of the aperture point with the unit of m. DEFAULT: 0.
- angle: INVALID.
At each aperture point, reader can read one RFID tag for many times. Therefore, one tag usually has many phase measurements at a CSV file. To improve the robustness, we use the average of these measurements to represent the phase of the RFID tag collected at the corresponding aperture point.
The corresponding function is available in the file named 'input.py'.
The detailed experimental settings are described in 'config.txt', where each line represents the config of an experiment. And each line is a string formatted of "A I:X Y P F S".
- A: date. e.g. "1118" indicates 18 November 2018 while "0114" indicates 14 January 2019.
- I: start index and end index (included). e.g. "1-5" represents 5 experiments from "01" to "05".
- X: the center x-coordinate of the tag sequence with the unit of cm.
- Y: the y-coordinate of the tag sequence with the unit of cm.
- P: the number of aperture points (measurement points). DEFAULT: 50.
- F: the number of frequency (channel). DEFAULT: 8 or 1.
- S: the separation between adjacent tags with the unit of cm. It is an optional item.
In each experiment, antenna scans several RFID tags. All tags have the same y-coordinate and the separation between adjacent tags are same. Therefore, we can reconstruct their locations according to X, Y, S and the number of tags. For instance, if X=50 Y=45 S=20 and the number of tags is 3, the coordinates of these tags are (30, 45), (50, 45) and (70, 45). Note that we only consider locate RFID tag in 2D plane since we only adopt one antenna.
The corresponding function is available in the file named 'config.py'.
A, I, P and S comprose a mapping between the config and folder. For instance, config "1218 1-5:50 45 50 8" maps to the folders from "181218-01-50-8" to "181218-05-50-8".
The critical functions in AdaRF, which are implemented by Python 3.6 and tensorflow-gpu 1.9.0. The detailed documents of all functions can be found in the corresponding python files and here are breif discriptions of all files:
- config.py: Provide setups of all datasets including EPC, frequencies and other settings.
- extract_signal_profile.py: Extract signal profiles (RSSI and phase) from CSV files for an experiment.
- preprocess.py: Unwrap phase profiles of one tag and remove the profiles of aperture points which do not receive any its signals.
- hologram.py: Create holograms inlcuding L1 and L2 in AdaRF, Tagoram and MobiTagbot.
- reconstruct_tag_location.py: Read config items from 'config.txt' for all experiments and reconstruct actual locations of tags in an experiment.
- position_estimation.py: The implementation of the convolutional nerual network in AdaRF.
- other_scheme.py: The implementation of STPP and RF-Scanner.
It is my first time to write public documents for my codes. So please contact me through email 735820057@qq.com if you have any problems or questions. I would be very glad to receive your emails.