Weird thoracic/abdo posture during movement from AMMR4-Beta

Hello AnyBody community,

Whilst using the beta-released of AMMR4 with discretised thoracic cage for our own mocap data, I noticed that the mannequin is having a weird posture when simulating our 'bending forward' movement from standing position (see photo below)

For the body model configuration, I have set the thorax as a flexible model and soft rhythm (cervical, thoracic, lumbar) as I have one marker trajectory for each of the three spinal regions to drive them (C7, T7, and L4).

Main = {

#define BM_SCALING SCALING_LENGTHMASSFAT
#define BM_MANNEQUIN_DRIVER_DEFAULT OFF

#ifndef BM_LEG_MODEL
#define BM_LEG_MODEL LEG_MODEL_TLEM2
#endif
#define BM_LEG_MUSCLES_BOTH MUSCLES_SIMPLE

#define BM_ARM_RIGHT ON
#define BM_ARM_LEFT ON
#define BM_ARM_MUSCLES_BOTH MUSCLES_SIMPLE

#define BM_TRUNK_THORACIC_MODEL THORACIC_MODEL_FLEXIBLE
#define BM_TRUNK_MUSCLES MUSCLES_SIMPLE
#define BM_TRUNK_LIGAMENTS ON
#define BM_TRUNK_DISC_STIFNESS DISC_STIFFNESS_NONLINEAR
#define BM_TRUNK_CERVICAL_THORACIC_LINK ON
#define BM_TRUNK_LUMBAR_THORACIC_LINK ON
#define BM_TRUNK_LUMBAR_RHYTHM RHYTHM_SOFT
#define BM_TRUNK_THORACIC_RHYTHM RHYTHM_SOFT
#define BM_TRUNK_CERVICAL_RHYTHM RHYTHM_SOFT
#define SPINE_MARKERS_SINGLE

};

Although the simulation was successful, the spinal loading in axial direction are very high (see graph below).

I just wondering what have I done wrong? Could this because of I didn't set the abdominal pressure/model? As you can see from the photo, the T7 C3D marker is also quite further from the T7 mannequin driver. They are quite close to each other in standing position (which is also the calibration position for parameter identification).

Any advice is appreciated. Thank you very much.

Kind regards,
Faizal

I also would like to know what BM_TRUNK_CERVICAL_THORACIC_LINK and BM_TRUNK_LUMBAR_THORACIC_LINK are actually for? Thanks

Dear Faizal,

It is correct to use soft spine rhythms. And the abdominal pressure model will be there automatically and it will follow the ribcage and the spine.

BM_TRUNK_CERVICAL_THORACIC_LINK and BM_TRUNK_LUMBAR_THORACIC_LINK activates the 3DOF drivers between the spine regions and since you have a marker for each region, you probably can exclude those. However, note that the markers you have, cannot specify the axial rotation of the spine accurately, and that is why you should use SPINE_MARKERS_SINGLE.

I can see that the spine did not follow the markers and there is a hihg lordosis angle. I think the best way to approach the problem is to use rigid thorax model and see if there is a big lordosis curvature in the lumbar region. Then you know where is the problem.
And also try to remove the BM_TRUNK_CERVICAL_THORACIC_LINK and BM_TRUNK_LUMBAR_THORACIC_LINK.

Best,
Hamed

1 Like

Dear Hamed,

Thank you for the clarification on the functions of those drivers :slight_smile: that is very helpful.

I solved the problem with the weird abdominal posture by re-running my parameter identification and optimisation again. And the loading magnitude on the spinal vertebrae falls within the acceptable ranges as well when I simulated the bending forward motion from mocap data again (see below).


However, I wonder if we could improve this more as the mocap markers on the spine and pelvis are still a bit further from model's driver marker. I also realise the joint angle for the lumbar vertebrae is erratic despite having a soft rhythm switched on and with at least 1 marker on L4 (darker blue). Weirdly, the thoracic segment was also driven by just 1 marker but their kinematics are more harmonised compared to lumbar (lighter green) albeit they are moving at very slight angle.


Could this be because of the high lordosis angle as you said? And how could I improve this? Also, I feel the pelvic segment from the model is flexed more than the mocap marker driver has captured based on the red/blue dots position discrepancies. Is there anyway to fix this? Or probably a better suggestion that could improve the simulation?

Thank you once again. I really appreciate any inputs given :slight_smile:

Kind regards,
Faizal

Dear Hamed,

I think I have figured out why the model spine is not following mocap driver. I have disabled the extra drivers for the thorax below and the output looks much better than the previous simulation

BM_MANNEQUIN_DRIVER_SKULL_THORAX_FLEXION
BM_MANNEQUIN_DRIVER_SKULL_THORAX_LATERALBENDING
BM_MANNEQUIN_DRIVER_SKULL_THORAX_ROTATION

BM_MANNEQUIN_DRIVER_PELVIS_THORAX_LATERAL_BENDING
BM_MANNEQUIN_DRIVER_PELVIS_THORAX_ROTATION
BM_MANNEQUIN_DRIVER_PELVIS_THORAX_EXTENSION

So, my follow up questions are:-

  1. I have been reading this forum post and I just wondering if there is any value for me to add weak drivers into my simulation given that I have slightly more (extensive) markers on the thorax and spine compared to the issue described in that post?
  2. Given that I am simulating a lot of movement related to the spine for my current study simulation, such as this bending forward, and I am using several markers on the spine, should I run ParameterIdentification study on C3D mocap data that involve movement in the spine (e.g. bending forward and twisting)? Or it does not really matter because it is simply just optimising the segment length and not joint centre? [My primary focus on this simulation is kinematics and loading on the vertebrae and I am using one marker for each vertebra tracked and not a cluster marker; I am using #SPINE_MARKERS_SINGLE]

Look forward to your response. Thank you.

Kind regards,
Faizal

Dear Faizal,

Great that you found the issue :slight_smile:

  1. I think, the weak drivers that mentioned in that forum post had nothing to do with spine. If some errors in simulating e.g. wrist is acceptable for you (I guess it is as I read your focus in your study), then you should add those weak drivers to make your model more robust. However, If you have one marker for each vertebra, then you probably can make the spine rhythm's weight smaller compared to marker weights. You may try removing the rhythms (except axial rotation) and compare it with having rhythms ON, since you have marker for each vertebrae :slight_smile:

  2. ParameterIdentification can be run in anatomical standing and as you mentioned, it is only optimizing the segment length and marker locations.

Best,
Hamed

1 Like