Squat Jump
Home Up AnyScript 2-D Bicycle 3-D Skiing 3-D Bicycle Car Driver Squat Jump Crank Spring

 

Up

Optimization of a Squat Jump

(under construction)

 

A squat jump is a classical example of biomechanical simulation. It is similar to a number of practical movement cases in the sense that the overall goal is clear - to lift the center of gravity as high as possible - whereas the precise way to accomplish this task by means of muscle activation is unknown.

The "classical" way to simulate this movement is by means of forward dynamics where an optimum control algorithm determines the activation of the muscles that produces the highest jump. This problem is both complicated and time-consuming to solve.

In AnyBody, we take a different approach, so-called inverse-inverse dynamics. The difference between forward dynamics and inverse-inverse dynamics is illustrated in the figure below.

As the figure shows, the AnyBody's approach (the lower one) differs from forward dynamics in its choice of independent variables. Where forward dynamics controls the muscle activations, inverse-inverse dynamics controls the movement. The advantage is that there are typically less movements than muscle forces to be controlled, they typically behave nicer, and it is often possible to come up with a good starting guess.

In our squat jump model, we control the angles of the ankle, knee and hip joints. We furthermore require the center of gravity of the trunk to stay vertically above the contact point with the ground.

Each joint angle is described by a hermite polynomial with six terms. Each term has a coefficient that serves as a design variable.

We require the movement to start from a specified squatting position, at zero velocity and end its motion when all joints are fully extended at time T. These initial conditions identify three coefficients in each polynomial. leaving us with 3 x 3 = 9 variables in the optimization problem.

Our starting guess is simply a constant angular acceleration of all joints. It produces the non-physiological jump shown to the right.

The muscle forces are illustrated by the changing thicknesses. 

In addition to being non-physiological, it is also a very bad jump of only a few millimeters over ground level.

The optimization is performed in less than half a minute on an ordinary PC.

After optimization, the jump is much more reasonable. The optimizer works out that it is an advantage to start the jump with a counter movement that stretches the muscles and increases their operational range.

This jump is 123 millimeters - much more than the initial guess, but still not very impressive. The likely reason why the model does not jump higher is that we have too few terms in the polynomials. With three free terms for each joint position, we have only two terms for the velocity, and one (!) free term for the acceleration. This does not give the algorithm much room to exploit the muscles' capabilities.