Indoor 5G Performance Study: Simulation and Measurement Dataset from KTH Reactor Hall
收藏资源简介:
Reactor Hall 5G Simulation and Measurement Study This repository combines two complementary datasets for a study of 5G wireless coverage in the reactor hall at KTH Royal Institute of Technology: WinProp ray-tracing simulation of downlink throughput, MCS, and MIMO streams across the hall floor plan. EP5G field measurements collected with a TurtleBot3 equipped with a 5G modem, covering throughput, MCS, RI, SINR, and RTT. Gaussian Process Regression (GPR) scripts that train models on the measurement data and evaluate them against the simulation ground truth. Repository Layout 1. Simulation model/ 3D model of the reactor hall (DWG/DXF, used in WinProp)2. Simulation raw data/ Raw WinProp project files and output (S2_SBR_4MIMO scenario)3. Simulation exported data/ Text-format exports from WinProp (read-only inputs)4. Simulation processed data/ Derived intermediate CSVs produced by processing scripts5. Measurement raw data/ ROS bags and raw logs from TurtleBot measurement campaign6. Measurement processed data/ Processed and aggregated measurement CSVs7. Measurement scripts/ Scripts for ROS bag conversion and data aggregation pipeline8. GPR scripts/ GPR training, evaluation, and plotting scripts9. Gaussian process models/ Trained GPR model artifacts and error metrics10. Figures/ All generated figures (PDF) and LaTeX scorecards Folder Details 3. Simulation exported data/ Read-only text exports from WinProp: throughputDL_polyline.txt — polygon boundary defining the area of interest throughputDL.txt — downlink throughput on a simulation grid throughputDL_ignoreNaN.txt — throughput variant ignoring NaN cells mimoStreamsDL.txt — MIMO stream count (data layers) on the simulation grid MCS/ — per-MCS raw coordinate exports 4. Simulation processed data/ Derived artifacts produced by the GPR and plotting scripts: polygon_coords_extracted.csv — polygon boundary in CSV form sim_throughput_within_polygon.csv — simulation throughput points clipped to polygon throughputDL_polyline_cleaned.csv — cleaned polyline export (x, y, throughput only) throughputDL_xy_only.csv — simulation grid coordinates only points_with_mcs.csv — simulation grid points annotated with MCS class estimated_prbs_output.csv — estimated PRB utilisation mcs_csv/ — per-MCS simulation grids in CSV format 5. Measurement raw data/ recordings/ — ROS bag files (.db3) and raw iPerf3/ping log files from the measurement campaign 6. Measurement processed data/ Processing pipeline outputs, in order of derivation: synced_data.csv — AT-command, ping, and iPerf measurements time-synchronised filtered_data.csv — synced_data after outlier and invalid-MCS filtering aggregated_data.csv — per-position averages (highest-level measurement summary) aggregated_data_shifted.csv — aggregated_data with a coordinate offset applied to align with the simulation reference frame; this is the file used by GPR scripts coverage.txt — raw coverage export from ROS bags (x, y, throughput, MCS, etc.) 7. Measurement scripts/ bag2ASCII/ Converts raw ROS bag files to readable CSV format. Script Purpose read_db3.py Reads .db3 ROS 2 bag files and exports topics to CSV bag_convert.py Restructures the raw CSV output into the project column format data_manage/ Data processing pipeline from raw synchronized data to aggregated results. Script Purpose sync_data.py Time-synchronises AT-command, ping, and iPerf data into a single CSV filter_data.py Removes rows with invalid MCS values and systematic outliers get_results.py Computes per-position averages and saves aggregated_data.csv heatmap_csv.py Quick interactive heatmap visualization of any measurement CSV 8. GPR scripts/ Main analysis scripts. See 8. GPR scripts/README.md for full details. 9. Gaussian process models/ Trained model bundles and evaluation outputs, organized by kernel and random seed: RBF/seed_7/, RBF/seed_13/ — Radial Basis Function kernel models RQ/seed_7/, RQ/seed_13/ — Rational Quadratic kernel models M1/seed_7/, M1/seed_13/ — Matérn ν=1 kernel models error_summary.csv — aggregated error metrics across all kernels and seeds 10. Figures/ All generated output figures (PDF) and LaTeX score tables: Results-Throughput-*.pdf — throughput heatmaps, error maps, uncertainty maps per kernel/seed Results-Histogram-*.pdf — error distribution histograms per kernel/seed Results-Layers-*.pdf — MIMO data-layer heatmaps and error maps Results-MCS-*.pdf — MCS heatmaps and error maps Results-Scorecard-*.tex — LaTeX tables of KNN error metrics per kernel/seed/noise level Measurement Setup Environment: Reactor hall, KTH Royal Institute of Technology. Network: Ericsson Private 5G (EP5G). Receiver: Quectel RM500Q-GL 5G modem mounted on a TurtleBot3 with a LiDAR sensor. Measurements: iPerf3 downlink throughput, ping RTT, and channel KPIs (MCS, RI, SINR, RSSI) via AT commands. Method: Static measurements — robot held stationary for 5–7 s per point; over 9 000 measurements collected. Coordinate origin: (0, 0) is the bottom-left corner of the hall. Known limitation: LiDAR-based localization is subject to drift and positional uncertainty, particularly in sparse areas of the hall. Countermeasures (extra landmarks, manual re-localization) were applied to mitigate this. Centralized Path Helpers (8. GPR scripts/paths.py) All GPR and plotting scripts resolve file paths through paths.py rather than hardcoding them: from paths import path_get_exported, path_get_measurement, path_get_processed, path_get_figures, path_get_gpr polyline_file = path_get_exported("throughputDL_polyline.txt") meas_file = path_get_measurement("aggregated_data_shifted.csv") cleaned = path_get_processed("throughputDL_polyline_cleaned.csv") fig_out = path_get_figures("Results-Throughput-RBF-Seed7.pdf") gpr_out = path_get_gpr("RBF/seed_7/gpr_model.joblib") Helpers return pathlib.Path objects. Output directories are created automatically when saving. Required Python Packages pip install pandas numpy matplotlib shapely scipy scikit-learn joblib Python ≥ 3.9 recommended.



