ROSHAN (Reinforcement-learning Oriented Simulation for Hierarchical Agent Navigation) is a wildfire simulation and reinforcement-learning framework.
It combines a C++ wildfire model based on cellular automata with a Python-based hierarchical RL system for autonomous UAV firefighting.
ROSHAN supports:
- 🔥 Wildfire propagation simulation
- 🛰 Autonomous firefighting agents (FlyAgent, ExploreAgent, PlannerAgent)
- 🖥 An interactive GUI for visualization and debugging
- ⚙️ Full No-GUI operation for large-scale or headless experiments
- 🤖 Integration with PyTorch for training agents
- 🌍 Optional real-world map generation via CORINE datasets
You can read more about the system’s development in the accompanying master thesis:
📄 Thesis
Clone the repository with all submodules:
git clone --recurse-submodules https://github.com/RoblabWh/ROSHAN.gitROSHAN can generate maps from the CORINE Land Cover database.
If you do not need real-world maps, simply use the sample maps included in the repository.
To use custom maps:
- Register for EU Login
- Download the CLC+ Backbone dataset (10 m resolution):
👉 Download CLC+ Backbone (2018/2021)
After downloading, set the dataset path in project_paths.json. The default location is:
ROSHAN/assets/dataset/CLMS_CLCplus_RASTER_2021_010m_eu_03035_V1_1.tifcd openstreetmap
npm install express body-parser
npm install --save-dev nodemonsudo apt install libgdal-dev gdal-bin libsdl2-image-dev python3-dev
sudo apt install libsdl2-2.0-0 libsdl2-image-2.0-0uv syncTo include optional LLM support (experimental and currently non-functional):
uv sync --extra llmcd ROSHAN
source .venv/bin/activate # Activate the virtual environment
mkdir build && cd build
cmake .. && make -j$(nproc)ROSHAN can be launched in two main modes and through a testing notebook:
For running the simulator without reinforcement learning:
cd path/to/build/directory
./ROSHANRun ROSHAN with the Python RL framework (PPO, hierarchical agents, etc.):
cd ROSHAN/src/pysim/
python main.py ["optional/path/to/your/own/config.yaml"]The Python interface loads your configuration, initializes the C++ simulator, and trains/evaluates agents depending on the settings in the config file.

