GPU Acceleration

Is there any plan for GPU acceleration in MoveIt?

I understand that sampling planners cannot be easily parallelized, but from my short experience it feels that most of the time is spent in collision checking, and in that area there are gpu algorithms already developed.

Are there any other hardware/software optimizations that could be done to accelerate motion planning?

That is a really good question! This issue has been briefly touched as part of a GSoC project a couple years ago (see Future work for improving MoveIt's collision detection · Issue #1646 · ros-planning/moveit · GitHub), along with some other potential improvements. Currently, the most straight-forward approach to GPU-accelerated collision checking would probably be to investigate enabling it with Bullet which is already available as collision checking plugin for MoveIt. I’m not aware of any current efforts for implementing it, though. Can you name the algorithms that you would like to see supported?

Currently, the best approach is to really reduce the complexity of the (mesh) models and filter for redundant or impossible collision checks using the AllowedCollisionMatrix.

1 Like

Have you taken a look at GitHub - NVlabs/storm: Stochastic Tensor Optimization for Robot Motion - A GPU Robot Motion Toolkit?

Thanks.

I guess what surprises me the most is that GPU-accelerated collision check is currently a “solved problem” in many game engines, but even if it could vastly improve planning times, there is no much discussion about this in the community (maybe I am wrong about this, but I ran some benchmarks with my setup and most of the time was spent in FCL).

For what I’ve seen in the bullet forum (mainly this thread) GPU support in Bullet is quite stale, although as you said it would probably be the easiest way to get GPU-accelerated collision checking, as there are some algorithms already implemented.

Doing a quick google search, I’ve found some papers and even articles from NVidia about collision checks in GPU. Now that I read this particular article I see that it’s for convex objects, which might not be usable in MoveIt without some non-trivial work.

Have you taken a look at GitHub - NVlabs/storm: Stochastic Tensor Optimization for Robot Motion - A GPU Robot Motion Toolkit ?

I didn’t know this software, I will take a look at it, thanks!

STORM

What a capital name and using MPPI like we are in Nav2? I’ll need to look carefully over this. Thanks for sharing! There’s got to be good analogs I can dissect and learn from.