How to build a long, variable-stiffness articulated rod (plant stem) without Drive-PD instability?

Dear Isaac Sim team,

I am using isaac sim 4.5.0

I’m prototyping a physically-based plant model whose main stem and side branches are built from dozens of small capsule links. Each pair of capsules is connected through an articulation spherical joint whose swing and twist dof are currently driven by a position Drive:

python

    for axis in ("transX", "transY", "transZ", "rotX"):
        limit_api = UsdPhysics.LimitAPI.Apply(prim, axis)
        limit_api.CreateLowAttr(0.0)
        limit_api.CreateHighAttr(0.0)

    low, high = rot_limit
    for axis in ("rotY", "rotZ"):
        limit_api = UsdPhysics.LimitAPI.Apply(prim, axis)
        limit_api.CreateLowAttr(low)
        limit_api.CreateHighAttr(high)

        drive_api = UsdPhysics.DriveAPI.Apply(prim, axis)
        drive_api.CreateTypeAttr("force")        
        drive_api.CreateDampingAttr(damping)
        drive_api.CreateStiffnessAttr(stiffness)

My goal is to emulate a variable bending stiffness along the rod (root ≈ woody ⇒ stiff, tip ≈ herbaceous ⇒ soft).

Problem

As soon as the robot arm collides with the plant, the chain often explodes and coils into a tight ball. Reducing stiffness helps, but then the rod behaves far too soft. Self-collision between adjacent capsules has been completely disabled via excludeSelfCollisions=“true” on the articulation, so the instability seems unrelated to internal contacts. I suspect the issue is that a Drive applies a large explicit PD force; when this competes with the rigid contact impulses, the solver diverges.

Questions

  1. The Articulation Stability Guide mentions naturalFrequency / dampingRatio and jointCompliance as soft-constraint alternatives to a PD Drive docs.omniverse.nvidia.com. Can I rely solely on jointCompliance (or on natural-frequency based spring drives) to realise elasticity, without an active PD controller? If so, what parameter ranges are considered safe for 60 Hz global timesteps?
  2. The PhysX docs say compliance is handled as a soft constraint inside the solver docs.nvidia.comnvidia-omniverse.github.io. Does this mean it will coexist with contact constraints more robustly than a high-gain Drive?
  3. Would replacing each spherical Drive with a PxDistanceJoint + spring flag be preferable? The joint manual describes distance-joint springs but I’m unsure how well they behave in branched structures docs.nvidia.com.
  4. I looked at Cable / flexcomp and FEM deformables, but they seem unsuitable because
  • flexcomp handles only linear (non-branching) topologies , and
  • a full FEM tet mesh for an entire bush is too heavy docs.omniverse.nvidia.com.
    Are there recommended workflows for branched, variable-stiffness rods that avoid Drive PD?
  1. Finally, are there best-practice solver settings (e.g., solverPositionIterationCount ≥ 32 as hinted in the stability guide docs.omniverse.nvidia.com) that you would recommend specifically for this use-case?

Any code snippet or USD attribute list that demonstrates per-joint compliance grading along an articulation would be greatly appreciated.

Many thanks for your guidance!

I think you are referring to the Mimic Joint Compliance. If that is the case, these are also controlled using Joint Drive. I think you will want to use Joint Drive to get joint compliance.

Again, this is referring to mimic compliance. Meaning, this is a configuration where one joint is trying to mimic another joint in a compliant manner. Not sure if ChatGPT is parsing this correctly :).

I think the explosion behavior can be caused by two sources:

  1. Your links may be too light in mass
  2. The stiffness of the joints is too high

These will cause the contact to generate a very fast motion and physics solver won’t be able to keep up. You can either reduce the stiffness, increase the link masses or increase the Timesteps Per Second of the simulation in the PhysicsScene Prim.

P.S please refrain from posting questions directly through ChatGPT as it makes it hard to provide a response. Some links are not relevant to what is being asked, etc.