C3D file to MoCap_LowerBody

Hello,

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.

Thank you very much for your help,

ogrodnikj

Hi ogrodnikj

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.

Best regards
Søren

Dear Søren,

Thank you for your quick response.

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.

Best regards,
ogrodnikj

Hi ogrodnikj

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

Best regards
Søren

Dear Søren,

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

Best regards,
ogrodnikj

Hi again,

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.

Best regards
Søren

Dear Søren

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

Dear Søren,

Model works correctly. I corrected errors and everything is OK.:smiley:

Thak you for your quick response and help.

Best regards,
ogrodnikj

Hello,

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).

Best regards,

ogrodnikj

Hi ogrodnikj

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…

Best regards
Søren

Dear Søren,

Model works correctly. :slight_smile:

Thak you for your help.

Best regards,
Justyna

Hi Justyna

Sounds great, thanks for letting us know.

Best regards
Søren

Dear Søren,

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


Other forces of elbow joint:
Body/AAUHuman/Arm/RightArmSimpleMusclesSelectedOutput
/// Medial positive
AnyVar ElbowHumeroUlnar_MedioLateralForce = …Right.ShoulderArm.Jnt.FE.Constraints.Reaction.Fout[0];
/// Proximal positive
AnyVar ElbowHumeroUlnar_ProximoDistalForce = …Right.ShoulderArm.Jnt.FE.Constraints.Reaction.Fout[1];
/// Anterior positive
AnyVar ElbowHumeroUlnar_AnteroPosteriorForce = …Right.ShoulderArm.Jnt.FE.Constraints.Reaction.Fout[2];
/// Internal positive
AnyVar ElbowHumeroUlnar_AxialMoment = …Right.ShoulderArm.MomentMeasure.ElbowJointReactionMoments.Mlocal[1];
/// Medial positive
AnyVar ElbowHumeroUlnar_LateralMoment = …Right.ShoulderArm.MomentMeasure.ElbowJointReactionMoments.Mlocal[2];
// humerus fe 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?

Thank for your help.

Best regards,
Justyna

Dear Justyna,

I understand why it looks confusing you.

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

Best regards
Søren

Hi,

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

Hi

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

AnyRevoluteJoint Ankle = {
  Axis = z; //flexion extension
  AnyRefNode &ShankNode = ..Seg.Shank.AnkleJoint;
  AnyRefNode &FootNode  = ..Seg.Talus.AnkleJoint;

   ShankNode ={
     AnyDrawRefFrame drw ={RGB={1,0,0};};  //red coordinate syste,
  };
  FootNode ={
     AnyDrawRefFrame drw ={RGB={0,1,0};};  //green coordinate system
   };

};

Then you will see the two reference systems which is being used for the joint measure being displayed.

Best regards
Søren

1 Like