Hello,
I am new to AnyBody and I am trying to solve the following problem:
I want to be able to change the position and the orientation of vertebral bodies in the lumbar spine.
I am currently using the GaitFullBody model present in the repository. I understand that, in this model, I can access the definition and the initial pose of the lumbar vertebrae via the file SegmentLumbar.any present in the Trunk folder. However, the definition of each vertebral segment seems to me a little convoluted
e.g.,: (for L5 Segment)
r0=.SacrumSeg.SacrumL5JntNode.sRel*.SacrumSeg.Axes0’+.SacrumSeg.r0-L5SacrumJntNode.sRel*Axes0’
If I well understand, Axes0 is the orientation of the reference frame of L5 with respect to the Global coordinate system. Is that correct?
Unfortunately, when I try to redefine the rotation matrix Axes0, the software gives an error message saying that Axes0 has already been defined. I presume this initial definition is done in InitialPosition.any, is this correct? However, when I try to change this initial orientation in this file, it looks like nothing happens.
Can anybody help me?
Thank you very much in advance
Dear Francesco,
Yes, r0 and Axes0 are defined wrt. the global ref. frame. These entities are used for defining how the model will look like after one presses “Load Model”. And as you have correctly located they are defined through an expression in SegmentsLumbar.any. But the Axes0 for the L5 are defined in another file (InitialPositions.any) and given by the following expression (see below) and this is why you cannot define another instance:
SegmentsLumbar.L5Seg.Axes0= SegmentsLumbar.PelvisSeg.Axes0*
RotMat(1/6*(pi/180 )*JointPos.PelvisThoraxExtension ,z)*
RotMat(1/6*(pi/180 )*JointPos.PelvisThoraxRotation ,y)*
RotMat(1/6*(pi/180 )*JointPos.PelvisThoraxLateralBending ,x);
So all adjacent objects depend on the pelvis orientation, which can be modified in the Mannequin file (PosX,PosY,PosZ,RotX,RotY,RotZ).
But these entities are not used for the actual analysis, where you provide necessary constraints - initial position, velocities, accelerations. That means that if you want the vertebra to change the orientation you can prescribe an initial rotation through a kinematic driver instead. Also the GaitFullBody model utilizes a kinematic rhythm for the lumbar spine, meaning that all individual intervertebral angles will be computed as a fraction of the thoracopelvic angle.
What is it exactly are you trying to do? Is it changing the spine curvature of the subject? Or subjecting the model to some motion?
Regards,
Pavel
Pavel,
first of all, thanks a lot for your fast and informative reply.
The purpose of the exercise is to define a curvature of the spine that does not necessarily follow the normal physiological lordosis. My initial guess was that I just needed to change the initial position of the vertebrae in the lumbar model (as per our previous message).
After reading your reply, I have the following questions:
-
How can I over-ride the initial position of the vertebrae with a kinematic driver?
-
Since the spine model embedded in the FullBody is based on a specific rhythm, does the fact that I would change the vertebrae orientation require an adjustment of this rhythm?
-
where is the file that governs the spine rhythm? I found DiscStiffnessNormal.any that regulates the stiffness of the spine. Is this the one?
Looking forward to hear from you soon.
Many thanks in advance.
Francesco