基于便携式智能终端的空中鼠标技术研究

2018-04-08 05:46马骏峰
计算机工程与应用 2018年7期
关键词:陀螺仪鼠标姿态

马骏峰,韩 鹏,2

MAJunfeng1,HAN Peng1,2

1.重庆邮电大学 计算机科学与技术学院,重庆 400065

2.重庆市科学技术研究院,重庆 401123

1.College of Computer Science and Technology,Chongqing University of Posts and Telecommunications,Chongqing 400065,China

2.ChongqingAcademy of Science and Technology,Chongqing 401123,China

1 引言

随着科技的发展,像智能电视、电脑这样的大屏智能终端在人们的生活中越来越普及。为桌面电脑设计的WIMP(Window,Icon,Menu,Pointer)交互方式存在了四十多年,但是传统光电鼠标对载体面的依赖使其在某些情况下给用户与计算机的交互带来不便。传统红外遥控器不可扩展,交互不便已经不能满足用户与大屏终端的交互需求。便携式智能终端如智能手机、智能平板等拥有触摸屏、陀螺仪、加速度计、磁强计等微电子机械系统(Micro-Electro-Mechanical System,MEMS)传感器。丰富的传感器和与人密切的相关性使得便携式智能终端为人机交互带来了新的途径。本文基于具有MEMS传感器的便携式智能终端设计空中鼠标系统,实现用户与大屏智能终端的交互。

在目前的研究中,空中鼠标的实现主要有三种:基于陀螺仪的空中鼠标[1-2]、基于摄像头的空中鼠标[3]和基于声波的空中鼠标[4]。基于摄像头的空中鼠标将用户的肢体行为转化为图像,对图像进行处理从而转化为用户的交互意图,实现用户与终端的交互[3]。基于声波的空中鼠标将用户的声音转化为用户的交互意图,实现用户与终端的交互[4];这两种交互方式对使用环境有一定的要求且设备成本比较高,不利于普及。基于陀螺仪的空中鼠标将陀螺仪输出的角速度数值进行积分得到设备的实时倾角,然后将倾角值的变化映射为所要控制的终端上的坐标变化,从而实现对指针的控制[1-2]。文献[5-6]使用十分普及的智能手机来实现空中鼠标,对使用智能手机作为空中鼠标的交互方式进行了研究,虽然文中对陀螺仪的输出值进行处理,但是并没有对陀螺仪的累计误差进行修正,其设计的系统在长时间运行的情况下会受到较大的影响,从而影响用户的交互体验。

低精度的MEMS陀螺仪会随着工作时间的增加而积累误差,从而使整个系统的精度下降。传感器数据的处理一直是研究的热点,文献[7]提出了一种用于MEMS陀螺仪的自适应预测补偿模型,使用支持向量机(Support Vector Machine,SVM)和 χ2统计学的知识,实验证明该方法在系统冷启动100 s后可使陀螺仪进入高精度工作状态,该方法可以有效地改善陀螺仪的累积误差,但是计算量较大。文献[8]使用卡尔曼滤波(Kalman Filter,KF)对MEMS陀螺仪进行滤波,能够较好地滤除信号中的噪声,但是KF需要经过初期的过渡阶段达到稳定状态,且需要不停地进行迭代运算消耗大量系统资源。互补滤波(Complementary Filter,CF)融合陀螺仪、加速度计[9]或者磁强计[10]的数据,可以有效改善陀螺仪漂移的问题。互补滤波计算量小,但是需要其他数据来参与计算。文献[11]使用启发式漂移消减法(Heuristic Drift Reduction,HDR)对线性加速进行处理取得了良好的效果。文献[12-13]使用HDR算法对陀螺仪的随机漂移进行处理,结果证明在参数选择合理的情况下HDR算法可以有效地减弱陀螺仪漂移,但是在陀螺仪运动情况多变的情况下参数难以选择。

便携式智能终端具有多种MEMS传感器,但是其精度有限,本文以搭载MEMS惯性传感器的便携式智能终端为载体设计空中鼠标系统。由于系统载体的MEMS传感器精度有限,需要通过滤波算法处理传感器的输出数据来提高系统的精度和稳定性。卡尔曼滤波在跟踪系统时,需要经过滤波初期的过渡阶段达到稳定状态之后才能具有较好的滤波效果,而用户在使用本文空中鼠标系统时交互意图经常发生变化,卡尔曼滤波算法并不能迅速地跟踪载体的运动状态。互补滤波直接对传感器数据进行处理,不需要经过过渡阶段,更适合本文设计的空中鼠标系统,但是传统的互补滤波在滤波的过程中会引入陀螺仪的漂移误差。因此,本文提出并使用改进的HDRCF(Heuristic Drift Reduction Complementary Filter)对传感器数据进行处理。HDRCF滤波使用互补滤波融合陀螺仪、加速度计和磁强计的输出,针对互补滤波中引入的陀螺仪误差,在互补滤波部分引入HDR算法,并对载体的状态进行判断,将静止状态下陀螺仪的输出作为误差从而动态地更新HDR算法的补偿系数,有效地减小陀螺仪数据的误差。实验表明改进后的算法有效地克服了陀螺仪漂移,提高了空中鼠标系统的定位精度和稳定性,设计的空中鼠标克服了传统鼠标对二维桌面的依赖,可以在空中自由使用。

2 空中鼠标系统设计

2.1 交互映射设计

便携式智能终端具有陀螺仪、加速度计、磁强计等MEMS传感器,通过这些MEMS传感器可以获取到载体的姿态角。用户的动作会使载体在空中的姿态角发生变化,空中鼠标就是将这些姿态角的角度变化进行映射,从而实现用户与终端的交互。本文使用Android智能手机作为载体,设计实现空中鼠标功能。在这里给出Android智能手机的MEMS传感器的世界坐标系,如图1所示,其中,ψ为航向角,ϕ为横滚角,θ为俯仰角。

图1 Android手机MEMS传感器世界坐标系

本系统默认为用户将屏幕朝上,如图1所示,当用户手持载体绕Z轴转动时,ψ角发生变化;当用户手持载体绕X轴转动时,θ角发生变化;当用户手持载体绕Y轴转动时,ϕ角发生变化。为了便于操作,在交互设计方面,本文将ψ角的变化映射为桌面指针的左右移动,其中ψ角的增加为向左偏移,ψ角的减小为向右偏移;θ角的变化映射为桌面指针的上下移动,其中θ角的增加为向上偏移,θ角的减小为向下偏移;ϕ角的变化映射为放大、缩小操作,其中ϕ角的增加为缩小,ϕ角的减小为放大;定义左键、右键和鼠标滚轮来实现完整的鼠标操作。

2.2 系统框架

本文系统使用Client/Server架构,客户端通过无线局域网与服务端进行通信。系统的设计框架如图2所示。

图2 空中鼠标系统框架

为了减少系统的资源消耗量,本文系统中设计一个按钮来监听用户是否使用空中鼠标功能,来开启、关闭传感器的监听器。当系统监听到用户的使用请求时,开始监听传感器数据。系统的交互流程如下:

(1)监听使用者是否点击交互按钮。

(2)如果用户没有点击则返回(1),否则监测手机移动状态。

(3)获取用户在X、Y、Z坐标轴上移动时陀螺仪、加速度计、磁强计的读数。将陀螺仪的读数进行积分得到姿态角1,并对加速度计和磁强计的读数进行解算得到姿态角2;之后将姿态角1和姿态角2通过HDRCF滤波,得到载体在空中的姿态角。

(4)将载体的空中姿态角进行计算映射成为用户的交互数据,用自定义的格式进行封装通过无线局域网传输到服务器端。

(5)服务器端进行数据解析,控制指针移动。

3 传感器数据处理

便携式智能终端的空中姿态角解算是本系统的核心部分,姿态角解算的准确与否直接关系到系统的准确性和稳定性。陀螺仪输出的是角速度,不需要外界的参考,具有良好的动态性,对物体的瞬时角度变化非常敏感。但是,低精度的MEMS陀螺仪的度数包含很多误差,主要包括:零偏误差、温度漂移和随机噪声,这会影响系统的交互体验。其中,零偏误差是陀螺仪开始工作时会产生的一个随机的误差;温度漂移是陀螺仪在工作的过程中随着工作时间的增加而积累的误差;随机噪声则是外界环境对陀螺仪测量的干扰。如图3为陀螺仪在静止状态下以50 Hz的采样频率,采样10 min,X、Y、Z轴输出的角速度数据。从图3中可以看出X轴在静止状态下有-0.019°/s左右的零偏误差,由于温度漂移和噪声的干扰会有0.001°/s左右的幅度,且在运行10 min后误差有进一步增大的趋势;Y轴在静止状态下有0.024°/s左右的零偏误差,在运行过程中误差变化比较稳定;Z轴在静止状态下有0.027°/s左右的零偏误差,且在运行过程中误差变化不稳定。为了提高系统的用户体验,本文系统对陀螺仪的零偏误差和温度漂移进行处理。

图3 静止状态下陀螺仪输出值

3.1 陀螺仪零偏误差处理

陀螺仪在静止状态下的输出数据能够很好地反映出陀螺仪的零偏误差。本文系统在空中鼠标功能启动前取N个陀螺仪的输出数据,求其平均值得到零度偏差的均值,然后将之后陀螺仪的输出数据减去零度偏差的均值得到去除零偏误差后的陀螺仪输出。零偏误差ωzero如式(1)所示,第i次去除零偏误差后的陀螺仪输出ωgyro,i如式(2)所示。

其中,ωj为载体静止状态下陀螺仪第i次采样的输出,ωorg,i为用户使用本文系统进行交互时,陀螺仪第i次采样的输出值,则手机绕坐标轴转动的角度θt如式(3)所示。

其中,Δt为陀螺仪采样周期,θi-1为前一时刻的角度值。

3.2 加速度计、磁强计的角度解算

低精度的陀螺仪产生的温度漂移误差,可以通过加速度计和磁强计解算的角度与陀螺仪解算的角度进行融合[14],从而减小陀螺仪产生的误差,提高系统精度。

二维的加速度倾角测量如图4所示,当物体做加速运动时,物体的倾斜角度α如式(4)所示。

图4 二维加速度倾角测量

同理,在三维空间中载体静止时,加速度计的输出为[0,0,g],当载体处于任意姿态时,若加速度计的输出为[ax,ay,az],则载体的横滚角ϕ如式(5)所示,俯仰角θ如式(6)所示。

在得到横滚角ϕ和俯仰角θ的情况下,当三轴磁强计的输出为[mx,my,mz]时,航向角ψ如式(7)所示。

3.3 HDRCF

陀螺仪对瞬间的角度变化比较敏感,但是长时间工作之后会积累温度漂移,使结算角度具有较大误差。而加速计和磁强计对瞬间的角度变化不敏感,但是在长时间工作之后仍能保持稳定。文献[15-17]利用这些特性,使用互补滤波,克服陀螺仪的累积误差,使其设计的系统能够在较长时间内稳定运行。当前时刻经过互补滤波之后输出的姿态角θcom,i如式(8)所示。

其中,θcom,i-1为上一采样周期经过滤波之后输出的姿态角,ωgyro,i为陀螺仪输出的角速度值,θam为加速度计和磁强计获得的载体姿态角,Δt为采样周期,τ为低通滤波系数。

Borenstein等[11]提出的启发式漂移消减法(HDR)首先判断物体是否处于静止或者沿直线运动的状态,若是则把陀螺仪的非0输出视为随机漂移,并对漂移进行补偿。文献[11-12]使用HDR算法对陀螺仪数据进行处理,均取得了良好的效果,其算法框图如图5所示。第i次采样时,经过HDR算法处理后陀螺仪的输出值wgyro,i如式(9)所示。

图5 HDR算法框图

其中,ωtrue,i为载体的真实角速度,εo为零偏误差,εd,i为第i次采样时的随机误差。在滤除零偏误差后,陀螺仪输出,如式(10)所示。

第i次采样时载体的姿态角ψi,如式(11)所示。

其中,ψi-1为上一采样周期的载体的姿态角,T为采样周期。

经HDR系统处理后第i次采样的角速度wi,如式(12)所示。

其中,Ii为第i次采样的补偿因子,其表达式如式(13)所示,其中ic为固定常量,在参数选取合适的情况下,系统在稳态时,通过积分将收敛于0,即信号可以无偏地跟踪系统的漂移误差,在理想情况下I≈-εd。通常ic由陀螺仪偏移均值决定[17],而在动态系统中并不能准确地获得陀螺仪偏移均值。传统的互补滤波能够有效地提高系统的动态特性,同时使系统在静止或匀速运动时保持稳定,但是并没有对陀螺仪的温度漂移误差进行补偿。在本文系统中,当载体处于静止或者匀速运动状态时,系统输出主要为加速度计和磁强计解算的角度,此时将陀螺仪的输出作为误差,并对ic进行更新。当载体运动时,使用更新后的ic对陀螺仪的漂移误差进行补偿,从而提高系统的精度。算法框图如图6所示,改进后的算法只需要在通过互补滤波之后对载体状态进行判断,更新。改进后的算法比互补滤波在增加了有限的算法时间复杂度的情况下,有效地对引入的陀螺仪漂移误差进行了补偿,提高了系统在静态时的稳定性,动态时的灵敏性。

图6 HDRCF算法框图

4 实验结果与分析

4.1 传感器数据处理结果

为了验证算法性能,本文设计了静态实验和动态实验。在静态实验部分,将内置陀螺仪、加速度计、磁强计等MEMS传感器的便携式智能终端静置在桌面上,取滤波系数τ=0.98的互补滤波,HDR算法中固定常量为陀螺仪漂移误差的期望,在系统处于初始状态时,取值为系统的零偏误差ωzero,综合考虑系统精度和处理器计算负荷,取采样频率为50 Hz[5],分别读取陀螺仪输出的原始数据和经过本文算法后的输出数据,并进行仿真。

从图7中可以看出,在静止陀螺仪的原始数据经过积分之后解算出来的角度并不能保持稳定。在运行一段时间之后,Pitch角、Roll角和Yaw角都有不同程度的偏移和抖动。经过本文改进的HDRCF滤波之后,角度曲线较原曲线变得平滑,且有效地降低了抖动振幅。

图7 静止状态下滤波前后输出对比

从表1中改进前后的数据对比可以看出,经过本文的改进,在静止状态下系统的输出较陀螺仪的原始输出,漂移均值降低78.2%,抖动的最大值和最小值也有所减小,有效地降低了静止状态下的抖动。可见本文的HDRCF算法能够在载体处于静止状态下,准确地反映载体的运动状态。

表1 静止状态下滤波前后数据对比 (°)

在动态实验部分,为了验证算法在载体运动时的性能,本文将载体放置在水平桌面上并绕Z进行幅度为90°左右的周期运动。将三维角度传感器MPU6050模块附着于本文系统载体上面,将其输出数据作为真实值。如图8为陀螺仪积分后输出的载体姿态角、经过CF滤波处理后输出的载体姿态角、经过本文HDRCF滤波后输出的载体姿态角与MPU6050模块输出的载体姿态角对比。从图中可以看出,陀螺仪在短时间内可以很好地反应载体的运动状态,但是长时间运行会有较大的累计误差。由于陀螺仪温度漂移的存在,在系统运行一段时间后,由陀螺仪积分得到的载体角度数据在载体恢复初始位置时有10°左右的误差。在系统最终停止工作时,角度误差约为3.2°。经过互补滤波处理后,在系统最终停止工作时,角度误差约为1.2°,互补滤波有效地减小了系统最终停止工作时的误差,但是由于引入了陀螺仪的漂移误差,与MPU6050模块的输出相比,在运动过程中仍有较大误差。经过本文HDRCF滤波处理后在系统最终停止工作时,角度误差约为0.9°,与经CF滤波处理的角度数相比,在运动过程中的角度误差有效地降低了。以MPU6050模块的输出为真实值,分别对陀螺仪积分后输出的载体姿态角、经过CF滤波处理后输出的载体姿态角、经过本文HDRCF滤波后输出的载体姿态角求其结算角度的误差,并对误差进行分析。如表2为Yaw角的误差分析表,从表中可以看出,陀螺仪积分后的输出角度的误差均值约为-6.722 3°,这是由于陀螺仪存在温度漂移导致的。经过CF滤波处理后的输出角度误差均值约为-3.470 3°,有效地降低了陀螺仪误差的均值,但是由于在互补滤波过程中引入了陀螺仪的漂移误差,导致方差增大。经过本文HDRCF滤波后的输出角度误差均值约为-2.501 2°,有效地降低了陀螺仪误差的均值,误差方差约为58.300 6,较陀螺仪原始输出误差均值降低63%,方差降低31%,这是由于改进后的算法能够有效地滤除陀螺仪的漂移误差,从而提高系统的输出精度。从图中可以看出,经过本文改进的HDRCF处理后波形更接近载体的真实运动趋势,能够在载体处于运动状态下准确地反映载体的运动状态。

图8 结算角度对比

表2 运动状态下Yaw角滤波前后误差对比

4.2 系统应用效果展示

为了展示系统的使用效果,本文以安卓智能平板(2.2 GHz,2 GB RAM,16 GB ROM)为客户端载体,便携式笔记本电脑(i5-3230M 2.6 GHz,6 GB RAM)为服务端载体,设计程序展示系统效果。客户端控制界面如图9所示,服务端界面如图10所示。

客户端分别向服务端发送陀螺仪的原始数据和经过本文改进的HDRCF滤波算法滤波之后的传感器数据;服务端接收到数据之后将其映射为鼠标指针操作,同时使用软件捕获鼠标运动轨迹。用户手持载体沿直线运动一段距离之后沿半径逐渐缩小的圆周运动,捕获的空中鼠标轨迹如图11所示,其中曲线1为未经过处理的陀螺仪实现的空中鼠标运动轨迹,曲线2为使用本文基于HDRCF滤波实现的空中鼠标。如图中曲线1所示,未经过处理的陀螺仪实现的空中鼠标载体在运动的过程中,捕获的鼠标指针轨迹有明显的抖动,在用户运动轨迹半径变小之后由于抖动的存在,指针运动轨迹已经不能准确地反映出用户的运动轨迹,在实际使用过程中,当用户使用空中鼠标系统实现细微操作时,空中鼠标系统将不能友好地反映出用户的交互意图;如图中曲线2所示,使用改进后的HDRCF滤波之后,有效地对陀螺仪的随机漂移进行了补偿,捕获的空中鼠标指针轨迹比较平滑,在实现细微操作方面明显优于曲线1。

图9 客户端

图10 服务端

图11 鼠标轨迹

5 结束语

便携式智能终端与人们的生活联系得越来越紧密,它不再只是一个单纯的通讯、娱乐工具。在Virtual Reality和Augmented Reality高速发展的今天,便携式智能终端具有更加广阔的应用前景。本文基于具有多种MEMS传感器的便携式智能终端设计了空中鼠标系统,相较于使用特定硬件的空中鼠标系统,不需要额外的硬件投入,可以有效地节约成本,利于普及,且充分利用智能终端搭载的MEMS传感器使用HDRCF滤波进行处理,有效地对陀螺仪的误差进行处理,提高系统的精度,实现的空中鼠标系统运行稳定,能够准确地反映出用户的交互意图,具有良好的实用性。下一步,将进一步完善空中鼠标技术,针对不同的应用场景设计相应的交互方式,并结合交互的特点进行优化。

参考文献:

[1]Lee S,Nam G J,Chae J,et al.Two-dimensional position detection system with MEMS accelerometers,readout circuitry,and microprocessor for padless mouse applications[J].IEEE Transactions on Very Large Scale Integration(VLSI) Systems,2005,13(10):1167-1178.

[2]江朝强,石睿,王云飞.基于MEMS指环式低功耗无线三维鼠标的设计[J].自动化与仪表,2013,28(9):12-14.

[3] Çapın T,Haro A,Setlur V,et al.Camera-based virtual environment interaction on mobile devices[C]//Proceedings of International Symposium on Computer and Information Sciences.Berlin Heidelberg:Springer,2006:765-773.

[4]Yun S,Chen Y C,Qiu L.Turning a mobile device into a mouse in the air[C]//Proceedings of the 13th Annual International Conference on Mobile Systems,Applications,and Services,2015:15-29.

[5]张凤军,程龙,刘佳升,等.基于智能手机的三维交互技术研究[J].计算机辅助设计与图形学学报,2013,25(1):15-25.

[6]段建雷,韩鹏,樊爱军,等.基于手机惯性传感器空中鼠标的优化与实现[J].计算机应用与软件,2015,32(12):226-230.

[7]Yao N,Liu Z,Qian F.Self-adaptive prediction and compensation model for high-accuracy MEMS gyro’s startup drift[C]//Proceedings of the 4th International Conference on Intelligent Control and Information Processing(ICICIP),2013:379-383.

[8]钱华明,夏全喜,阙兴涛,等.基于Kalman滤波的MEMS陀螺仪滤波算法[J].哈尔滨工程大学学报,2010,31(9):1217-1221.

[9]阎世梁,王银玲,张华.基于改进互补滤波器的低成本微小飞行器姿态估计方法[J].计算机应用,2013,33(7):2078-2082.

[10]刘诗斌,陈露兰,张韦,等.一种基于磁传感器的MEMS陀螺标定方法[J].传感技术学报,2013,26(12):1700-1703.

[11]Borenstein J,Ojeda L.Heuristic reduction of gyro drift in gyro-based vehicle tracking[C]//Proceedings of SPIE Defense,Security,and Sensing,2009.

[12]曾庆军,刘慧婷,张明.基于HDR的陀螺仪随机漂移分析与处理[J].江苏大学学报:自然科学版,2016,37(3):32-33.

[13]钱华明,夏全喜,安笛,等.启发式算法在MEMS陀螺仪数据处理中的应用[J].传感器与微系统,2010,29(3):109-111.

[14]史智宁,韩波,徐玉,等.基于重力场自适应互补滤波的无人直升机水平姿态估计方法[J].传感技术学报,2009,22(7):993-996.

[15]Shen X,Yao M,Jia W,et al.Adaptive complementary filter using fuzzy logic and simultaneous perturbation stochastic approximation algorithm[J].Measurement,2012,45(5):1257-1265.

[16]Chang-Siu E,Tomizuka M,Kong K.Time-varying complementary filtering for attitude estimation[C]//Proceedings of 2011 IEEE/RSJ International Conference on Intelligent Robots and Systems,2011:2474-2480.

[17]孙金秋,游有鹏,傅忠云.基于共轭梯度法和互补滤波相结合的姿态解算算法[J].传感技术学报,2014,27(4):524-528.

猜你喜欢
陀螺仪鼠标姿态
基于EMD的MEMS陀螺仪随机漂移分析方法
攀爬的姿态
全新一代宋的新姿态
跑与走的姿态
我国著名陀螺仪专家——林士谔
微机械陀螺仪概述和发展
MEMS三轴陀螺仪中不匹配干扰抑制方法
鼠标折叠笔
阅读是最美的姿态
45岁的鼠标