My problem is very similar to this issue, which hasn't been answered.
I am trying to perform inverse kinematics on a model that fuses a human being and his bike. This person is standing out of the saddle, however hands and feet are in contact with the bike. In order to avoid creating a closed loop, I duplicated hands and toes: one pair for the human being, the other for the bike (see picture). I created weld constraints between both pairs of hands and toes.
But IK is not working. I get this error:
What am I doing wrong?Model unable to assemble: AssemblySolver::assemble() Failed: SimTK Exception thrown at Assembler.cpp:897:
Method Assembler::assemble() failed because:
Unable to achieve required assembly error tolerance.
Assembly error tolerance achieved: 8.3346833096719795e-09 required: 1e-10..Model relaxing constraints and trying again.
InverseKinematicsTool Failed: AssemblySolver::assemble() Failed: SimTK Exception thrown at Assembler.cpp:871:
Method Assembler::assemble() failed because:
Optimizer failed with message: SimTK Exception thrown at InteriorPointOptimizer.cpp:264:
Optimizer failed: Ipopt: Maximum iterations exceeded (status -1)
Assembly error tolerance achieved: 0.0011975930815799982 required: 1.0000000000000002e-06.
- When I deactivate the constraints, IK works fine (although this defeats the purpose). I'm pretty sure I scaled it right since in this case, model markers follow experimental ones closely.
- I tried to unlock or unclamp more joint coordinates, which does not make a difference (if anything, it seems like it makes it worse.)
- Also tried attributing less weight to the worst markers, without success.