基于MEMS传感器的虚拟现实参观系统

2012-07-25 05:35刘玉生
传感器与微系统 2012年3期
关键词:状态变量手柄指令

徐 迅,刘玉生

(四川大学电气信息学院,四川成都 610065)

0 引言

虚拟现实(virtual reality,VR)是一种模拟人在自然环境中视、听、动等行为的先进人机交互技术,能够为使用者模拟出与现实中相同的三维图像世界。目前,虚拟现实技术的研究主要集中在虚拟场景建模开发和交互控制方法上,常用虚拟场景建模工具主要包括Vega,VRML等;而常用交互控制方法包括传统鼠标键盘或者数据手套与头部跟踪器,其中前者价格低廉但使用不便,后者价格过高,普通应用场合难以承受[1,2]。本文提出了一种基于MEMS传感器、LM3S1138微控制器和Vega虚拟仿真平台的虚拟现实参观系统,用户通过操纵手柄实现在虚拟场景中的自由参观。该系统结构简单、成本低廉、使用方便,只需更改虚拟场景内容即可将该系统移植到其他应用领域。

1 系统结构

本文提出的虚拟现实参观系统如图1所示,由手持模块和主机端两部分组成。

手柄端微控制器根据地磁场和重力加速度在传感器各测量轴方向上的分量计算出当前手柄相对于重力加速度轴和地磁场轴的俯仰角和方位角,将这2个角度作为手柄的状态变量并根据手柄初始状态计算出动作指令。然后动作指令通过串口发送到主机端,通信驱动程序根据接收的动作指令改变虚拟场景视角。

图1 虚拟现实参观系统结构图Fig 1 Structure diagram of virtual reality touring system

2 手柄模块设计

操纵手柄是楼宇参观系统的核心组成部分,用户通过对手柄水平垂直旋转和前后按键的操作,实现在主机端虚拟场景视角水平360°、垂直180°的全方位变化和虚拟场景中视角位置的前后平移,从而实现在虚拟场景中参观的功能,手柄外观示意如图2所示。

图2 手柄外观示意图Fig 2 The schematic diagram of joystick appearance

2.1 手柄硬件结构

虚拟楼宇参观手柄由MMC212磁场传感器、MXC6202加速度传感器和LM3S1138微控制器(MCU)组成。两种传感器均有X,Y两测量轴,在每个轴分量上可分别测量±2 Gs的磁感应强度和 ±2gn的加速度,并分别以512counts/Gs和512counts/gn的精度通过I2C总线输出。

图3 传感器与手柄位置关系Fig 3 Position relation between sensors and joystick

传感器与手柄位置关系如图3所示,磁场传感器与手柄上平面平行,加速度传感器与手柄侧面平行,初始状态下,手柄与地面平行,磁场传感器X,Y测量轴组成平面垂直于重力加速度,加速度传感器Y测量轴与重力加速度平行。

在靠近地表处,重力加速度垂直于地面,地磁场近似平行于地面,当以重力加速度相反方向为Z轴,地磁场方向为X轴,可得到如图4所示的三维空间,其中XOY平面与地面平行。图4中所示三维空间采用惯性坐标系,PD表示手柄在空间中正方向,方位角α为PD在XOY平面投影与X轴夹角(0°~360°),俯仰角β为PD与XOY平面夹角(-90°~90°)。PD在空间中的方向可由图4中的方位角α和俯仰角β唯一决定,因此,选取α,β作为手柄的状态变量。磁场传感器的X,Y两测量轴对应图中向量MX,MY;加速度传感器X,Y两测量轴对应图中向量AY,AZ。由传感器特性可知,AX,MY和PD平行,AX,AY与Z轴在同一平面且β=β',β'可由AX,AY求出;同理MYxoy,MX在XOY平面内且α=α',α'可由MX,MYxoy求出,其中

因此,手柄在空间中状态完全可以由磁场传感器和加速度传感器的测量值计算得到[3]。

图4 手柄在三维空间中状态Fig 4 State of joystick in 3D space

2.2 状态变量计算

MEMS传感器输出数字量,将待测量物理量±2gn和±2 Gs分别线性映射至0x000~0x7FF的数字输出,当待测物理量分别为0gn和0 Gs,输出量为0x400,因此,测量输出数字量OD与实际测量物理量G的关系可由式(1)表示,当G>0时,待测量物理量在测量轴方向分量为正,G<0时,待测量物理量在测量轴方向分量为负

通过分析待测向量在测量坐标系中所在象限,计算得到手柄状态变量[4]。图5所示为手柄正方向在YOZ坐标系中分别位于第一和第四象限,其中加速度传感器AX,AY测量轴输出实际测量加速度值Gx和Gy,根据式(2)计算得到俯仰角β

图5 手柄俯仰角计算示意图Fig 5 Schematic diagram of pitch angle calculation of joystick

当Bx>0且BYxoy<0时α∈[π/2,π],可由式(4)得到

当Bx<0且BYxoy<0时α∈[π,3π/2],可由式(5)得到

当Bx>0且BYxoy<0时α∈[3π/2,2π],可由式(6)得到

手柄状态变量由x=[αβ]T表示楼宇参观系统对手柄状态的精度要求不高,α和β均精到个位,且α∈[0°,360°],β∈[-90°,90°],因此,选择α以9 位编码;β以8 位编码。

2.3 动作指令

为减小传输数据量,手柄模块微处理器根据手柄状态和按键判断生成动作指令,传输到主机端。

虚拟场景中视角变换动作包括视角上仰、视角下俯、视角左转、视角右转、视角前进和视角后退,其中是否发生前4种动作由判断手柄状态决定,后2种动作由从手柄按键获取。图6所示为以一个字节编码动作指令的方法。

图6 动作指令编码规则Fig 6 Encoding rule of action command

图6中每一标志位为1表示执行该动作,否则,不执行该动作。

手柄模块初始化后,系统自动记录手柄初始状态下的状态变量x0=[α0β0]T,然后进入循环状态,每次循环首先读取按键状态,然后获取手柄状态变量xi=[αiβi]T,得到状态变化量Δxi=[ΔαiΔβi]T。

其中,Δαi=αi-α0,Δβi=βi-β0.

动作指令码按照表1所示规则生成

表1 动作指令生成规则Tab 1 Generation rules of action command

多个动作可以同步触发,例如:视角同时左转、上仰和前进,此时动作指令码为00010101b,但左转与右转、上仰与下俯、前进与后退不能分别同时发生。

3 主机端设计

主机端由通信驱动程序和虚拟场景应用程序两部分组成。通信驱动程序由C++编写,根据接收手柄模块发送的动作指令码,向虚拟场景发出视角动作。虚拟场景应用程序通常需要具备的功能与系统工作流程:

1)可编辑功能,即用户可以根据需求设计自己需要的三维虚拟场景模型

2)接口功能,即虚拟场景中视角变换操作与可以由操作系统或其它应用程序调用

本文选择Vega的Lynx图形用户界面作为虚拟场景应用程序,选择Walk漫游方式,通过模拟按下键盘鼠标协同控制方式定义中对应键来实现视角变换功能;通信驱动程序根据接收动作指令,调用WinIO.dll动态链接库函通过读写8042键盘鼠标控制器的0x60和0x64寄存器,模拟按下Vega程序中设定的对应键盘按键操作。例如:当动作指令为00010101b(视角同时左转、上仰和前进),此时通信驱动程序模拟同时按下Vega程序中设定的视角左转、上仰和前进按键[5]。

3)系统工作流程

手柄模块程序与主机端程序异步执行,手柄模块循环向主机端发送动作指令,每次发送后开计时器,等待主机回应;主机端以中断方式接收,收到指令后模拟键盘操作同时向手柄模块发送成功接收信息(ACK),若手柄模块等待回应超时则重新发送动作指令,手柄模块程序流程如图7所示,图8(a)所示为手柄模块定时器超时中断子程序流程图,图8(b)所示为手柄模块串口接收中断子程序流程图,图8(c)所示为主机端串口接收中断子程序流程图,图8(d)所示为主机端通信驱动程序流程图。

图7 手柄模块程序流程Fig 7 Program flow chart of joystick module

4 测试结果

为测试系统能否准确感应状态变化并发出正确动作指令,设计如下试验,假设图4中|PD|=1,首先单独在水平和垂直方向转动手柄,直到手柄发出视角变化指令,然后在空间中任意方向转动手柄,记录指令发出和变化边缘状态变量序列{xi|i=1,2,…N},其中,xi=[αiβi]T,由此得到球坐标序列{Pi|Pi=[|PD|]T},该坐标序列表示的空间曲线在Y-Z平面内投影如图9所示。

图9中理论指令边界和实测指令边界分别将Y-Z平面分割成9个子区域,当PD端点在Y-Z平面内投影分别在子区域I至IX时,对应发出指令如表2所示。

图8 系统程序流程图Fig 8 Flow chart of system program

图9 动作指令Y-Z平面内投影边界Fig 9 Action command edge projected on plane Y-Z

此外,从图9可以看出:系统在实际使用中动作指令边界与理论边界在手柄状态变化量Δα,Δβ在超出判断阈值不大时基本吻合,但偏转角度过大时两组边界存在一定偏差,该偏差主要是由于在使用中,人手转动导致手柄绕PD轴旋转一定角度,系统存在未测量的横滚角。

表2 区域指令对照表Tab 2 Area and command comparison

5 结论

该系统根据加速度和磁场传感器测量结果,计算得出手柄状态变量,动作指令通过串口传送到主机端,在Vega虚拟场景中完成相应虚拟场景动作,实测结果表明:在使用当中手柄能够根据用户操作发出正确的动作指令,且在偏转角度不大时实测动作指令边缘与理论边缘相差不大,能够得到满意的性能。

[1]吴 迪,黄 文.骞虚拟现实技术的发展过程及研究现状[J].海洋测绘,2002,22(6):15 -17.

[2]花 蕾.具有较高真实感的网上虚拟校园构建技术研究[D].西安:西安理工大学,2010.

[3]戎海龙,戴先中,刘信羽.厨师手握锅具运动信息获取方法[J].仪器仪表学报,2009,30(11):2291 -2297.

[4]蒋海涛,郭战营.基于 MEMS加速度传感器的飞行器倾角测量系统设计[J].计算机测量与控制,2010,18(1):107 -109.

[5]Alexei S.Nanyang Technological University virtual campus[J].IEEE Computer Graphics and Applications,2004,24(6):6 -8.

猜你喜欢
状态变量手柄指令
一类三阶混沌系统的反馈控制实验设计
基于嵌套思路的饱和孔隙-裂隙介质本构理论
基于PLC控制的手柄座钻孔攻丝一体机的研发
ARINC661显控指令快速验证方法
一种多功能无线手柄的设计
杀毒软件中指令虚拟机的脆弱性分析
一种基于主状态变量分离的降维仿真算法设计
为什么厨具的手柄不是金属的?
Recent Development and Emerged Technologies of High-Tc Superconducting Coated Conductors
银行家