一种获得运动信息的方法_4

文档序号:9461650阅读:来源:国知局
沿着Z轴有移动时,通过计算用户的 滞空时间推算弹跳高度,如检测出左右脚最后一只脚发生移动的时刻记为Ts,然后检测到 左右脚中最早一只脚落地的时刻记作Te,则根据以下公式:
[0175]
[0176] 计算得到弹跳高度Height;
[0177] 6)计步器实现
[0178] 根据步骤2测量运动的起止时刻,每一个起止周期,S卩可将步数step加1。
[0179] 此外,如果用户在户外进行运动时,可以采用离线记录的模式,将用户的运动信息 记录在闪存中,不同的MCU有不同的闪存容量。里程、能量消耗、计步和平均速度等变量只 需要记录一个最终的结果即可,而实时速度是一个过程量,需要全程进行记录,因此需要按 照一定时间间隔不断的进行记录,如对于实时速度,可以2s进行一次采样记录,根据不同 的MCU内置闪存容量,可以有不同的尚线记录容量。
[0180] 上述各步骤是可选的。本领域技术人员可以根据需要选择执行不同的步骤、以实 现不同的功能或其组合。
[0181] 四、本发明对运动模式识别的计算详细如下:
[0182] 所述运动模式具体指的是运动的方向或者说不同的动作,通过区分不同的动作即 可完成不同的人机交互需求。对于人机交互控制而言,要求交互的实时性,即运动模式的识 别不能延迟太多,因此在计算中,不能采用动作完成之后再去判断运动方向的方法。而是要 在动作开始的最初一段时间内,尽可能快速而准确的计算人体动作的方向。
[0183] 本发明针对人体脚步关键性动作,如前、后、左、右四方向的移动和跳跃等,给出详 细的识别方法。步骤如下:
[0184] 大量数据测试表明,人体运动的方向性跟所在运动方向的加速度的变化剧烈程度 绝对相关,因此通过XbYbZb三轴向加速度的变化剧烈程度即可判断人体的运动方向。如图7 所示,图中所示为实际测量的人在运动过程中的脚部传感器所测量的三轴向加速度的变化 情况。从图上可以明显看出,加速度变化最剧烈的轴向(图中红色曲线),即为人体实际运 动的轴向。
[0185] 步骤1、识别动开始时刻:
[0186] 当时刻T=k+1时(k=0、1、2、3......,代表着时钟周其月,可以是5ms,10ms等,根 据不同的应用可以选择不同的时钟和周期),通过三轴加速度传感器,获得鞋子本体的三个 坐标轴方向上的加速度,分别记作ax(k),ay(k),az(k)经过步骤1数字滤波后的加速度为 axf (k),ayf (k),azt(k)。当用户脚部发生了移云力时,记录下运云力起始时亥ljTstart=k,即完成 了人体运动初始时刻检测。具体方式如下:
[0187] 检测T=k+1时刻脚部是否有移动,则将计算本时刻的(axf(k)-axf(k_l))2+(ayf(k )-ayf (k-1)) 2+ (azf (k) _azf (k-1))2,将该值与阈值Threshold进行对比(阈值是一个整实数, 根据实际需求可自由选择,典型值如10),如果发现T=k+1时刻该值大于阈值即认为用户 可能存在脚部移动,进一步考察接下来的m个周期,如本发明中取m= 3,即连续4个周期 (m= 0也算一个周期)加速度值都大于阈值,且当前状态为静止状态,即认为用户的脚部出 现了移动。
[0188] 步骤2、识别运动方向:
[0189] 当检测到人体发生的运动后,在此后的n个周期内,本实施例中,采样频率为 100HZ,即时钟周期为10ms,即0.01秒,取n= 10,定义函数:
[0193] 其中其中axM,ayQf,azQf是静止时刻三轴向的加速度基准值,该值是随着时间变化 而漂移的,具体抑制漂移的实时校准方式见上文"运动距离计算"中的具体表述,此处不再 累叙。
[0194] 即根据fx,fy,fz的值,即可得到相对于鞋子本体局部坐标系下的一个三维矢量 (fx,fy,fz),该矢量即可大致表示用户脚步动作的一个空间方位角e。
[0195] 步骤3、判定动作模式:
[0196] 按照预先设定好的动作模式,即5个基本动作,前、后、左、右移动和跳跃。
[0197] 根据一定的规则将0与5个基本动作建立映射。为了便于表述映射规则,首先将 0角在空间内的投影角度表示为9胃,9z,含义:9My在X0Y面上的投影的角度,以右手系 X0Y的X轴正向为基准,角度值满足右手法则,取值范围【0, 360】单位度;0z&Z轴正向为 基准,表示跟Z轴正向的夹角,取值范围【0,180】,具体如图5所示。规则映射表如表1所 示:
[0198]
[0199]
[0200] 表1规则映射表
[0201] 0i,0 2, 0 3, 0 4, 0 5即一个角度的阈值,用以将角度划分为几个区间,具体含义图 6所示。对于步骤2中所计算得到的动作方向的空间方位角度0,对于0i,0 2, 0 3, 0 4, 9 5而言,其取值的典型值为:
[0202] 0 1= 45 度,0 2= 135 度,0 3= 225 度,0 4= 315 度,0 5= 45 度
[0203] 但是由于实际应用中,用户的运动习惯不同(例如有人走路内八字、有人走路外 八字),不能简单的按照平均划分的原则。
[0204] 0i,0 2, 0 3, 0 4, 0 5缺省值的确定原理是通过不同用户的实际测试,基于统计模 型得到一种模式划分。本实施例中通过采集不同性别、不同身高的用户的运动数据,通过统 计规律,得到的一种缺省划分。具体方法如下:
[0205] 采集不同的用户的运动数据,让用户按照前后左右和跳跃5个动作,大量的重复 动作。并记录每一次用户的运动数据,按照5个动作分别计算出0 :,0 2, 0 3, 0 4, 0 5的一 个范围。
[0206] 如对于向左移动而言,角度0My基本是在90度附近的一个区间内变化,通过大量 的统计数据,将9胃的值按照概率分布,描述出一个曲线,如图8所示,图8的显示的是用 户向左运动时角度0胃的统计分布。然后基于统计学原理,给出一定的置信区间,例如按 照95%左右给出置信区间的下限和上限,如图8中的两条虚线所给出的范围。含义是用户 的向前的动作转换后的9胃,最后又95%的可能性会落在该区间内。
[0207] 通过对不同的动作分别进行统计分布规律的分析,可以得到一个缺省的0i,02, 9 3, 9 4, 95的值,如本实施例中,对于向左动作的角度区间,取【40°,155°】。通过该方法 计算得到的0i,02,03,04,05值具有一定的普遍适应性。
[0208] 但是要更加准确判断用户的动作,需要在实际应用时针对不同用户的习惯,动态 的设定映射规则中的9 :,9 2, 9 3, 9 4, 9 5,以适应诸如八字步人群的动作。即针对不同的 用户,在线的学习用户的脚部的运动规律,让每一个使用者,针对自己的动作习惯,进行一 个"校准"或者"训练"的过程,用以微调或者修正缺省值。用户的"训练"越多,系统对用户 的动作识别越准确。此过程中,需要考虑到用户故意不按照系统的指令进行训练的可能性, 如系统提示用户向前走,但是用户却向后移动,这种明显超过预期的输入,将被系统视为噪 声过滤掉。
[0209] 得到用户的动作信息后,除了可以直接用以与上层的应用软件交互,如可以利用 不同的用户动作,来实现游戏软件里虚拟角色的移动控制,如跑酷类游戏,人物的左右移动 和跳跃控制;还可以用以执行某几个特殊的指令,如音乐舞蹈节奏类游戏的节奏控制;还 可以将人体的运动信息,用以控制某一类运动类游戏的动作,如虚拟踢足球游戏,或者跟脚 部有关的运动,如跑步、跨栏等;或者将人体的动作信息和消耗的能量以数字或者图表的手 段,显示在上位机客户端,用以监测人体的运动信息。
[0210] 五、针对Windows平台,利用WindowsAPI将人体不同的动作映射为键盘和鼠标的 不同输入
[0211] 其实现方法是利用模拟键盘和鼠标的输入。
[0212]对于不同的应用需求,如对游戏的控制,例如跳舞机一类的游戏,一般而言只有四 个键(或者五个键位),以游戏《跳舞机》为例,其是通过"上下左右"四个键控制游戏。而 不同的游戏有不同的键位控制,如CS游戏是用"WSAD"四个方向控制人物的前后左右移动。 对于这种不同的游戏控制需求,需要建立一种动作和外设输入的动态映射机制。出于用户 方便使用的角度,我们针对不同的控制需求预先编辑好一套映射规则,在PC机上保存成文 件,该文件可以根据用户需求更改。
[0213] 现针对键盘和鼠标两种模拟映射方式,给出具体的方法。
[0214] 1)人体动作到键盘输入的模拟
[0215] 1. 1)建立动作到PC指令序列的映射
[0216]
[0217] 表2动作信息与键盘指令映射表
[0218] 具体映射规则请参见表2,其中Keyl到Key5代表的键盘的某一个按键,具体的代 表哪一个按键,需要根据预存在PC机上的一个文件的预设定义,解析出键位的映射信息。
[0219]MotionTime指的是用户进行这个一个动作,所持续的时间,向前跨一步所用的时 间。
[0220] Distance指的是,用户该动作执行过程中,所经历距离,对于弹跳是高度。
[0221] 1. 2)根据配置文件解析键盘扫描码
[0222] 本实施例中采用XML文件的方式,来存储和解析键位的配置信息。
[0223]XML文件定义格式中关于动作和键盘映射部分大致如下:
[0224] < KeylKeyName = " Up" > 1 </Keyl>
[0225] < Key2KeyName = " DOWN" > 2 < /Key2 >
[0226] < Key3KeyName = " LEFT" > 3 < /Key3 >
[0227] < Key4KeyName = " RIGHT" > 4 < /Key4 >
[0228] < Key5KeyName = " SPACE" > 5 < /Key5 >
[0229] 分别对Keyl到Key5进行文字上的键位定义,如Keyl定义为"UP"。而解析程序自 动的识别不同的文字含义,如当程序解析得到Keyl的定义为"UP",则通过程序预设的文字 解析规则,将"UP"映射为十六位键盘扫描码0x48。
[0230] 这里给出实施例中常用的几组键盘键位的文字解析和映射规则如表3所示:
[0231]
[0232] 表3文字定义与按键映射表
[0233] 1. 3)调用系统API实现键盘模拟
[0234] 将解析出的按键信息,通过系统的API,将按键的十六位扫描码作为主要参数,在 动作刚刚被识别出的时候,模拟按键的按下的输入,而当用户动作执行完毕,模拟该按键被 释放的输入。附加信息作为人机交互的其他需求用,如遇到需要获取用户动作的幅度,则该 附加信息可以作为额外的输入。
[0235] 2)人体动作到鼠标输入的模拟
[0236] 人体动作到鼠标的输入模拟相对键盘模拟要更为直观和简单,以人体所面对的方 向为基准,人的"前后左右"移动直接对应着鼠标的"上下左右"移动,这种映射是最为符合 人的直观感受的,因此直接将映射关系固定即可。具体的模
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1