Movement of Detailed Hand Model

Hi,

I am new to AnyBody and try to get the detailed hand model move…
therefore I tried to combine two models:

  1. FreePostureHandSR (included Detailed Hand Model) and
  2. FreePostureMove (include Interpolation driver for movement).

My Goal is: Making Hands move by using Detailed Hand Model and InterpolationDriver

Therefore I have done the following steps.

Step1: Added IntitalPositionValue.any and InterpolationsFunctions.any into FreePostureHandSR.Main.

Steps2:
Replaced in Mannequin.any and in JointsAndDrivers.Any the old values (i.e. Position, Velocity,…) from the FreePostureHandSR-Model with the values from FreePosturesMove-Model.

Intermediate Result: Get the model move with deactivated “Detailed Hand”. “Simple Muscles” activated.


Step3:
Like in step 2 I extended Finger 1-5 in Mannequin.Any according to movement of other body parts.

Step4: Added movement functions for every finger into InterPolationFunctions.Any.

Step5: Added the Initial Position values for the fingers to the Mannequin.Any.

Step6:
Adapted RightHandDrivers.any and LeftHandDrivers.Any for movement with Interpolation Drivers.

Final Result: If I activate the “Detailed Hand” and perform the Kinematic Analysis I will get following Error msg:

WARNING(OBJ.MCH.KIN1) : C:/P…)/A…y/A…3/AMMR/A…n/E…s/F…R/FreePostureHandSR.Main.any : Study : Model is kinematically indeterminate : Position analysis failed : 510 independent constraints and 511 unknowns
- attemps to continue (attempt no. 1)

Now here are my questions:

  1. Is this approach to combine the Detailed Hand Model with the Free posture Model possible and valid?
  2. How can I find the missing constraint?

Attached you will find the files.

Thanks a lot in advance.

Kind regards
Stefan

Hi Stefan,

Your approach is correct. In the coming version of the AMMR these models will be combined and we have done exactly what you are suggesting.

I tried to load your model with the AMMR1.5, but it failed. It seems that you may have changed something in the repository (e.g. HandSeg.any - it’s safer to use the original version). When I finished fixing the model (fingers 3-4-5 on the left side were not finished) - everything loads and runs well.

Regards,
Pavel

Hi Stefan,

I am sorry, the problem is not gone, but there was a typo:
In RightHandDrivers please modify the first 5 drivers as follows:

  //finger1
  AnyKinEqInterPolDriver CMC1Flexion={
    AnyKinMeasureOrg &CMC1= ...HumanModel.Right.ShoulderArm.Seg.Hand.Finger1.Jnt.CMCFlexion;
        Data=pi/180*{.JntPos.Right.Finger1.CMC1Flexion};  
 T=.JntPos.Right.Finger1.CMCTime;
    Type=PiecewiseLinear;
    
    Reaction.Type={Off};
    
  };
    AnyKinEqInterPolDriver CMC1Abduction={
    AnyKinMeasureOrg &ref= ...HumanModel.Right.ShoulderArm.Seg.Hand.Finger1.Jnt.CMCAbduction;
        Data=pi/180*{.JntPos.Right.Finger1.CMC1Deviation};  
 T=.JntPos.Right.Finger1.CMCTime;
    Type=PiecewiseLinear;
    
    Reaction.Type={Off};
    
  };
   AnyKinEqInterPolDriver MCP1Flexion={
    AnyKinMeasureOrg &ref= ...HumanModel.Right.ShoulderArm.Seg.Hand.Finger1.Jnt.MCPFlexion;
        Data=pi/180*{.JntPos.Right.Finger1.MCP1Flexion};  
 T=.JntPos.Right.Finger1.MCPTime;
    Type=PiecewiseLinear;
    
    Reaction.Type={Off};
    
  };
    AnyKinEqInterPolDriver MCP1Abduction={
    AnyKinMeasureOrg &ref= ...HumanModel.Right.ShoulderArm.Seg.Hand.Finger1.Jnt.MCPAbduction;
        Data=pi/180*{.JntPos.Right.Finger1.MCP1Deviation};  
 T=.JntPos.Right.Finger1.MCPTime;
    Type=PiecewiseLinear;
    
    Reaction.Type={Off};
    
  };  

If you then try to switch on Right Shoulder Rhythm - it will fail too, but it seem to work for the Left Arm only. Please make things consistent between Right and Left side.

Regards,
Pavel

Hi Pavel,

thanks a lot for your help. Without muscle the model works now very well!

When I activate the simple muscle model I get the following error message:

ERROR(OBJ1) : C:/P…)/A…y/A…3/AMMR/Body/A…n/Arm/Muscle.any : Flexor_Digitorum_Produndus__Digit5.SPLine : Number of allowed iterations for contact solution has been exceeded in Main.HumanModel.BodyModel.Left.ShoulderArm.Mus.Flexor_Digitorum_Produndus__Digit5.SPLine

and I get warnings for all muscles:
WARNING(OBJ.MCH.MUS2) : C:/P…)/A…y/A…3/AMMR/Body/A…n/Arm/Muscle-parameters-shoulder.any : biceps_brachii_caput_longum : Muscle without strength : The muscle has been stretched too much

What is the reason for the error message? I assume changes in the repository (e.g. Muscle.any) should be avoided to solve the problem?!

Thanks in advance

Best regards,

Stefan

Hi Stefan,

This is related to the muscle wrapping. Try increasing SPLine.StringMesh number for those muscles to increase the accuracy of the wrapping algorithm.

And just a small recommendation: these kind of questions have been answered on the forum a few times. If you try searching - you may save time on waiting for us to answer (well, this one was luckily rather quick :))

Best regards,
Pavel