I have done a motion capture session with the SMART system. I use the C3D file in LowerBody model. I am currently trying to get my model up and running with data from a Type 1 Force Plate. Therefore I am modifying my own ForcePlateType1.any file. However I’m not sure, that this file (ForcePlateType1AutoDetection.any) is correctlly.
When I load it (MotionAndParameterOptimization) I get this error message: WARNING(OBJ.MCH.KIN6) : C:/U…s/J…a/D…p/M…e/A…o/Body/A…n/T…k/Interface.any(84) : rot : Close to singular position : Orientation close to Gimbal Lock, i.e., first and third axis of rotation being parallel. The MotionAndParameterOptimization work, so are the results correct with respect to this warning?
But InverseDynamics doesn’t work! I don’t know, why?
I’m working on this model already long and I really don’t know where the error is. How can I solve the problem?
The anybody file is attached.
I have tried to load the model but it was missing the forceplate 1 files you have added to the model ?
The Gimbal lock warning may not be important, when you generate the motion with the markers it is measuring joint angles and are creating output for this. this warning let you know that it is approaching a gimbal lock in one of these measures.
If the measure in question is being used for driving the model it may potentially cause a problem in terms of kinematic failure, but i can not see this from your error message. In my experience for a normal gait model this rarely an issue.
You write that the inverse model fails, i am unsure in which way it fails? kinematically or with a recruitment problem?
If is a kinematic problem in the first time frame please simply try to alter the initial positions of the bones, this is done in the trial specific file.
I have included a file (ForcePlateType1AutoDetection.any ) in the previous message. I add this file again.
When I load my model (InverseDynamics) I get this error message :
8.0) Inverse dynamic analysis…
ERROR(OBJ.MCH.MUS4) : C:/U…s/J…a/D…p/M…e/A…o/A…n/E…s/M…T/M…l/InverseDynamics.any(29) : InverseDynamicStudy.InverseDynamics : Muscle recruitment solver : solver aborted after maximum number of iterations
I add the figure, what I see.
I changed the initial position, but the problem is stil.
So, I’m thinking the problem must be elsewhere.
but I have no idea where is the problem.
This error means that the model can not find the a way to recruitment the muscles which will balance the model.
Please try to exclude the forceplates and see if this makes the model run… knowing that there will be no load applied… just to figure out if the error relates to the forceplate classes or not?
If the model now runs. the problem for sure is related to the forceplate1 classes you added.
One likely thing which i see could cause this error is if you use the auto detection feature… Then the forceplate contains a switch that make the load go to the foot if there is contact only, otherwise the plate is held by a reaction to the world.
If the there is something wrong in that setup you would see the error you have…
Initial positions only relates to a kinematic failure in first time step and not recruitment
Unfortunately, it doesn’t help. I switch off the forceplates, but the same problem occurs: ERROR(OBJ.MCH.MUS4) : C:/U…s/J…a/D…p/M…e/A…o/A…n/E…s/M…T/M…l/InverseDynamics.any(29) : InverseDynamicStudy.InverseDynamics : Muscle recruitment solver : solver aborted after maximum number of iterations
I have tried to run the model, you are right it fails with a recruitment problem.
The reason seems to be related to the motion which looks very strange, please try to load the model and just run the kinematic study so not the inverse analysis. It solves a few steps then it fails kinematically and the motion looks to very wrong.
I would rerun the motion and optimization study and ensure that the the exported motion is correct.
Then rerun the model just kinematically in the inverse setup just to see if the motion is correctly transferred.
OK. All the time I am looking for a solution to this problem.
I have another question. In my research I was used Helen Hayes Marker Placement Protocol. In this protocol a 4 inch wands are placed on the left/right leg (femur and shank). Markers, which are placed on the thigh and shank are attached to wands. Does Anybody is required for placing markers directly on the skin (not using wands)? And maybe that’s why there is a problem? What do you think about this?
Thak you for your response.
Best regards,
ogrodnikj
I have other question. How can I switch muscle activation? When I load my model and I run inverse dynamics, muscles of trunk are active (change color and on the chart I can see value (e.g. 21N), muscles of leg aren’t active (no change color and on the chart I see very, very small value (e.g. 5.121e-006).
Muscle activations is a result of the applied loads and motion.
The muscle activation you list in the leg sounds very low, and could possibly be because:
[ol]
[li]The load from the load cell is not transferred to the leg ?
[/li][li]Gravity is not on or wrongly oriented.
[/li][/ol]
Please check both items.
I would run the inverse model in a state with no muscles and then look at the joint reactions in the ankle, knee… you should see loads “equivalent” to the applied loads. Also in the model you have now with the muscles on you should at least see reactions forces on pair with applied loads…
I have other question. I want to check the joint reaction force of the hip, knee, elbow ect.
In folder Body/AAUHuman/LEgTLEM/RightLegSelectOutput I see something about reaction in 3 directions: proximal-distal, medial-lateral, anterior-posterior.
But I have a question: These forces are defined in the global or the local system?
// Lateral positive
AnyVar Hip_MediolateralForce = …Right.Leg.Jnt.Hip.Constraints.Reaction.Fout[1];
// Proximal positive
AnyVar Hip_ProximoDistalForce = …Right.Leg.Jnt.Hip.Constraints.Reaction.Fout[1];
/// Anterior positive
AnyVar Hip_AnteroPosteriorForce = …Right.Leg.Jnt.Hip.Constraints.Reaction.Fout[0];
// Thigh.HipJoint ref
Fout[0], Fout[1], Fout[2] are represent forces direction x-axis, y-axis, z-axis? And Mlocal[1] , Mlocal[2] are represent moment My i Mz? But in local or global system?
The output you listed are created in two different ways.
Some of the out originates from joints reactions for the hip Fout. These numbers are given in the first mentioned reference frame of the joint in question, so in local coordinates.
The second measure for the elbow is a AnyForceMomentMeasure, it reports both in global and local and here the local one is being used.
So in both case it should be in local coordinate systems
I have one question.
I don’t understand what mean AnklePlantarflexion? This photo shows the AnklePlantarflexion for right leg (Your MoCap Model without any changes). I’m looking for definition of ankle, and ankleplantarflexion. I’m still don’t understand how is measured the angle at the ankle (in AnyBody)?
AnyBody (0 - 30 degrees???)
Norm (in the literature) - 15 degrees dorsiflexion and 20 degrees plantarflexion
I am sorry there is a mistake in the model regarding the name on this variable in the mannequin file.
The name ankleplantarflexion should have been ankledorsiflexion, we will fix this in an up coming version of the models, I am sorry for the trouble this may have caused you.
If you load the model FreePosture/FullBodyStatic.Main.any and then open the file mannequin.any you can try to change the values for the ankle joint and see how this changes the ankle joint.
This model is directly using all the angles defined in the Mannequin file.
To see how the rotational measure is defined you need to open up the file Body/AAuHuman/LegTLEM/Jnt.any and then for the ankle joint add lines like this