Skip to content

RoblabWh/ROSHAN

Repository files navigation

ROSHAN

Overview

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


Small Planner Agent Demo
Larger Planner Agent Demo

🚀 Installation

Clone the repository with all submodules:

git clone --recurse-submodules https://github.com/RoblabWh/ROSHAN.git

CORINE CLC+ (optional, only for generating real-world maps)

ROSHAN 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:

  1. Register for EU Login
  2. 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.tif

📦 Dependencies

NodeJS (for OpenStreetMap support)

cd openstreetmap
npm install express body-parser
npm install --save-dev nodemon

GDAL, SDL2, and system libraries

sudo apt install libgdal-dev gdal-bin libsdl2-image-dev python3-dev
sudo apt install libsdl2-2.0-0 libsdl2-image-2.0-0

Python Environment (uv)

uv sync

To include optional LLM support (experimental and currently non-functional):

uv sync --extra llm

🔧 Build Instructions

cd ROSHAN
source .venv/bin/activate  # Activate the virtual environment
mkdir build && cd build
cmake .. && make -j$(nproc)

▶️ Usage

ROSHAN can be launched in two main modes and through a testing notebook:

1. C++ Simulation Only

For running the simulator without reinforcement learning:

cd path/to/build/directory
./ROSHAN

2. Simulation + Reinforcement Learning

Run 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.

About

Wildfire Simulation and Management

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors