Feasibility of Running 1000-Scale MPC Environments with CuRobo #375
-
Hello, I've recently come across the CusADi paper (CusADi: GPU-Accelerated MPC for Large-Scale Robotics Simulations), which demonstrates the ability to run Model Predictive Control (MPC) across 1000 environments simultaneously using CUDA on Isaac Gym. This capability is particularly appealing for large-scale robotics simulations. Given this, I am curious about whether a similar setup is possible with CuRobo. Specifically, I noticed that the examples provided with CuRobo often use a smaller number of parallel environments, such as Could you please clarify what the maximum number of parallel environments supported by CuRobo is? Additionally, is it feasible to achieve a 1000-scale environment for running MPC in parallel with CuRobo, similar to what is demonstrated with CusADi? If not, what would be the main limitations or challenges in scaling up the number of parallel environments in CuRobo? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
cuRobo's MPC uses MPPI as the optimizer which runs 400 rollouts ( ) per environment to output solutions. So running 1000 environments will require 400k rollouts while CusADI is using gradient based optimizer which might only require 1 rollout per environment.The key bottleneck is the number of rollouts required by the optimizer to generate good motions. You could reduce the number of rollouts required by MPPI by tuning the weight terms for a specific robot. This could bring the rollouts to 100 per environment. Then you could run 100 parallel environments. |
Beta Was this translation helpful? Give feedback.
-
Thank you! MPPI is indeed a powerful sampling-based MPC. However, if there were a gradient-based and GPU-accelerated MPC, it seems like we could achieve even greater parallelization! |
Beta Was this translation helpful? Give feedback.
cuRobo's MPC uses MPPI as the optimizer which runs 400 rollouts (
curobo/src/curobo/content/configs/task/particle_mpc.yml
Line 84 in a027cbc
The key bottleneck is the number of rollouts required by the optimizer to generate good motions. You could reduce the number of rollouts required by MPPI by tuning the weight terms for a specific robot. This could bring the rollouts to 100 per environment. Then you could run 100 parallel environments.