搜维尔

 找回密码
 立即注册
查看: 563|回复: 2

MVNX 版本 4 - 文件结构

[复制链接]
发表于 2021-12-7 10:44:31 | 显示全部楼层 |阅读模式

有任何问题可电话咨询:15011062927

您需要 登录 才可以下载或查看,没有账号?立即注册

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


                               
登录/注册后可看大图

MVN 融合引擎根据地球固定参考坐标系 G 计算每个身体部分 B 的位置和方向以及其他运动学数据。默认情况下,使用的地球固定参考坐标系是定义为右手笛卡尔坐标系。
全局参考系统的轴定义为:
  • X(红色)指向当地的磁北。
  • Y(绿色)根据右手坐标系(西)
  • Z(蓝色)朝上


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

初始化
MVNX 文件以 XML 版本号开头。然后是引用 XSD(XML 架构定义)和 MVNX 版本的根元素“mvnx”。
  1. <mvn version="..." build="..."/>
  2. <comment>...</comment>
复制代码
后面跟着一个字段“mvn”,其中包含 MVN 分析/动画版本和生成此 MVNX 文件的构建详细信息,然后是添加到原始记录中的注释:
  1. <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">
  2. <comment>...</comment>
复制代码
文件继续提供会话信息,包括套装标签(= MVN 系统的名称)、使用的采样频率、计算的段数(指示全身或半身);录制发生的日期,以及 MVNX 文件所基于的原始录制文件的文件名。创建录制文件时,用户可以插入评论。
  1. <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 中)。
每个段的结构如下:
  1. <segments>
  2. <segment label=“RightUpperLeg” id=“16”>
  3.                 <points>
  4.                        <point label="jRightHip">
  5.                                <pos_b>0.000000 0.000000 0.000000</pos_b>
  6.                        </point>
  7.                        <point label="jRightKnee">
  8.                                <pos_b>0.000000 0.000000 -0.423469</pos_b>
  9.                        </point>
  10.                        etc.
  11.                  </points>
  12. </segment>
复制代码
人体工程学关节数据
“人体工程学关节角度”部分是人体工程学分析中使用的特定关节角度列表,以及每个给定关节的段和连接:<人体工程学关节角度>          <ergonomicJointAngle label="T8_Head" index="0" parentSegment="T8" childSegment="Head"/>          等等。</ergonomicJointAngles>

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

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

  1. <joints>
  2.         <joint label=“ jLeftHip”>
  3.                <connector1>Pelvis/jLeftHip </connector1>
  4.                <connector2>LeftUpperLeg/jLeftHip </connector2>
  5.          </joint>
  6.          etc.
  7. </joints>
复制代码

请注意,外部数据的帧速率可能与 MVN 不同。外部数据以外部系统的速率运行。下图表示 EMG 数据帧速率为 2148 Hz,即 EMG 系统的输出速率。

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

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

脚接触检测

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

  1. <footContactDefinition>
  2.                       <contactDefinition label="LeftFoot_Heel" index="0"/>
  3.                       <contactDefinition label="LeftFoot_Toe" index="1"/>
  4.                       <contactDefinition label="RightFoot_Heel" index="2"/>
  5.                       <contactDefinition label="RightFoot_Toe" index="3"/>
  6. </footContactDefinition>
复制代码
注意:

需要注意的是,在MVNX格式中计算接触点的方式与在MVN中表示接触点的方式是不同的。在MVN中,多个节段可以有接触点,接触点在每个骨地标中定义。相反,在MVNX中只有4个接触点可用,它们不在节段的骨地标上:

  • LeftFoot_Heel
  • LeftFoot_Toe
  • RightFoot_Heel
  • RightFoot_Toe

外部数据

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

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

  1. <externalChannels>
  2.             <channel frameRate="2148" id="0" name="channel 1" source="Delsys" sourceChannel="1"/>
  3.             <channel frameRate="2148" id="1" name="channel 2" source="Delsys" sourceChannel="2"/>
  4.             <channel frameRate="2148" id="2" name="Delsys channel 9" source="Delsys" sourceChannel="9"/>
  5.             <channel frameRate="2148" id="3" name="Delsys channel 10" source="Delsys" sourceChannel="10"/>
  6. </externalChannels>
复制代码
数据位于“externalData”下,包含通道号、总样本号和数据本身。数据速率基于上述的帧速率。

  1. <frame time="0" index="0" tc="11:59:56:45" ms="1627559996749" type="normal">
  2.               <externalData channel="0" sample="0">...</externalData>
  3.               <externalData channel="1" sample="0">...</externalData>
  4.               <externalData channel="2" sample="0">...</externalData>
  5.               <externalData channel="3" sample="0">...</externalData>
  6. </frame>
复制代码

帧部分以段、传感器和关节计数打开。该部分包含所有参数的数据,包括校准位姿数据。<frames segmentCount="23" sensorCount="17" jointCount="22"> 帧类型“身份”表示空姿势或身份姿势。此姿势中的所有段方向都与全局坐标对齐并具有单位四元数。
  1. <frames segmentCount="23" sensorCount="17" jointCount="22">
复制代码
  1. <frame time="0" index="" tc="00:00:00:000" ms="0" type="identity">
  2.        <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>
  3.        <position>...</position>
  4. </frame>
复制代码

描述了T-pose中所有段的位置和方向。某些片段的位置和方向与身份姿势略有不同。

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

  21. </frame>
复制代码

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

参数说明:
范围格式单位描述
方向 (GB-q_segi)1x4 向量(q0、q1、q2、q3) 段相对于全局框架的四元数方向。
位置 (G-pos_seg1)1x3 向量(x、y、z) 米 [m]段的原点在全局框架中的位置。
速度(G-v_seg1)1x3 向量(x、y、z)米每秒 [m/s]全局坐标系中分段原点的速度。
加速度 (G-a_seg1)1x3 向量(x、y、z) 米每秒平方 [m/s2]全局坐标系中线段原点的加速度。
角速度(G-seg1)1x3 向量(x、y、z)每秒弧度 [rad/s]段在全局坐标系中的角速度。
角加速度
(G-wa_seg1)
1x3 向量(x、y、z) 弧度每秒平方 [rad/s2]全局坐标系中线段原点的角加速度。
脚接触
(I1 I2 I3 I4)
1x4 布尔值向量0 或 1定义是否为每帧检测到接触点的布尔向量。
sensorFreeAcceleration
(S-a_sen1)
1x3 向量(x、y、z)米每秒平方 [m/s2]传感器的自由加速度。
传感器磁场
(S-m_sen1)
1x3 向量(x、y、z)解剖单位 [au]传感器的传感器磁场。
传感器方向
(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)米 [m]身体重心在全局坐标系中的位置。从 MVN 2020.2 开始,还有速度和加速度。
外部数据
1x1 向量(肌肉活动)
毫伏 [mV]肌电图数据以确定肌肉活动


回复

使用道具 举报

发表于 2022-4-1 14:05:24 | 显示全部楼层
每个身体框架 (B) 的轴与此全局参考框架 (G) 对齐。
回复

使用道具 举报

发表于 2022-4-1 14:05:49 | 显示全部楼层
使用基于 ISB 的坐标系的欧拉序列 ZXY 计算的关节角度的欧拉表示。
回复

使用道具 举报

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表