Parameter Identification and Marker Tracking during Abduction

Hi everyone,

I am using the structure of the "Plug-in-gait_MultiTrial_StandingRef" MocapExample from the AMMR to run my models. I made a few changes to the marker protocol in order to match all my markers (MarkerProtocol.any is attached). The reason why I am running the Parameter Identification during abduction is because the kinematic errors between the virtual and the experimental markers are smaller compared when running it during a standing reference. Also, I will only analyze the inverse dynamics for an abduction motion, so I guess that's the most accurate way.

So, I have 5 clusters in my experimental marker set, which I all constrained with the Create4clusterParallelogramConstraint in the CreateConstraintClass.any. Neverthless, one cluster on the thorax looks more like a rectangle. Do you think I should use for this one the Create4clusterRectangleConstraint for this one? Do you think that would have a big effect on the parameter identification or the results in the end? I am just wondering based on what I should use one or the other option...

In addition, I implemented the virtual markers in the following way. In the existing marker protocol, there was one marker on the scapula, humerus and thorax. I made four markers out of each one, and adapted the distance between them in the beginning just visually. Because it is a marker cluster, they are smaller and also further away from the skin compared to a single marker. Now my question: Is it enough to adapt the distance just visually in the beginning? I mean when the parameter identification starts, the distance will be adapted anyway, or is that not correct? Also, I was wondering if I have to consider the additional distance of a cluster to the skin? If yes, how can I do that?

Also, I saw that the kinematic error for marker 4 in the scapula cluster is bigger than for marker 1, although the marker weights for all markers are the same. It looks like the medial rotation of the scapula is a bit limited in the model. What do you think would be the best option to try to solve this problem? Or can somebody explain me why that is?

For the 2 marker sticker on the elbow, I wrote a constraint by myself:
#class_template Create2StickerConstraint (name, marker1, marker2,
PARAMETER_OPT_STUDY = Main.Studies.ParameterIdentification){

  • PARAMETER_OPT_STUDY = {*
  • AnyDesMeasure name##_StickerConstraint = {*
  •     Type = EqualToZero;*
    
  •     Val = vnorm(marker1.sRelOptEdit- marker2.sRelOptEdit) -0.0875;*
    
  • };*
    
  • };*
    };
    When I look at the marker tracking after the parameter identification, I would say the constraint works. Anyway, is there an other way to check if the constraint works or not? Or do you have a better idea for the code?

Overall, I am just wondering if I missed something which could really improve my model? What is very important if you set up your own MoCap model, which are not described in " How to setup your own MoCap driven Model" on GitHub?

Thanks for helping me!

Best,
Louis
MarkerProtocol.any (12.9 KB)

Hi Louis,

I looked at the formula in the "Create4clusterParallelogramConstraint" class

    AnyDesMeasure name##_ParallelogramConstraint = {
         Type = EqualToZero;
         Val = vnorm(marker4.sRelOptEdit+ marker2.sRelOptEdit - marker1.sRelOptEdit - marker3.sRelOptEdit);
     };

I actually never used this feature as far as I can see it will also work with a rectangle, i tried to make small example with a random rectangle.

Do you see large errors on these markers after parameter optimization?, you should see their distances line up with the marker distances.

Is it enough to adapt the distance just visually in the beginning? I mean when the parameter identification starts, the distance will be adapted anyway, or is that not correct?

That should be correct, but check that the marker distance ends up correctly.

Also, I saw that the kinematic error for marker 4 in the scapula cluster is bigger than for marker 1, although the marker weights for all markers are the same. It looks like the medial rotation of the scapula is a bit limited in the model. What do you think would be the best option to try to solve this problem? Or can somebody explain me why that is?

As far as i can see in the code for the constraint above all markers are treated equally, so i think it must be something else in the model that triggers that you see a larger error on #4. This is likely to be caused by some other constraint in the model and what you see is the best compromise you can get.

When I look at the marker tracking after the parameter identification, I would say the constraint works. Anyway, is there an other way to check if the constraint works or not? Or do you have a better idea for the code?

The code looks correct it will constrain the distance to the fixed number. To check it find the sRel values of the marker nodes and repeat the same formula .

AnyVar Distance = vnorm(xxxx.sRel-xxxx.sRel);

I did not look at file, but it is important to think about which markers are free to be optimized. It is always tempting to let makers free to be optimized but this may create a unbounded optimization problem in the end. So some markers need to locked in position, usually you will choose markers placed at bony landmarks to be locked, and leave markers not associated with a bony landmark to be free for optimization.

So in your case if all 5 clusters are free to be optimized you must have some other markers with have a fixed position.

Skin motion could also be an issue especially for the scapula markers, you could consider a lower weight on in-plane directions... and higher on the normal direction, since i would expect large skin motion in the plane of the scapula and less in the normal direction to scapula.

Best regards
Søren

Hi Søren,

Thanks for your reply and help!

To which markers is this question related?

Thanks for your tips!

Yes, I tried and also thought a lot about the markers which are free to be optimized. One problem I am running in quite often at the moment, is if the scapula is elevate really high (for example in this picture on the affected side (reverse shoulder arthroplasty)) the physiology of the elbow is not correct. I mean it is overtorqued and does not rotate and flex according to the two sticker markers on the elbow.
Do you might have an idea to solve this problem?
erroronleftsideelbowflexion

Thanks in advance!

Best regards,
Louis

Hi Louis,

To which bone are the forearm markers attached to?

I think the clavicula elevation is unrealistic high, are you sure the clusters are correctly positioned wrt to the bone, do you have additional markers eg. acromion that could help to quantify this.

Best regards
Søren

Hi Søren,

the markers are attached to the Ulna.

yeah, that's true. I am playing at the moment a little bit around with the marker placements and the directions which are free or restricted to be optimized. At some point, I often get the same error message:


What does this error message mean? What is KKT? I mean the problem is that the software does not find an optimal solution for all marker restrictions, right? Is there a possibility to find out in which position the model fails or because of which markers? I just dont get the error message...

Thanks in advance for your help!

Best,
Louis

Hi Louis,

It can be difficult to know exactly why the optimization failed. I would try to make the model redraw itself after it has failed. This you can do in the ModelView in the following way. Right click on the view , select the last option display "Force recreate view" This will redraw the model in the failed position this can sometimes help you understand what went wrong.

If this does not help it would start reducing number of design variables by locking makers and see when the model starts to converge in the parameter optimization. Also possibly consider switching off optimization of segments lengths.

Best regards
Søren

Hi Søren,

Thanks a lot, I will definitely try this.

I have another short question in order to exclude possible factors of influence....: Is the parameter identification operation dependent on the C3D_video_frame_rate or C3D length? I mean is there a specific amount of frames or positions needed to optimize for a specific amount of markers? Or should the software be theoretically able to solve the operation in one position with one frame?
I am just wondering if the numbers of AnyOperation should match the degrees of freedom of the model or something like that?

Thank you very much for you help!

Best,
Louis

Hi Louis,

There is not a specific number, it depends on the nature of the design variables.

A few frames can be enough in many cases, but lets say you wanted to optimize the direction of a knee axis then you would need some motion to do that.

You can try to lower the number of frames used by the parameter optimization.

Best regards
Søren

1 Like

Hi Søren,
Thanks for your help! I think I get closer and closer to the solution, still I have some issues...

After the parameter identification I often get this result: scapuladown

Although my patients are old, I am not sure if this is physiological possible when the scapula is decreased that much...? Do you have maybe an idea why this happens? First, I was thinking because of the ExtraDrivers which I all turned OFF for the upper body, so the model has probably to less inputs for the scapula...? But when they are turned ON, the markers do not match nicely, probably because they are restricted because of the ExtraDrivers...
What do you think would be the best way to solve this problem?

Best regards and thanks in advance!
Louis

Hi Loius,

The penetration of the scapula into the rips is a scaling issue. The Scapula has constraints to the thorax in terms of points on an ellipsoid. I think the issue is here that the ellipsoid due to scaling is a bit low compared to the rips. Though it looks a bit strange with the penetration i do not think it means a lot.
On the picture i would be more concerned about the scapula being close together, this could come from the markers on the clavicula being too low.

Best regards
Søren

This topic was automatically closed 125 days after the last reply. New replies are no longer allowed.