Building a nonlinear spring in Multibody

8 views (last 30 days)
I am attempting to develop a nonlinear spring system in Simscape Multibody, and there does not appear to be a method to implement a nonlinear spring in the Multibody domain.
I am aware of Steve Miller's nonlinear spring (https://www.mathworks.com/matlabcentral/fileexchange/25238-simscape-language-nonlinear-spring) as well as the multiphysics library, but that requires a rather convoluted system in which each joint outputs to their component velocities and then a rather convoluted system to extract forces out, which strikes me as something overly complicated (see below)
Is there a way to a) develop multibody domain custom blocks? All the documentation I have found does not provide any information about the multibody domain. Failing that, is there a way to assign a variable spring constant to a spring and damper multibody block?
Thanks for your help in advance!

Answers (1)

J Chen
J Chen on 13 Jul 2023
You can use the Trnasform Sensor block to sense motion, convert the output to Simulink signals, calculate corresponding forces using Simulink, convert the outputs to the PS signals and feed it to the External Force and Torque block.
  1 Comment
Philip Mulford
Philip Mulford on 13 Jul 2023
Yeah, I've moved to something similar to that (custom block instead of simulink logic, but the idea holds). The issue becomes that, as I add more masses, the transform sensor approach leads to a failing simulation. Taking the position vector directly out of the joint creates a passing simulation, but doesn't account for the full distance between masses.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!