The MVNX (Moven Open XML format) files contains 3D position, 3D orientation, (and optionally; 3D acceleration, 3D velocity, 3D angular rate, 3D angular acceleration) of each segment (not the sensors) in XML format (ASCII). The following documentation is extracted partially from the XSens original documentation and by review of example files. There are still open point with unknow undocumented behavoir.
The MVNX file starts with a version number<mvnx version="2">
The <mvnxInfo> section contains information about the number of frames, the frame rate, recording date, original MVN file, and the contents of velocity, acceleration, angular velocity or angular acceleration data.<mvnxInfo frameCount="1000"
frameRate="100"
recDate="0"
originalFilename="c:\data\session‐001.mvn"
velData="1"
accData="0"
angVelData="1"
angAccData="0"/>
Attribute Default description frameCountcount of frames frameRateframes per second recDateUnknow format, e.g. 1239100243 recorded 2009 originalFilenameabsolute path to the original ".mvn" file velData0 set to "1" if position velocity data is available accData0 set to "1" if position acceleration data is available angVelData0 set to "1" if angular velocity data is available angAccData0 set to "1" if angular acceleration data is available
The section <markers> contains the description of markers with frame number and marker name if present. In comparison with nomenclature of Vicon Workstation, markers are events. But there are no event types. It seems to be allowed to define more than one marker with the same name (event type) in a trial. Instead of the common c3d-format the position of the marker is defined by an integer instead of a double defining a real time point with optional definition of a range.
<markers>
<marker frame="123" name="RHS"/>
<marker frame="340" name="RTO"/>
</markers>For compatiblity the following table shows the Vicon workstation event type names and its meaning, which must be used for correct gait cycle detection also for the XSens system to be compatible with the Nimue-Platform applications.
marker (event) name description RHSright foot strike LHSleft foot strike RTOright foot off LTOleft foot off LGspecial meaning in the gaitlab heidelberg: 1. between LHS and LTO to indicate that the kinetics is usable, 2. if there are more then one of this events between LHS and LTO first and last LG event defines start and end of a foot flat phase of the left side RGspecial meaning in the gaitlab heidelberg: 1. between RHS and RTO to indicate that the kinetics is usable, 2. if there are more then one of this events between RHS and RTO first and last RG event defines start and end of a foot flat phase of the right side GGgeneral event of no specific side
The section <comment> contains the text which has been entered when creating a new recording session.
The <meshScale> data is used for scaling of the visualization of the character in Moven Studio.
The section <segments> defines all positions of connecting joints and anatomical landmarks with respect to origin of that segment (in body frame B).<segment id="16" label="RightUpperLeg">
<point label="jRightHip" pos_s="0.000000 0.000000 0.000000"/>
<point label="jRightKnee" pos_s="0.000000 0.000000 ‐0.417462"/>
...
</segment>
In some exported .mvnx-files atag with unknow meaning is found: <securityCode code="0639359e" />
The section <frames> contains the actual motion capture data. Each time frame consists of one row, containing 23 segments with 7 channels per segment (4 quaternion, 3 position) = 161 columns of data.
All kinematic data is expressed in the global coordinates system (with Z up).
Format of the data:
Sample 1 <F v=" GBqseg1 Gposseg1 GBqseg2 Gposseg2 … GBqseg23 Gposseg23 " />
Sample 2 <F v=" GBqseg1 Gposseg1 GBqseg2 Gposseg2 … GBqseg23 Gposseg23 " />
…
Sample n <F v=" GBqseg1 Gposseg1 GBqseg2 Gposseg2 … GBqseg23 Gposseg23 " />
GBqseg is the quaternion (q0, q1, q2, q3) describing the rotation of the segment in the global frame
Gposseg is the position (x,y,z) of the origin of the segment in the global frame
When kinematic data other than position and orientation have been selected in the preference menuthey will be written after the <frames> section:
<velocity>
Sample 1 <F v=" Gvseg1 Gvseg2 … Gvseg23 " />
Sample 2 <F v=" Gvseg1 Gvseg2 … Gvseg23 " />
…
Sample n <F v=" Gvseg1 Gvseg2 … Gvseg23 " />
</velocity>
<ang_velocity>
Sample 1 <F v=" Gwseg1 Gwseg2 … Gwseg23 " />
Sample 2 <F v=" Gwseg1 Gwseg2 … Gwseg23 " />
…
Sample n <F v=" Gwseg1 Gwseg2 … Gwseg23 " />
</ang_velocity>Gvseg is the 1x3 velocity vector (x, y, z) of the origin of the segment in the global frame in [m/s].
Gwseg is the 1x3 angular velocity vector (x, y, z) of the origin of the segment in the global frame in [rad/s].<acceleration>Gaseg is the 1x3 acceleration vector (x, y, z) of the origin of the segment in the global frame in [m/(s*s)].
Sample 1 <F v=" Gaseg1 Gaseg2 … Gaseg23 " />
Sample 2 <F v=" Gaseg1 Gaseg2 … Gaseg23 " />
…
Sample n <F v=" Gaseg1 Gaseg2 … Gaseg23 " />
</acceleration>
Gwaseg is the 1x3 angular acceleration vector (x, y, z) of the origin of the segment in the global frame in [rad/(s*s)].
<ang_acceleration>
Sample 1 <F v=" Gwaseg1 Gwaseg2 … Gwaseg23 " />
Sample 2 <F v=" Gwaseg1 Gwaseg2 … Gwaseg23 " />
…
Sample n <F v=" Gwaseg1 Gwaseg2 … Gwaseg23 " />
</ang_acceleration>
The <tpose> section describes the positions and rotations of all segments during a T‐pose. All kinematic data is expressed in the global coordinate system.
Be careful: The use of the colors in the Moven Software and its documentation is different from use in the Nimue modules. Last is defined the same as in showc4d from Jan Simon.
Axis Nimue (Show4d) and showc4d (MoMo) Moven xred blue ygreen green zblue red
Segment Label 1 Pelvis 2 L5 3 L3 4 T12 5 T8 6 Neck 7 Head 8 RightShoulder 9 RightUpperArm 10 RightForeArm 11 RightHand 12 LeftShoulder 13 LeftUpperArm 14 LeftForeArm 15 LeftHand 16 RightUpperLeg 17 RightLowerLeg 18 RightFoot 19 RightToe 20 LeftUpperLeg 21 LeftLowerLeg 22 LeftFoot 23 LeftToe
It is nice to have an xml export but the definition is not state of the art:
| Attribute name | default value | Description |
EVENTS |
true |
|
POSITION |
false |
position in local coordinates of a segments coordinate system |
ORIGIN |
true |
position of the orign of a segments coordinate system |
ORIENTATION |
false |
orientation of a segments coordinate system saved as quaternions |
VELOCITY |
false |
|
ACCELERATION |
false |
|
TIMESERIES |
true |
timeseries (POSITION and/or ORIGIN) should be loaded. This flag is automatically set to true, if one of the flags POSITION or ORIGIN is set to true. |
QUATERNIONS |
false |
If set to false the orientations are defined by column vectors of a 3x3 matrix instead of the original quaternions. |
| Label suffix name | Description |
Position |
appended to specify position data with math type 3d-vector |
Velocity |
|
Acceleration |
|
Rotation |
appended to specify rotation data with math type 3x3-matrix or quaternion |
AngularVelocity |
|
AngularAcceleration |