I'm trying to implement a collision detection system to help solve constrained non-linear optimization problems in robotics as my master thesis.
Basically, what I need out of the system is the penetration depth and contact normal between each pair of potentially colliding bodies. I was thinking of using the GJK algorithm as a basis to implement the narrow phase of the system on GPUs using CUDA/OpenCL but wasn't sure if this line of thinking would get me very far due to the inherent lack of ‘numerical robustness’ of GJK using 32 bit floating point representations (the de facto standard on GPUs). There is also the question of code divergence (each parallel thread running GJK may not run the same instructions).
As a starting point, we would only be interested in determining collisions between capsules, spheres and cylinders. Keeping this in mind as well, is there a better way to do this? Are there documented ways to overcome issues with GJK and numerical stability on 32 bit floating point representations? Are there simpler or more efficient ways of implementing narrow phase collision detection systems on GPUs?
Thanks very much for your time and help! I'm totally new to this field and any help would be greatly appreciated, especially from those with prior experience implementing similar systems ?