Stabilize joints between PhyRigidBody under multiple forces.

Post Reply
Posts: 24
Joined: Thu Oct 18, 2018 5:16 pm

Stabilize joints between PhyRigidBody under multiple forces.

Post by Dox »


I would ask some suggestions/ideas in order to stabilize motorized joint between PhyRigidBody.

I try to describe my situation:

I have a complex scene in terms of 3D objects, shaders and environment (underwater scenario). I have an underwater vehicle which has 6 forces applied (6 different motors) and works under others forces like buoyancy force, stream force and the traction of a cable (a series of cylinders jointed by a 6dofconstraint). In addition, I have a robotic arm with 8 joints in order to have complex movements (6 hinge constraint, 1 slider constraint, 2 6dofconstraint).

IMPORTANT NOTE: this application run on an Intel i9-9900K and NVidia GFX 1080Ti.

Scenario 1.
I have the robotic arm attached in a fixed world point and the underwater vehicle is free to move. The underwater vehicle has no problems in its movements and the robotic arm (in the same scenario) is pretty stable (a little of dantzing at some motor stop command, but is good).
In order to have this kind of stabilization, I need to setup really aggressive solving parameters: num iteration = 80, sub steps = 50, time step = 1/500.

Scenario 2.
Now I need to attach the physic robotic arm to the underwater vehicle. In this case the robotic arm become unusable, because start to "shake" (dantzing). In practice all 8 arm motorized joints are "relaxed" during vehicle motion and do not reach a good convergence. I've tried to disable ALL arm motorized joints, but the behavior is similar: the main problem is the root joint between the arm and vehicle (a 6dofconstraint, but 6dofspringconstraint has the same behavior). I'm sure there are no collisions between shapes. The max solving parameters I have: num iteration = 100, sub steps = 100, time step = 1/500. I can't overcome these parameters because the physic stepSimulation become too slow for real-time purposes. I've tried SequentialImpulseSolver, MLCP dantzing, MLCP PGS, MLCP Lemke, but the behavior has not changed in term of joints stabilization (SequentialImpulseSolver and MLCP PGS are the best).

I'm really conscious that I'm trying to do a combination of complex physic tasks, but I'm asking to me if I'm wrong in some steps (maybe you can suggest to me a point to work) or this kind of situation can be considered a current "technological limit".

I know this isn't a simple answer, but do you think I can have a more stable behavior upgrading hardware? The machine I'm using (Intel i9-9900K and NVidia GFX 1080Ti) is really powerful, but may be I can upgrade the i9 to a higher version or the NVidia GTX to the RTX.

Sincerely speaking, I've tried to use the dynamic world multi-thread and solver pool without success (the behavior has not changed in term of joints stabilization).

Can you give me some ideas? I'm starting to look around multibody but I found some trouble reported here:


Many thanks, bye
Post Reply