Skip to content

About

Code for RAL 2026 submission "Strategizing at Speed: A Learned Model Predictive Game for Multi-Agent Drone Racing"

Resources

Stars

11 stars

Watchers

0 watching

Forks

Repository files navigation

Strategizing at Speed: A Learned Model Predictive Game (LMPG)

Strategizing at Speed Cover

Paper Video License: MIT

🚁 Overview

This repository provides the core framework for training policies and evaluating our head-to-head multi-agent racing game. It includes:

  • LMPG: Our proposed Learned Model Predictive Game training pipeline and saved checkpoints.
  • MPG & MPC: Baseline Model Predictive Game and Contouring Model Predictive Control implementations.
  • Referee system: An automated system for gate-crossing validation, collision monitoring, and role switching according to the rules of the game.

🛠️ Installation

# 1. Install juliaup
curl -fsSL https://install.julialang.org | sh

# 2. Set default julia to 1.11.5
juliaup add 1.11.5 && juliaup default 1.11.5

# 3. Clone the repository
git clone git@github.com:andrejcarlo/ral26_strategizing_at_speed.git
cd ral26_strategizing_at_speed

# 4. Instantiate the Julia environment
# This installs all required packages exactly as specified in the Manifest.
julia --project -e 'using Pkg; Pkg.instantiate()'

# 5. Build the environment
conda create --file environment.yaml

(Optional) Agilicious

This project relies on the Agilicious framework for real drone flights.

Action Required: You must request access to the internal Agilicious repository before installing. Without access, only the julia simulator without RotorS can be run.

⚙️ Training

You may train LMPG by calling the following:

# Usage: ./scripts/julia_train <params_file_path> <track_chosen>
./scripts/julia_train params/train_parameters_medium_speed_lemniscate.toml lemniscate

Make sure to change the hyperparameters in params/train_parameters_medium_speed_lemniscate.toml accordingly.

🏁 Evaluate

The evaluation suite uses a server-client architecture to manage asynchronous simulation. By default, parameters are loaded from params/race_parameters.toml, and specific racing jobs (methods and tracks) are defined in startup.jl.

Option A: Automated large scale study (async + sync modes)

Run the full study in both modes (async and sync) with a single command:

./scripts/julia_server mcs

Option B: Manual server-client mode

Use this for debugging or custom race configurations across two terminal windows:

Terminal 1 (the server): This is where the referee, logging and the trajectory optimizers (MPG, LMPG, MPC) are running.

./scripts/julia_server dpd

Terminal 2 (the client): This is where the julia simulator is running and executing the plans received from the server.

Wait for the server to log "Done", then:

./scripts/julia_server client

Postprocessing

You may use the jupyter notebook in postprocessing/individual_log_analysis.ipynb to visualize trajectories from a single log file.

📝 Citation

If you find this work useful for your research, please cite our paper:

@misc{papuc2026strategizingspeedlearnedmodel,
      title={Strategizing at Speed: A Learned Model Predictive Game for Multi-Agent Drone Racing}, 
      author={Andrei-Carlo Papuc and Lasse Peters and Sihao Sun and Laura Ferranti and Javier Alonso-Mora},
      year={2026},
      eprint={2602.06925},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2602.06925}, 
}

About

Code for RAL 2026 submission "Strategizing at Speed: A Learned Model Predictive Game for Multi-Agent Drone Racing"

Resources

Stars

11 stars

Watchers

0 watching

Forks

Contributors

Languages