This is the repository for our paper "Benchmarking Shortcutting Techniques for Multi-Robot Arm Motion Planning".
Our new fast collision checker sets a new bar, delivering a real-time multi-robot-arm motion shortcutter with 10× gains over the strongest existing pipelines. Full paper and code release are available here
Build the docker image and run it inside docker
cd docker && bash build.sh
If you are not using the docker file, the following setup has been tested on Ubuntu 20.04 with ROS Noetic. You may need to install some system dependencies
Follow the ros tutorial to create a workspace tutorial For building code, I use catkin tools, which are documented here
then use the script mr-shortcut/mr-shortcut/scripts/build.sh to compile, and
The dataset of RRT-generated and CBS-generated trajectories are avaiable here.
To automatically download and extract the dataset, run cd mr-shortcut/mr-shortcut/scripts and bash download_dataset.sh.
Alternatively, you can manually download and extract them under mr-shortcut/mr-shortcut/outputs
To validate the installation, you can run the following example with two GP4 robot arms with 1 second of shortcutting.
roslaunch mr-shortcut dual_gp4.launch shortcut_time:=1.0
I have included several launch files for running planner in different environments, which are panda_two, panda_three, panda_four, panda_two_rod, and panda_four_bin.
A script to run all evaluations in parallel and reproduce the results in our paper. We used a AMD Threadripper 3990X CPU and evaluate 10 processes in parallel. Run
cd mr-shortcut/scripts
python benchmark.py
We also provide a script, mr-shortcut/scripts/plot.py to generate the plots in our paper. Check the script for more details on the plot options. For example, run
cd mr-shortcut/scripts
python plot.py plot_comp
To generate a comparison of makespan improvement for cbs-generated trajectories (Fig. 4) in our paper.
docker: dockerfile and setup scriptenv: robot environments (URDF, moveit configuration packages)mr-shortcut: implementation of shortcutting algorithms and utilities-
include: API of the libraryinstance.h: Class for the planning scenelogger.h: Utilities for loggingplanner.h: Implements a multi-robot planning interfaceSingleAgentPlanner.h: Implements the single agent planning algorithmtpg.h: Implements the Temporal Plan Graph execution policy and post-processing algorithmshortcutter.h: Implements various shortcutting algorithms
-
src: Code for the library and executabledemo_node.cpp: Executable for testing single-step planning
-
launch:dual_gp4.launch,panda_two.launch,panda_two_rod.launch,panda_three.launch,panda_four.launch,panda_four_bins.launch: Launch files for testing the single agent planning
-
scripts:benchmark.py: Python scripts for benchmarking motion planning/TPG processing in parallelplot.py: Visualize the results
-
outputs: Trajectoreis and outputscbs: CBS-generated trajectories stored in csv filetpg: RRT-generated trajectories stored in custom TPG-formated files
-
If you find this repository useful for your research, kindly cite the following work
@inproceedings{Huang2025BenchmarkingShortcut,
title = {Benchmarking Shortcutting Techniques for Multi-Robot Arm Motion Planning},
author = {Huang, Philip and Shaoul, Yorai and Li, Jiaoyang},
year = {2025},
booktitle = {IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}
}
