AnyMuscleModelUsr1 and muscle recruitment


I have a doubt as to how AnyMuscleModelUsr1 is treated within the muscle recruitment optimization.

Let us imagine to have an AnyMuscleModelUsr1 muscle assigned a certain S equal to 1000, and then decrease it to 500. I would expect that the force exerted by the muscle increases (as happens with other muscles of the spine, e.g. Erector Spinae, by reducing F0). However, this is not the case. The result of a decrease in the value of S is a decrease of the muscle force.

I am looking for an explanation as to why by decreasing S, muscle force decreases, while by decreasing F0, force increases. :face_with_monocle:

So, my questions are: Why does this happen? Are S and F0 considered differently within the muscle recruitment problem? If yes, how do the two parameters come into play in the optimisation problem? To my knowledge, F0 is the normalising factor of muscle force within the objective ("cost") function.

Thank you and kind regards,

Hi Alice,

As per the reference manual of AnyMuscleModelUsr1,

The strength of the muscle can be defined by an explicit expression for the member ā€˜Sā€™. This expression is evaluated and used in the muscle recruitment analysis during for instance inverse dynamic simulation.

So, it is S that is used in the muscle recruitment.

The first constraint in muscle recruitment says that the dynamic equilibrium should be respected. This means the muscles will produce a force that satisfies the loads on the body. Normally, decreasing the strength of a muscle means that you are increasing the cost for using this muscle and the solver will try to reduce using this muscle. The muscle force should decrease in this case. Of course, it depends on the system itself and if there are any other muscles that can take the load. If there are no other muscles that can share the load, then the muscle force will remain the same no matter what you do to the strength.

In case of simple muscle model, F0 will be used in the muscle recruitment optimization. In case of AnyMuscleModelUsr1, S will be used. But they should be treated the same in the optimization problem. What you have seen could be due to the model and loads being applied to the model. The best way to understand this would be to create a simple model one-segment model where you can have two or three different muscles with different muscle models to see how changing the parameters affects the load-sharing between the muscles.

Best regards,