Hello.
In the past, I have used Static Optimization and the Rajagopal model to simulate gait with success. Now, I'm starting to look at some more dynamic movements (Squat, Vertical Jump, Lunges). To accommodate for the higher excursions, I am using Adrian Lai's model which is more compatible for higher hip/knee flexion exercises.
However, when I try to run SO on these movements, the model is too weak at some points (for example, at the bottom of the squat), and as such the optimizer cannot find a solution for some frames in the trial. I thought this could be due to the length of the muscle and it's corresponding location on the force-length curve (I have been keeping "use_muscle_physiology" as "true"), but in the muscle analyses I have examined, the muscle lengths look reasonable. I currently have coordinate actuators in the model file at the upper body joints (joints without muscles) and am appending residual actuators at the pelvis-ground joint with an optimal force of 1 and a max/min control value of inf/-inf.
My goal is to achieve Static Optimization solution for these movements that is physiologically meaningful. I know if I scale the muscle strength enough (e.g. 10x base model), I will eventually give the model enough strength to find a solution, but is this a valid approach? Do you have any recommendations of ways to proceed? My subject is quite taller/heavier than the Lai/Rajagopal base model, but even scaling muscle strength based off of some parameter like height*mass produces insufficient strength in the model.
*Other solutions I have seen: to append reserve actuators to coordinates in the model. I know this will allow the optimization to solve, and I have successfully done this, but I would prefer to have the optimizer solve without reserve actuators so I can evaluate the relationships of muscles activating without many of them maxing out.
Many thanks,
Brody
Correcting a weak model for Static Optimization
- Brody Hicks
- Posts: 32
- Joined: Wed Jun 19, 2019 11:55 am
- John Davis
- Posts: 59
- Joined: Mon Aug 26, 2019 7:42 am
Re: Correcting a weak model for Static Optimization
The Rajagopal model can struggle with deep squats or lunges, for a few reasons. First, its knee and hip ranges of motion might not be big enough for deep squats; second, some of the passive properties of the muscles mean you get a lot of coactivation to overcome passive forces (may not be an issue with static optimization though); third, muscles can sometimes "fall off" wrapping surfaces at high ranges of motion, giving them spurious or very small moment arms. Since your model is failing at the bottom of squats, I suspect some of these issues may be at play.
Adrian Lai and Danilo Catelli both have great papers about these issues here and here . I suggest trying the Catelli model (on SimTK here), since it incorporates the Lai model improvements as well, and is specifically designed for deep squats. If the hip abductors are causing you trouble, you might also consider incorporating the altered hip abductor paths used in Scott Uhlrich's new paper here.
Another issue I've bumped into has more to do with fiber velocity - partly because static optimization ignores tendon compliance, the default fiber velocity (10 lengths/sec if I remember correct) isn't high enough for fast movements, and even very strong models can fail. Not sure if your motions are fast enough for this to be an issue, though.
Finally, you might be justified in using reserve actuators because there really could be unmodeled forces when doing deep squats: the thigh-on-calf and thigh-on-torso contact forces might become significant if the squat is deep enough. I think I remember seeing some papers on these forces in squatting or kneeling that could give you ballpark numbers of what's reasonable.
Adrian Lai and Danilo Catelli both have great papers about these issues here and here . I suggest trying the Catelli model (on SimTK here), since it incorporates the Lai model improvements as well, and is specifically designed for deep squats. If the hip abductors are causing you trouble, you might also consider incorporating the altered hip abductor paths used in Scott Uhlrich's new paper here.
Another issue I've bumped into has more to do with fiber velocity - partly because static optimization ignores tendon compliance, the default fiber velocity (10 lengths/sec if I remember correct) isn't high enough for fast movements, and even very strong models can fail. Not sure if your motions are fast enough for this to be an issue, though.
Finally, you might be justified in using reserve actuators because there really could be unmodeled forces when doing deep squats: the thigh-on-calf and thigh-on-torso contact forces might become significant if the squat is deep enough. I think I remember seeing some papers on these forces in squatting or kneeling that could give you ballpark numbers of what's reasonable.
- Brody Hicks
- Posts: 32
- Joined: Wed Jun 19, 2019 11:55 am
Re: Correcting a weak model for Static Optimization
Hey John,
Thanks so much for the response. You've definitely given me some things to think about and try, so I will take those all into consideration. I have been using Adrian Lai's model but will make the same attempt with the Catelli model and check out the hip abductor paths as well.
I've also been exploring using RRA-> CMC instead of SO due to static optimization ignoring tendon compliance - as this is probably a bad assumption for deep squats. With respect to fiber velocity, do you have any recommendations on optimally setting that parameter for fast movements?
Best,
Brody
Thanks so much for the response. You've definitely given me some things to think about and try, so I will take those all into consideration. I have been using Adrian Lai's model but will make the same attempt with the Catelli model and check out the hip abductor paths as well.
I've also been exploring using RRA-> CMC instead of SO due to static optimization ignoring tendon compliance - as this is probably a bad assumption for deep squats. With respect to fiber velocity, do you have any recommendations on optimally setting that parameter for fast movements?
Best,
Brody
- John Davis
- Posts: 59
- Joined: Mon Aug 26, 2019 7:42 am
Re: Correcting a weak model for Static Optimization
Glad you found it helpful! For the max shortening velocity, I have been using 20 lengths per second (for fast running, up to around 5 m/s), since that's what Derrick et al. and Schache et al. report doing, but both of these papers use static optimization (which is also what I'm using), not CMC.
20 for vmax is probably a bit unrealistically high, but hopefully counteracts some of the issues with the rigid tendon assumption. Ross Miller's comment in this thread in the MoCo forum is also relevant.
Another thought I had is that you might be bumping into this wrapping problem after scaling. Sometimes after scaling your muscles will "fall off" the wrapping surfaces, especially at extreme ranges of motion. The GitHub issue linked above has some discussion of it but there's no general-purpose fix yet, other than plotting the moment arms of the muscles that are failing during the simulation and looking for problems.
20 for vmax is probably a bit unrealistically high, but hopefully counteracts some of the issues with the rigid tendon assumption. Ross Miller's comment in this thread in the MoCo forum is also relevant.
Another thought I had is that you might be bumping into this wrapping problem after scaling. Sometimes after scaling your muscles will "fall off" the wrapping surfaces, especially at extreme ranges of motion. The GitHub issue linked above has some discussion of it but there's no general-purpose fix yet, other than plotting the moment arms of the muscles that are failing during the simulation and looking for problems.
- Brody Hicks
- Posts: 32
- Joined: Wed Jun 19, 2019 11:55 am
Re: Correcting a weak model for Static Optimization
Hi John,
Thanks again. Are you using Static Optimization for squatting/ other high flexion tasks, or are you using a higher vmax for some other movement?
I thought the wrapping problem may be an issue as well, but I am scaling all of the bodies uniformly, and I looked into it in my scaled model and all of the moment arms I'm interested in look reasonable.
In the past few days, I've tried using the Catelli model (both through CMC and Static Optimization), and I am still getting the same issues. In CMC, the simulation doesn't fail, but there appears to be some unrealistic coactivation in the quads/hamstrings. When I am able to get CMC to run, I'm getting warnings regarding some of the hip abductor muscles (specifically tfl), so I will try to implement the updated muscle paths from Ulrich and see if that leads to any improvement.
I appreciate all of your feedback/suggestions, they've been very helpful in honing in on these problems.
Best,
Brody
Thanks again. Are you using Static Optimization for squatting/ other high flexion tasks, or are you using a higher vmax for some other movement?
I thought the wrapping problem may be an issue as well, but I am scaling all of the bodies uniformly, and I looked into it in my scaled model and all of the moment arms I'm interested in look reasonable.
In the past few days, I've tried using the Catelli model (both through CMC and Static Optimization), and I am still getting the same issues. In CMC, the simulation doesn't fail, but there appears to be some unrealistic coactivation in the quads/hamstrings. When I am able to get CMC to run, I'm getting warnings regarding some of the hip abductor muscles (specifically tfl), so I will try to implement the updated muscle paths from Ulrich and see if that leads to any improvement.
I appreciate all of your feedback/suggestions, they've been very helpful in honing in on these problems.
Best,
Brody
- John Davis
- Posts: 59
- Joined: Mon Aug 26, 2019 7:42 am
Re: Correcting a weak model for Static Optimization
I haven't used the model with deep squats, just normal-ish depth body weight squats + treadmill running. For me, the higher vmax is needed to make the model strong enough to run fast - otherwise static optimization fails, usually because the ankle plantarflexors or hip extensors/abductors are moving too fast to produce any reasonable amount of force (at the ankle I think this is a consequence of the rather poor assumption of a rigid Achilles tendon).
I'll be interested to hear if the new abductor paths help: I have occasionally had glute or TFL failures during running with the Catelli model, and those seem to be because the moment arms are too small.
I'll be interested to hear if the new abductor paths help: I have occasionally had glute or TFL failures during running with the Catelli model, and those seem to be because the moment arms are too small.
- Brody Hicks
- Posts: 32
- Joined: Wed Jun 19, 2019 11:55 am
Re: Correcting a weak model for Static Optimization
Hey John,
I will look into the fiber velocity assumption for our case and report back.
With respect to the hip abductors, even when updating the muscle paths, I still get some strange results. Specifically, the normalized fiber length of the tfl is very short. I wonder if you have encountered a similar phenomenon? I will attach a picture with kinematics/hip abd norm fiber lengths.
Thanks for the guidance.
Best,
Brody
I will look into the fiber velocity assumption for our case and report back.
With respect to the hip abductors, even when updating the muscle paths, I still get some strange results. Specifically, the normalized fiber length of the tfl is very short. I wonder if you have encountered a similar phenomenon? I will attach a picture with kinematics/hip abd norm fiber lengths.
Thanks for the guidance.
Best,
Brody