Please take a look in SpineFixationDevicedWithFDK example. The spine rhythm is removed and all joints are driven using FDK/explicitly prescribed. You can use similar approach and drive individual joints angles.
i could not figure out how to predetermine all single rotations between thorax and pelvis even with the FDK example. In Driver.any of the FDK example, the values are only an initial guess, AND they are defined as a fraction of the PelvisThoraxExtension.
Due to some special reason i would like to define all single rotations (T12L1, L12, L23, L34, L45, L5Sacrum, SacrumPelvis) explicitly. How can this be done?
What i tried as an alternative approach for simplification:
[ul]
[li]I replaced the AnyRevoluteJoints to AnySphericalJoints between L1 and Pelvis with Axis=z, leaving T12L1 unchanged.[/li][li]I removed the SpineRythm.[/li][li]I inserted drivers between pelvis and L1, leaving T12L1 unchanged.[/li][li](additionally i had to comment 3 lines in the JointMomentMeasure in TrunkSelectedOutput.any)[/li][/ul]
This generates a problem:
The muscle activity is very different from the original model (especially for the transversus muscles) although i took care (and checked) to have exactly the same intervertebral rotations for each joint between thorax and pelvis.
Where might be the cause of these different muscle activities?
You probably do not get good kinematics or it essentially differs from the original one.
So what you need to do is:
Remove spine rhythm drivers, thorax-pelvis drivers (if you want to define the curvature by individual angles).
Prescribe your desired drivers to the spherical joints:
JointsLumbar.T12L1Jnt, JointsLumbar.L1L2Jnt, … , JointsLumbar.L5SacrumJnt, JointsLumbar.SacrumPelvisJnt
I do not quite understand why the results can be different when i replace a spherical joint by a revolute joint as long as the rotations are the same.
But leaving aside that the DriverPos must be {0,0,FlexExAngle} and not {FlexExAngle,0,0}, your hint to keep the sperical joints helped. Now the results agree.
It should just work, yes. Probably there is an error in the implementation. You mentioned Z axis, but please also take a look at: refJoints.T12L1Jnt.Orientation.Type
When I suggested to use the first component - I had Orientation.Type = RotAxesAngles. I am sorry for not noticing this small difference before.