Optimized Motion and Inverse Dynamics Motion not similar

Hello,

MOCAP is used to drive the AnyBody model regarding the right upper extremity. The model performs a motion optimization and then an inverse dynamics analysis. I’ve noticed a difference in motion between the optimization and inverse dynamics part. The motion starts with the hand in front of the subject and follows with a reach to its upper right and return to starting position. I’ve made screenshots regarding the start and end of reach to show the difference between the optimized motion and inverse dynamics. In this example the shoulder has different starting position. It also seems that the scapula does not move much in the inverse dynamics during the reaching task.

Greets,

Hans

Added another example with reaching to left side.

Hi Hans,

I assume that you are using mocap model from the repository.

I have double checked that the motion from the motion and parameter optimization model is transferred correctly to the inverse dynamic model, i did this by comparing the hand position between the two models, it was the same down to the level of the kinematic tolerance.

Could it possibly be the explanation that you are not running the sequence of operations in the inverse analysis, which ensures that the model is being scaled as it was found in the kinematic optimization study.

Best regards
Søren

I’m not completely sure what the sequences are. I’ve attached the model as a zipfile.

I use the GaitFullBodyIDA.main.any for motion optimization and inverse dynamics. It was made in V5.0 (but works in V6.0) so the structure might be outdated. I use ModelInput.any to specify my inputs for the model such as C3D file location etc (used for auto processing with Matlab). The personal parameters are correct for the added C3D file, only the location of reading in (FN) and saving inverse dynamics (FNM) should be altered before running.

Hi Hans

The model you use also has a sequence named

"InverseDynamicAnalysisSequence "

please ensure that you run this sequence?

If you already do this, please check that the dimensions of the model is correctly transferred between the two models.

An easy way to do this is to check a srel value of for example one of the arms nodes in the two models, they need to be exactly identical, otherwise this can explain what you see, because segments lengths would then be different.

The model you use seems a bit outdated, there might be improvements in the most recent model you could benefit from.

Best regards
Søren

Hello Søren,

Thanks for the help, I will check the srel values and rebuild the model in the latest version to see if this fixes the problem (was needed anyway). I will probably update again after October as I will be away for the time being.

Greets,

Hans

Hello,

I’ve rebuild my model in version 6.0.5. with the MoCap_FullBody example. The MotionAndParameterOptimization works, but when I run the InverseDynamics I receive an error stating the model has 3 unsolvable constraints. Both analysis use the same Mannequin, Environment and BodyModel. Is there any method to get more details about which constraints can’t be solved?

ERROR(OBJ.MCH.KIN2) : E:/Pro…ts/A…l/M…l/M…l/InverseDynamics.any(29) : InverseDynamicStudy : Model is kinematically over-constrained : Position analysis failed : 3 unsolvable constraint(s) found

Update: I’ve found that the model works when the Shoulder Rythm is turned off. However, since the subject is performing a reaching task with only the right arm, I would like to use this (with only the right arm included). How can I resolve these constraints?

Or is the Shoulder Rythm only needed for the Motion Optimization?

Hi Hans,

When running the MotionAndParameterOptimization it is ok to have model connected to various environment parts with normal joints or constraints. These will be just hard connections and there will still be markers with soft constraints to handle the other dof.

Once you export the model to the inverse dynamic model it will by default export all dof needed to drive the human model. so it will start with the pelvis positions in all six coordinates and then export and drive all joints angels.

If you also have the connections to the enviroment present in the inverse dynamic model this will create an overconstrained model by nature. So you need to remove some of the drivers for the human model to make it possible still to to touch a handle in an environment for example. So for example if there is a spherical joint in the hand you need to remove three drivers for the human model, for example elbow flexion, gh abduction, gh internal rotation.

Hope it made sense otherwise please write again

Best regards
Søren