APP下载

高精度高灵敏体感空中鼠标的发射端设计*

2018-03-01,,,

单片机与嵌入式系统应用 2018年2期
关键词:欧拉角体感接收端

,,,

(大连东软信息学院 电子工程系,大连 116000)

引 言

体感技术[1-2]可以使人们很直接地使用肢体动作,身临其境地与周边的装置或环境互动,而无需使用任何复杂的控制设备,为生活工作带来新的体验和方便。近年来,体感技术已经应用到了3D虚拟现实、体感游戏、运动监测、健康医疗照护等领域,具有一定的经济和市场前景,因此无线体感设备也成为当下的热点研究方向,如何实时并准确地捕捉用户肢体动作是体感技术研究的重点和难点。

本文围绕体感空中鼠标进行研究,具体介绍了发射端的设计与实现过程。发射端采集人体手部姿态数据,并利用无线通信及USB通信协议将侦测到的手部动作传输至个人电脑,实现鼠标的功能。通过机械制图及3D打印机制作贴身的“手套式”外壳,彻底摆脱了鼠标必须在桌面上才能使用的操作模式。相比其他手部姿态解算方法,本文提出的方案精度更高、运算速度更快、运行更稳定、体感效果更好,这是本研究的创新之处。

1 体感空中鼠标整体设计方案

体感空中鼠标分为发射端和接收端两个部分。发射端以STM32F103C8T6作为处理器芯片,采集MPU6050传感器数据,完成手部姿态分析,通过nRF24L01无线模块将数据发送到接收端。接收端由STM32F103ZET6处理器、USB转换串口芯片及无线模块组成,接收端处理器对收到的无线数据进行处理后,通过USB协议发送至电脑等智能终端,完成鼠标光标移动、线控按键点击及滚轮等功能。整体结构框图如图1所示。

图1 体感空中鼠标整体结构框图

本文主要介绍体感空中鼠标发射端的信息采集处理和无线数据发送功能实现过程,具体包括3个方面:发射端硬件电路设计、发射端软件程序设计和功能验证实验。

2 空中鼠标姿态解算原理

目前体感技术按照体感方式[2-3]与原理的不同,主要可分为三大类:惯性感测、光学感测以及惯性及光学联合感测。惯性感测主要是以惯性传感器为主,例如用重力传感器、陀螺仪以及磁传感器等来感测使用者肢体动作的物理参数如加速度、角速度以及磁场。再根据这些物理参数来求得使用者在空间中的各种动作。综合分析三类体感方式、鼠标功能和应用场合,本设计选择惯性感测方式对STM32处理器进行编程,完成姿态解算。

2.1 MPU6050六轴传感器姿态解算

目前描述空中姿态[4]的方法可简单地分为3类:欧拉角法、方向余弦法和四元数法。欧拉角法在俯仰角为90°时,方程式会出现万向轴锁[5](Gimbal Lock)问题,所以欧拉角法只适用于水平姿态变化不大的情况,而不适用于全姿态飞行器的姿态确定。

方向余弦法虽避免了欧拉角算法的问题,但计算量大、工作效率低。

四元数法可以很好地解决万向轴锁问题,并且只求解四个未知量的线性微分方程组,计算量小,易于操作,是比较实用的工程方法,本设计即采用四元数法计算得到欧拉角,并加入校正算法完成空中鼠标姿态解算。

MPU6050是内部集成了陀螺仪和加速度计的六轴传感器[1],封装空间大大减小,成本较低,市场应用广泛。本设计使用MPU6050内部集成的数字运动处理单元直接运算出四元数,再经过数学公式旋转变换运算,求出欧拉角法中的x,y,z轴上的旋转角度以及横滚角roll、俯仰角pitch和航向角yaw。

2.2 四元数到欧拉角的变换运算

在三维空间中的旋转可以用四元数的复数形式[6]来描述为:

Q=q0+q1i+q2j+q3k(1)

导航坐标系为n系,运载体机体轴坐标系为b系,由欧拉角描述的方向余弦矩阵[7]可以用四元数描述为:

(2)

设运载体横滚角为γ,俯仰角为θ,航向角为ψ,则3次基本旋转的坐标变换为:

(3)

(4)

θ=sin-1(T32)(5)

将DMP运算输出的四元数存放到数组quat[4]中,并利用上述运算公式,采用q30格式转换成浮点数(#define q30 1 073 741 824.0f),再经过综合运算得到欧拉角。具体运算部分程序代码如下:

float q0=1.0f,q1=0.0f,q2=0.0f,q3=0.0f;

q0 = quat[0] / q30;

q1 = quat[1] / q30;

q2 = quat[2] / q30;

q3 = quat[3] / q30;

*pitch = asin(-2×q1×q3 + 2×q0×q2)×57.3;

*roll = atan2(2×q2×q3 + 2×q0×q1, -2×q1×q1-2×q2×q2 + 1)×57.3;

*yaw = atan2(2×(q1×q2 + q0×q3),q0×q0+q1×q1-q2×q2-q3×q3)×57.3;

2.3 互补滤波校正算法

传感器在静态测量中较为精准,但在动态运动中加速度计会产生较大的噪声,传感器产生微小的偏差和漂移会造成一定的积分误差,这样的积分误差会带来欧拉角数据的漂移。所以,速度计需要使用高通滤波器,滤除陀螺仪的低频噪声,不能单独使用 MPU6050的加速度计或陀螺仪来得到倾角,需要互补校正。

根据传感器特性建立互补滤波器,使用低通滤波器消除最终融合后输出较为精准的角度值。其算法[8]为:

anglen=K1×angle_m+K2(anglen-1+angle_dot×dt)(7)

其中,anglen和anglen-1分别为第n次和第(n-1)次滤波后得到的角度;angle_m和angle_dot分别为当前采集获得的加速度值和角速度值;K1为低通滤波系数,K2为高通滤波系数,在程序调试过程中调整至最佳值;dt为采样时间系数。经测试对比,最终K1、K2分别取0.02和0.98。对于3个倾角:横滚角、俯仰角和航向角,均使用互补滤波算法进行校正,从而减小积分误差,进而减少漂移误差。

3 发射端硬件电路设计

发射端的硬件电路主要由微处理器模块、传感器模块、无线模块、供电模块、和按键模块构成,其电路原理图如图2所示。其中,微处理器模块STM32F103C876的PC14和PC15两个引脚连接单独的时钟电路可实现低功耗设计;传感器模块直接将MPU6050及外围支持电路设计到电路上;无线模块接口直接设计至板子边缘位置,方便模块插接;供电模块设计包含电容滤波及指示灯电路;按键模块设计了五向按键用于对显示屏进行控制,接有上拉电阻,软件编程去抖,同时设计了线控按键,套在手指上实现鼠标点击动作。接收端主要由现有的微处理器模块和无线模块构成。

图2 发射端硬件电路原理图

为了实现体感概念中的人体功能学要求,简化了发射端的电路原理图设计,元器件封装也选择小型表贴式以实现小巧轻便的效果。STM32芯片的封装为QFP方型扁平式封装;MPU6050为QFN封装,尺寸为4 mm×4 mm×0.9 mm,使得发射端的体积大大减小;选用工业级小型nRF24L01模块尺寸为19 mm×12 mm,插入电路板表面,该模块功耗低,等待模式电流仅为22 μA,有效传输距离达10 m。由于选择的芯片功耗低,电路板的供电电池选择小型锂电池胶装至板背面,可以反复充电使用。经过PCB布局和布线,发射端的电路板尺寸仅为35 mm×35 mm,其3D视图如图3所示。

图3 发射端电路板3D视图

4 发射端软件设计

发射端的软件设计主要是实现MPU6050传感器数据采集处理和无线数据发送功能两部分。使用软件I2C通信方式对STM32进行编程,实现对传感器MPU6050的寄存器配置和读取数据。将MPU6050的量程配置成±2 000°/s,灵敏度为16.4 LSB°/s。

将加速度配置为±2 g,灵敏度是 16 384 LSB/g,当鼠标在空中保持垂直状态时,即与y轴垂直,y轴上的加速度是1g,其他两轴上的加速度接近于0,此时读取y轴数据为16 384。其他轴也可如此测试。使用DMP和数学公式运算获得四元数和欧拉角[9-10],由这些参数解算出手部姿态,并使用互补滤波算法[11]对姿态数据进行校正后再发送至无线模块。使用硬件SPI通信方式对STM32进行编程,配置nRF24L01无线模块芯片的寄存器参数。传感器数据采集部分程序流程如图4所示。

图4 传感器数据采集程序流程图

nRF24L01是单片射频收发芯片,工作于2.4~2.5 GHz ISM频段[2],芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。nRF24L01的工作模式有4种:收发模式、配置模式、空闲模式和关机模式。其中收发模式又分为ShockBurst TM收发模式和直接收发模式两种。nRF24L01的工作模式由PWR_UP、CE、TX_EN和CS3个引脚决定,通过编程设置上述引脚值确定工作模式。

本设计只使用ShockBurst TM收发模式进行数据的传输。收发模式下,nRF24L01自动处理字头和CRC校验码。当接收数据时,自动把字头和CRC校验码移去。当发送数据时,自动加上字头和CRC校验码,当发送过程完成后,微处理器通过读取相关数据引脚值获得数据发射完毕信号。无线模块发送数据程序流程如图5所示。

图5 无线模块发送数据程序流程图

5 功能验证实验

为了验证体感空中鼠标的功能,设计了功能验证实验。实验过程如下:

① 将发射端戴在手上随机运动,发射端会将空中鼠标的运动数据通过无线通信发送至接收端。

② 接收端通过USB口连接PC机,打开串口,利用四轴上位机观察接收端接收到的数据波形,如图6所示。

图6 空中鼠标运动数据波形图

③ 将每一次运动产生的陀螺仪x,y,z轴的数据波峰或波谷值,填入表1空中鼠标接收端运动数据表。图6中的三条波形曲线的纵坐标显示了陀螺仪x、y、z轴的读数,定义为GYROx、GYROy、GYROz,横坐标代表采集的第几个数据;波形显示了发射端的每次运动产生的数据变化。

④ 同时,在保证陀螺仪数据稳定不变的情况下,通过上位机的“飞控状态”实时观察鼠标的空间运动3D模型图,并每隔1分钟测量一次欧拉角数值,测量10次,填入表1中。然后进行下一轮实验,改变陀螺仪位置,直至稳定后,记录陀螺仪x、y、z轴数值,再次每隔1分钟测量欧拉角值,测量10次。重复10轮实验过程。最后统计分析计算找出10轮实验中最大的漂移误差。

表1 空中鼠标接收端运动数据表

从图6中取出前4轮实验的第1次欧拉角的测量数据,以此为示例,展示鼠标的空间运动3D模型图,以及欧拉角(roll:横滚角、pitch:俯仰角、yaw:航向角)的变化,如图7所示。

图7 空中鼠标运动3D模型图及欧拉角计算结果

通过上述10轮实验,每轮记录10次运动数据,实验过程中无线数据收发稳定,没有出现丢包现象;每次手部运动,上位机3D模型都能跟着手部运动实时显示运动方向和幅度情况,运行稳定。分析计算结果得出空中鼠标精度和漂移误差:横滚角精度0.1°,漂移误差小于0.05°,范围-180°~+180°;俯仰角精度0.01°,漂移误差小于0.05°,范围-90°~+90°;航向角精度0.1°,漂移误差小于0.12°,范围-180°~+180°。以上结果表明本文采用的姿态解算方法具有较高的稳定性和准确性,实验结果验证了体感空中鼠标的方案的可行性,具有很好的工程应用价值。

结 语

本文设计并实现了一种稳定性高、准确率高、易操作的体感鼠标发射端,相比光学检测手部姿态法,此方法计算量更小、速度更快、精度更高。此外,为了实现体感空中鼠标的产品化设计,使用Rhinoceros软件绘制出发射端外壳的3D模型机械图纸,再使用3D打印机打印出外壳。经过装联后用户便可将空中鼠标实物佩戴在手背上,将线控按键套在手指上实现鼠标单击和双击功能,与电脑进行人机交互,使用方便灵活,用户体验效果良好,发射端外壳的机械制图和实物照片如图8所示。

图8 发射端外壳3D打印机械制图和实物照片

[1] 胡馨月. 体感交互技术[M]. 北京:光明日报出版社,2013:43-56.

[2]WuQ,LiXR,WuGS.InterfaceDesignforSomatosensoryInteraction[C]//ProceedingsoftheThird InternationalConferenceonDesign,UserExperience,andUsability.UserExperienceDesignforDiverseInteractionPlatformsandEnvironments(DUXU2014)-Volume8518:794-801.

[3] Yin L, Dong M, Duan Y, et al. A high-performance training-free approach for hand gesture recognition with accelerometer[J]. Multimedia Tools and Applications, 2014,72(1):843-864.

[4] 李志军,时继潮,石磊.LPC1227的智能无线体感鼠标设计[J].单片机与嵌入式系统应用,2015(4):60-63.

[5] 刘强. 四旋翼飞行器控制系统的研究[J].科技通报,2016,32(4):121-125.

[6] Wang Zhenhuan, Chen Xijun, Zeng Qingshuang. Comparison of strapdown inertial navigation algorithm based on rotation vector and dual quaternion [J]. Chinese Journal of Aeronautics, 2013,26(2): 442-448.

[7] Li Xingcheng, Zhang Shuangbiao. A Real-Time Structure of Attitude Algorithm for High Dynamic Bodies[J]. Journal of Control Science and Engineering, 2017(1):5-9.

[8] 吉一纛,潘汛,郭玉坤,等.四旋翼飞行器系统硬件平台设计与实现[J].计算机工程与设计,2016,37(1):76-80.

[9] 陈莉莉. 三轴陀螺仪的空中鼠标定位算法研究[J]. 信息与电脑,2015(1):57-59.

[10] 朱明茗,景红. 基于体感技术的手势追踪与识别[J].计算机系统应用,2014,23(8):228-232.

[11] 高杉,叶强,戴建松. 在人体运动测量中应用四元数扩展卡尔曼滤波[J].现代电子技术,2012,35(20):101-104.

高菲(讲师),主要研究方向为嵌入式系统开发、数据挖掘技术;刘龙(副教授),主要研究方向为嵌入式控制系统开发;鞠尔男(讲师),主要研究方向为虚拟制造、机电一体化设计。

猜你喜欢

欧拉角体感接收端
基于扰动观察法的光通信接收端优化策略
体感交互技术在脑卒中康复中的应用
顶管接收端脱壳及混凝土浇筑关键技术
一种设置在密闭结构中的无线电能传输系统
基于多接收线圈的无线电能传输系统优化研究
人体体感感知机械手设计与实现
非触控式的体感机械臂交互控制系统研究
从CATIA位置矩阵求解欧拉角的计算方法分析
一种基于EGI和标准人脸模板的三维人脸点云拼合算法
体感语境下的交互行为设计