M-Predictive Spliner (M-PSpliner) extends the original Predictive Spliner to enable multi-opponent, spatiotemporal overtaking in autonomous racing. The algorithm fuses real-time multi-object tracking with Gaussian Process (GP) trajectory regression to anticipate opponent intent and execute robust, efficient, and safe overtaking maneuvers against an arbitrary number of competitors.
Check out our IROS 2025 preprint M-Predictive Spliner: Enabling Spatiotemporal Multi-Opponent Overtaking for Autonomous Racing for more details.
The multi-opponent predictive spliner planner is part of the ForzaETH Race Stack. Please refer to the installation guide for detailed instructions and perform the quickstart guide below to run the planner.
This is how to run the multi-opponent predictive spliner planner with the headtohead node in the base simulator. The same steps can be followed analogously to run the planner on the physical robot.
Start a roscore:
roscoreLaunch the base simulator with the desired map and sim true:
roslaunch stack_master base_system.launch sim:=True map_name:=fLaunch headtohead with the multi-opponent predictive spliner as planner. Note: that perception is set to False due to the simulated opponent not providing any perception data. When testing on the physical robot, the M-PSpliner works best with perception:=Norfair.
roslaunch stack_master headtohead.launch perception:=False planner:=multiopp_psplinerLaunch a dummy obstacle publisher:
roslaunch obstacle_publisher obstacle_publisher.launch speed_scaler:=0.3Start rqt and enable the overtaking sectors:
rqtIf you found our stack helpful in your research, we would appreciate if you cite it as follows:
@misc{imholz2025mpredictivesplinerenablingspatiotemporal,
title={M-Predictive Spliner: Enabling Spatiotemporal Multi-Opponent Overtaking for Autonomous Racing},
author={Nadine Imholz and Maurice Brunner and Nicolas Baumann and Edoardo Ghignone and Michele Magno},
year={2025},
eprint={2506.16301},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2506.16301},
}