基于Kinect 3D体感摄影机的健身教练系统设计
2019-05-09徐晓龙刘轶铭吴宁馨岳子谦路正莲
徐晓龙,刘轶铭,吴宁馨,岳子谦,路正莲
(河海大学 物联网工程学院,江苏 常州 213022)
目前,室内健身是一部分人接受的健身方式。对于室内锻炼,健身俱乐部是都市人群的重要选项,但是相当一部分人因为健身地点与时间的固定难以长期坚持。据统计,大约40%的人在健身房办理会员卡却鲜少去运动。现有的智能健身教练系统,大多是绑定在健身器械上,通过传感器获取使用者身高、体重等信息,然后通过处理器等运算给出使用该健身器材的训练建议,或者通过显示屏等输出方式播放一些示范动作[1]。这些健身指引系统通常只能针对该健身器械提供一些单一的建议和示范,不能与用户关于训练动作进行交互,也不能基于互联网对用户提供科学的训练计划及饮食计划建议,起不到“专业健身教练”的作用。为克服现有智能健身教练系统的不足,提出一种基于Kinect 3D体感摄影机的智能健身教练系统,其结构如图1所示。英特尔Minnow Board嵌入式处理平台融合Kinect体感摄影机感知用户动作信息、可穿戴设备感知用户心率、位置等辅助信息以及云端数据,综合进行运动状态判断,给出运动训练指导及实时错误动作纠正提示。用户通过手机APP客户端访问云端,完成相关基础信息的操作,如用户注册、训练计划查询、饮食计划查询以及训练反馈等。系统会根据用户注册时输入的生理信息及训练意愿,推荐合适的训练计划,并生成科学的饮食计划。交互端通过图形界面显示及手势识别操作实现良好的实时交互。
图1 健身教练系统结构图Fig.1 Structure diagram of fitness trainer system
1 系统硬件设计
根据要实现的功能,系统硬件主要分为3个单元:基于Minnow Board的嵌入式处理单元、基于Kinect的运动数据获取单元以及基于Genuino的传感器节点单元。
1.1 基于Minnow Board的嵌入式处理单元
基于Minnow Board的嵌入式处理单元主要完成对Kinect体感摄影机获取的运动数据、基于Genuino的传感器节点单元传回的数据和云端数据进行处理分析及人机交互。其信号流图如图2所示。
图2 健身教练系统信号流图Fig.2 Signal flow diagram of fitness trainer system
Minnow Board通过高速以太网接口连接Kinect运动数据采集单元,获取Kinect采集的运动信息及手势识别信息;通过SPI接口连接NRF24L01无线模块,能同时接收5个Genuino传感器节点单元传回的数据。为了使Minnow Board嵌入式平台能实现语音播报功能,通过USB接口接入3.5 mm外置声卡,将USB信号转化为音频信号输出。同时,Minnow Board嵌入式平台通过HDMI接口接入液晶显示器,作为图形界面交互输出。
1.2 基于Kinect的运动数据获取单元
Kinect负责获取深度图像、跟踪并提取人体骨骼位置、识别人体姿态。Kinect运动数据采集单元由驱动PC和Kinect组成。因Minnow Board嵌入式平台硬件资源及性能的局限性,且操作系统为Windows 10 IoT Core;另外,所开发的软件基于通用窗口应用平台(Universal Windows Platform,UWP),尚不支持对Kinect SDK的开发。因此,采用一台小型PC机驱动Kinect以获取人体姿态信息和手势识别信息,并通过以太网接口将数据传送到Minnow Board嵌入式平台。Kinect使用的是光编码技术,原理如图3所示,它主要包括激光发射器、CMOS感光器件和不均匀透明介质三部分。Kinect获取深度图像的原理是利用激光发射器向三维场景中的物体发射连续照明。该光源是一个具有三维纵深的激光散斑(Laser speckle)。这种激光散斑会随着距离的不同而不断变换图案,任意两处散斑的图案是不相同的。也就是说,把一个物体放到视觉空间,通过查看上面的散斑图案,就可以知道这个物体的具体位置,类似于给整个空间做了标记。当然,在这之前需要把整个空间的散斑图案都记录下来,即光源标定[2]。
图3 光编码原理Fig.3 Optical coding principle
1.3 基于Genuino的传感器节点单元
系统共部署了5个Genuino传感器节点单元,均为可穿戴式节点。其中4个作为人体姿态的辅助检测节点,部署在上肢的大臂与小臂上,利用Genuino 101开发板板载的六轴加速度计/陀螺仪作为姿态辅助检测传感器,为系统提供姿态检测数据。另一个作为心率检测节点,部署在手腕处,采用HR-Wristband心率传感器,实时检测训练者的心率情况。每个Genuino 101开发板通过SPI接口与NRF24L01无线模块连接,实现与Minnow Board嵌入式处理单元的通信,将所采集的数据实时传送给Minnow Board嵌入式处理单元。因节点为可穿戴式,Genuino传感器节点单元采用3.7 V,500 mA·h锂电池供电。
1.3.1 Genuino传感器节点管理模块
Genuino核心板是一款低功耗开发板。它基于Intel®Curie™模组,模块包含一个X86的夸克核心和一个32 bit的ARC架构核心(Zephyr),时钟频率都是32 MHz,其板载的六轴加速度计/陀螺仪能有效监测姿态信息。
1.3.2 NRF24L01无线数据传输模块
由于辅助传感器需要实现可穿戴式,传感器数据需要通过无线方式传到处理单元,并且要实现多对一传输,即多个节点同时采集信息传给处理单元,使用NRF24L01作为辅助传感器的无线传输模块。NRF24L01是一款工作在2.4~2.5 GHz的ISM 频段的单片无线收发芯片,无线收发器包括:频率发生器、增强型“Schock Burst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。芯片采用FSK调制,内部集成NORDIC的Enhanced Short Burst协议,可以实现点对点或1对6的无线通信,无线通信速度可以达到2 Mb/s。可以通过SPI接口设置输出频道及通信协议。
1.3.3 HR-Wristband心率检测模块
HR-Wristband心率传感器是腕带式心率测量传感模块,利用皮肤反射式测量原理进行心率测量。心脏的每一次搏动都会导致手指皮肤和手腕内侧皮肤毛细血管产生一次充盈和收缩。该血脉变化信号可用于检测心率,测量原理为:动脉血以“脉冲”方式流动,导致薄弱皮肤皮下红外反射率的微弱差别,由反射式光电传感器提取出手腕皮肤处微弱的红外反射率差异,并加以处理,最终转变为可供分析的心率信号。
2 系统软件设计
系统的软件主要解决嵌入式处理单元与传感器节点、服务器、Kinect等通信问题,并给出姿态纠正提示、语音提示、图形用户界面(GUI)交互、用户管理、健身计划安排和健身项目展示等。软件系统主要分为4个单元:通信单元、姿态纠正单元、交互单元和移动终端单元。
2.1 通信单元
通信单元主要包括Minnow Board嵌入式处理单元分别与Kinect运动数据采集单元、传感器节点单元及云端服务器之间的通信。嵌入式处理单元与Kinect运动数据采集单元之间采用以太网进行连接,软件上使用Socket类实现数据传输。嵌入式处理单元与可穿戴设备之间采用无线数据传输,软件上通过SPI协议实现。嵌入式处理单元与云端服务器通过因特网连接,软件上使用HTTP Client类通过HTTP协议获取信息。
2.2 姿态纠正单元
姿态纠正以Kinect采集到的数据为依据进行判别。Kinect采集到的深度图像经处理识别出人体特征点,将特征点传入一个机器学习系统中,得到三维坐标,将三维坐标映射到二维坐标系中后,与动作库进行对比后得到纠正的结果[3-7],其流程如图4所示。
图4 姿态纠正算法流程图Fig.4 Flow chart of attitude correction algorithm
2.2.1 深度图像预处理
由于Kinect获取的深度图像是不稳定的,存在一些噪声点和空洞,特别是在狭窄边缘处获取的深度值更加不稳定,直接对其进行骨骼信息提取会影响效果,需要对其进行滤波。Kinect本身采用了泊松方程算法进行滤波,通过这种方法可以判断人体表面特征点是噪声还是真实存在。但判断一个特征点的特征并不只限于它自身,还要关注它周围的各个点,当它是真实存在时它的影响将很好地扩散到周围,反之它周围的点若没有表现出这种趋势则将其判定为噪声。故经泊松方程算法滤波的深度图像仍可能存在噪声与空洞,需要进一步处理[4-7]。
2.2.2 骨骼数据提取与处理
1)骨骼数据的提取
Kinect在图像中寻找可能是人体的移动物体,接下来Kinect将会对预处理后的深度图像进行像素级评估,来辨别人体的不同部位。Kinect通过分割策略将人体从环境中区分出来,通过边缘检测、噪声阈值处理将人体目标特征点进行分类,分割化图像的每一个像素都被传送进一个辨别人体部位的机器学习系统中,随后该系统将给出某个特定像素属于哪个身体部位的可能性。经过评估后来确定关节点,另外再附加处理闭塞关节等事件。得到的骨骼数据实际是不稳定的,波动很大,这对姿态检测有着很大影响,需要进行滤波处理[3,8]。
2)限幅平均滤波法处理骨骼数据
每次采样到的新数据先进行限幅处理,再送入队列进行递推平均滤波处理。这样既保证了骨骼数据的实时性又可以达到滤波的效果,使其数据波动变小,并且有效滤除一些偶然干扰,其软件流程如图5所示。
3)姿态纠正
①坐标获取
根据深度图和RGB图之间对应的坐标关系,由下式可得3D空间点p的原始值dr。
D=K⋅tan(H⋅dr+L)-O
式中:D为点p的深度值,cm;H=3.5×10-4rad;K=12.36 cm;L=1.18 rad;O=3.7 cm。由图像深度值可获得点p的实际坐标。设p的深度坐标为(xd,yd,zd),则p的实际坐标(xw,yw,zw)为:
式中:D=-10;F=0.002 1;分辨率w·h为640×480。
图5 限幅平均滤波算法流程图Fig.5 Flow chart of amplitude-limiting average filtering algorithm
再通过数学方法将其映射到二维坐标轴上。
②角度获取
假设X(X1,X2),Y(Y1,Y2)为两个关节点的实际坐标,利用欧氏距离:
求出两关节之间的距离。求解人体关节连线之间的角度主要是利用三个关节点的距离,并利用余弦定理求出关节点连线之间的角度大小。
三角形的三边长分别为ɑ=D(B,C),b=D(A,C),c=D(A,B),根据余弦定理可得出角度:
③比较纠正
图6 姿态判别准则Fig.6 Attitude judgment criterion
2.3 交互单元
2.3.1 GUI交互模块
GUI图形用户界面由XAML编写。它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言。XAML提供一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,是一种解析性的语言。
2.3.2 语音交互模块
训练者进行训练时,系统会根据训练者动作的标准程度给予纠正提示,包括语音提示,其功能流程见图7。
图7 语音功能流程图Fig.7 Flow chart of voice function
Minnow Board的音频输出通过UWP的Media Element控件实现。Media Element为媒体播放控件,可以控制音频的播放、暂停、停止、音量和速度。程序中预先加载有各项提示语音的音频文件,当训练者完成一个动作后,系统得出纠正提示信息,触发语音播报。此时Media Element控件将选择对应的语音音频进行播放。
2.4 移动终端单元
移动终端单元涵盖APP与云端两个部分,可分为APP模块、服务器模块和第三方接口模块[9-10]。主要实现用户管理、计划生成、数据保存和提供第三方接口等功能。
3 结语
本文提出一种基于“互联网+”和多源信息融合技术的智能健身教练系统的设计和实现方法。基于多通道传感信息,设计姿态校正算法,克服单一图像传感器信息不完整的缺陷,保证姿态校正的准确性;该系统既能有针对性地给出科学的健身计划及营养计划,也能够实时检测健身动作是否正确并实时进行语音、图像纠正提示,引导使用者做出正确的动作,在一定程度上完成私人教练的全部职责;另外,也可用于减肥、康复等。