MR-STORM: Scalable Multi-Arm Control By Distributed MPC

Dan Evron1, Elias Goldsztejn1, Dan R. Suissa1, Ronen I. Brafman1

1Foundations of AI Institute, Stein Faculty of Computer and Information Science, Ben-Gurion University of the Negev.

This research was supported by Ben-Gurion University of the Negev through the Agricultural, Biological and Cognitive Robotics Initiative, and the Marcus Endowment Fund for Artificial Intelligence.

Emails: {evrond,eliasgol,danrouve}@post.bgu.ac.il, brafman@bgu.ac.il
IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2026)

Abstract

Centralized motion planning algorithms struggle to scale in multi-arm manipulation, where inter-arm coupling and tight workspaces amplify complexity. We introduce MR-STORM, a distributed sampling-based MPC framework that leverages massively parallel GPU sampling for arm control. Our approach integrates inter-arm collision avoidance via plan-sharing and a dynamic priority scheme to maintain task efficiency. We show empirically that MR-STORM outperforms existing baselines in complex simulation environments and that it transfers effectively to physical hardware.

MR-STORM in 1 Minute

🔊 Recommended to watch with sound.

MR-STORM on Real Arms (Unitree G1)

Was the first video too fast? Check out this more detailed version below (3min)

Interactive Simulator

MR-STORM vs Alternatives

STORM Decentralized

CuRobo

MR STORM no prioritization (tau=0)

⭐ MR STORM

MR-STORM Demos

Installation & Multi-Platform Quickstart

MR-STORM provides a simulator- and hardware-agnostic mr_storm Python & ROS 2 package. Run in NVIDIA Isaac Sim, Gazebo, MuJoCo / PyBullet, Distributed ROS 2, or directly on physical robot hardware.

1. Base Environment & CuRobo Installation

# Create Conda environment (Python 3.10 for Isaac Sim 4.5 / ROS 2 Humble, or Python 3.11 for Isaac Sim 5.0)
conda create -n mr_storm python=3.10 -y
conda activate mr_storm

# Clone repository & pull LFS robot meshes
git clone https://github.com/RoboWorkshop/rl_for_curobo.git
cd rl_for_curobo
git lfs install && git lfs pull

# Install bundled CuRobo (with MR-STORM GPU DynamicObsCost rollout kernels) + mr_storm package
cd curobo
SETUPTOOLS_SCM_PRETEND_VERSION_FOR_NVIDIA_CUROBO=0.0.0+local pip install -e . --no-build-isolation
cd ..
pip install -e .

Gazebo & Custom Simulators

Connect directly to Gazebo (Harmonic / Ignition / Classic) via ros2_control or plug into MuJoCo/PyBullet:

# Auto-generate Gazebo ros2_control YAML:
python3 examples/01_gazebo_multi_arm.py \
  --print_ros2_control_yaml > controllers.yaml

# Run MR-STORM with Gazebo:
python3 examples/01_gazebo_multi_arm.py \
  --fleet_config mr_storm/ros2/config/quad_ur5e_fleet.yaml

Distributed Multi-Arm ROS 2

Run each arm as an independent decentralized ROS 2 node (on one or multiple PCs/GPUs) sharing horizon plans over /mr_storm/plan_broadcast:

# Launch 4 distributed MR-STORM arm nodes:
ros2 launch mr_storm/ros2/launch/distributed_multi_arm.launch.py \
  num_arms:=4

# Send crossing 6-DoF goals & monitor bus:
python3 examples/03_distributed_ros2_goal_sender.py

Real Robot Hardware

Built-in real-time SafetySupervisor (step clamping, velocity limits, EMA smoothing, E-Stop), UR RTDE driver, and a 5-line callback wrapper for any robot SDK (Unitree G1, Franka, Kinova):

# Universal Robots (UR5e/UR10e via ur_rtde):
python3 examples/02_real_robot_multi_arm.py \
  --mode ur_rtde \
  --arm0_ip 192.168.1.101 --arm1_ip 192.168.1.102

NVIDIA Isaac Sim Benchmarks

Reproduce all IROS 2026 paper benchmarks (MR-STORM O, O-, STORM Decentralized SD, Centralized SC, CuRobo CC, dRRT* D):

# Optional: Install Isaac Sim 4.5 or 5.0 via pip
pip install isaacsim[all,extscache]==4.5.0 \
  --extra-index-url https://pypi.nvidia.com

# Run benchmark suite:
python3 projects_root/experiments/core_api/dataset_collector.py

BibTeX

@inproceedings{evron2026mrstorm,
  title     = {MR-STORM: Scalable Multi-Arm Control By Distributed MPC},
  author    = {Evron, Dan and Goldsztejn, Elias and Suissa, Dan R. and Brafman, Ronen I.},
  booktitle = {IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  year      = {2026},
  eprint    = {2602.10114},
  archivePrefix = {arXiv},
  primaryClass  = {cs.RO},
  url       = {https://arxiv.org/abs/2602.10114}
}