Page 1 of 1

Muscle-driven simulation stop jump

Posted: Mon Nov 06, 2023 11:24 am
by tomholtke
Dear OpenCap team,

In recent months I have worked a lot with OpenCap and OpenSim. OpenCap plays a major role in my research project where we want to look at patellar tendon loadings in a volleyball 3-step approach stop jump. We think that OpenCap can be a good tool to perform measurements in the field (instead of a lab) without the use of force plates. To determine tendon loadings we need the knee moment and momentarms and as described in the GitHub it should be possible to obtain these results using muscle-driven simulations.

I managed to run example_kinetics.py without any errors. However, if I run the same script with the settings for jump and the time interval of the stop jump movement (between 2 and 3 seconds), I get the error 'problem not converged' after more than 1000 iterations.

My first question is whether you think it is possible to generate a muscle-driven simulation of a stop jump including run-up. Do settings need to be adjusted for this or is the movement too complex compared to a squat or STS?

My second question is what should Visual Studio be installed for? Should some code be run via this platform? The usage of Visual Studio is not entirely clear to me.

Thanks for contributing ideas. I am extremely impressed with OpenCap and would like to continue using it as a research tool within injury prevention in volleyball!

Kind regards,
Tom

Re: Muscle-driven simulation stop jump

Posted: Mon Nov 06, 2023 12:23 pm
by suhlrich
Hi Tom,

Thanks for your questions. A quick comment on volleyball - if you aren't already, I recommend recording at 120 or 240 Hz due to motion blur. We've found this helps with stop jumps.

Re. kinetics. It should work to simulate a stop jump, but it will likely require iteration on the problem formulation. Check out the readme here https://github.com/stanfordnmbl/opencap ... /OpenSimAD, especially the tips and tricks links at the bottom of the page.

A few ideas: the model may not be 'strong' enough to generate the movement. You could increase the max isometric force of the muscles to 2, and turn off passive muscle forces. If that doesn't work, try a torque-driven model. Once you get convergence, you can start to work back to a muscle-driven problem. I recommend simulating .5s before and .3s after the activity portion you're interested in.

Visual Studio is used to compile C++ code for the simulation. You don't need to interact with it, but it is happening prior to running the simulation.

Thanks,
Scott

Re: Muscle-driven simulation stop jump

Posted: Wed Dec 13, 2023 3:05 am
by tomholtke
Hi Scott,

Thanks for your useful reply! Last month I tried adjusting the different settings you suggested (and also in the tips and tricks document). However every time the problem won't converge due to the reach of a maximum iterations of 5000. I already tried to reduce the interval time from 2 seconds to 0.9 seconds (the first touchdown of the stop jump) including the .5s and .3s at the start/end. Are there any other relevant settings that I can adjust so that the problem can be solved before reaching 5000 iterations, or is it possible to let the computer model for longer than 5000 iterations?

I also recorded our test-measurements at 240Hz with two cameras from the back/side in a volleyball field. Two cameras seem sufficient to me, or do you think a third camera will provide better data?

In addition, I found that the downloaded videos (sync.mp4) do not exactly match the output data. At 240Hz the length of the video in time/frames is the same, but in some trials there is a difference of 10-40 frames with the OpenSim motion (this difference is not consistent). As suggested in your videos, I have test subjects make a quick fist, but the videos still don't sync at exactly the right time.

This is a problem, as I want to determine the frame numbers of the stop jump touchdowns and toe-offs of each foot (via Kinovea/Quintic software) and then include this in my code to determine kinematic data at those exact points. However, this is now not possible due to the inconsistent difference in the synced videos and OpenCap output. Do you have an idea how I could best solve this so that the correct frame numbers match the OpenCap data?

Thank you very much for taking the time to answer the questions!
Tom

Re: Muscle-driven simulation stop jump

Posted: Fri Dec 15, 2023 10:59 am
by suhlrich
Hi Tom

A few ideas:

1) visualize your kinematics in opensim and make sure they are good relative to the ground. Is the ground plane oriented correctly? Is the person facing in the +x direction?
2) I would carefully review the formulation and ensure it makes sense for your application (ie that you aren't using periodicity for example).
3) You may need to change the simulation formulationA first step would be doubling the optimal fiber force (add 'scaleIsometricMuscleForce' = 2) in the settings dictionary, and turning off passive muscle forces ('ignorePassiveFiberForce' = True) to see if it will solve.
4) If not, consider applying for our virtual Restore center office hours to dig in further. https://restore.stanford.edu/virtual-office-hours/