I’m trying to run my GaitFullBody model with conditional contact, because I do not have measurements of ground reaction forces or other contact forces.
The movement is an ingress motion; so I want to use the conditional contact on the ground, on the ground inside the car and on the seat.
At first I attempt to generate the contact forces between the ground and the feet… The kinematic analysis is no problem, but when I run the inverse dynamic analysis following error message appears InverseDynamicStudy.InverseDynamics : Muscle recruitment solver : solver aborted after maximum number of line-search iterations
What could be the reason for this error?
The role of this code is to replace the traditional pelvis residual force(AnyReacForce) with AnyGeneralMuscle.
And I would recommend you to change the setting inside AnyBodyStudy class:
InverseDynamics.Criterion.UpperBoundOnOff=Off;
Because there are some joint muscles in the upper body joints,
sometimes they need to be overloaded.
Also if the artificial muscle for pelvis residuals may have small strength,
then it may be also overloaded.
Finally, you have to define the locations of conditional contacts very well.
Of course I may be able to do that, but I can’t spend too much time on one question.
no doubt that you can do that, but there should also be something left for me to do
Thank you again for your help!
But I still have some questions left. When you speak of the locations of conditional contact - do you mean the body part it’s referred to, e. g. left foot toe and the direction {2,0,1}??? I was now able to run inverse dynamics, but my model has some weird positions in the beginning I understand that my ‘surface’ needs the ‘basenode’ which has a normal vector pointing upwards from the surface. In most cases this is the y component - so I have to set the direction to {1,0,2}?
Then another questions I would like to ask you for a better understanding. When e. g. the left foot is in the air and the right foot on the ground inside the car - is it right to increase the static friction coefficient of the right leg in this step?
Sorry if there may be a stupid question, but I think I haven’t already understood the whole conditional contact topic in detail
First, there is no stupid question on your post. Please don’t worry.
First, all the related files about conditional contact exist here:
‘\AMMRV1.4\Body\AAUHuman\ToolBox\FrictionContactMuscles’
It seems that you are using ‘ContactSurfaceLinPush.any’ file directly.
In that case, you have to define several ‘BaseObject’ which can be regarded as a ‘landmine’.
If the normal direction of the baseobject is ‘Y’ then you are right. You should set the direction as {1, 0, 2} or {1, 2, 0}.
If you can put much of your time and effort, then you can put as many targetobject on the human foot as you can.
But if you want to just test quickly, then there are some class templates for that purpose.
‘ConditionalContactClass.any’ and ‘ConditionalContactFootPlaneClass.any’ files.
If you want to see how these files can be used, then I would suggest you to see the ‘StandingLift’ example in the repository.
When you open ‘StandingLift.main.any’ then you can see that those two files are included at the top of the main file.
And if you see ‘JointsAndDrivers.any’ file in the StandingLift model, then you can see how ConditionalContactFootPlaneClass can be used.
thank you! After looking closely to your suggested model I tried to use the conditional contact in my ingress model again. I’ve added a foot plane for the floor, a ground of the car inside and seats (from the AnyBody Egress Model). Both last named have just an optical task right now, but there are also ‘ConditionalContactFootPlaneClass’ and ‘ConditionalContactClass’ with them. Furthermore I’ve added some nodes in the EnvironmentAutoDetection file as a ground ref and used them for conditional contact in the JointsAndDriversOptimized.any. I’m not really sure, if everything works fine. Additionally I would like to have the seat surface and structure having an influence on the contact forces between human model and seat.
Do you think I can do this in the JointsAndDriverOptimized.any file with the lines
Attached please find the modified version of your model.
Let me explain something for your model:
For inversedynamics, the direction of gravity was wrong in your model.
So I had to change it. You can find what I’ve changed.
Your ‘AnyMan.any’ file contained strange code for Talus segment.
Please compare your file with the original ‘AnyMan.any’ file of the GaitFullBody example in the repository.
So if you run your original model, you could see that the talus shape is so strange.
So with the new AnyMan.any file I had to re-run MotionAndParameterOptimization process!
Because I had to change many things about your conditional contact objects,
instead of writing all explanations here, I would like to just upload the modified version of your model.
When you can understand what I’ve changed perfectly, then there will no no more things to ask again.
Of course this model is not perfect. There are many things to be improved by putting more efforts.
But because those things may be beyond the scope of free support, I hope that you can find possible improvements well.
thank you again!!
I understand your changes on the conditional contact objects. So I was able to run inverse dynamics with some other c3d-files from other subjects.
But with some files there’s a problem: Muscle recruitment solver: solver aborted after maximum number of iterations.
In some cases I could solve the problem with changing the location, the height and the radius of the foot planes. But now in some other cases the error still appears even if theres a contact shown in the simulation between foot and plane.
What can I do to fix it?