Issues rigging a double-four-bar linkage

I’m using IsaacSim to make a digital twin of a specialist machine with kinematic loops. I see from the forums that this is an issue others run into as well, however those answers haven’t solved my problem quite yet.

The main body of the machine can be easily modeled with joints and an articulation. However, there are two extremities / branches to the kinematic chain that end in double-four-bar-linkages. The kinematic loops in them are problematic for the solver.

I’ve been able to successfully simulate these extremities in isolation by simply using joints and no articulation. Driving the first joint in the linkage creates the behavior I want. But, I don’t know how to get this to attach properly to the rest of the body without the articulation. The articulation is useful for the body of the machine as it stabilizes the behavior.

Here are a few things I’ve tried:
The “Exclude from Articulation” feature on joints: while I can use this to make the articulation not error out, it quickly accumulates joint error that causes the linkages to not behave correctly (ie, too much error). I believe I have set these joints’ positions precisely. This seems to happen whether I exclude the minimum number of joints, or all joints in the extremity.

Is there some way I can “parent” the extremities to the articulation body, while keeping those joints from being handled by the solver?

I’ve considered setting position explicitly on a parent XForm, but that disables the joint behavior.

My most promising idea is to simply make a joint for the extremities that relates to the world, bypassing the rest of the articulation but appearing to move together. This is less ideal, but could work for this particular use case.

Any advice or confirmation of limitations here is useful. Thanks!

Would you be able to share a video that explains what goes on, and maybe a bit more on the rigging structure?

One thing to check is if the joint drive stiffness for the articulation joints is too big, as that may lead to solver instabilities and push the “Exclude from Articulation” joint into the accumulated error.

You can also increase the number of simulation timesteps per second at the PhysicsScene, as that will reduce the time-step to solve and lead to less accumulated error.

Thanks for the reply. Unfortunately I can’t share videos of the rigging structure publicly due to NDAs. To describe it a bit more, imagine a serial-link robot structure with two “arms” that are 4-bar linkages, extending out on either side of the robot.

The error is present with low or high joint stiffness, it essentially behaves like the joints are completely disconnected when they are excluded.

I’ve tried setting the number of time steps from the default value, to a mid-way point, to the maximum of 255. I see some change in the behavior but the error is similar.

would it be possible to create a reproduction of the issue with basic shapes and a structure that wouldn’t violate your Intellectual Property?

I could prepare something and share it next week when I’m past this deadline.

@rgasoto I meant to report back here sooner with my solution, sorry for the long delay.

At this point the project has been publicly released so I can share more details. The wings are on the left, and these are the double-four-bar linkages in question.

See them in motion here

Solution
Set “kinematic enabled” on the root of the linkages (here, where the wing connects to the body). The position of that body was then programmatically updated based on the body, having the effect of being “parented” without causing the other joint issues.

Outside the scope of the problem, but in case it’s interesting to know, this is all being driven by data from a PLC.

Thanks again for your response and tips!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.