How to add a Vibration function

#1

recently,i‘m working on a projects that pedal vibration effects on the driver of the lumbar spine, my model is by modifying the original model repository SeatedHuman. The function expression for y = Asin2 Π ft, f = 3 hz. but I don’t seem to find how to insert the function in the software? could you tell me how to realize adding vibration function?

#2

Hi Zhong

Since AnyBody is an InverseDynamic system you will need to prescribe how the vibrations move from the pedal to the hip and possible up the lower spine. I would normally say that multi body models wouldn’t be the right tool for that kind of research question.

You could possibly add an AnyKinEqFourierDriver driver to the foot which would simulate the pedal movement. That would move the whole leg with a certain frequency, but it would tell you any thing about how the vibrations are attenuated up though the leg. Also, since the seated models usually have a driver fixing the pelvis the vibrations would stop at the hip.

Hope this gives you some ideas on how to proceed.

Best,
Morten

#3

Hi Melund:
Thanks for your advice, but when I tried to insert the function you said, I ran into several problems.The function expression is:
AnyKinEqFourierDriver =
{
/ / MeasureOrganizer =;
Type =;
Freq = 0;
A =;
B =;
/ / AnyKinMeasure & =;You can make any number of these objects!
};

I would like to ask what TYpe, A and B stand for respectively. If I want to input a function with a frequency of 6hz and an amplitude of 1.5mm, and the expression is y=Asin2pi ft, how to implement it?
In addition, I am considering to define a point in the model, such as a point on the back, and then add a force that changes with time to replace the vibration. Now the question is that I don’t know the conversion relationship between the force and the vibration. Is this idea feasible?
Best Wishes To You.

#4

Hi @zhong1

Take a look at the reference manual. I think you can implement the function this way:

AnyKinEqFourierDriver = 
{
Type = Sin;
Freq = 6;
A = {{0, 0.0015}};
B = {{0, 0}};
AnyKinMeasure &ref = <some kinematic measure>;
};

In addition, I am considering to define a point in the model, such as a point on the back, and then add a force that changes with time to replace the vibration. Now the question is that I don’t know the conversion relationship between the force and the vibration. Is this idea feasible?

Good question. It sounds a bit tricky. Do you know the corresponding movement? Do you know the direction the force should work. I will ask around to see if anyone has some experience with this type of research question.

#5

Hi Melund
Thank you very much for your patience, which is of great help to me and my colleagues. As for the solution we proposed, we are considering defining the action of force as vertical direction first, which is just a very vague simulation.We just want to go through this fuzzy simulation, hoping to guide the results in a better direction.In addition, we are also considering measuring motion data directly on the vibration table to make C3D files.Also, in your suggestion, how should we understand the function statement when defining a function?
AnyKinMeasure &ref = ;
What parameter is this pointer to?

#6

The AnyKinEqFourierDriver is used to imposed motion to some degree of freedom in the model. The AnyKinMeasure reference, should point to some kinematic measures of the degree of freedom you need to control.

However, if you just need to impose some force onto the model there are better ways. You can simply use the AnyForce3D class to add an external force:

You can either specify the force in global or local coordinates with respect to the frame where it applies. Also, since this isn’t a kinematic driver you are completely free to write the force as a normal mathematical expression.

  Main.Model.EnvironmentModel  = {
    
    AnyForce3D VibrationForce = 
    {
      F = {0.0, 0.01*sin(2*pi*t), 0.0};
      //Flocal = {0.0, 0.0, 0.0};
      AnyRefFrame &PelvisRef = Main.HumanModel.BodyModel.Trunk.SegmentsLumbar.PelvisSeg;
    };
    
    
  };

Note, make sure the object is part of the study you are running. Here I ensure that, by placing it inside the EnvironmentModel which is part of the study which executes the analysis.