APP下载

基于JY-901和Cocos2d-x的游戏健身设备

2018-02-25齐胜旺王华毕章可嘉陈思卫颖范家新

电子技术与软件工程 2018年12期
关键词:下位上位蓝牙

齐胜旺 王华毕 章可嘉 陈思 卫颖 范家新

摘要 本文提出了一种基于九轴加速度传感器JY-901和Cocos-2dx的游戏健身方案,通过蓝牙将JY-901采集的人体行为数据传送到Android端,并在Android端进行人体行为识别、处理,从而控制游戏进行。本方案将人体运动与游戏相结合,以游戏的方式帮助人们健身,解决了常规运动枯燥的问题,有助于对推动全民健身。

【关键词】游戏健身 加速度传感器 Android游戏 Cocos2d-x 人体行为识别 机器学习 JNI技术 LIBSVM

现代社会生活节奏加快、运动成本增加,使得增强运动的趣味性成为了促进全民健身的重要课题。体感技术也称人体动作感应控制技术,是由机器通过感应器对用户的动作进行辨识、解析,并按照预定感测模式作出反馈的人机交互技术。体感游戏使用户摆脱鼠标和键盘等传统媒介,可简化计算机复杂操作,增强人机互动性,有效提升个体在游戏中的置入感和沉浸感,能够帮助用户达到最优化的健身效果。本文实现了一种基于JY-901和Cocos2d-x的游戏健身方案,可以根据JY-901获取的人体数据进行人体行为识别从而实现游戏交互,以达到游戏健身的目的。

1 系统设计

系统由下位机和上位机组成,使用时打开下位机电源并将其放置于人体的某一位置,如手腕,然后打开安装了配套游戏软件的Android设备的蓝牙开关,接下来打开游戏软件并连接下位机。游戏过程中只要通过运动放置了下位机的肢体即可完成游戏。下位机主要由人体动作数据获取模块和数据传输模块两部分组成,负责人体数据的获取和发送。上位机主要由人体行为识别模块和游戏模块两部分组成,用于识别人体动作并实现游戏交互。系统框图如图l所示。

1.1 下位机设计

下位机主要分为人体动作数据获取模块和数据传输模块两大模块。人体动作数据获取模块用于获得运动肢体的加速度数据;数据传输模块可以将数据获取模块获取到的数据通过蓝牙传输给上位机。

1.1.1 人体动作数据获取模块

人体动作数据获取模块采用了高精度九轴加速度传感器模块JY-901。该模块基于Cortex-M内核处理器,采用高精度MEMS传感器,加速度的最大量程远远高于人体动作水平,可达士1 6g,最低可识别6.le-5g,保证了人体动作识别的精度。其内部还实现了姿态解算器和卡尔曼滤波算法,很好地解决了Z轴漂移问题,在运动时能够准确地直接输出加速度、角速度、角度等数据的数字信号。回传速率可更改,本文设置为200Hz。该模块还具备超低功耗的特点,工作电流约为20mA,供电电压为3-6V,可直接使用3.7V锂电池供电,足以满足要求。

1.1.2 数据传输模块

数据传输模块采用HC-08来实现将JY901的数据发送给上位机。该模块基于蓝牙4.0协议,可根据需求利用AT指令进行串口波特率等参数的更改。在空旷环境下,该模块可以和配备了蓝牙模块的设备实现80米远距离通讯,完全满足需求。

JY-901获取到的数据通过TTL发送给HC-08,HC-08通过蓝牙发送给上位机,以便上位机处理。

1.2 上位机设计

上位机即Android设备,该部分主要分为人体行为识别模块和游戏模块两大模块。人体行为识别模块可以通过蓝牙获取到下位机的人体行为数据,然后通过处理这些人体行为数据来识别出人体行为。游戏模块可以根据识别到的人体动作触发游戏,实现人机交互,达到游戏健身的效果。

1.2.1 人体行为识别模块

人体行为识别部分采用Java編写,在软件被打开后请求用户打开设备蓝牙并配对下位机,配对完成后创建一个蓝牙服务以实时获取来自下位机的加速度等数据。在游戏过程中,人体行为识别模块根据获得的模型对实时人体行为数据进行识别,当识别到特定的人体行为时通知游戏主进程,发送识别到的人体行为,触发特定的游戏交互。

由于对于线性不可分的情况,支持向量机通过使用非线性映射算法,将低维输入空间特性不可分的样本转化为高维特征空间使其线性可分,从而使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为了可能。故而本文采用LIBSVM作为分类器。所以人体行为识别的主要步骤为训练集数据构建,训练人体行为识别模型,获取实时人体行为数据,使用训练出来的模型来识别人体行为。为了方便绘图,本文人体行为识别算法使用MATLAB进行说明,原理与Java相同。

本文使用的传感器回传频率为200Hz,实测每秒钟可获得180-190条数据,为了计算方便,本文以数据行数作为时间单位。本文以摆臂动作和打拳动作的识别为例。经过测量,打拳(图2)和摆臂(图3)完整动作时间基本为40行数据和120行数据。又因为单条数据在人体动作识别中的作用有限,且受限于上位机性能、电源,难以实现对每条数据的实时处理,所以本文在特征提取过程中截取每40条数据作为一个整体进行处理,并设置每个相邻整体按50%重叠。在采用了该技术后人体行为的周期约为O.lls,即动作发生后最多O.lls,系统就能够进行识别,完全满足本文需求。

1.2.1.1 构建训练集数据和标签

(1)数据采集:因为JY-901内部已经实现了姿态解算器和卡尔曼滤波算法,所以不必进行滤波,可以直接进行信号特征的提取。获取摆臂和打拳等肢体动作数据时,可以将加速度传感器置于手腕背部,手心朝下手背朝上时传感器的Z轴负方向与重力方向相同,Y轴方向与手臂保持平行。获取到的每行数据格式为ax,ay,az,wx,wy,wz,部分数据如下图4,左边7个为打拳动作,右边8个位摆臂动作。

(2)构建训练集数据:将步骤(1)获取到的数据按照每40条数据一个整体,每个相邻整体按50%重叠进行处理。将每个整体按照ax,ay,az,wa,wy,wz的顺序分别求均值、标准差、偏度、峰度,并将求得的值存放于大小为24X1的矩阵中作为一条数据。将步骤(1)获得的所有数据进行如上处理,即可完成训练集数据的构建。

(3)构建训练集标签:由于人体行为识别使用监督式学习算法,所以需要人工给数据加入标签。本文将所有行为区分为打拳、无动作和摆臂,分别用.5、O和5来表示。由于训练集大部分数据为无动作,故而可以初始化所有标签为O,并根据训练集数据实际情况调整数据标签。在调整好标签后,将包含标签的数据也绘制出来,如图5所示。

1.2.1.2 训练人体行为识别模型

LIB SVM提供了一个训练模型的函数:svmtrain。该函数前两个参数分别为上边获取到的训练集数据和标签,在第三个参数中设置SVM类型为C-SVC,核函数类型为RBF函数。另外,还需要设置当前训练集的最佳参数C和g以提高识别率。通过使用GirdSearch可以获得本文最佳参数C为1.7411,最佳参数g为0.0039。

构建完人体行为识别模型后可以采用交叉验证等方式来测试模型准确度。本文选用最佳C和g后,在交叉验证参数为3时,准确度约为83%,可以满足本文需要。

1.2.1.3 构建实时人体行为数据

构建实时人体行为数据矩阵与构建训练集数据时类似,将实时获取的人体数据每40条数据按照ax,ay,az,wa,wy,wz的顺序分别求均值、标准差、偏度、峰度,并将求得的值存放于24X1的矩阵中作为一条数据,并将其用于识别动作。每获得一次矩阵就进行一次识别。

1.2.1.4 识别人体行为

在获得模型后,只需要将每一条24X1的人体行为数据矩阵使用svmpredict函数来预测即可判断其分类。测试识别效果如下图6,前六个为打拳,后四个为摆臂,可见此模型能够很好地识别人体行为。

1.2.2 游戏模块

游戏部分主要通过修改基于开源游戏引擎Cocos2d-x的开源游戏《Flappy Bird》(下坠的小鸟)来实现。Cocos2d-x是一款基于MIT开源协议的跨平台游戏引擎,支持Lua、Javascript和C++语言开发。游戏部分主要使用C++来实现。但是因为游戏需要使用系统蓝牙来获取人体行为识别部分数据,所以在Android平台下的人体行为识别模块可以使用Java来实现,并且可以通过运用JNI技术(即Java Native Interface)来完成函数互调。实现在人体行为识别模块识别到打拳或摆臂动作时触发游戏中角色跳跃动作。

2 游戏运行测试

游戏测试采用黑盒测试,测试环境为Android M,主要进行功能和性能两方面的测试。首先,打开游戏进行蓝牙设备的配对.然后,进入游戏界面点击开始游戏,通过运动肢体来实现控制游戏进行;最后,查看游戏得分并选择继续或退出。测试过程中,游戏各项指标均为正常,运行效果良好。部分运行图如图7-12。

3 结论

本文实现了一种基于JY-901和Cocos2d-x的游戲健身方案。本方案利用九轴加速度传感器JY-901获取人体行为数据,对数据进行处理后,使用LIB SVM识别出人体行为,并根据人体行为触发游戏交互,实现了通过运动来控制游戏的目标。本方案不但提高了游戏的娱乐性,而且可以在游戏的同时实现健身,增强了运动的趣味性,有利于促进全民健身,具有一定的实用价值。

(通讯作者:王华毕)

参考文献

[1]徐云,季灵芝,体感游戏在孤独症儿童干预中的效用[J].中国临床心理学杂志,2016 (04): 762-765+761.

[2]衡霞,王忠民,基于手机加速度传感器的人体行为识别[J].西安邮电大学学报,2014 (06):76-79.

[3]Hsu C-W, Chang C-C, Lin C-J.Apractical guide to support vectorclassification[R]. 2013.

[4] Chang C-C,Lin C-J. LIBSVM:A libraryfor support vector machines [R]. 2013.

[5] cocos2dx实例开发之flappybird [EB/OL],ht tps: //blog. csdn. net /u0122 34115/article/details/40487557.

[6]沈晨,谢璨,基于Cocos2d-x引擎的跨平台跑酷类手游的设计与实现[J].电脑知识与技术,2017 (29): 46-47+57.

[7]许晓宁.Java Native Interface应用研究[J].计算机科学,2006 (10): 291-292+295.

[8]张海藩软件工程导论[M].北京:清华大学出版社,2008:152-179.

猜你喜欢

下位上位蓝牙
蓝牙音箱的直线之美
发射机房监控系统之下位机
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
特斯拉 风云之老阿姨上位
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
紧急:蓝牙指尖陀螺自燃!安全隐患频出
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
景洪电厂监控系统下位机数据传输网络改造
以新思路促推现代农业上位