Reproducible Package for 'Performance Evaluation of UWB in Indoor Environments: CIR and Coverage Analysis'
收藏资源简介:
This package contains the source code, raw data, and processed dataset to reproduce the experiments presented in "Performance Evaluation of UWB in Indoor Environments: CIR and Coverage Analysis" (submitted to IEEE SENSORS 2026). The study provides a controlled comparison of the DW1000 and DW3000 UWB transceivers, analyzing Channel Impulse Response (CIR) morphology to assess hardware variability and channel signature consistency across laboratory and corridor environments. Code repository: https://github.com/JCSantamariaP/uwb-cir-evaluation Contents cir_dataset.csv: Processed dataset containing extracted CIR features (RMS Delay Spread, Mean Excess Delay, and First-path power). data.zip: Raw CIR capture files and ground truth data. The directory structure is organized as follows: data/ ├── dw1000/ │ ├── calibration_anc0/ │ ├── calibration_anchors/ │ ├── corridor/ │ └── lab/ ├── dw3000/ │ ├── calibration_anc0/ │ ├── calibration_anchors/ │ ├── calibration_anc0_old/ │ ├── calibration_anchors_old/ │ ├── corridor/ │ └── lab/ └── GroundTruth/ ├── anchors.csv └── points.csv Note: dw3000/calibration_anc0_old/ and dw3000/calibration_anchors_old/ contain an earlier calibration run, repeated on a different day after one anchor showed an anomalous deviation. These superseded folders are kept for provenance but are excluded from cir_dataset.csv by build_cir_dataset.py. uwb-cir-evaluation-main.zip: Source code for data processing and statistical analysis. Setup Clone the repository and install dependencies:pip install -r requirements.txt Download and extract the provided dataset (data.zip) and place the files in the data/ directory. Use the included scripts to reproduce the figures and tables presented in the paper: Fig. 1: First-path power and Energy Ratio trends: python3 code/fig1_power_energy_vs_distance.py Fig. 2: Normalized CIR envelopes: python3 code/fig2_cir_envelope.py Fig. 3: 2D Morphological Channel Fingerprint: python3 code/fig3_channel_fingerprint.py Table 1: Anchor-stratified paired comparisons: python3 code/table1_anchor_stratified_test.py Table 2: Corridor coverage classification summary: python3 code/table2_coverage_classification.py Statistical Analysis: Pooled Mann-Whitney tests: python3 code/mannwhitney_pooled_test.py To run the full pipeline, execute the analysis scripts from the root directory as detailed in the GitHub README.md. Technical Notes: This dataset focuses on Channel Impulse Response (CIR) morphology. The CIR-derived fields (fp_ind, Pk_ind, fp_pwr, CIR_R, CIR_I, and all metrics in cir_dataset.csv) are unaffected by the issue described below and can be used with full confidence. The raw .txt files also include the six DS-TWR timestamps (t1-t6), used only as a trigger to capture the CIR at each anchor-tag exchange, they are NOT used in any metric reported in the paper. Users should be aware that the firmware used to collect this dataset had a known byte-offset memory overlap (POLL2_RX_TS_IDX=12 instead of 13) affecting the embedded t2, t3, and t6 timestamps relayed in the ACK2 message. On the DW3000, this produced (i) substantially higher ranging variance than the DW1000 in controlled calibration, and (ii) catastrophic negative outliers (errors of several meters) in a small fraction of corridor exchanges, most severe at longer range. This issue is specific to the DW3000; the DW1000 timestamps (t1-t6) are reliable and unaffected. If you intend to compute ranging from the raw t1-t6 timestamps in this dataset, validate results against a known ground-truth distance first, as a subset of DW3000 exchanges will yield non-physical values. Regarding range measurements in general, note this asymmetry between chipsets: the DW1000 module exhibits a static range offset of approximately 0.80 m (the module's actual antenna delay differs from the generic factory value used), while the DW3000 module shows a negligible offset (approximately 0 m), as its actual antenna delay happened to match the factory value. This offset can be derived directly from the known-distance measurements in this dataset (calibration_anc0 and calibration_anchors, both collected with anchor and tag face-to-face at known separations): the constant gap between measured and true distance across all points is the module's antenna delay offset. This is a per-module hardware characteristic, not a chipset-level property, and is expected to vary between individual units; it can be corrected via standard antenna-delay recalibration using this same known-distance data.



