Code repository for paper "Calibrating Wireless Ray Tracing for Digital Twinning using Local Phase Error Estimates"
If you use this software, please cite it as
@article{ruah2023calibrating,
title={Calibrating Wireless Ray Tracing for Digital Twinning using Local Phase Error Estimates},
author={Ruah, Clement and Simeone, Osvaldo and Hoydis, Jakob and Al-Hashimi, Bashir},
journal={arXiv preprint arXiv:2312.12625},
year={2023},
online={https://arxiv.org/abs/2312.12625}
}
src/
: main codebase. Implements synthetic channel observations and material parameters calibration using any of the presented schemes, which comprise:- the proposed Phase Error-Aware Calibration (PEAC) scheme;
- the Phase Error-Oblivious Calibration (PEOC) baseline;
- and the Uniform Phase Error Calibration (UPEC) baseline.
study/
: codebase containing the experiments presented in the paper.blender/
: source files of the 3D models used in the experiments.assets/
: Mitsuba exports of the Blender source files.logs/
: experimental data is stored in this folder by default. Can be set to a custom folder by setting the environment variableLOGS_FOLDER
in.env
.scripts/
: bash utils and scripts to launch the experiments.
- Download and install miniconda
- CPU-based: download and install LLVM
- GPU-based: follow TensorFlow GPU support tutorial for the required drivers.
Note: for Linux-based systems, an installation script is provided in./scripts/create-gpu-env-linux.sh
.
- Install conda environment by running the command:
conda env create -f ./environment.yaml
- Source the environment by running:
conda activate phase-aware-rt-calibration
conda env update -f ./environment.yaml
Add the installed conda environment to Jupyter by setting a notebook kernel.
Inside the phase-aware-rt-calibration
environment, run:
python -m ipykernel install --user --name phase-aware-rt-calibration
By default, experimental data is stored in ./logs
and plots are stored in ./logs/saved_plots/
.
bash scripts/the_strand/run_calibration_phase_noise_concentration.sh
bash scripts/the_strand/run_calibration_phase_noise_snr.sh
bash scripts/the_strand/run_calibration_pos_noise.sh
bash scripts/the_strand/run_plots.sh
bash scripts/the_strand/run_coverage_maps.sh
bash scripts/the_strand/run_coverage_maps_plots.sh
bash scripts/toy_example/run_calibration.sh
bash scripts/toy_example/run_plots.sh
bash scripts/toy_example_maxwell/run_calibration.sh
bash scripts/toy_example_maxwell/run_plots.sh
Instructions to run the FDTD simulations of Maxwell's equations can be found in a separate README.md.
Prerequisites:
- Download and install Blender
- Install Mitsuba add-on for Blender
Generate Mitsuba export:
- Open the .blend scene file in
./blender/
- In Blender, go to
File > Export > Mitsuba (.xml)
- Save file with
Forward: Y Forward
andUp: Z Up
Drawing curves inside Blender can be useful to easily define a set of coordinates (e.g., Rx positions) to be used during simulation.
These can be extracted from the .blend
source file as follows:
- Prerequisite: Add Blender installation folder to environment PATH
- Run:
blender --background <BLENDER_SCENE_PATH> --python ./blender/extract_curves.py --output-path=<JSON_OUTPUT_PATH>"
Example:
blender --background ./blender/the_strand/the_strand.blend --python ./blender/extract_curves.py --output-path="./assets/the_strand/curves.json"