Saturday, September 7, 2024
HomeMatlabPole Vault – 2024 Olympics replace » Man on Simulink

Pole Vault – 2024 Olympics replace » Man on Simulink


In 2016, we printed this weblog publish simulating a pole vault bounce. I made a decision to revisit this matter and display how I might simulate this utilizing the most recent options in Simulink.

Pole Vault Mannequin

Right here is an illustration of what a pole vault bounce appears like:

To simulate this occasion, we are able to divide the bounce in three phases:

  • Method: Throughout this part the athlete tries to maximise his velocity alongside the runway to realize most kinetic power
  • Take off and swing up: The athlete positions the pole into the “field” to transform the kinetic power into saved potential power within the pole and swing up.
  • Fly away: The vaulter releases the pole and falls again on the mat beneath the affect of gravity
In 2016, the best way to mannequin that was utilizing a collection of three If Motion Subsystems. When switching from one part to the subsequent, we might switch the states from one Subsystem to the subsequent utilizing the Integrator block state port and GoTo and From blocks.

This semantic had a number of imitations. Let’s examine my most popular technique to implement the identical equations in MATLAB R2024a.

Simulink States inside Stateflow

Here’s what my new mannequin appears like.

Sure, that is appropriate, just one Stateflow Chart. Do not be fooled, the Simulink blocks are inside!
Throughout the Run Up part, I combine the movement of the athlete working at a continuing velocity. In comparison with the 2016 implementation, I’m able to use the Second Order Integrator as a substitute of two Integrator blocks, as a result of the Second Order Integrator doesn’t have a state port choice.

Throughout the Take Off, the movement of the athlete is computed in polar coordinate. This makes it less complicated to unravel the equations for the bending of the pole.

The necessary half to note is what occurs within the Simulink Features. Utilizing State Reader blocks, I can entry the states of the Integrator blocks within the earlier part and compute the preliminary states of the subsequent part. I can then use State Author blocks to initialize the Integrator blocks within the subsequent part.
When simulating the mannequin, we are able to comply with the evolution of the simulation by the Stateflow animation and the newly revamped XY Graph block, which is only a pre-configured occasion of the File block.
PoleVault.gif

Design Examine

Let’s examine the impression on the bounce of two variables:

  • The stiffness of the pole
  • The preliminary angle of the pole for the take-off part

For that, I create two multisim variables and mix them utilizing simulink.multisim.Exhaustive.

k_var = simulink.multisim.Variable(“ok”, linspace(0.1,10,5));

theta0_var = simulink.multisim.Variable(“theta0”, linspace(10,50,5));

MyCombination = simulink.multisim.Exhaustive([k_var, theta0_var]);

d = simulink.multisim.DesignStudy(mdl,MyCombination);

d.PostSimFcn = @(simOut, simIn) myPostSim(simOut,simIn);

out = parsim(d,‘ShowProgress’,‘off’,‘UseFastRestart’,‘on’);

I additionally create a post-sim operate the place I do two issues:

  • I retailer the enter variables within the SimulationOutput object
  • I course of the logged information to compute the utmost top and distance of the bounce

operate simOut = myPostSim(simOut,simIn)

% Switch enter variables to SimulationOutput object

for i = 1:size(simIn.Variables)

    simOut.(simIn.Variables(i).Title) = simIn.Variables(i).Worth;

finish

% Compute key efficiency indicators

simOut.maxHeight = max(simOut.logsout.get(‘y’).Values.Knowledge);

simOut.distance = abs(simOut.logsout.get(‘x’).Values.Knowledge(finish));

As soon as the simulations full, we are able to visualize ends in a number of methods. Let’s attempt just a few issues.

Let’s start by plotting all x-y timeseries:

    plot(out(i).logsout.get(‘x’).Values.Knowledge,out(i).logsout.get(‘y’).Values.Knowledge)

    legendText{i} = [‘k = ‘ num2str(out(i).k) ‘, theta0 = ‘ num2str(out(i).theta0)];

legend(legendText,‘Location’,‘northeastoutside’);

Possibly a matrix of scatter plots would assist visualize this information?

u = [[out.k]’ [out.theta0]’];

y = [[out.maxHeight]’ [out.distance]’];

or a 3d bar plot?

top = reshape([out.maxHeight],5,5);

Ultimately, this appears fairly clear that the decrease stiffness and preliminary angle end result within the increased bounce.

Now it is your flip

Do not miss the precise pole vault competitors on the Paris Olympic:

How would you simulate the pole vault competitors? Tell us within the feedback under.



RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments