Seeking advice on resolving vibration in a double 4-bar linkage simulation

Note: For any Isaac Lab topics, please submit your topic to its GitHub repo ( GitHub - isaac-sim/IsaacLab: Unified framework for robot learning built on NVIDIA Isaac Sim ) following the instructions provided on Isaac Lab’s Contributing Guidelines ( Contribution Guidelines — Isaac Lab Documentation ).

Please provide all relevant details below before submitting your post. This will help the community provide more accurate and timely assistance. After submitting, you can check the appropriate boxes. Remember, you can always edit your post later to include additional information if needed.

Isaac Sim Version

V 5.1.0
5.0.0
4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

Ubuntu 24.04
Ubuntu 22.04
Ubuntu 20.04
Windows 11
V Windows 10
Other (please specify):

GPU Information

  • Model: RTX A4000
  • Driver Version: 573.06

Topic Description

Detailed Description

Hello,

Due to our company’s security policy, I have replaced the actual simulation data with a representative image.

I am running a simulation of a jig that consists of two interlinked 4-bar linkages, as shown in the image. The joint configuration is as follows:

Revolute Joints: #1, #2, #3, #5, #6, #7

Prismatic & Drive Joints: #4, #8

Fixed Joint: #9

Additionally, the “Exclude From Articulation” setting has been applied to joints #1 and #9.

During the simulation, I observed significant vibration in Part_2 and Part_6. I was able to resolve the vibration in Part_2 by increasing the stiffness of joint #4.

However, the vibration in Part_6 persists. Increasing the stiffness of joint #8 did not solve the issue. I also tried applying the “Exclude From Articulation” setting to joint #7, but the same symptom remains.

Could you please suggest any possible solutions to eliminate the vibration in Part_6?

For your reference, the “Exclude From Articulation” setting was intentionally not applied to joints #2, #3, #5, and #6 because their positions must remain precise for the mechanism’s accuracy.

Thank you for your assistance.

Error Messages

There are not Error Messages

Screenshots or Videos

(If applicable, add screenshots or links to videos that demonstrate the issue)

Additional Information

What I’ve Tried

(Describe any troubleshooting steps you’ve already taken)

Related Issues

(If you’re aware of any related issues or forum posts, please link them here)

Additional Context

(Add any other context about the problem here)

Here’re some suggestions:

Check physics and geometry

  • Ensure each link has realistic mass/inertia (no extremely light links, and no missing inertia tensors in USD or URDF import).
  • Make sure colliders are simple, non-interpenetrating, and aligned with visuals; avoid large overlaps or very thin shapes that can cause constraint jitter.
  • Verify joint axes and limits for revolute and prismatic joints are correct and not over constraining the mechanism (e.g., no conflicting constraints in closed chains without proper articulation setup).

Tune joint drives (stiffness/damping)

For position-controlled joints (typical robot links):

  • Start with damping = 0 and tune stiffness only until the joint reaches its targets without divergence.
  • Once it converges, reduce stiffness by about one order of magnitude to add margin.
  • Add damping at roughly one order of magnitude lower than the chosen stiffness (e.g., stiffness 1e5, damping 1e4), then adjust both to remove overshoot/oscillations while keeping tracking acceptable.

For velocity-controlled joints (e.g., wheels, sliders driven by speed):

  • Set stiffness = 0 and only tune damping.
  • Increase damping until the commanded velocity is reached smoothly without oscillation; add ~10% extra damping if the load will vary.

Adjust simulation stability parameters

If vibrations persist even with moderate gains, adjust global physics settings:

  • Decrease the physics timestep or increase the number of substeps; more frequent solver updates reduce numerical oscillations at joints.
  • Increase position/velocity solver iterations for the PhysX articulation; this helps constraints converge and reduces jitter in chains and linkages.
  • If supported in your Isaac Sim version, increase joint armature/inertia slightly on light links to make them less sensitive to high-frequency oscillations.

These parameters are exposed in the Physics settings and sometimes in the articulation/scene configuration (e.g., TGS vs PGS, substeps, iterations).

Joint-specific tips (revolute vs prismatic)

  • Revolute joints: Avoid extremely high stiffness (e.g., 1e8+) on light links with large gear ratios; instead use moderate stiffness plus damping and a smaller timestep.
  • Prismatic joints: Check that limits and drive target do not constantly “hit” the limit; if a slider is driven into a hard limit with high stiffness, it will chatter. Use reasonable limits, add damping, and consider lowering stiffness or adding soft drive targets near the limit.
  • For joints that should be passive (no active control), set stiffness and damping appropriately low or use a free joint mode rather than leaving a strong position drive at a default target.

Some recommendations to remove vibrations

  1. Temporarily isolate one problematic revolute or prismatic joint with a simple two-body setup and verify it behaves smoothly after tuning gains as above.
  2. Apply the tuned stiffness/damping pattern to the full mechanism, starting from the base and moving outward, avoiding drastic differences in gains between neighboring joints.