钟玲玲,吕 腾
(安徽新华学院 a.电子通信工程学院; b.信息工程学院,合肥 230088)
卡尔曼滤波是一种利用线性系统状态方程,通过系统的输入输出观测数据,对系统状态进行最优估计的算法[1]。此算法利用微控制器STM32f103t8u6实时检测姿态传感器,获取陀螺仪、加速度的原始数据,然后利用线性系统状态方程进行最优估计,最终得出最优数据姿态角。解算过程如图1所示。
图1 解算姿态角
算法具体的实现步骤为:
(1)
(2)
(3)
第4步,计算卡尔曼增益:利用(4)式求出卡尔曼增益Kt,其中HT是H的转置,R是测量噪声协方差矩阵。
(4)
(5)
卡尔曼滤波是一种迭代滤波方法。通过对协方差矩阵进行更新,得出最佳估计值的噪声分布,为下一轮迭代所用,从而不断地估算出每一次最优的姿态角[2-3]。
该系统由手势控制模块和手势解析模块两部分组成。手势控制模块主要由微控制器、姿态传感器和无线通信模块构成,通过微控制器实时检测姿态传感器的姿态数据,利用卡尔曼滤波得出最优数据欧拉角,再将欧拉角解算得到的标志位通过无线模块发送出去。手势解析模块,以小车为例,主要由微控制器、电机驱动模块和无线通信模块构成。通过无线通信单元接收标志位,解析出指令,然后和自身设定的指令比对识别,一致则执行相应动作,不一致则不做出任何响应。硬件组成框图如图2所示。
图2 硬件组成框图
微控制器:STM32f103t8u6采用ARM Cortex-M3内核,主频72M,闪存执行代码,STM32功耗36mA,功耗为0.5mA/MHz[4]。其主要功能是实时分析姿态传感器的加速度和角速度数据,通过卡尔曼滤波算法解算出欧拉角,设定欧拉角的临界值,产生标志位,即指令,再由无线通信模块发送出去,从而达到手势控制智能设备的目的。微控制器及与其它单元引脚连接原理图如图3所示。
图3 微控制器及与其它单元引脚连接原理图
无线通信模块:NRF24L01 是 NORDIC 公司生产的一款无线通信芯片,具有价格低廉、信号稳定的特点[5]。具体的无线通信过程为:手势控制器端持续检测手势动作,并不断发送对应手势的指令;手势解析模块始终处于接收状态,分析手势控制端发送的指令,从而做出相匹配的动作。
姿态传感器:MPU6050是InvenSense公司生产的一款六轴传感器,能同时检测三轴加速度、三轴陀螺仪(三轴角速度)的运动数据,具有质量轻、功耗低及性价比高的特点[6]。工作过程是首先将手势分割为若干基本手势,利用姿态传感器采集每个基本手势执行过程中的三轴加速度和三轴角速度信息,将这些加速度与角速度信息经过处理之后,找出手势动作的特征量,不同的特征量对应不同的基本手势动作。
上电开机,首先进行外设初始化,再进行各项flash参数初始化,最后在2ms一次的定时器程序中不断获取标志位,主函数再持续不断地发送标志位即可完成整个手势控制端的发送。控制端程序流程如图4所示。
手势解析模块需要对手势控制器发送的标志位进行判断,若与预设的指令相一致,则执行预设动作,否则无行动。以智能小车为例,假定预设指令手势为“水平上”、“水平下”、“水平左”和“水平右”,手势解析模块会控制电机驱动模块完成相应的“前进”、“后退”、“左转”、“右转”动作。控制小车程序示意图如图5所示。
图4 控制端程序流程图
图5 控制小车程序示意图
手势控制器采用PCB打样,贴片元器件焊接,从而缩小控制器体积,使电路连接性能稳定。手势控制器尺寸长40mm,宽15mm,高5mm,可嵌入到硅胶手环中,增加用户交互体验。手势控制器实物如图6所示。
图6 手势控制器
图7 手势控制小车示意图
下面以小车为例,介绍解析模块。小车采用金属车模底盘,保证了小车在运行时候的结构坚固性。车模上采用12V的直流电机,保证了小车具有强劲的动力系统[7]。将小车放在地面,将电源打开,再将手势控制器打开,将两端无线通信模块进行配对连接,若配对成功即可交互数据。这时,将可佩带手势控制器系于手腕。在做手势动作时,手腕产生加速度与角速度,微控制器处理得到欧拉角,即可产生标志位。
手势识别系统准确率测试:首先,随机选择年龄不同的30位测试者,在一个地面光滑平整的自然环境中,轻松随意地操作戴在手腕上的手势控制器。然后,将小车放在地面上,给小车一定加速度使其处于平衡状态,在不施加外力的情况下,小车将一直保持相对静止状态。最后,要求测试者分别做水平上、水平下、水平左、水平右4种手势,每一种手势20次。手势控制小车示意图如图7所示。
经过计算,水平上的手势识别率为99%,水平下的手势识别率为96%,水平左的手势识别率为93%,水平右的手势识别率为95%,4种手势的平均识别率为95.5%。对于手势识别不正确各种手势识别的准确率不同的情况,主要是因为测试者在操作的时候动作变形、动作幅度太小及突然改变动作等。 手势识别测试结果如表1所示。
表1 4种手势识别的准确率
本文设计了一种基于卡尔曼滤波的手势控制系统,以微控制器STM32f103t8u6为核心,利用卡尔曼滤波算法,完成了手势的检测与识别,实现无需网络即对智能设备的无线控制。通过初步的测试表明,该控制系统能准确地控制智能设备,具有功耗低、操作简单、体积小巧的优点。