This repository contains the source code and evaluation pipeline for the paper:
HyRASeL: Hybrid UWB Two-Way-Ranging and Asynchronous Hyperbolic Self-Localization
The repository includes the OMNeT++ simulation code, post-processing scripts, plotting scripts, and the final data used to generate the paper figures.
- Title: HyRASeL: Hybrid UWB Two-Way-Ranging and Asynchronous Hyperbolic Self-Localization
- Authors: Simon Schmitz-Heinen, Anatolij Zubow, Tehmina Bibi, Falko Dressler
- Venue: Submitted to IEEE MASS 2026
- Location: Hong Kong
- DOI / Preprint: TBD
.
├── omnetpp_code/
│ └── localization/
│ └── simulation/
│ ├── omnetpp.ini
│ ├── *.ned
│ └── src/
│ ├── *.cc
│ └── *.h
│
├── evaluation_code/
│ ├── omnet_post_processing.py
│ ├── omnet_plotting.py
│ ├── eval_run.sh
│ ├── requirements.txt
│ ├── data/
│ └── tmp/
│
├── README.md
└── LICENSE
The code was tested with the following setup:
- Ubuntu 24.04 LTS x86
- OMNeT++ 6.2.0
- INET 4.5.4
- Python 3.12.0
Python dependencies are listed in:
evaluation_code/requirements.txt
Install OMNeT++ 6.2.0 and INET 4.5.4 according to their official installation instructions.
The OMNeT++ project is located at:
omnetpp_code/localization/
Import this folder into the OMNeT++ IDE as an existing project.
The main simulation configuration file is:
omnetpp_code/localization/simulation/omnetpp.ini
From the repository root:
cd evaluation_code
pip install -r requirements.txtThe simulations are intended to be run through the OMNeT++ IDE.
Open:
omnetpp_code/localization/simulation/omnetpp.ini
and run the relevant paper configurations:
[Config Speed]
[Config NodeNum]
[Config AnchorDensity]
[Config SlotNumber]
These configurations evaluate:
- node speed
- number of nodes
- anchor density
- number of slots
The generated simulation data is used as input for the post-processing pipeline.
The evaluation code is located in:
evaluation_code/
Run:
cd evaluation_code
bash eval_run.shThis executes omnet_post_processing.py for the paper scenarios and methods.
The post-processing script expects simulation data in:
evaluation_code/data/simulation_data/
with the following structure:
data/simulation_data/SlotNumber/
data/simulation_data/NodeNumber/
data/simulation_data/AnchorDensity/
data/simulation_data/Speed/
The --experiment_parameter argument uses the syntax:
parameterName:value1,value2,value3
Examples:
speed:2,5,10,25,50
numNodes:4,9,16,25,36,49
interAnchorDist:130,200,270
numSlots:2,3,4,5
The processed output is written to:
evaluation_code/tmp/
After post-processing has completed, run:
cd evaluation_code
python3 omnet_plotting.pyThe plotting script reads processed data from:
evaluation_code/tmp/
and writes figures to:
evaluation_code/tmp/figs/
The generated figure filenames contain the corresponding figure numbers from the paper.
To reproduce the paper figures:
-
Run the OMNeT++ configurations listed above, or use the provided final data.
-
Run the post-processing pipeline:
cd evaluation_code bash eval_run.sh -
Generate the figures:
python3 omnet_plotting.py
Generated figures are stored in:
evaluation_code/tmp/figs/
The final data used for the paper is included via Git LFS.
Before using the repository, make sure Git LFS is installed:
git lfs install
git lfs pullIf the data files are missing, post-processing and plotting may fail.
Simulation parameters are configured in:
omnetpp_code/localization/simulation/omnetpp.ini
The main evaluated parameters are:
| Parameter | Description |
|---|---|
speed |
Mobility speed of the simulated nodes |
numNodes |
Number of simulated nodes |
interAnchorDist |
Distance between anchors |
numSlots |
Number of slots used by the localization protocol |
Post-processing parameters are configured in:
evaluation_code/eval_run.sh
The evaluated methods include:
TWR
CENTRALIZED
DISTRIBUTED
HYPERBOLIC_SELF_LOCALIZATION
This repository is released under the GPLv3. See LICENSE for details.
OMNeT++ and INET are not part of this repository and are subject to their own licenses. Users are responsible for installing OMNeT++ and INET separately and complying with their respective license terms.
Parts of the code were created with assistance from large language models, including OpenAI's ChatGPT and Anthropic's Claude. All code was reviewed and adapted by the authors.
For questions, please contact:
Simon Schmitz-Heinen
schmitz-heinen@ccs-labs.org