MoCap driven Lifting Tasks: Passive structures and CutOff Frequency

Hi everyone,

I’m using AnyBody v8.2 to investigate lifting tasks based on MoCap data, focusing on how different marker protocols affect estimated spinal muscle activity. I’m using the ammr 3.2.0 Plug-in-gait_MultiTrial_StandingRef Model as a starting point and the GRF Prediction is activated.

Is it recommended for my application, to include passive structures for the spine for a more realistic approach? If so, would you recommend including spinal ligaments, disc stiffness or both? And for the disc stiffness, would a linear or nonlinear setting be more appropriate? I’ve observed, that without passive structures, the muscle activity profiles are relatively smooth over time. However, when I enable ligaments and nonlinear disc stiffness, the profiles show more spikes and fluctuations. Is this behavior expected? Are there strategies for dealing with it? Perhaps by increasing the cutoff frequency for filtering the marker data? So, what would be a reasonable cutoff frequency for a marker data sampling rate of 100 Hz?

Thank you very much in advance for any advice.

Hi Caroline,

The ligaments and discs will not affect optimized kinematics by default. But it is possible to include them into the optimization strategy: you would need to create additional “soft” drivers using potential energy formulation for elastic tissues. But my worry would be that the stiffness values are not truly patient-specific and you would not be getting “real” kinematics anyway. You would just introduce additional uncertainty around stiffness value and driver weight parameters.

Stepping a little back, if your focus is on varying marker protocol - I would closely inspect the difference in markers on thorax and upper body, since pelvis markers are quite reliable and typically have larger weights. This difference and consequent change in individual marker contributions to the objective function for kinematics optimization will explain the differences. I believe you use the rigid thorax - all the difference root in the position of the thorax.

I would not expect any sudden jumps in muscle activities due to adding discs and ligaments IF the predicted kinematics was previously smooth. Ligament and disc forces should be somewhat smooth unless we are observing some sudden accelerations.

Does this answer your question a little? Can you provide some plots and potentially more information about what you are doing? And how you approach “different marker protocols”?

Kind regards,

Pavel

Hi Pavel,

thank you very much for your answer. I’d be happy to provide some additional information. In my analysis of the various marker protocols, I’m focusing specifically on the spine. My baseline marker protocol is the Plug-in-Gait, which I’ve extended with markers on each spinous process. I’m experimenting now with different numbers of markers on the spine, while the remaining full-body markers from the PiG remain the same. And yes, I’m using the rigid thoracic model.

Since I plan to compare the simulated muscle activity of the erector spinae with actual EMG data in a next step, I want to achieve the most realistic modeling of the spine possible, hence the idea of adding ligaments and discs.

This graph shows the calculated muscle activity as the result of inverse dynamics analysis: a version without passive structures (blue), a version that includes ligaments (orange), and a version that includes ligaments and nonlinear intervertebral disc stiffness (grey). As soon as I added passive structures, these spikes appeared.

I haven't quite understood yet how exactly the passive structures influence the model. I didn't implement the soft drivers you suggested, instead, I only implemented the corresponding BM_Parameters for the passive structures in Lab Specific Data file and performed parameter identification with it before starting the RunAnalysis. Nevertheless, the values for the activity already did change.

It would be great if you could explain the behavior and influence of passive structures in more detail, or perhaps suggest other ways to simulate muscle activity as realistically as possible.

Thank you and best regards,

Caroline

Hi Caroline,

I am not sure I see the “spikes” - your curves are effectively scaled, but qualitatively are almost same. And to me it makes sense since you added some stiffness to the structure. In some case it helps muscles, in others it works in the opposite direction.

But a brief explanation: ParameterOptimization and MarkerTracking are two kinematic optimizations, where the former optimizes positions of virtual markers /sizes of individual segments to match positions/trajectories of the experimental markers, and then MarkerTracking computes angle joints curves for the whole movement based on the optimized markers and experimental data. The optimization is based on the objective function of marker error and weights parameters. Secondly, the pelvis-thorax kinematics is governed by position of the rigid thorax and pelvis thorax - effectively two rigid body rotating around each other connected by lumbar vertebrae, which are assembled into 1 kinematic constraint: the spine rhythm. The rhythm is a mechanistic way to decompose thoracopelvic angle into individual joints throughout the lumbar spine. So, what this means: you are using slightly different marker configuration - you will affect scaling of thorax, position of thorax, and this will effectively explain all the differences you see.

The ligaments and discs are effectively passive springs and they depend on computed kinematics. By optimizing movements you will get “fixed” forces/moment in these structures. These loads will, in turn, affect muscles and joint reactions, but their effect will not be “felt” by kinematics. In order, to “feel” the effect you need to include these structures into the kinematic optimization loop, which can be done by extra “soft” drivers based on potential energies of the elastic elements and changing the spine rhythm that I mentioned. To summarize: by default ligaments/discs only affect inverse dynamics loop, not kinematics.

So the question comes down to: how much do different protocols affect kinematics of the thorax? Imagine you add an extra marker exactly on top of an existing one - this will increase its weight in optimization, and the system will take into account a little more serious, because otherwise the kinematic error will increase objective function value. By adding/redistributing markers you change the sensitivity of thorax in different planes - and you will effectively get slightly different positions of thorax. But please also remember that adding markers will give a larger weight to thorax, allowing more errors in other body parts. So effectively you are looking at the sensitivity of markers right now. In our experience, we give larger weights to “reliable” markers: those that help the body part scale more reliably, and those that almost do not create any motion artifacts due to the skin sliding. The marker protocol itself is less critical than accounting for “reliable” markers.

That said, in case you had a detailed thorax, you would have more segments and having more markers would actually create a more accurate kinematic representation of the system.

And to answer your last question: try asking yourself instead how much accuracy do i need to answer my research questions? And can I explain the differences if I see them? The model has a lot of parameters and it is not realistic to find all individual stiffnesses for the ligaments/disc, muscle strengths and so on. EMG itself has similar problems - the MVC normalization may not be the ground truth, do we account for deeper muscle fibers, and so on.

I hope this helps. Kind regards,

Pavel

P.S.: I just noticed the drop in the grey plot. It is suspicious. I would closely look at this moment. Try plotting joint angles, ligament/disc loads and see what happens at this moment. You may find which object causes this behavior.

1 Like

Hi Pavel,

thank you very much for your detailed explanations. I'll then include the passive structures only in the inverse dynamics loop and try to identify the cause of some of the spikes individually.

Best regards,

Caroline