Step 3 - Define the subject’s progression frame
The most common way to define the subject's progression frame is to align the axes of progression (ie, walking direction) with the anterior-posterior axis used for the individual segments. In our case, this means that the walking direction should be the Y axis.
If the lab has a walkway which is already aligned with one of the lab coordinate system's axes, then the task is to find out whether the subject walks along the +X, +Y, -X or -Y axis, and to calculate the progression frame that transforms the lab coordinate system to the one where the subject's forward direction is +Y.
There are several approaches to this – here is one example:
Add a new variable, name it PelvisOrigin.
Choose Function: Point and Transform: A from B's coordinates back to global.
For A, choose Type: Point and for Input Variable, choose Lab Origin.
For B, choose Type: Segment and for Input Variable, choose pelvis_4X4.
You have now defined a point that corresponds to the pelvis segment's origin. To do this, you have used the pre-defined Lab Origin point, which is simply {0, 0 , 0}, and transformed this point from the pelvis' local coordinates back to global.Add a new variable named WalkingDirection.
For Function, choose Vector and From point A to point B.
For A, choose Type: Point, for Input Variable, choose PelvisOrigin, and for Timing, choose FirstValidFrame.
For B, choose Type: Point, for Input Variable, choose PelvisOrigin, and for Timing, choose LastValidFrame.
Here, you've created a vector from a point to the same point, but evaluated at two different times, namely the first and the last valid point. Thus, as long as the subject has moved, you get a vector pointing in the direction in which the subject has moved.Add a new variable named ProgressionFrame.
For Function, choose: Segment and Origin A, Y-Axis=lab axis closest to B, Z-Axis up.
For A, choose Type: Point and for Input Variable, choose PelvisOrigin.
For B, choose Type: Vector and for Input Variable, choose WalkingDirection.
This defines a segment with its +Y direction aligned with the lab axis that has the best alignment with the WalkingDirection vector, which is exactly what is needed to define the progression angles.Add a new variable named PelvisProgressionAngles.
For Function, choose Angle and Euler angle: XYZ between A and B.
For A, choose Segment and for Input Variable, choose ProgressionFrame.
For B, choose Segment and for Input Variable, choose pelvis_4X4.
This defines the progression angle that we're interested in.