专利名称:一种模拟器重力感应数据获取方法及装置的制作方法
技术领域:
本发明涉及模拟器技术领域,特别是涉及一种模拟器重力感应数据获取方法及装置。
背景技术:
模拟器(emulator)也称仿真器(simulator),是指通过软件方式模拟硬件设备的功能和操作系统,建立起具有完整硬件功能的、运行在一个隔离环境中的虚拟系统。模拟器的形式多种多样,常见的模拟器多是基于PC机的,例如在PC机中模拟各种游戏机、便携设备,甚至在PC机中模拟另外一台或多台PC机。模拟器的主要作用,一方面是使得在某种平台上能够运行其他平台上的软件,例如在PC机上玩游戏机中的游戏;另一方面是用软件模拟的方式,提供用于测试设备的环境,以便于数据搜集,bug定位等等。对于游戏机、手机等设备的模拟器而言,一个重要的功能就是实现操作方式的模拟,常见的方式是把游戏机摇杆、按键、手机按键等映射到PC机上的键盘、鼠标等操作设备,然而随着技术的发展,现在各种设备上的输入方式已经不仅仅限于简单的按键操作,例如智能手机、平板电脑上的触屏操作、轨迹球操作、感应操作等等都已经逐渐成为主流的操作方式。目前,触屏操作和轨迹球操作已经可以用键盘或鼠标的方式模拟实现,但是,对于感应操作而言,需要依赖设备中内置的感应器硬件设备(例如重力感应器、磁力感应器、姿态感应器、旋转感应器等等)来实现,在现有的模拟器软件中,还无法实现对各类感应操作方式的模拟。
发明内容
为解决上述技术问题,本发明实施例提供一种模拟器重力感应数据获取方法及装置,以实现在模拟器软件中对重力感应操作方式的模拟,技术方案如下:一种模拟器重力感应数据获取方法,包括:获取模拟设备当前的模拟姿态信息,所述姿态信息包括:模拟设备在自身坐标系下相对于标准姿态的三轴旋转角度α、β、Y ;根据α、β、Y计算得到模拟设备当前姿态相对于标准姿态的坐标变换矩阵;以所述坐标变换矩阵乘以模拟设备在标准姿态下的重力向量,得到模拟设备在当前姿态下的重力感应数据;将重力感应数据发送至模拟器的模拟设备操作系统模块。根据本发明的一种实施方式,所述标准姿态为:设备正面朝上水平放置,且设备上侧面朝向正北。根据本发明的一种实施方式,所述模拟设备自身坐标系为:X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
根据本发明的一种实施方式,所述α、β、Y分别为:设备围绕X、Y、Z轴逆时针方向旋转的角度。根据本发明的一种实施方式,所述根据α、β、Y计算得到模拟设备当前姿态相对于标准姿态的坐标变换矩阵,包括:根据Υ计算得到从标准姿态变为第一暂态的坐标变换矩阵RZ,其中,设备从标准姿态围绕Z轴旋转角度Υ后变为第一暂态;根据α计算得到从第一暂态变为第二暂态的坐标变换矩阵RX,其中,设备从第一暂态围绕X轴旋转角度α后变为第二暂态;根据β计算得到从第二暂态变为当前姿态的坐标变换矩阵RY,其中,设备从第二暂态围绕Y轴旋转角度β后变为当前姿态;则模拟设备当前姿态相对于标准姿态的坐标变换矩阵R = RYRXRZ。一种模拟器重力感应数据获取装置,包括:姿态信息获取单元,用于获取模拟设备当前的模拟姿态信息,所述姿态信息包括:模拟设备在自身坐标系下相对于标准姿态的三轴旋转角度α、β、Y ;变换矩阵计算单元,用于根据α、β、Y计算得到模拟设备当前姿态相对于标准姿态的坐标变换矩阵;感应数据计算单元,用于以所述坐标变换矩阵乘以模拟设备在标准姿态下的重力向量,得到模拟设备在当前姿态下的重力感应数据;感应数据发送单元,用于将重力感应数据发送至模拟器的模拟设备操作系统模块。根据本发明的一种实施方式,所述标准姿态为:设备正面朝上水平放置,且设备上侧面朝向正北。根据本发明的一种实施方式,所述模拟设备自身坐标系为:X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。根据本发明的一种实施方式,所述α、β、Y分别为:设备围绕X、Y、Z轴逆时针方向旋转的角度。根据本发明的一种实施方式,所述变换矩阵计算单元,包括:第一计算子单元,用于根据Y计算得到从标准姿态变为第一暂态的坐标变换矩阵Rz,其中,设备从标准姿态围绕Z轴旋转角度Υ后变为第一暂态;第二计算子单元,用于根据α计算得到从第一暂态变为第二暂态的坐标变换矩阵Rx,其中,设备从第一暂态围绕X轴旋转角度α后变为第二暂态;第三计算子单元,用于根据β计算得到从第二暂态变为当前姿态的坐标变换矩阵RY,其中,设备从第二暂态围绕Y轴旋转角度β后变为当前姿态;第四计算子单元,用于计算模拟设备当前姿态相对于标准姿态的坐标变换矩阵R=RyRxRz。本发明还提供一种模拟器系统,包括如前所述的模拟器重力感应数据获取装置以及模拟设备操作系统模块;所述模拟设备操作系统模块,用于调用所述模拟器重力感应数据获取装置所发送的重力感应数据,将重力感应数据下发至运行于操作系统中的应用程序。本发明实施例所提供的技术方案,利用用户输入的模拟设备相对于标准姿态的三轴旋转角度信息,计算得到模拟设备在当前姿态下的重力感应数据,该重力感应数据可以直接发送至操作系统,供上层应用程序调用。相当于模拟了硬件重力感应器的功能,使得在模拟器软件中,也可以实现对重力感应操作方式的模拟。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1为硬件设备的感应架构示意图;图2为本发明实施例的模拟器系统架构示意图;图3为本发明实施例的设备坐标系示意图;图4为本发明实施例模拟器重力感应数据获取方法流程图;图5为本发明实施例的坐标系变换示意图;图6为本发明实施例模拟器重力感应数据获取装置的结构示意图;图7为Android设备的感应架构示意图;图8为本发明实施例的Android模拟器系统架构示意图。
具体实施例方式为了使本领域技术人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。图1所示为正常硬件设备的感应架构示意图:驱动层的作用是提供操作系统与感应器硬件的通信接口,获取感应器所获得的感应数据提供给应用程序进行调用。然而在模拟器中,并不具有感应器硬件,操作系统的驱动层无法获取到相应的感应数据,因而无法直接对需要感应数据作为输入的应用程序进行模拟运行或测试。为解决以上问题,本发明提供一种模拟器系统,如图2所示,该系统包括模拟器感应数据获取装置110和模拟设备操作系统模块120,其中模拟器感应数据获取装置110的作用是将用户输入的模拟设备姿态数据转换为感应数据并传入操作系统,相当于模拟了硬件感应器的功能。模拟设备操作系统模块120则是以软件的方式模拟了设备的操作系统。对于本发明而言,模拟器感应数据获取装置110的具体功能是将用户输入的模拟设备姿态数据转换为重力感应数据。重力感应数据的含义是:首先定义设备自身的坐标系,在这个坐标系下,对应着一个设备所受重力加速度的向量表示;当设备的空间姿态发生变化时,坐标系的方向也会发生变化,相应的重力加速度向量也会发生变化,所谓重力感应数据,就是数据处在各种姿态时,针对当前坐标系的重力加速度向量表示。
为便于计算,一般还会定义一个设备标准姿态,在标准姿态下,设备仅受到在一个坐标轴方向的、大小为g 9.8的重力加速度分量,而在其他坐标轴方向的重力加速度分量为O。一般习惯定义设备水平放置(正面朝上、背面朝下)时为标准状态。根据一般习惯,可以把设备近似看做一个六面体,具有上侧面、下侧面、左侧面、右侧面、正面、背面六个面,定义X轴为从设备左侧面指向右侧面的方向、Y轴为从设备下侧面指向上侧面的方向、Z轴为从设备的背面指向正面的方向,参见图3所示。此外,定义设备正面朝上水平放置、上侧面朝向正北的姿态为标准姿态,则在标准姿态下,设备收到的重力加速度向量表示为:
权利要求
1.一种模拟器重力感应数据获取方法,其特征在于,包括: 获取模拟设备当前的模拟姿态信息,所述姿态信息包括:模拟设备在自身坐标系下相对于标准姿态的三轴旋转角度α、β、Y ; 根据α、β、Υ计算得到模拟设备当前姿态相对于标准姿态的坐标变换矩阵; 以所述坐标变换矩阵乘以模拟设备在标准姿态下的重力向量,得到模拟设备在当前姿态下的重力感应数据; 将重力感应数据发送至模拟器的模拟设备操作系统模块。
2.根据权利要求1所述的方法,其特征在于,所述标准姿态为: 设备正面朝上水平放置,且设备上侧面朝向正北。
3.根据权利要求1所述的方法,其特征在于,所述模拟设备自身坐标系为: X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
4.根据权利要求1所述的方法,其特征在于,所述α、β、Y分别为: 设备围绕X、Y、Z轴逆时针方向旋转的角度。
5.根据权利要求1所述的方法,其特征在于,所述根据α、β、Y计算得到模拟设备当前姿态相对于标准姿态的坐标变换矩阵,包括: 根据Y计算得到从标准姿态变为第一暂态的坐标变换矩阵Rz,其中,设备从标准姿态围绕Z轴旋转角度Y后变为第一暂态; 根据α计算得到从第一暂态变为第二暂态的坐标变换矩阵Rx,其中,设备从第一暂态围绕X轴旋转角度α后变为第二暂态; 根据β计算得到从第二暂态变为当前姿态的坐标变换矩阵Ry,其中,设备从第二暂态围绕Y轴旋转角度β后变为当前姿态; 则模拟设备当前姿态相对于标准姿态的坐标变换矩阵R = RYRXRZ。
6.一种模拟器重力感应数据获取装置,其特征在于,包括: 姿态信息获取单元,用于获取模拟设备当前的模拟姿态信息,所述姿态信息包括:模拟设备在自身坐标系下相对于标准姿态的三轴旋转角度α、β、Y ; 变换矩阵计算单元,用于根据α、β、Υ计算得到模拟设备当前姿态相对于标准姿态的坐标变换矩阵; 感应数据计算单元,用于以所述坐标变换矩阵乘以模拟设备在标准姿态下的重力向量,得到模拟设备在当前姿态下的重力感应数据; 感应数据发送单元,用于将重力感应数据发送至模拟器的模拟设备操作系统模块。
7.根据权利要求6所述的装置,其特征在于,所述标准姿态为: 设备正面朝上水平放置,且设备上侧面朝向正北。
8.根据权利要求6所述的装置,其特征在于,所述模拟设备自身坐标系为: X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
9.根据权利要求6所述的装置,其特征在于,所述α、β、Y分别为: 设备围绕X、Y、Z轴逆时针方向旋转的角度。
10.根据权利要求6所述的装置,其特征在于,所述变换矩阵计算单元,包括:第一计算子单元,用于根据Y计算得到从标准姿态变为第一暂态的坐标变换矩阵Rz,其中,设备从标准姿态围绕Z轴旋转角度Y后变为第一暂态; 第二计算子单元,用于根据α计算得到从第一暂态变为第二暂态的坐标变换矩阵Rx,其中,设备从第一暂态围绕X轴旋转角度α后变为第二暂态; 第三计算子单元,用于根据β计算得到从第二暂态变为当前姿态的坐标变换矩阵RY,其中,设备从第二暂态围绕Y轴旋转角度β后变为当前姿态; 第四计算子单元,用于计算模拟设备当前姿态相对于标准姿态的坐标变换矩阵R =RyRxRz。
11.一种模拟器系统,其特征在于,包括如权利要求6-10任一项所述的模拟器重力感应数据获取装置以及模拟设备操作系统模块; 所述模拟设备操作系统模块,用于调用所述模拟器重力感应数据获取装置所发送的重力感应数据,将重力感应数据下发至运行于操作系统中的应用程序。
全文摘要
本发明公开了一种模拟器重力感应数据获取方法及装置。一种模拟器重力感应数据获取方法包括获取模拟设备当前的模拟姿态信息,所述姿态信息包括模拟设备在自身坐标系下相对于标准姿态的三轴旋转角度α、β、γ;根据α、β、γ计算得到模拟设备当前姿态相对于标准姿态的坐标变换矩阵;以所述坐标变换矩阵乘以模拟设备在标准姿态下的重力向量,得到模拟设备在当前姿态下的重力感应数据;将重力感应数据发送至模拟器的模拟设备操作系统模块。应用本发明方案,使得在模拟器软件中,也可以实现对重力感应操作方式的模拟。
文档编号G06F17/50GK103186687SQ20111045663
公开日2013年7月3日 申请日期2011年12月30日 优先权日2011年12月30日
发明者孙元臻, 冉放, 董海峰 申请人:百度在线网络技术(北京)有限公司