一种基于手势识别的智能设备控制系统的设计
2017-07-12邓巧茵陈婷华刘少江王凤万智萍
邓巧茵+陈婷华+刘少江+王凤+万智萍
摘要:提出一种能够通过识别人的手势动作进而对家电设备进行控制的系统,改进现有的智能家居控制方式。设计采用MPU6050姿态传感器采集并处理人体手部动作信号,结合低功耗蓝牙4.0模块实时将信号传送至STM32微处理器,然后STM32通过对获取信号的解析发送相应的命令控制家电设备的工作状态。经测试结果表明,系统运行稳定,实时性好,可靠性高,能够有效识别人体手部的动作,具有一定的实用性价值。
关键词:手势识别;MPU6050传感器;蓝牙4.0;STM32;智能家居
中图分类号:TP274 文献标识码:A
Abstract: A system that can control the household appliances by recognizing the gesture of human is proposed,which improved the existing smart home control method. This design uses the MPU6050 attitude sensor to acquisition and processing of human hand movements signal, combined with low power Bluetooth 4.0 module to real-time transmitted signal to the STM32 microprocessor, the STM32 then obtain signal analytical and send corresponding commands to control the household electrical appliance. The test results show that the system has stable operation, good real-time performance and high reliability. It can effectively identify the human hand movements, which has a certain practical value.
Keywords: Gesture recognition;MPU6050 Sensor;Bluetooth 4.0; STM32; Smart Home
0 引言
现有的家电设备控制方式可以大致分为设备自身开关控制、遥控器控制、移动终端控制、语音控制等,而科技的不断进步和人们生活质量的提高,设备控制的便捷性和通用性更加得到人们的关注。人的肢体动作是最直观、最自然、最灵活的交互方式[1],通過手部的动作直接与设备进行交互,免除了终端设备的使用,真正解放了人的双手,使得在控制家电设备时实现更自然的交互模式。
目前,手势识别主要分为两大形式,第一种是基于图像实现手势动作的识别,由于人的手部姿态较为复杂,肢体动作具有多样性和差异性[2],通过摄像设备对手势动作进行捕获只能够局限在特定的范围内,受环境、光线、颜色等影响较大,对设备的使用具有严格的要求[3];第二种是基于微惯性传感器实现手势的识别,通过获取手部的姿态信号,与手势库进行匹配,即可确定该手势动作对应的信息,能够在较大的范围内使用[4]。
随着微机电系统和计算机技术的不断发展,推动了可穿戴设备的研发,微型化、低功耗的MEMS惯性传感器能够嵌入到各类设备中[5],为手势识别提供了实现的环境。本文采用整合了三轴加速度、三轴角速度、三轴姿态角的MPU6050模块搭配低功耗蓝牙模块对人的手部动作信号进行采集并进行相应的运算处理,然后通过蓝牙模块把信号发送至STM32微处理器进行模数转换,完成手势比对并发送对应的命令给家电设备实现手势的控制。
1 系统的总体设计
系统的设计总共分为手势分析、无线传输、设备控制三大部分,如图1所示。
手势分析部分包括Arduino Nano、MPU6050传感器模块和蓝牙模块,对电路进行连接后制作成类似手表的模型,用户佩戴于手腕上即可开始进行操作。MPU6050传感器采集手
势的信号后在其内部进行姿态解算,并配合动态卡尔曼滤波算法,能够在动态环境下通过蓝牙发送当前准确的姿态信号。
无线传输部分采用的是短距离无线通信技术中的蓝牙技术,其工作在无需申请的2.4GHz频段内,能够在10m的范围内实现手势信号的接收和发送、设备之间的通信、微处理器实现指令的发送等功能。
设备控制部分包括STM32微处理器、蓝牙模块、继电器等,手势信号通过蓝牙的无线传输,发送到STM32进行手势的配对,经过模数转换后得到控制命令,微处理器把命令发送到设备实现对应手势的状态控制。
1.1 MPU6050模块
该模块负责对用户的手势信号进行采集,其体积为15.24mm*15.24mm*2mm,能够方便地佩戴在用户的手腕部位,当传感器检测到手势发生变化后,能够实时将获取的手势信息通过蓝牙模块发送到微控制器实现后续的处理。
考虑到硬件开发的简便性,选用该模块能够通过串口输出数据,免除了使用I2C协议的开发过程,同时,该模块内部自带稳压电路,能够兼容3.3V/5V的嵌入式系统;而且保留了I2C接口,方便用户进行开发模式的选取;模块内部采用先进的数字滤波技术,能够有效降低环境的噪声,提高测量精度;其内部集成了姿态解算器,再配合动态卡尔曼滤波算法,就能动态输出当前姿态,测量精度高达0.01度,数据输出频率在比特率为115200下达到100Hz;MPU6050传感器模块如图2所示,图3为模块与单片机的电路连接示意图。
从图中可看出,MPU6050传感器模块的轴向为X轴向右,Y轴向上,Z轴垂直纸面向外;按照右手法则对旋转方向进行定义;该模块Z轴方向角没有绝对的参考,以上电时刻的角度为0度,X轴滚转角和Y轴俯仰角是以水平面为绝对参考的,也就是水平放置时为0度。
1.2 蓝牙传输模块
在对手势信号的采集和输出,为了能实现系统的便捷性,低功耗的要求,选用搭载了TI公司CC2541芯片的低功耗蓝牙4.0模块进行无线传输,该模块具有成本低、体积小、功耗低、收发灵敏性高等优点,具有8051内核,其体积为26.9mm*13mm*2.2 mm,工作在2.4G的无线频段。蓝牙模块能够把接收到的数据发送到PC上,在上位机中记录测量的数据,然后通过MATLAB对数据进行仿真[6];同时,微控制器通过蓝牙模块对数据进行接收并发送命令控制相应的设备。
1.3 STM32微处理器
数据处理部分采用意法半导体(ST)公司推出的基于Cortex-M4內核的STM32F4系列高性能微处理器,其主频高达168Mhz,可获得210DMIPS的处理能力,使得STM32F4更适用于浮点运算和DSP处理;STM32F4具有更快的模数转换速度、更低的ADC/DAC工作电压、更多的接口资源,该芯片集成FPU和DSP指令,16通道DMA控制器、3个SPI、2个全双工I2S、3个I2C、6个串口、2个USB(支持HOST/SLAVE)、3路12位ADC、2路12位DAC、1个10/100M以太网MAC控制器以及112个通用IO口等,自带1M字节的FLASH,并外扩1M字节的SRAM和16M字节的FLASH,满足大内存需求和大数据存储的要求。如图4为设备控制部分的硬件设计图。
2 手势识别数据解析
手部动作的识别是系统主要研究的核心,在环境、硬件配置、资金等条件的限制下,如何准确获得MPU6050传感器测量的数据是整个系统的中心,考虑到对家电设备的控制可以简单分为开、关、调节大小等控制操作,因此,本文对手势的设计大致定义为向左、向右、向上、向下、左右旋转等几个基本动作[7]。
2.1 手部动作的分析
手势分析部分佩戴于用户手腕部分,如图5所示,姿态角解算时所使用的坐标系为东北天坐标系,正确佩戴模块后,以手腕为中心,向右为X轴正方向,向前为(手指方向)Y轴正方向,向上为Z轴正方向,欧拉角表示姿态时的坐标系旋转顺序定义为Z-Y-X,即先绕Z轴方向转,再绕Y轴方向转,再绕X轴方向转。滚转角的范围虽然是±180°,但由于坐标轴选择的顺序在实际表示姿态时,俯仰角即Y轴的范围只有±90°,若测得角度大于90°就会转换为小于90°的数值,同时会使X轴的角度大于180°;由于三个轴是耦合的,在大角度的时候姿态角度会耦合变化,比如当X轴接近90°时,即使姿态只绕X轴转动,Y轴的角度也会跟着发生较大变化;而只有在小角度的时候姿态才会表现出独立变化,这是欧拉角表示姿态的固有问题。
在操作的过程中,MPU6050传感器获取三轴加速度数据,由于重力加速度的存在,手部静止时Z轴的加速度等于重力加速度,X轴和Y轴的加速度都为0,以静止时加速度的数值为阈值,当Z轴的加速度数值大于阈值时可以判断是在做向上加速度运动,反之则是在做向下的加速度运动;同理可得当X轴的加速度值大于阈值时,手部向X轴正方向运动,小于时则向X轴负方向运动;Y轴也是如此;至于判断手部是否在做旋转运动,可以根据欧拉角的范围空间进行表示,以静止时的角度为起点,采用标志性的角度作为判别依据,比如旋转到90°时记为垂直方向旋转[8]。
2.2 姿态的计算
2.3 手势的识别
因为模块对手势信号的检测是连续的,所以要在识别手势前找到手势的起始点,并对噪声进行过滤,如图6为手势识别的设计流程。
以加速度信号为例,三个轴向的加速度数据记为(x,y,z),在t时刻的加速度信号记为at=[x(t),y(t),z(t)],在手部运动的过程中固然存在静止的信号,而此时的信号相比运动时信号的幅度小,为了有效的分辨出一个动作的开始和结束,式(10)表示通过门限阈值和信号查分进行数据获取[9],Begin和End分别表示起始和结束的两个阀值(Begin>End),采集n个样本数据进行均值运算,提高算法的准确性:
当ai= 1/n ∑_(t=i)^(i+n)?Δat;ai≥Begin时,表示一个手势的开始,当ai= 1/n ∑_(t=i)^(i+n)?Δat;ai 在进行手势的识别时,滤除信号中相对较低的数据,以此降低精度和灵敏度,简化硬件的运算,再进行平滑滤波的处理,更易于对信号进行特征值的获取[7]。 3 系统的测试 系统的设计是为了改进已有智能家居系统的控制方式,采用手势动作进行识别控制。在戴上含有MPU6050传感器的腕带后,重复做设定好的几个动作,图7为各个动作的波形图。 测试的环境是在室内进行的,处于10的范围内,每一个手势动作先进行训练,获得该动作的特征值,然后反复进行20次的测试,动作完成后与手势库进行识别对比,得到表1手势识别精度,可以看出,向下和向左的识别率最高,其次是向上和向右,而向左向右旋转识别率相对较低。 4 结论 基于手势动作进行家电控制为智能家居带来一种更方便、更友好的操作界面,通过解析手部的动作信号,通过低功耗蓝牙模块的无线传输,由微处理器对数据进行处理最后实现电器的开关等操作,不仅提高了人们的生活效率,省去了通过移动终端进行选择控制的步骤,而且让整个操作的过程更加的自然、便捷。使用手势实现设备的控制不仅仅适用于家居环境中,还能扩展至各种工作、商店、教学等场所中,在手势控制的部分能够添加更多的感知设备,例如能够测量心率、获取睡眠状态、获取步数等人体信息,集成更多的功能。随着人机交互和可穿戴设备技术的不断更新,通过识别手势实现控制具有一定的研究价值和广阔的市场前景。 参考文献: [1] 王原, 汤勇明, 王保平. 基于加速度传感器的大手势集手势识别算法改进研究[J]. 传感技术学报, 2013(10):1345-1351. [2] 谢泽奇, 张会敏. 基于MMA8452Q的肢体动作识别系统的设计[J]. 计算机技术与发展, 2014(2):198-201. [3] 肖茜, 杨平, 徐立波. 一种基于MEMS惯性传感器的手势识别方法[J]. 传感技术学报, 2013, 26(05):611-615. [4] 董玉华, 孙炎辉, 徐国凯,等. 基于ZigBee和加速度传感器的手势识别研究[J]. 传感技术学报, 2013, 26(07):961-965. [5] 刘蓉, 刘明. 基于三轴加速度传感器的手势识别[J]. 计算机工程, 2011, 37(24):141-143. [6] 杜波, 张卓, 刘垚. 卡尔曼滤波在人体姿态检测中的应用[J]. 长春工程学院学报:自然科学版, 2015(3):98-103. [7] 李国峰, 王锦, 张勇,等. 基于MEMS加速度传感器的智能输入系统[J]. 传感技术学报, 2009, 22(05):643-646. [8] 蔡兴泉, 郭天航, 臧坤,等. 基于无线数据手套的手势识别方法研究[J]. 系统仿真学报, 2014, 26(01):72-75. [9] 陈鹏展, 罗漫, 李杰. 基于加速度传感器的连续动态手势识别[J]. 传感器与微系统, 2016, 35(01):39-42.