Simple multi body simulation unstable when providing a linear stiffness over the joint torque input without damping
Show older comments
I found two issues using simscape multibody. I simplified the problem to point them out:
A rigid beam is connected to a flexible joint on one end, the other end is free. I'm interested in the driving point measurement of the free beam tip (force input, acceleration output). I'm using an "External Force and Torque" - block to introduce the input force. The FRF is calculated using Linear Analysis of the Control Design Toolbox:

Issue 1: There is a weird pole at -1000 which seems to be caused by the "External Force and Torque" - block, since it's independent from other system parameters. This causes an additional phase delay around 159 Hz, which makes it basically unusable for my use case. I guess there is a filter with a double pole at -1000 hard coded into the "External Force and Torque" - block, but I can't find any option to change that. I have to introduce external forces at specific points on a lager flexible multi body simulation with no or at least way less phase delay. Is there another way to do this or to at least adjust the phase delay of this block?

Issue 2: For this example I used the "Internal Mechanics" field of the "Revolute Joint" to include a joint stiffness without damping. This works fine and as expected (see first picture). When I'm including the stiffness by sensing the position of the joint, calculate the stiffness torque in Simulink and put it back into the revolute joint as an torque input, I get an unstable system. This is even shown by the Linear Analysis Tool (rising phase at pole -> negative damping):

From my understanding, implementing the stiffness via the "Internal Mechanics" field of the joint or like this should show the same results. This negative damping seems to come from nowhere, since there is no damping modelled in the joint or Simulink. By adding some damping, the amount of negative damping can be reduced until the system is stable and behaves basically undamped:

Further increasing the damping results in normal positive damping. The amount of damping needed for a stable system is independed of the solver or step size, but depends on the stiffness of the system (higher stiffness needs more damping to be stable).
I'm guessing using the "Internal Mechanics" field of the "
Revolute Joint" just uses the CMatrix in
and has no issues solving it, since everything is within Simscape Multibody. The other approach is basically doing
within Simscape Multibody, and
within Simulink, but
and q has to be sensed from Simscape Multibody and is thus always at least one step behind. So I'm guessing there is an issue with the implementation of this causing this apparent negative damping. I'm also fascinated that it's actually shown correctly by the Linear Analysis Tool.
This is a really big issue for me since I'm planning to build a big flexible multi body simulation, while the joint torques have to be provided by Simulink models based on the states of the multi body simulation. So I really hope there is a way to avoid or reduce this problem.
Accepted Answer
More Answers (0)
Categories
Find more on Multibody Dynamics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!