Skip to content

Fansesi/ss_fgpos

Repository files navigation

    Sıcak Sütlaç - 5G Positioning

    ss_fgpos

Python Ruff GitHub

English | Türkçe

Descriptions

Please refer to our report for more throughout information.

Task Description

"Using the 5G base station configurations, environmental data, and uplink (UL), downlink (DL), and scanner data from the İTÜ Campus, develop a system that can predict the location of a user equipment (UE) in with an another set of inference-time UL, DL and scanner data."

Approach Description

We have simulated the propagation of radio signals with the given base configuration data and have developed a special triangulation algorithm that utilizes the the simulation results as well as the inference-time data.

Installation

Run the following lines to install necessary packages:

# for faster installation, prefer uv:
pip install uv
uv pip install -r .

And then, head to this drive folder to download simulation results which are necessary for the localization process: link. After downloading the rms folder, put them to output/ folder.

End project structure should look like this:
``` LICENSE main.py output └── rms ├── rm_0.2_cell_centers_11:11:54-12-06-2025.npy └── rm_0.2_rss_11:11:54-12-06-2025.npy README.md README.tr.md render,.py render.ipynb requirements.txt setup.py src ├── __init__.py ├── eval │ ├── __init__.py │ ├── algos.py │ ├── create_eval_data.py │ ├── eval_loc.py │ ├── eval_loc_vis.py │ └── eval_sim.py ├── interpolate │ ├── dummy_interpolate_v1.py │ ├── dummy_interpolate_v2.py │ ├── interpolate.py │ ├── interpolate_v2.py │ ├── README.md │ └── simple_interpolate.py ├── preprocess │ ├── __init__.py │ ├── classes.py │ ├── colors.py │ ├── folium_vis.py │ ├── format.py │ ├── getters.py │ ├── map_vis.py │ └── utils.py └── sim ├── __init__.py ├── bench_transformation.py ├── constants.py ├── locate.py ├── renderer.py └── utils.py test ├── __init__.py ├── test_map_vis.py ├── test_mi_install.py ├── test_radio_map.py ├── test_select_closest.py └── test_sRT_install.py xmls └── scene_v1.3.3_rotated_zup ├── meshes │ ├── Ground_001.ply │ ├── ITU_3DBINA_EPSG4326_001.ply │ └── TCELL_3DVEGETATION_EPSG4326_006.ply └── scene_v1.3.3_xb.xml ```

Scripts:

You may use python -m script_name --help to learn more about each script's arguments as they are all configured to work in command line.

Predict Location

Please conver Scanner data to .csv format, and give the path as the first argument.

python -m src.sim.locate \
    PATH/TO/SCANNER.CSV \
    output/rms/rm_0.2_rss_11:11:54-12-06-2025.npy \
    output/rms/rm_0.2_cell_centers_11:11:54-12-06-2025.npy \
    --output-path output/locate

Run Sionna Simulation

You may use render.ipynb to run the simulations or tweak RenderParams settings on main.py and run it via python main.py to run it without Jupyter Notebooks.

Test Simulation Results

python -m src.eval.eval_sim \
    PATH/TO/SCANNER.CSV \
    output/rms/rm_0.2_rss_16:20:09-12-06-2025.npy \
    output/rms/rm_0.2_cell_centers_16:20:09-12-06-2025.npy \
    --output_path PATH/TO/SAVE/IMAGES

Test Localization Results

To test the localization results, you need to get prediction results with --batch and --output-path arguments, as the output will be a .json file including ground truths and predictions:

python -m src.sim.locate \
    PATH/TO/SCANNER.CSV \
    output/rms/rm_0.2_rss_11:11:54-12-06-2025.npy \
    output/rms/rm_0.2_cell_centers_11:11:54-12-06-2025.npy \
    --output-path output/locate # name of the file will automatically given
    --batch \
    -n 100  # You may also set the number of predictions to make 

After getting the prediction results, you may get evaluation results for the predictions:

python -m src.eval.eval_loc PATH/TO/JSON/FILE

Moreover, you may get the visualization of the results with the following:

python -m src.eval.eval_loc_vis PATH/TO/JSON/FILE --output PATH/TO/SAVE/IMAGES

Results

Please refer to our report for the results.

Test

For testing, use pytest:

pytest -v tests/

Acknowledgements

We sincerely thank Teknofest for their hard work on 5G Positioning Contest.

We also thank the following projects, for their amazing work in the field of open source: