Hi,
I have setup two robotic arms in Isaac Sim. Specifically, I imported the urdfs for them, enabling self collisions and inertia tensors, and then imported the generated usd files, setting all the parameters for the joints. Jogging the two robotic arms, when they collide the links in contact turn out to bounce and move each other at the beginning, but after that they start penetrating. Additionally, the robots can self-penetrate other links of their own type or the fixed station where they are mounted. I looked at the documentation and at the previous posts in the forum about the topic, but the implemented solutions (CCS, tweak the contact offset parameter) in those cases either did not work or might be really old and related to previous versions than the one I have (2022.2).
Is there any way I can avoid the penetration between different links to happen?
Hi @rarduini - The issue you’re experiencing is an inherent challenge of any physics simulation. Collision detection and response in simulation environments are always a trade-off between computational efficiency and accuracy.
Isaac Sim, like many physics sims, uses continuous collision detection to optimize computation. But this approach has some limitations, especially when dealing with fast or complex motions. This can lead to the simulation missing some collisions - especially true if you move objects manually fast or the arm is moving quickly. This is likely why your robots are able to penetrate other objects under certain conditions.
Here are a few suggestions you could try:
-
Tweak physics settings: Increase physics substeps, solver iterations, and decrease contact offset, which could improve collision accuracy at the expense of computational cost.
-
Decrease movement speed: Slower movements are less likely to penetrate other objects.
-
Try different physics engines: Isaac Sim allows you to choose different physics engines (e.g. PhysX, Bullet). You might have better results with one compared to the other.
-
Get better hardware: If you’re running your simulation on a low-spec machine, upgrading it might also help.
-
Use simpler shapes for collision detection: Instead of using the exact shapes of the robot parts for collision detection, use simpler shapes like boxes or spheres. This approach simplifies the math and improves the speed and accuracy of the collision detection.
Remember that penetrations can also occur due to lack of proper tuning of the physics engine’s parameters or issues in the .urdf specifications of the robotic arm.