MoCap Model Optimization - RunParameterIdentification (Upper-body): Part 2

Hello,

This is the 2nd part of my questions on the MoCap model optimization process. I am doing the optimization in two steps: 1. Lower-body with torso, 2. Upper-body.

Upper-body: After completing the lower-body optimization (with torso only), I loaded the modified values from lower-body optimization and ran the upper-body optimization. Since I don't have markers on the hand, only one marker on elbow, and only two markers on torso (STRN and CLAV), I have turned on the following soft (extra) drivers to guide the upper-body optimization: gleno-humeral external rotation, wrist flexion, wrist abduction, and sterno-clavicular for both right and left side. Please see the picture (2) attached here.

(a) I have also turned on the BM_MANNEQUIN_DRIVER_DEFAULT driver. I’ve seen that it accelerates the optimization process (RunParameterIdentification). But, I am not completely sure how it affects the entire optimization process. Could you please provide me more information on this?

(b) I haven't used a driver weight for sterno-clavicular soft driver. I am wondering how the driver weight might affect the overall optimization process? I have tried to use a weight (0.05) for this. I haven't noticed any effect of this weight for some reason.

For upper-body optimization, initially I used the same markers and directions used in the marker protocol from "Plug-in-gait_Simple" to guide the RunParameterIdentification (optimization). It failed with the following error:
Failed to resolve kinematic constraints. Newton relaxation too small. (final kin. error = 2.897911E-04)Constraint no. 6639 above error tolerance 0.000100, error = 0.0001179481072.

The initial AnyBody model marker locations for the shoulder markers (RSHO & LSHO) obtained from the marker protocol didn’t look correct. So, I adjusted it manually to a most realistic location for shoulder markers and my optimization worked (completed till the end). However, the optimization doesn't look good for certain markers in the upper-body. Please see the pictures (2 & 3) to see the issues with certain markers. For example, the AnyBody and Experimental marker pairs on elbow don't overlap. Wrist marker pairs are also not overlapping. In addition, the torso is also twisted in this case.

(c) What can I do in this situation to improve my MoCap model optimization for upper-body?

(d) I can add more markers to participate in the optimization process, for example: the elbow markers. In this case, marker pairs match, but they go quite far from the body which seems to be unrealistic.

(e) I have tried to use the X and Z directions in the RWRB and LWRB markers for optimization, which has given me the best optimization result so far by visual inspection. However, the wrist and elbow marker pairs still don't overlap and it still has issues.

I am not sure about the appropriate process to follow in these cases and optimize (personalize) my model correctly. I would highly appreciate your feedback. Thanks very much.

Hi Marif,

Here are some quick answers:

a: You should not enable the BM_MANNEQUIN_DRIVER_DEFAULT it will add weak drivers to all the joints in the model, which is not what you need in this case... If you double click the MarkerTacking Study in the modeltree you can browse the drivers in the model and this will show you that by enabling this one it will add a lot of weak drivers.

b. for your marker configuration i would add weak drivers on wrist flexion and abduction, and on forearm pronation, none of these DOF are controlled by your markers. i think the sterno-clavicular soft driver is not the most important one to add. I am more concerned about spinal drivers it looks to me like you have one one marker on the sternum and that is all. You will need to add soft drivers for all three dof in the neck and you would also need to add soft driver for pelvis thorax rotation and abduction, then the sternum marker would allow you to control flexion.
You would also need to disable scaling optimization of skull using the markers. (see LabSpecific.any ) file.

c: i think answers in previous question will help, you are lacking drivers

d. i do not think it will help allow the markers to be optimized, the problem is rather that you are lacking drivers.

e if you have been running with all the default drivers on it will impact the marker errors... so first step is to disable these and only use the ones you actually need. This will also lower the marker errors.

Hope it helps

Best regards
Søren

c.

Hi Soren,

Thank you very much for your reply. It was very helpful to understand the process. I have followed the techniques you mentioned. It definitely improved, but I still have some issues.

  • BM_MANNEQUIN_DRIVER_DEFAULT is turned off and I have added the following weak drivers: wrist flexion and abduction, elbow pronation, Gleno-humeral external rotation, skull-thorax flexion, skull-thorax lateral bending, skull-thorax rotation, pelvis-thorax lateral bending, pelvis-thorax rotation, and sterno-clavicular soft driver. All with weight 0.01. Please see the following pictures (taken after optimization).

(1) only by turning off the BM_MANNEQUIN_DRIVER_DEFAULT switch, the twisted torso was fixed. Should I continue to use the skull-thorax and pelvis-thorax weak drivers?

(2) Since soft drivers need to be added for all three DOFs in the neck, I have added the skull-thorax weak drivers. I am wondering if I have selected the correct drivers for this purpose. Could you please confirm?

(3) Similarly, for pelvis-thorax rotation and abduction, I have added the pelvis-thorax lateral bending and rotation weak drivers. I hope these are correct.

(4) I believe I have disabled scaling optimization of skull in the LabSpecificData.any
HEAD_HEIGHT = OFF,

(5) I have found that sterno-clavicular weak driver is required here. Without this, the shoulder acromion markers (RSHO/LSHO) markers are pushed backwards and 'RunParameterIdentification' fails at one point. So, I kept using this driver.

(6) I am wondering if I missed anything or added something incorrectly that led to this output. Could you please tell me what can be done at this point to improve the optimization, since it still has issues at the elbow and wrist markers.

(7) If I don't use the Gleno-humeral external rotation driver, it provides better optimization result. But the elbow is twisted. Please see the picture below. Could you please provide your feedback if this is realistic. Earlier I had issues running marker tracking with twisted elbow from optimization.

(8) On a different note: I am designing another study. Could you provide me your feedback on an standard marker set that would not need altering the weak drivers for an acceptable/appropriate optimization? Is there any standard marker-set that would not require weak/soft drivers?

In addition: Do you think variation in the static pose during experiment plays a major role in optimization process? I am wondering if I could find a optimization technique that would work well for all my subjects (all having the same marker set)

I would highly appreciate your feedback. Sorry for asking all these questions again. Thank you for your time and consideration. Have a great day!

Best Regards,
Arif

Hi Arif,

Here are some answers.

(1) only by turning off the BM_MANNEQUIN_DRIVER_DEFAULT switch, the twisted torso was fixed. Should I continue to use the skull-thorax and pelvis-thorax weak drivers?

The BM_MANNEQUIN_DRIVER_DEFAULT should be OFF otherwise you will get soft drivers on all the joints. Since you have only one maker on thorax and none on the skull you need to driver 3 dof between thorax and skull and you need to drive at least one dof between pelvis and thorax. I would let the marker control flexion and add soft on lateral bend and rotation.

(2) Since soft drivers need to be added for all three DOFs in the neck, I have added the skull-thorax weak drivers. I am wondering if I have selected the correct drivers for this purpose. Could you please confirm?

Please the full list of weak drivers here Mannequin Driver Parameters — AMMR v2.4.4 Documentation (anyscript.org)
You need for skull

BM_MANNEQUIN_DRIVER_SKULL_THORAX_FLEXION
BM_MANNEQUIN_DRIVER_SKULL_THORAX_LATERALBENDING
BM_MANNEQUIN_DRIVER_SKULL_THORAX_ROTATION

(3) Similarly, for pelvis-thorax rotation and abduction, I have added the pelvis-thorax lateral bending and rotation weak drivers. I hope these are correct.

you will need

BM_MANNEQUIN_DRIVER_PELVIS_THORAX_LATERAL_BENDING
BM_MANNEQUIN_DRIVER_PELVIS_THORAX_ROTATION

If you find the markertracking study in the modeltree you can right click and choose "Object description" this will shown all drivers in the study (and other things), then check that you have the ones you are expecting.

(4) I believe I have disabled scaling optimization of skull in the LabSpecificData.any
HEAD_HEIGHT = OFF,

This is correct

(5) I have found that sterno-clavicular weak driver is required here. Without this, the shoulder acromion markers (RSHO/LSHO) markers are pushed backwards and 'RunParameterIdentification' fails at one point. So, I kept using this driver.

Ok, this gives me seconds thoughts on the pelvic thorax drivers. i would consider instead of driving these two to add instead soft drivers on the SC dofs. This would make the movement in the SC joint restricted and indirectly allow the acromion marker to control the thorax.

BM_MANNEQUIN_DRIVER_STERNOCLAVICULAR_PROTRACTION_RIGHT

BM_MANNEQUIN_DRIVER_STERNOCLAVICULAR_ELEVATION_RIGHT

BM_MANNEQUIN_DRIVER_STERNOCLAVICULAR_AXIAL_ROTATION_RIGHT

(6) I am wondering if I missed anything or added something incorrectly that led to this output. Could you please tell me what can be done at this point to improve the optimization, since it still has issues at the elbow and wrist markers.

Please also check that hand length optimization is off.
What are the issues you see in the optimization?

(7) If I don't use the Gleno-humeral external rotation driver, it provides better optimization result. But the elbow is twisted. Please see the picture below. Could you please provide your feedback if this is realistic. Earlier I had issues running marker tracking with twisted elbow from optimization.

After looking at the image I have seconds thoughts on the soft driver for pronation, it is actually not needed, you have two makers on the wrist.

(8) On a different note: I am designing another study. Could you provide me your feedback on an standard marker set that would not need altering the weak drivers for an acceptable/appropriate optimization? Is there any standard marker-set that would not require weak/soft drivers?

Yes please take a look at the fullbody mocap models in the AMMR e.g. Simple Full body model — AMMR v2.4.4 Documentation (anyscript.org) it is using a PlugInGait protocol with additional markers on hands and feet.

In addition: Do you think variation in the static pose during experiment plays a major role in optimization process? I am wondering if I could find a optimization technique that would work well for all my subjects (all having the same marker set)

I will play some role, having an almost straight elbow is not ideal, it would be better to bend it e.g. 90 deg.

Best regards
Søren

Hi Soren,

Thank you for your feedback. This is very helpful.

Hand length optimization is turned off. Here from this optimization (first 3 pictures in the previous comment), we can see larger distance between experimental and AnyBody marker in the elbow and wrist, which I assume to be higher error in optimization? Please correct me if I am wrong.

But when the GHD external rotation soft driver (gleno-humeral) is turned off and I used elbow pronation driver only (wrist flexion & abduction, sterno-clavicular, skull-thorax and pelvis thorax drivers are used on both occasions), it provides me better overlap between marker pairs (last picture in previous comment). I understand these markers are for visual purpose, but center-to-center distance is also low here. Initially, I started using the GHD External rotation driver since I have only one marker on elbow and this driver prevents the twisting in the elbow (joint).

Here I tried to asses the optimization from a visual perspective. How can I assess the quality of the optimization? Visually, I assessed this by looking at the distance between marker pairs (how well the experimental and AnyBody markers align). But, it there a certain threshold value I should look at after running the optimization? I mean, the error value (pos) to be below this threshold value.

Please see the pictures below that shows my current extra driver set up and my latest optimization.


Finally, after I run the marker tracking and the inverse dynamics, is there any threshold error value for marker pairs that can be used to assess the accuracy/validation of the model/simulation?

Thank you for your time and consideration. Have a great day!

Best Regards,
Arif

Hi Arif,

As you have found it is the pos values of the marker drivers which indicates the size of the error and which should be as low as possible. There is no rule on a specific threshold value for this.

Judging from the images, i think the optimization looks pretty good.

Best regards
Søren