opensim-org / opensim-core

SimTK OpenSim C++ libraries and command-line applications, and Java/Python wrapping.
https://opensim.stanford.edu
Apache License 2.0
758 stars 308 forks source link

CMC and failing IPOPT #3679

Open SietseAchterop opened 5 months ago

SietseAchterop commented 5 months ago

I have a model that fails with CMC in a way I don't understand. The model is not too complicated:

cmc_simple_2 Think rower in a rowing boat. The model, a few trajectories, IK and CMC setups and opensim.log can be found in CMCerror.zip

The problem is that CMC fails immediately with the intended trajectory (tr_org.mot) with:

[2024-01-14 16:56:45.428] [error] SimTK Exception thrown at InteriorPointOptimizer.cpp:264:
  Optimizer failed: Ipopt: Infeasible problem detected (status 2)
[2024-01-14 16:56:45.428] [error] OPTIMIZATION FAILED...
[2024-01-14 16:56:45.428] [error] CMC::computeControls: Optimizer could not find a solution.
Unable to find a feasible solution at time = 0.02.
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.

I don't think the given possible issues are relevant here because I can easily make it to work. If for example I simplify the trajectory by copying the data of the first step (t=0) to ALL lines below, effectively keeping the model still, everything works! Only very small pErr and vErr's.

tr1.csv is a trajectory that keeps the model still and slowly starts moving the model after 0.31 seconds. If fails almost immediately at that point. Up to that point also only small pErr and vErr's. I can't find anything in the way of "control theory" that could explain this.

Again, please help. Sietse

SietseAchterop commented 3 months ago

I'm getting a bit desperate, still no solution found. I cannot continue with my project without solving this issue:( Strange that CMC works with many much more complicated models but fails with these simple ones.

Is there nobody that can point me in the right direction with this problem? As far as I can see, this is a problem with CMC. In an earlier attempt (issue #3522) I learned that BallJoints cannot be used with CMC. After changing that to a CustomJoint it worked perfectly. Then I made my model a little bit more complicated, the current model. But it now fails immediately. This both on linux and windows.

Can somebody please confirm that this fails and what I am doing wrong?

SietseAchterop commented 1 month ago

Still no luck! From the OpenSim forum, subject "CMC still failing" I learned that the contact mesh and elastic foundation force are not relevant here. I removed them, but the problem remains the same, see CMCerror_2.zip

Now the model is even simpler! Please help! Sietse