龙源期刊网
一种以体感技术实现人机交互的PC游戏控制系统
作者:姚晨雨等
来源:《软件工程师》2015年第01期
摘 要:引入最新的健身型体感游戏理念,开发一种感知人体手脚动作的人机交互体感游戏系统,使用压力传感器感应玩家的脚步动作、加速度传感器感应手部动作,并把感应的动作编码成运动指令,发送给计算机处理并显示。最后完成了软硬件调试,系统成功实现了体感交互方式,玩家从中收获了较好的健身性、趣味性和普适性。
关键词:人机交互;体感游戏;压力传感器;加速度传感器
中图分类号:TP391 文献标识码:A
1 引言(Introduction)
从20世纪80年代开始,“游戏与运动相结合”“健身与娱乐相结合”的设计理念开始在各种商业游戏中有所应用[1]。传统的人机交互方式使用键盘和鼠标,机械性的重复相同的动作致使玩家的兴趣越来越低[2],而基于传感技术的人机交互方式将全身动作的感应信号转换为对游戏的控制信号,将电子游戏与健身运动结合在一起。
如今市场上成功的健身型体感游戏种类繁多,如基于摄像头Kinect平台的《Kinect大冒险》[3]等,这些设备大都价格昂贵,且需要专门的游戏主机。本文的设计目的是以低成本、适用广为特点,为基于键盘操作的电脑小游戏提供体感交互式的控制模式,系统采用压力传感器和加速度传感器,分别感应玩家腿部和手部动作,而不仅仅只有一个手部遥控装置[4],玩家能够获得全身性的运动。
2 系统方案设计(Project design)
本系统包含三个部分:传感器单元、数据采集处理单元和控制显示单元。数据采集处理单元使用三块51单片机,将加速度数据与压力数据分开处理,并实现了玩家手部加速度装置的无线化。整体框图如图1所示。
本系统基于传统的横版过关类游戏,按照常规键盘操作方式使用方向键或其他按键,人物可以前后移动或向上、向前、向后跳跃;人物的手部运动只有一种,其功能视具体游戏而定,在本装置中一律按挥拳攻击处理。 龙源期刊网
系统使用一个压力感应装置感应玩家的脚步命令动作,该装置有五个区域如图2所示,每个区域下面安装一个压力传感器-广测YZC-1B,其中C区代表“原地”方向,玩家在这个区域跳一下,上位机游戏的人物原地跳一下;A和B区分别是“前进”方向的左右脚摆放位置,玩家在这个区域原地跑或向上跳跃,游戏人物向前进或者向前跳;D和E区分别是“后退”方向的左右脚摆放位置。
系统使用一个无线手环感应人的手部动作,玩家向前大幅度挥拳时,游戏人物做出手部动作。手环由一个加速度传感器ADXL345[5]、射频发送模块NRF24L01/NRF24L01+[6]和一块
ST89C52RD单片机构成。
数据采集处理单元以串口通信方式,向PC上位机中的游戏发送控制命令,上位机中的串口模拟键盘程序可以根据串口发来的命令,模拟按键响应,控制电脑游戏中游戏人物的动作,从而实现单片机对电脑游戏的控制。
3 动作判断方法分析(Analysis of motion)
动作判断方法是本系统研究阶段的主要研究内容,判断方法的好坏直接影响系统功能的实现。
3.1 脚步动作判断
在跑步和跳跃时,人的左右脚的动作有紧密联系,设置玩家右脚为主动脚,左脚为从动脚,判断每次的动作都从右脚开始。
以体重50kg玩家的实验数据为例,数据采样频率10Hz,仅采集得到若干特征值,方便对动作的判断,压感装置测量到的并不是真实的质量,玩家静立在压感装置上的测量值为3kg,当玩家在前进/后退区域跑动,左右脚下的称重传感器测量到的数据如图3所示。从静止到跑步再回到静止状态,右脚和左脚的重量交替变化,重量从小幅波动到大幅起落,最低值到0,峰值能够超过静立重量的两倍。笔者的判断方法是:右脚的重量严格超过静立重量的两倍、同时左脚重量为零、待1秒内左脚落下后重量达到静立重量的两倍,则完成一次跑步命令动作。
当玩家在前进/后退区域跳跃,左右脚下的称重传感器测量到的数据如图4所示。每个跳跃动作可分解为起跳、腾空、落地三个过程[7],左右脚重量变化几乎同步,在起跳和落地过程中,传感器分别会测量到一个峰值,达到静立重量的两倍。笔者仅以第一个峰值为准进行判断,判断方法是:右脚重量达到静立重量的两倍、同时左脚重量超过静立重量、待双脚同时腾空使重量为零,则完成一次跳跃,随后在程序中延时400毫秒,避免误判第二次峰值。 龙源期刊网
当玩家在原地区域跳跃,两只脚都在同一个传感器上,跳跃过程中质量变化的峰值更大,但其重量变化曲线的趋势与上文大致相同,判断方法也类似,测量到第一个峰值超过静立重量的两倍即视为一次有效的跳跃,随后延时400毫秒。
以上分析的判断方法,能够正确分辨玩家连续的动作,克服双脚质量变化的不平衡特点[8],并及时做出反应,尽量缩短判断动作所需的时间,减小人机交互中的时延感。
3.2 手部动作判断
玩家手部的加速度传感器数据曲线如图5所示,静止时,三轴加速度大小保持相对稳定。水平X轴、Y轴稳定在0—0.1m/s2,竖直Z轴稳定在1.00m/s2左右(重力加速度)。挥拳时,Z轴加速度仍保持在0.89—1.05m/s2,而X轴、Y轴的加速度变化基本同步,在挥拳挥出时,水平加速度会经历一个变大直至超过1m/s2,然后回落的过程;收回时由于动作平缓,水平加速度虽然也会出现一个峰值,但不会超过1m/s2。由于只需要在一次完整的挥拳动作过程中得到一次有效的加速度判断,故取其峰值范围作为判断依据,在X轴、Y轴中,若有任意一轴加速度大小超过1m/s2,判断挥拳一次。
上述加速度判断方法的合理性在于,取略小于挥出时峰值、而又远大于收回时峰值的数值作为阈值,最大限度地避免收回时被判为又一次挥拳,以及挥出时没有被判断为挥拳的误判状况出现。每次判断所需时间极短,可在短时间内进行多次判断,实时反映运动状况。
4 系统软件实现(Software design)
4.1 单片机程序设计
单片机c是主控器,处理压感的数据,判断脚步动作,并且负责传输向上位机的所有命令;单片机a处理加速度手环的数据;单片机b处理单片机a和单片机c的信息交互。单片机c的程序流程图如图6所示。
单片机初始化传感器和AD模块后,首先给存放静立质量的weight_still变量赋值。蜂鸣器发出提示音,玩家站上压力感应装置的“原地”区域,站稳后,单片机每隔50毫秒获取一个16位数据,共采集100个数值并进行排序,取中心数值计算出静立质量(单位:kg),最后赋给weight_still,蜂鸣器停止鸣叫,玩家开始游戏。单片机不断查询原地、向前右脚、向后右脚的质量,当质量超出阈值,则进入动作判断程序,若判断有动作,则向串口发送相应的命令,命令为一个字节的字符。单片机a的程序流程图如图7所示。
单片机初始化ADXL芯片后,首先向芯片I2C总线发送起始信号,写入设备地址和存储单元地址,随后开始连续读取来自随机存储器的六个地址数据,从中分离出X、Y、Z三轴加速度,分析各轴的加速度,若单片机判断出现了一次挥拳,令输出端口PORT1输出一个值龙源期刊网
KEY=0给无线通讯模块,模块收到KEY0后进行编码,将与之相应的32字节数据串RxData发给单片机b的无线接收模块一次。
接收端收到RxData后对其解码,若解得内容与机内预设的KEY=0时的RxData内容相符,则输出一个低电平给单片机c的外部中断引脚,单片机c进入中断程序后向串口发送挥拳的命令,同时输出一个应答信号ACK反馈给单片机b,单片机b随后将低电平拉高。
4.2 上位机软件设计
上位机软件主要是利用MFC作为框架,进行串口通讯和键盘模拟。
MFC中的MSComm通信控件提供了一系列标准通信命令的接口,可以用它创建高效实用的通信程序。本系统建立基于对话框的MFC程序,设置相应的显示框,在添加MSComm控件的同时添加了CMSComm类,调用相关函数对串口各种参数进行设置,与单片机进行匹配,实现串口通讯。
在普通的键盘输入中,当按下一个键时,Windows操作系统把WM_KEYDOWN或者WM_SYSKEYDOWN消息放入消息队列;释放一个键时,Windows把WM_KEYUP或者WM_SYSKEYUP消息放入消息队列中。Windows提供了一个模拟键盘API函数Keybd_event(),该函数能触发一个按键事件,利用该函数可以模拟一个按键被按下或者松开,从而用软件代替键盘实现键盘消息的发送。
上位机软件接收到单片机发来的命令后,判断命令字符,调用Keybd_event()函数,改变其中虚拟码的键值,模拟不同按键被按下的情况,从而实现模拟键盘的功能,使单片机能够控制游戏中的人物。在软件界面上,玩家可根据不同的游戏,选择需要映射的按键,实现了本系统的普适性。
5 实验测试与结果(Result of experiment)
笔者完成了系统的硬件和软件,系统能够正确地采集到玩家的动作命令,并且及时地使游戏中的人物做出相应动作。测试的游戏包括《超级马里奥》等,本装置目前在体重48—55kg的人群中试验过。系统工作图如图8和图9所示。
6 结论(Conclusion)
本文实现了一种基于多单片机的人机交互体感游戏系统,可以为基于键盘操作的电脑小游戏提供体感交互式的控制模式。文章介绍了装置的硬件实现和软件设计,玩家可以使用身体动作控制游戏人物,从传统的按键操作中解放出来,手部控制器采用无线通讯,使玩家的控制更加自然,提高了原游戏的沉浸感、交互性和趣味性,是对传统按键游戏的升级。 龙源期刊网
参考文献(References)
[1] 刘威.健身类体感游戏的设计策略研究[D].南京师范大学,
2010.
[2] 艾兵.基于FPGA的体感游戏[J].现代电子技术,2014(6):47-50.
[3] 李天逸.全方位体验KINECT游戏[J].电脑迷,2011(5):14-15.
[4] 车力军,孙峰.3G时代体感游戏的发展思考[J].电信技术,2011,
(11):55-58.
[5] 李兴法.数字式加速度传感器ADXL345的原理及应用[J].黑
龙江科技信息,2010(36):2.
[6] 刘志平.基于nRF24L01的近距离无线数据传输[J].应用科技,
2008(3):55-58.
[7] 何浩祥.人体跳跃及落地激励下的楼板动力响应研究[J].振动
工程学报,2013(2):220-224.
[8] 张春林.人体足底受力测试及其分析[J].北京理工大学学报,
2004(7):567-570.
作者简介:
姚晨雨(1993-),女,本科生.研究领域:测控技术.
史韫杨(1994-),女,本科生.研究领域:电子科学与技术.
冷明鑫(1992-),女,本科生.研究领域:测控技术.