CMC fails with enough actuators.

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Takayuki Aimi
Posts: 2
Joined: Tue Jun 01, 2021 6:51 pm

CMC fails with enough actuators.

Post by Takayuki Aimi » Wed Nov 09, 2022 12:17 am

We are working on CMC using a modified model of the thoracoscapular shoulder model developed by Seth et al(2019).
CMC using the smooth motion generated by IK runs fine when only sufficient reserve actuators are used (choose "Replace model's force set"). However, strangely enough, when actuators and muscles are used (choose "Append to model's force set"), the analysis fails with the following error. There is no difference between the two other than whether or not the muscles are used.

Code: Select all

CMC::computeControls, t = 6.03
CMC::computeControls: small force range for TrapeziusScapula_I (0.0 to 0.0)

CMC::computeControls: small force range for DeltoideusClavicle_A (0.0 to 0.0)

CMC::computeControls: small force range for DeltoideusScapula_M (0.0 to 0.0)

CMC::computeControls, t = 6.04
CMC::computeControls: small force range for TrapeziusScapula_I (0.0 to 0.0)

CMC::computeControls: small force range for DeltoideusClavicle_A (0.0 to 0.0)

CMC::computeControls: small force range for DeltoideusScapula_M (0.0 to 0.0)

CMC::computeControls, t = 6.05
CMC::computeControls: small force range for TrapeziusScapula_I (0.0 to 0.0)

CMC::computeControls: small force range for DeltoideusClavicle_A (0.0 to 0.0)

CMC::computeControls: small force range for DeltoideusScapula_M (0.0 to 0.556131)

CMC::computeControls, t = 6.06
CMC::computeControls: small force range for TrapeziusScapula_I (1.19317 to 1.19322)

CMC::computeControls: small force range for DeltoideusClavicle_A (0.0 to 0.0)

SimTK Exception thrown at InteriorPointOptimizer.cpp:264:
  Optimizer failed: Ipopt: Search direction becomes too small (status 3)
OPTIMIZATION FAILED...
CMC::computeControls: Optimizer could not find a solution.
Unable to find a feasible solution at time = 6.06.
Model cannot generate the forces necessary to achieve the target acceleration.
Possible issues: 1. not all model degrees-of-freedom are actuated, 
2. there are tracking tasks for locked coordinates, and/or
3. there are unnecessary control constraints on reserve/residual actuators.
We have verified that the three issues mentioned in the error message do not exist (they should not, since the analysis is completed with actuators only).
What else should I consider to complete the CMC?

Also, as indicated before the error message, the muscle "TrapeziusScapula_I" seems to be too short to exert force for a while before the analysis fails, and the analysis fails almost as soon as the muscle starts to stretch and exert force. I do not know if this is the cause of the failure.
My understanding is that a solution can be found whether the muscle can exert force or not, as long as there are enough actuators present.

Tags:

User avatar
Carmichael Ong
Posts: 401
Joined: Fri Feb 24, 2012 11:50 am

Re: CMC fails with enough actuators.

Post by Carmichael Ong » Fri Nov 18, 2022 11:40 am

Debugging CMC can unfortunately be quite tricky at times, and checking those first 3 issues is a good start. Another couple things to look for:

1. Even with reserve actuators, muscle passive forces can get large, especially at the bounds of the range of motion. You could make a CMC simulation that simulates to the time just before the time at which it fails, and attach a MuscleAnalysis to see if there are arbitrarily large forces just before the failure. This can also help find if there are issues with the muscles' length or velocity, which also can generate big differences in muscle force as well.
2. Use an OutputReporter Analysis to see the muscle-tendon length of the muscles based on the IK results. The shoulder model has some wrapping surfaces, and if the muscles do not wrap correctly around these surfaces, there can be erroneous muscle velocities that can cause issues.

User avatar
Takayuki Aimi
Posts: 2
Joined: Tue Jun 01, 2021 6:51 pm

Re: CMC fails with enough actuators.

Post by Takayuki Aimi » Sun Dec 04, 2022 9:00 pm

Hi,
I apologize for the delay in responding.
I followed your advice and checked a few things.

1. Using MuscleAnalysis, I found that the muscle was not exerting either active or passive force until just before the error. This may be because the MTU was too short and the tendon was loose. Therefore, the fiber length remained constant and the velocity was zero until just before the error. The error seems to have occurred at the moment when the loosened tendon stretched to the slack length and the muscle began to exert force. Note that the compliance of the tendon was ignored.
2. There was no mistake in muscle wrapping.

So I modified the slack length to 0 to forcefully solve the tendon problem, and the analysis proceeded to the end without error.

What is strange to me is that this muscle (TrapeziusScapula_I) is the only one that has a problem, while other muscles also loosen and then stretch. The model of the muscle is Millard's model, as for the other muscles.
I guess that if the transition from tendon stretch to muscle exerting force is too rapid, it could cause an error?
Why would this cause an error in the calculation of the CMC algorithm?

The question remains, but my solution at this point is to gradually decrease the slack length until the analysis proceeds without error.

I appreciate your advice!

POST REPLY