How can I simulate a cable bending using deformable objects? #814
|
Hi! I'm using Isaac Sim 5.1.0 (and OmniPhysics 107.3) to simulate a power/connection cable. So, it needs to be able to bend like a real cable. I’ve started trying to emulate that behavior with a cylindrical mesh, adding a “Deformable Object Physics” and a “Deformable Physics Material.” Can I achieve this behavior by adjusting the parameters of both elements (see attached screenshots)? If so, what does each parameter mean, and what value should I assign to it?
In summary, the behavior I’m looking for has the following characteristics:
The only thing I've found so far is the following repository: https://github.com/Galidos21/IsaacSim-Cable-Creator. In it, they model the cable as a hinged connection of multiple links—that is, a kinematic chain. Is this perhaps the most appropriate approach? I also found the “RigidBody Rope” demo (Window -> Examples -> Physics Examples), but I don't quite understand how to create that rope using the instantiator, or where I should run the source code. |
Replies: 1 comment 3 replies
|
I would start with the Rigid-Body Ropes example rather than a deformable body. It models the cable as a chain of rigid capsules connected by D6 joints, which gives you a circular cross-section, bending, and direct rigid-body interaction with the robot. For each joint:
Use shorter capsules if you need a smoother curve. You may also need a smaller physics time step or more solver iterations if the joints appear to stretch under load. The relevant settings are covered in the joint documentation. One important limitation is that damping will not make the cable retain a bend. If that requirement means the cable should keep some curvature after the load is removed, Newton may be a better fit. Its Cable Bundle Hysteresis example implements bend hysteresis using a Dahl friction model. The RJ45 plug example also shows a cable attached to a connector, which looks close to your use case. You can run the Newton example with: pip install "newton[examples]"
python -m newton.examples cable_bundle_hysteresisI tested this example headlessly with GPU acceleration and it runs correctly. See the Newton installation guide for the prerequisites. Newton is not part of Isaac Sim 5.1 and cannot simply replace PhysX in your existing scene. If the cable must interact with the robot in the same Isaac Sim 5.1 simulation, use the D6-jointed rigid-capsule approach. If retained bends are the higher priority and a separate Newton workflow is acceptable, the Newton example is the better starting point. You can inspect the PhysX implementation under Physics Examples > Rigid-Body Ropes. Load the scene and use Open source to see how the capsules and joints are created. The source defines a demo class, so pasting the file directly into Script Editor will not create the rope by itself. Can you confirm whether the cable needs to retain a permanent bend after unloading, or only settle naturally under gravity and contact? |


Thanks for clarifying. If the cable does not need to retain a permanent bend, I would stay with the PhysX rigid-body rope approach; Newton is not necessary for this case.
The Omni Physics documentation has a standalone Joint Instancing example. For an external script, move the capsule and D6-joint creation code into a helper that receives the current stage and a unique root path.
One important detail: define the initial curve using the positions and orientations of the capsule instances, not the joint instances. The joint instancer only identifies which adjacent capsules are connected and defines their local attachment frames.
After starting
SimulationApp, call the helper once per cable w…