引言
长久以来,使用人体自然动作与计算机交互一直是人机交互技术追求的目标之一。目前主流的人机动作交互技术有2种:视频动作识别技术和惯性器件动作识别技术。
前者以Microsoft Xbox 360的Kinect视频感应器为代表,依靠摄像头采集人体动作视频,通过识别算法进行分析,可较准确地识别人体动作,但需要强大的硬件处理能力、复杂的软件识别算法,而且对于多人、高复杂度动作难以识别。后者的代表为任天堂的Wii mote手柄,主要依靠惯性器件反映出肢体的速度、位移及倾斜度。该技术算法简单,识别精度较高,但需要佩戴传感器模块,可能给体验者带来不适。识别动作的复杂度与传感器的数量、精度有关,如Wii mote局限在于仅能感知手部运动,随着传感器使用数量、种类的增加,精度的提高,人体各种快速、复杂的运动都可被精确识别,这是视频识别技术所难以达到的。
本文介绍的设备是使用加速度传感器的无线人体动作信息测量设备,在人体四肢及躯干同时佩戴5组测量设备,准确反映人体各部分动作情况,同时使用无线数据传输方式减少体验者的不适感。
1 测量原理
测量模块放置于人体四肢及躯干,以右手为例。测量模块放置于右手肘关节外侧,根据重力在加速度传感器三轴上的分量,可以计算出传感器坐标系与自然坐标系的夹角,进而得出传感器所在手臂平面与自然坐标系的夹角,根据三个夹角与传感器到肩膀的固定位置,可以计算出传感器所在手臂部位的空间位置。传感器坐标系与自然坐标系夹角如图1所示。
式中Ax为传感器x轴加速度分量,Ay为传感器y轴加速度分量,Az为传感器z轴加速度分量。人体躯干直立,右手微抬时传感器所在手臂与自然坐标系的三个夹角如图2所示。其中右手上白点代表传感器。
2 系统硬件设计
硬件系统由运动测量模块与数据接收模块构成。运动测量模块放置于人体四肢及躯干部位,负责采集加速度数据,并将数据通过2.4G无线方式发送至数据接收端。数据接收模块同时接收5组运动测量模块的测量数据,并通过USB接口与PC机传递数据。
2.1 运动测量模块硬件设计
运动测量模块由ADXL345加速度传感器、nRF24L01无线射频模块、ATmega88单片机和电源模块构成,硬件结构如图3所示。测量模块实物如图4所示。
ADXL345是ADI公司的三轴数字加速度传感器,主要应用于消费电子的微型惯性器件,最大可感知土16g的加速度,感应精度可达3.9mg /LSB,倾角测量典型误差小于1°。通过其内置的ADC将加速度信号转换为数字量存放在片内缓冲区,使用SPI总线读取数据。在实际使用中,为提高输出数据的稳定性,设置感应范围为±2 g,感应精度为3.9 mg,可以满足人体动作加速度范围与精度要求。传感器采样速度在6.25~3 200 Hz之间可调,因为无线发送数据需要时间较长,并且低采样速率可以降低噪声干扰,将采样速度设定在100Hz,即10ms输出1组数据。
控制模块由ATmega88单片机及配套电路构成。ATmega88为8位AVR单片机,在3.3 V电压模式下可以工作于8 MHz,片内拥有8 KB Flash与1 KB SRAM。其主要任务为初始化加速度传感器和无线射频芯片,并从加速度传感器中读取测量数据,将数据初步整理后传送至无线射频芯片。
无线射频模块主要由nRF24L01构成,是一款单片射频收发器件,它工作于2.4~2.5 GHz ISM频段。内置频率合成器、功率放大器、晶体振荡器、调制器等。数据传输速率可达1~2 Mb/s。它可以同时支持6个无线器件的接收,由此实现了1组数据接收模块同时接收5组运动测量模块发送的数据。
电源模块使用低压差线性稳压器件(LDO)SP6201,将锂电池的4.2 V电压降至3.3 V,最大可负载200 mA电流,满足设备需要。
2.2 数据接收模块硬件设计
数据接收模块使用芯片CY7C68013A,片内集成USB2.0收发器、串行接口引擎、增强型8051微控制器,数据的传输率可达到56 MB,最大4 K USB端点缓冲区,时钟频率可达48 MHz。由于CY7C68013A本身并没有硬件SPI接口,同时又需要SPI与无线射频模块通信,实际中使用GPIO口软件模拟4线SPI进行通信。CY7C68013A不断扫描无线射频模块状态,当有接收数据到来时,使用SPI接收数据并通过USB上传给计算机。
数据接收模块硬件结构如图5所示。
3 系统软件设计
软件设计主要包括2个部分,动作测量模块主控制器ATmega88的数据采集及发送部分、数据接收模块控制器CY7C68013A的数据接收及上传部分。
3.1 运动测量模块软件设计
使用ATmega88的定时器控制采样时间,由于已经将ADXL345的输出频率定为100 Hz,这里将程序设定为每隔10 ms进行一次采样,采样后将数据发送至无线射频模块进行数据发送,发送成功后进行下一次采样,否则重新发送。测量模块软件流程如图6所示。
3.2 数据接收模块软件设计
数据接收模块CY7C68013A通过不断查询nRF24L01的中断引脚来检测有无数据到来;当有接收数据到时,使用SPI总线读取加速度信息,判断该数据来自哪个发送端,并将数据存放在相对应的USB端点缓冲区,等待上位机取走。若上位机不取数据,旧数据会自动被新数据冲掉,保证数据的实时性。中央处理模块软件流程如图7所示。
4 实验结果与分析
实验中使用面包板模拟人体手臂进行角度测量实验,因为真实手臂平面有一定弧度,测量模块不同的放置位置对测量结果会有影响,而面包板为规则长方体,有非常平坦的一面可以放置测量模块,并且棱角清晰方便进行倾斜角度测量。在具体实验中,模拟测量模块佩戴在右手肘关节外侧的情况,设计2种测试例。右手向右伸臂的动作,如图8所示。右手向前抬臂的动作如图9所示。
在0~90°范围内2种情况下,三轴测量角度与参照角度比较。表1为模拟右手右伸臂时三轴角度与参照角度比较。表2为模拟右手前抬臂时三轴角度与参照角度比较。由表1、表2可以看出:除个别接近0、90°时误差较大外,大多数角度测量的误差绝对值小于1.5°,与ADXL345官方说明文件的误差小于1°较为相符。
表中负值为传感器坐标轴正方向与自然坐标轴正方向夹角超过90°情况。误差超过1°产生的原因有如下几方面:
①在电源设计时没有为ADXL345的ADC单独设置参考电压源,而是使用VDD系统电源,存在一些纹波干扰,造成误差。
②没有对传感器进行零点标定,水平放置时X、Y轴输出并不为0。
③缺少专业角度测量设备,角度参考图使用普通量角器制作,参考角度与实际角度。
④传感器平面与电路板平面、实验面包板平面不完全重合,存在固定夹角,测量时有误差。从表1的Y轴夹角看出,理论上模拟右手右伸臂时Y轴夹角应一直为0°,但现实中出现了一个转角,使输出逐渐由-1.2°过渡到2.2°。
结语
本文通过使用加速度传感器ADXL345采集人体动作信息,使用nRF24L01无线时频模块发送数据,最后通过USB芯片CY7C68013将数据上传给PC机,并在PC机上实时绘制人体运动动画,构建了一种人体动作信息测量设备。测量身体各部位角度典型误差小于1.5°,满足普通人机交互需要。目前已经根据上述原理制作出样品,PC机上显示人体模型与佩戴测量模块的实际人体动作较为一致,反应灵敏,可以满足快速实时的人机交互过程的实现。在进一步减小输出误差,稳定输出结果后,可以应用于高危环境机器人控制、游戏娱乐等各种人机交互场合。