Performance: Upgrade BEPU V1.5.1 to V2.1 and parallelization
Posted: Wed Feb 19, 2020 12:53 pm
Hello Norbo,
At the moment we are using BEPU Physic V1.5.1 together with HelixToolkit 3D 2015.1.715 for visualization for the simulation of industrial robots in a production environment.
Here you can see a very simple Scene: Here you can find a video as an example:
https://www.youtube.com/watch?v=x2-fyyBAv20
We are doing path planning for the robots. For the collision detection between the robots and the environment we are using convex hulls (one convex hull for each axis of the robot). During the path planning we have approximately 100 lists with possible paths. Each path contains approximately 1000 points. For collision detection we set the robot to each of the path-points and use BEPU to check for collisions . At the moment this is a sequential testing which is the bottle neck of our implementation.
At the moment we have two ideas to speed up our system:
1.) Upgrade BEPU V1.5.1 to V2.1: What is your estimation about the performance improvements of the convex hull collision detections for our application? Do you have a gut feeling of the speedup?
2.) Do have any hint how we could parallelize the collision detection. In theory it would be possible for the application to check each of these 100 lists with the 1000 path points at the same time.
Our idea for the parallelization is to initialize as many “Bepu Spaces” or “Bepu Simulations” as we have processor cores and distribute the path-points to all instances. Is this a good idea or could you recommend a better solution?
Thank you very much in advance!
At the moment we are using BEPU Physic V1.5.1 together with HelixToolkit 3D 2015.1.715 for visualization for the simulation of industrial robots in a production environment.
Here you can see a very simple Scene: Here you can find a video as an example:
https://www.youtube.com/watch?v=x2-fyyBAv20
We are doing path planning for the robots. For the collision detection between the robots and the environment we are using convex hulls (one convex hull for each axis of the robot). During the path planning we have approximately 100 lists with possible paths. Each path contains approximately 1000 points. For collision detection we set the robot to each of the path-points and use BEPU to check for collisions . At the moment this is a sequential testing which is the bottle neck of our implementation.
At the moment we have two ideas to speed up our system:
1.) Upgrade BEPU V1.5.1 to V2.1: What is your estimation about the performance improvements of the convex hull collision detections for our application? Do you have a gut feeling of the speedup?
2.) Do have any hint how we could parallelize the collision detection. In theory it would be possible for the application to check each of these 100 lists with the 1000 path points at the same time.
Our idea for the parallelization is to initialize as many “Bepu Spaces” or “Bepu Simulations” as we have processor cores and distribute the path-points to all instances. Is this a good idea or could you recommend a better solution?
Thank you very much in advance!