WangYu 发表于 2021-12-7 10:44:31

MVNX 版本 4 - 文件结构

在 MVN 中,可以导出 MVNX 格式(MVN Open XML 格式)的文件。这些是可以在 Microsoft Excel、Access、MATLAB 和 C-Motion Visual 3D 等程序中打开的 XML 文件。
可以通过单击导出窗口中的“显示选项”来选择可以以 MVNX 格式导出的变量。

https://xsenstechnologies.force.com/knowledgebase/servlet/rtaImage?eid=ka02o000000Ugu5&feoid=00N2o000008Xuzv&refid=0EM2o0000043wFx
MVN 融合引擎根据地球固定参考坐标系 G 计算每个身体部分 B 的位置和方向以及其他运动学数据。默认情况下,使用的地球固定参考坐标系是定义为右手笛卡尔坐标系。
全局参考系统的轴定义为:
[*]X(红色)指向当地的磁北。
[*]Y(绿色)根据右手坐标系(西)
[*]Z(蓝色)朝上


当主体以 T 姿势站立时,每个身体框架 (B) 的轴与此全局参考框架 (G) 对齐。

初始化
MVNX 文件以 XML 版本号开头。然后是引用 XSD(XML 架构定义)和 MVNX 版本的根元素“mvnx”。
<mvn version="..." build="..."/>
<comment>...</comment>后面跟着一个字段“mvn”,其中包含 MVN 分析/动画版本和生成此 MVNX 文件的构建详细信息,然后是添加到原始记录中的注释:
<subject label=".." torsoColor="#21ae00" frameRate="240" segmentCount="23" recDate="week day month day time year" recDateMSecsSinceEpoch="1517300960213" originalFilename="DIRECTORY\FILENAME.mvn" configuration="FullBody" userScenario="singleLevel" processingQuality="HD">
<comment>...</comment>文件继续提供会话信息,包括套装标签(= MVN 系统的名称)、使用的采样频率、计算的段数(指示全身或半身);录制发生的日期,以及 MVNX 文件所基于的原始录制文件的文件名。创建录制文件时,用户可以插入评论。
<subject label=".." torsoColor="#21ae00" frameRate="240" segmentCount="23" recDate="week day month day time year" recDateMSecsSinceEpoch="1517300960213" originalFilename="DIRECTORY\FILENAME.mvn" configuration= "FullBody" userScenario="singleLevel" processingQuality="HD"> <comment>...</comment>Segments
<segments> 部分定义了连接关节(以“j”为前缀)和解剖标志(以“p”为前缀)的所有位置 (pos_b) 相对于该部分的起源(在身体名称 B 中)。
每个段的结构如下:
<segments>
<segment label=“RightUpperLeg” id=“16”>
                <points>
                     <point label="jRightHip">
                               <pos_b>0.000000 0.000000 0.000000</pos_b>
                     </point>
                     <point label="jRightKnee">
                               <pos_b>0.000000 0.000000 -0.423469</pos_b>
                     </point>
                     etc.
               </points>
</segment>人体工程学关节数据
“人体工程学关节角度”部分是人体工程学分析中使用的特定关节角度列表,以及每个给定关节的段和连接:<人体工程学关节角度>          <ergonomicJointAngle label="T8_Head" index="0" parentSegment="T8" childSegment="Head"/>          等等。</ergonomicJointAngles>

脚接触检测
“脚接触定义”部分是给定脚接触点的列表,以及它们在每个给定时间范围的脚接触定义数组中的索引,如果该点与地面接触,则给出值1,而如果它不接触
<sensors>
         < sensor label ="Pelvis"/>
         < sensor label ="Head"/>
         < sensor label ="RightShoulder"/>
         etc.
</sensors>注意: 需要注意的是,在 MVNX 格式中计算接触点的方式与在 MVN 中表示接触点的方式不同。在 MVN 中,多个段可以有接触点,并且接触点在每个骨性标志中定义。相反,在 MVNX 中,只有 4 个接触点可用,并且它们不在该段的骨性标志上:

[*]LeftFoot_Heel
[*]左脚_脚趾
[*]RightFoot_Heel
[*]右脚_脚趾

外部数据
随着 MVN 2020.2 的发布,一种新型数据也可以在 mvnx 中导出,即来自 EMG 的外部数据。该索引包含每个通道的帧速率、ID、名称和来源。

<joints>
      <joint label=“ jLeftHip”>
               <connector1>Pelvis/jLeftHip </connector1>
               <connector2>LeftUpperLeg/jLeftHip </connector2>
         </joint>
         etc.
</joints>
请注意,外部数据的帧速率可能与 MVN 不同。外部数据以外部系统的速率运行。下图表示 EMG 数据帧速率为 2148 Hz,即 EMG 系统的输出速率。

符合人体工程学的联合数据

“人体工程学关节角度”部分是人体工程学分析中使用的特定关节角度的列表,以及每个给定关节的片段和连接:
<ergonomicJointAngles>
          <ergonomicJointAngle label=“ T8_Head” index="0" parentSegment="T8" childSegment="Head"/>
          etc.
</ergonomicJointAngles>
脚接触检测

“脚接触定义”部分是一个给定的脚接触点的列表,和他们的脚接触定义数组索引对于每一个给定的时间框架,如果问题是与地面接触,这是考虑到值1,同时在接触,如果不是考虑到价值0:

<footContactDefinition>
                      <contactDefinition label="LeftFoot_Heel" index="0"/>
                      <contactDefinition label="LeftFoot_Toe" index="1"/>
                      <contactDefinition label="RightFoot_Heel" index="2"/>
                      <contactDefinition label="RightFoot_Toe" index="3"/>
</footContactDefinition>注意:
需要注意的是,在MVNX格式中计算接触点的方式与在MVN中表示接触点的方式是不同的。在MVN中,多个节段可以有接触点,接触点在每个骨地标中定义。相反,在MVNX中只有4个接触点可用,它们不在节段的骨地标上:


[*]LeftFoot_Heel
[*]LeftFoot_Toe
[*]RightFoot_Heel
[*]RightFoot_Toe

外部数据

随着MVN 2020.2的发布,一种新的数据类型也可以在mvnx中导出,这是来自EMG的外部数据。索引包含每个通道的帧速率、ID、名称和源。

注意,外部数据可能与MVN的帧速率不同。外部数据以外部系统的速率运行。下图显示肌电图数据帧率为2148 Hz,这是肌电图系统的输出速率。

<externalChannels>
            <channel frameRate="2148" id="0" name="channel 1" source="Delsys" sourceChannel="1"/>
            <channel frameRate="2148" id="1" name="channel 2" source="Delsys" sourceChannel="2"/>
            <channel frameRate="2148" id="2" name="Delsys channel 9" source="Delsys" sourceChannel="9"/>
            <channel frameRate="2148" id="3" name="Delsys channel 10" source="Delsys" sourceChannel="10"/>
</externalChannels>数据位于“externalData”下,包含通道号、总样本号和数据本身。数据速率基于上述的帧速率。
<frame time="0" index="0" tc="11:59:56:45" ms="1627559996749" type="normal">
            <externalData channel="0" sample="0">...</externalData>
            <externalData channel="1" sample="0">...</externalData>
            <externalData channel="2" sample="0">...</externalData>
            <externalData channel="3" sample="0">...</externalData>
</frame>帧
帧部分以段、传感器和关节计数打开。该部分包含所有参数的数据,包括校准位姿数据。<frames segmentCount="23" sensorCount="17" jointCount="22"> 帧类型“身份”表示空姿势或身份姿势。此姿势中的所有段方向都与全局坐标对齐并具有单位四元数。
<frames segmentCount="23" sensorCount="17" jointCount="22"><frame time="0" index="" tc="00:00:00:000" ms="0" type="identity">
       <orientation>1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0</orientation>
       <position>...</position>
</frame>
描述了T-pose中所有段的位置和方向。某些片段的位置和方向与身份姿势略有不同。

<frame time="0" index="" tc="00:00:00:000" ms="0" type="tpose">
       <orientation>...</orientation>
       <position>...</position>
</frame><frame time="0" index="0" tc="08:29:20:050" ms="1517300960209" type="normal">
             <orientation>GB-q_seg1 GB-q_seg2 … GB-q_seg23</orientation>
             <position>G-pos_seg1 G-pos_seg2 … G-pos_seg23</position>
             <velocity>G-v_seg1 G-v_seg2 …G-v_seg23</velocity>
             <acceleration>G-a_seg1 G-a_seg2 … G-a_seg23</acceleration>
             <angularVelocity>G-w_seg1 G-w_seg2 … G-_wseg23</angularVelocity>
             <angularAcceleration>G-aw_seg1 G-aw_seg2 … G-aw_seg23</angularAcceleration>
             <externalData channel="0" sample="0">value1, value2 ... value36</externalData>
             <externalData channel="1" sample="0">value1, value2 ... value36</externalData>
             <externalData channel="2" sample="0">value1, value2 ... value36</externalData>
             <externalData channel="3" sample="0">value1, value2 ... value36</externalData>
             <footContacts>I1 I2 I3 I4 </footContacts>
             <sensorFreeAcceleration>S-a_sen1 S-a_sen2 … S-a_sen17</sensorFreeAcceleration>
             <sensorMagneticField>S-m_sen1 S-m_sen2 … S-m_sen17</sensorMagneticField>
             <sensorOrientation>GS-q_sen1 GS-q_sen2 … GS-q_sen17</sensorOrientation>
             <jointAngle>j_jnt1 j_jnt2 …j_jnt22</jointAngle>
             <jointAngleXZY>j_jntx1 j_jntx2 … j_jntx22</jointAngleXZY>
             <jointAngleErgo>JE_jnt1 JE_jnt2 … JE_jnt4</jointAngleErgo>
             <jointAngleErgoXZY>JE_jntx1 JE_jntx2 …JE_jntx4</jointAngleErgoXZY>
             <centerOfMass>G-CM</centerOfMass>

</frame>
时间说明:
时间每帧增量相当于([帧编号/更新速率]*1000 [毫秒])。例如对于 240Hz 的帧率,增量时间为 4.16ms。
指数包含原始帧号
tc时间码值,即记录该特定帧的绝对实时时间(通常用于将此记录与同时收集的其他数据同步和组合)。
多发性硬化症包含相对于计算时期记录特定帧的绝对时间(以毫秒为单位)(开始于 1970 年 1 月 1 日定义)

参数说明:
范围格式单位描述
方向 (GB-q_segi)1x4 向量(q0、q1、q2、q3) 段相对于全局框架的四元数方向。
位置 (G-pos_seg1)1x3 向量(x、y、z) 米 段的原点在全局框架中的位置。
速度(G-v_seg1)1x3 向量(x、y、z)米每秒 全局坐标系中分段原点的速度。
加速度 (G-a_seg1)1x3 向量(x、y、z) 米每秒平方 全局坐标系中线段原点的加速度。
角速度(G-seg1)1x3 向量(x、y、z)每秒弧度 段在全局坐标系中的角速度。
角加速度
(G-wa_seg1)1x3 向量(x、y、z) 弧度每秒平方 全局坐标系中线段原点的角加速度。
脚接触
(I1 I2 I3 I4)1x4 布尔值向量0 或 1定义是否为每帧检测到接触点的布尔向量。
sensorFreeAcceleration
(S-a_sen1)1x3 向量(x、y、z)米每秒平方 传感器的自由加速度。
传感器磁场
(S-m_sen1)1x3 向量(x、y、z)解剖单位 传感器的传感器磁场。
传感器方向
(GS-q_sen1)1x4 向量(q0、q1、q2、q3) 传感器在全局框架中的传感器方向四元数。
关节角度 ( j_jnt1)1x3 向量(x、y、z)度 [度]使用基于 ISB 的坐标系的欧拉序列 ZXY 计算的关节角度的欧拉表示。
关节角度XZY(j_jntx1)1x3 向量(x、y、z)度 [度]使用基于 ISB 的坐标系,使用欧拉序列 XZY 计算的关节角度的欧拉表示。
注意:使用欧拉序列XZY的关节角度是针对所有关节计算导出的,但通常只用于肩关节,如果使用合适,可能取决于肩部的运动。
JointAngleErgo(JE_jnt1)1x3 向量(x、y、z)度 [度]使用基于 ISB 的坐标系,使用欧拉序列 ZXY 计算的人体工程学关节角度的欧拉表示。
JointAngleErgoXZY
(JE_jntx1)1x3 向量(x、y、z)度 [度]使用基于 ISB 的坐标系的欧拉序列 XZY 计算出的人体工程学关节角度的欧拉表示。
质量中心 ( G-CM)1x3 向量(x、y、z)米 身体重心在全局坐标系中的位置。从 MVN 2020.2 开始,还有速度和加速度。
外部数据 1x1 向量(肌肉活动)毫伏 肌电图数据以确定肌肉活动


King 发表于 2022-4-1 14:05:24

每个身体框架 (B) 的轴与此全局参考框架 (G) 对齐。

King 发表于 2022-4-1 14:05:49

使用基于 ISB 的坐标系的欧拉序列 ZXY 计算的关节角度的欧拉表示。
页: [1]
查看完整版本: MVNX 版本 4 - 文件结构