CN103185573A - 一种模拟器三轴陀螺仪感应数据获取方法及装置 - Google Patents

一种模拟器三轴陀螺仪感应数据获取方法及装置 Download PDF

Info

Publication number
CN103185573A
CN103185573A CN2011104577692A CN201110457769A CN103185573A CN 103185573 A CN103185573 A CN 103185573A CN 2011104577692 A CN2011104577692 A CN 2011104577692A CN 201110457769 A CN201110457769 A CN 201110457769A CN 103185573 A CN103185573 A CN 103185573A
Authority
CN
China
Prior art keywords
attitude
analog machine
respect
simulator
transformation matrix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011104577692A
Other languages
English (en)
Other versions
CN103185573B (zh
Inventor
孙元臻
冉放
董海峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201110457769.2A priority Critical patent/CN103185573B/zh
Publication of CN103185573A publication Critical patent/CN103185573A/zh
Application granted granted Critical
Publication of CN103185573B publication Critical patent/CN103185573B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Gyroscopes (AREA)

Abstract

本发明公开了一种模拟器三轴陀螺仪感应数据获取方法及装置。一种模拟器三轴陀螺仪感应数据获取方法包括:获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第一姿态相对于基准姿态的三轴旋转角度,第二姿态相对于基准姿态的三轴旋转角度,以及从第一姿态变化到第二姿态的时间间隔Δt;计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;求解得到第二姿态相对于第一姿态的三轴旋转角度Δα、Δβ、Δγ,进一步计算得到三轴陀螺仪感应数据;将三轴陀螺仪感应数据发送至模拟器的模拟设备操作系统模块。应用本发明方案,使得在模拟器软件中,也可以实现对三轴陀螺仪感应操作方式的模拟。

Description

一种模拟器三轴陀螺仪感应数据获取方法及装置
技术领域
本发明涉及模拟器技术领域,特别是涉及一种模拟器三轴陀螺仪感应数据获取方法及装置。
背景技术
模拟器(emulator)也称仿真器(simulator),是指通过软件方式模拟硬件设备的功能和操作系统,建立起具有完整硬件功能的、运行在一个隔离环境中的虚拟系统。模拟器的形式多种多样,常见的模拟器多是基于PC机的,例如在PC机中模拟各种游戏机、便携设备,甚至在PC机中模拟另外一台或多台PC机。模拟器的主要作用,一方面是使得在某种平台上能够运行其他平台上的软件,例如在PC机上玩游戏机中的游戏;另一方面是用软件模拟的方式,提供用于测试设备的环境,以便于数据搜集,bug定位等等。
对于游戏机、手机等设备的模拟器而言,一个重要的功能就是实现操作方式的模拟,常见的方式是把游戏机摇杆、按键、手机按键等映射到PC机上的键盘、鼠标等操作设备,然而随着技术的发展,现在各种设备上的输入方式已经不仅仅限于简单的按键操作,例如智能手机、平板电脑上的触屏操作、轨迹球操作、感应操作等等都已经逐渐成为主流的操作方式。
目前,触屏操作和轨迹球操作已经可以用键盘或鼠标的方式模拟实现,但是,对于感应操作而言,需要依赖设备中内置的感应器硬件设备(例如重力感应器、磁力感应器、姿态感应器、三轴陀螺仪等等)来实现,在现有的模拟器软件中,还无法实现对各类感应操作方式的模拟。
发明内容
为解决上述技术问题,本发明实施例提供一种模拟器三轴陀螺仪感应数据获取方法及装置,以实现在模拟器软件中对三轴陀螺仪感应操作方式的模拟,技术方案如下:
一种模拟器三轴陀螺仪感应数据获取方法,包括:
获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第一姿态相对于基准姿态的三轴旋转角度α’、β’、γ’,第二姿态相对于基准姿态的三轴旋转角度α”、β”、γ”,以及从第一姿态变化到第二姿态的时间间隔Δt;
根据α’、β’、γ’、α”、β”、γ”计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;
利用模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度Δα、Δβ、Δγ表示所述坐标变换矩阵并构成方程组,求解得到Δα、Δβ、Δγ,进一步利用Δα、Δβ、Δγ和Δt计算得到三轴陀螺仪感应数据;
将三轴陀螺仪感应数据发送至模拟器的模拟设备操作系统模块。
根据本发明的一种实施方式,所述模拟设备自身坐标系为:
X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
根据本发明的一种实施方式,所述α、β、γ分别为:
设备围绕X、Y、Z轴逆时针方向旋转的角度。
根据本发明的一种实施方式,所述根据α’、β’、γ’、α”、β”、γ”计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵,包括:
根据α’、β’、γ’计算得到模拟设备第一姿态相对于基准姿态的坐标变换矩阵R1
根据α”、β”、γ”计算得到模拟设备第二姿态相对于基准姿态的坐标变换矩阵R2
计算模拟设备第二姿态相对于第一姿态的坐标变换矩阵
Figure BDA0000127416650000021
一种模拟器三轴陀螺仪感应数据获取装置,包括:
姿态信息获取单元,用于获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第一姿态相对于基准姿态的三轴旋转角度α’、β’、γ’,第二姿态相对于基准姿态的三轴旋转角度α”、β”、γ”,以及从第一姿态变化到第二姿态的时间间隔Δt;
变换矩阵计算单元,用于根据α’、β’、γ’、α”、β”、γ”计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;
感应数据计算单元,用于利用模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度Δα、Δβ、Δγ表示所述坐标变换矩阵并构成方程组,求解得到Δα、Δβ、Δγ,进一步利用Δα、Δβ、Δγ和Δt计算得到三轴陀螺仪感应数据;
感应数据发送单元,用于将三轴陀螺仪感应数据发送至模拟器的模拟设备操作系统模块。
根据本发明的一种实施方式,所述模拟设备自身坐标系为:
X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
根据本发明的一种实施方式,所述α、β、γ分别为:
设备围绕X、Y、Z轴逆时针方向旋转的角度。
根据本发明的一种实施方式,所述变换矩阵计算单元,包括:
第一计算子单元,用于根据α’、β’、γ’计算得到模拟设备第一姿态相对于基准姿态的坐标变换矩阵R1
第二计算子单元,用于根据α”、β”、γ”计算得到模拟设备第二姿态相对于基准姿态的坐标变换矩阵R2
第三计算子单元,用于计算模拟设备第二姿态相对于第一姿态的坐标变换矩阵
Figure BDA0000127416650000031
本发明还提供一种模拟器系统,包括如前所述的模拟器三轴陀螺仪感应数据获取装置以及模拟设备操作系统模块;
所述模拟设备操作系统模块,用于调用所述模拟器三轴陀螺仪感应数据获取装置所发送的三轴陀螺仪感应数据,将三轴陀螺仪感应数据下发至运行于操作系统中的应用程序。
本发明实施例所提供的技术方案,利用用户输入的模拟设备相对于标准姿态的三轴旋转角度信息,计算得到模拟设备的第二姿态相对于第一姿态的三轴陀螺仪感应数据,该三轴陀螺仪感应数据可以直接发送至操作系统,供上层应用程序调用。相当于模拟了三轴陀螺仪感应器的功能,使得在模拟器软件中,也可以实现对三轴陀螺仪感应操作方式的模拟。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为硬件设备的感应架构示意图;
图2为本发明实施例的模拟器系统架构示意图;
图3为本发明实施例的设备坐标系示意图;
图4为本发明实施例模拟器三轴陀螺仪感应数据获取方法流程图;
图5为本发明实施例的坐标系变换示意图;
图6为本发明实施例模拟器三轴陀螺仪感应数据获取装置的结构示意图;
图7为Android设备的感应架构示意图;
图8为本发明实施例的Android模拟器系统架构示意图。
具体实施方式
为了使本领域技术人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明保护的范围。
图1所示为正常硬件设备的感应架构示意图:驱动层的作用是提供操作系统与感应器硬件的通信接口,获取感应器所获得的感应数据提供给应用程序进行调用。然而在模拟器中,并不具有感应器硬件,操作系统的驱动层无法获取到相应的感应数据,因而无法直接对需要感应数据作为输入的应用程序进行模拟运行或测试。
为解决以上问题,本发明提供一种模拟器系统,如图2所示,该系统包括模拟器感应数据获取装置110和模拟设备操作系统模块120,其中模拟器感应数据获取装置110的作用是将用户输入的模拟设备姿态数据转换为感应数据并传入操作系统,相当于模拟了硬件感应器的功能。模拟设备操作系统模块120则是以软件的方式模拟了设备的操作系统。
对于本发明而言,模拟器感应数据获取装置110的具体功能是将用户输入的模拟设备姿态数据转换为三轴陀螺仪感应数据。
三轴陀螺仪感应数据的含义为某一时刻的设备旋转角速度。假设设备通过围绕自身坐标系的三轴分别旋转α、β、γ角度后,从姿态1改变为姿态2,此时α、β、γ与三轴陀螺仪感应数据的关系可以表示为:
α = ∫ 0 T f ( ω z ) dt
β = ∫ 0 T f ( ω x ) dt
γ = ∫ 0 T f ( ω y ) dt
其中,ωxωyωz即为三轴陀螺仪感应数据,那么在已知α、β、γ的情况下,角度的表达式为:
ω x = dα dt
ω y = dβ dt
ω z = dγ dt
根据上式,如果设备从第一姿态变化到第二姿态的时间间隔为Δt,并且可以找到一组角度变化数据Δα、Δβ、Δγ,分别表示在模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度。于是,当Δt足够小的时候,可以近似计算得到:
ω x = Δα Δt
ω y = Δβ Δt
ω z = Δγ Δt
对于模拟器软件而言,模拟一台设备的三轴姿态(α、β、γ)变化是易于实现的,用户通过命令行或图形界面等方式输入一系列姿态数据,就可以唯一确定出一台模拟设备的空间姿态变化情况,而本发明的方案,就是根据用户输入的姿态变化数据,计算得到模拟设备的的第二姿态相对于第一姿态的三轴陀螺仪感应数据,这些三轴陀螺仪感应数据可以直接发送至操作系统,供上层应用程序调用。相当于模拟了硬件三轴陀螺仪感应器的功能,使得在模拟器软件中,也可以实现对三轴陀螺仪感应操作方式的模拟。
图4所示,为本发明实施例所提供的一种模拟器三轴陀螺仪感应数据获取方法,包括以下步骤:
S201,获取模拟设备从第一姿态到第二姿态的姿态变化信息。
其中,模拟设备从第一姿态到第二姿态的姿态变化信息,包括以下数据:
第一姿态相对于基准姿态的三轴旋转角度α’、β’、γ’;
第二姿态相对于基准姿态的三轴旋转角度α”、β”、γ”;
第一姿态变化到第二姿态的时间间隔Δt;
其中α’、β’、γ’、α”、β”、γ”均是在模拟设备自身坐标系下的角度。根据一般习惯,可以把设备近似看做一个六面体,具有上侧面、下侧面、左侧面、右侧面、正面、背面六个面,定义X轴为从设备左侧面指向右侧面的方向、Y轴为从设备下侧面指向上侧面的方向、Z轴为从设备的背面指向正面的方向,参见图3所示。需要注意的是,模拟设备的自身坐标系是会随着模拟设备在空间的姿态变化而改变的。
为便于计算,一般还会定义一个设备基准姿态,习惯定义设备正面朝上水平放置、上侧面朝向正北的姿态为标准姿态,当然,基准姿态仅是作为一个参考,如何定义并不影响本发明方案的实现。
如果以基准姿态为参考,那么设备的任意一种空间姿态都可以由标准姿态围绕自身坐标系的三个坐标轴旋转3次得到。为了方便表示,定义α、β、γ三个角度:
α:设备围绕X轴旋转的角度,逆时针方向为正;
β:设备围绕Y轴旋转的角度,逆时针方向为正;
γ:手机围绕Z轴旋转的角度,逆时针方向为正;
定义设备在标准姿态时,α=β=γ=0。
需要说明的是,设备从标准姿态变换为当前姿态,需要经过三次旋转,而每次旋转都是针对当前位置的坐标轴而言的,因此三次旋转存在顺序问题,例如:
在标准姿态下的坐标轴为X0、Y0、Z0
经过1次旋转后,变为第一暂态,此时坐标轴为X’、Y’、Z’;
经过2次旋转后,变为第二暂态,此时坐标轴为X”、Y”、Z”;
经过3次旋转后,变为当前姿态。
假设定义旋转顺序为,先绕X旋转,然后绕Y轴旋转,最后绕Z轴旋转,那么实际旋转过程应该是:
在标准状态下,绕X0旋转α,变到第一暂态;
在第一暂态下,绕Y’旋转β,变到第二暂态;
在第二暂态下,绕Z”旋转γ,变到当前状态。
可以理解的是,设备从标准姿态变换为当前姿态,三次旋转的顺序,共有12种顺序,作为模拟器软件而言,具体应采用哪种顺序,应该由模拟设备的操作系统决定。例如,对于安卓(andriod)操作系统而言,定义三次旋转的顺序为Z→X→Y,在这种体系下,相应的旋转过程是:
在标准状态下,绕Z0旋转γ,变到第一暂态;
在第一暂态下,绕X’旋转α,变到第二暂态;
在第二暂态下,绕Y”旋转β,变到当前状态。
为便于说明,在本实施例中的后续内容中,将统一以这种旋转顺序为例进行说明。
在本步骤中,利用用户输入,就可以分别获得与对应第一姿态对应的三轴旋转角度α’、β’、γ’,与第二姿态对应的三轴旋转角度α”、β”、γ”,以及Δt。
S202,根据α’、β’、γ’、α”、β”、γ”计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;
首先计算在已知α、β、γ数据的情况下,模拟设备在当前姿态相对于标准姿态的坐标变换矩阵。在本实施例中,根据S201中所定义的旋转顺序Z→X→Y,可以按以下步骤计算得到变换矩阵:
S202a,根据γ计算得到从标准姿态变为第一暂态的坐标变换矩阵RZ,其中,设备从标准姿态围绕Z轴旋转角度γ后变为第一暂态;
参见图5所示,假设在X-Y坐标系中存在一个点A,坐标为(x,y),OA向量与X轴的夹角为θ,当设备围绕Z轴旋转γ角时,相当于坐标系旋转了γ角,设A点在新坐标系下的坐标变为(x’,y’),则在新的坐标系下,OA向量可以表示为[x′y′]T,其中:
x ′ = | OA → | cos ( θ - γ )
= | OA → | ( cos θ cos γ + sin θ sin γ )
= | OA → | × ( x | OA → | cos γ + y | OA → | sin γ )
= x cos γ + y sin γ
类似方法,可以得到:
y ′ = | OA → | sin ( θ - γ )
= - x sin γ + y cos γ
由于Z轴并未发生变化,因此有
z′=z
于是,可以得到从标准姿态变为第一暂态的坐标变换矩阵RZ
R z = cos γ sin γ 0 - sin γ cos γ 0 0 0 1
S202b,根据α计算得到从第一暂态变为第二暂态的坐标变换矩阵RX,其中,设备从第一暂态围绕X轴旋转角度α后变为第二暂态;
类似S202a的推导方法,可以得到:
R x = 1 0 0 0 cos α sin α 0 - sin α cos α
S202c,根据β计算得到从第二暂态变为当前姿态的坐标变换矩阵RY,其中,设备从第二暂态围绕Y轴旋转角度β后变为当前姿态;
同样类似S202a的推导方法,可以得到:
R y = cos β 0 - sin β 0 1 0 sin β 0 cos β
S202d,计算模拟设备当前姿态相对于标准姿态的坐标变换矩阵。
根据Z→X→Y的旋转顺序,可以得到对于标准姿态下的坐标(x,y,Z),在经过三次旋转后的坐标变化为:
x ′ y ′ z ′ = R y R x R z x y z = R x y z
则模拟设备当前姿态相对于标准姿态的坐标变换矩阵R=RXRYRZ,其中也就是说,R可以写成关于α、β、γ的表达式。
假设设备在第一姿态对应的坐标为(x1,y1,z1),则可以得到第一姿态相对于标准姿态的坐标变换矩阵R1,其中R1可以写成关于α’、β’、γ’的表达式,并且有:
x 1 y 1 z 1 = R 1 x y z
类似地,假设设备在第一姿态对应的坐标为(x2,y2,z2),则可以得到第二姿态相对于标准姿态的坐标变换矩阵R2,其中R2可以写成关于α”、β”、γ”的表达式,并且有:
x 2 y 2 z 2 = R 2 x y z
根据以上两式,就可以进一步得到:
x 2 y 2 z 2 = R 2 R 1 - 1 x 1 y 1 z 1
Figure BDA0000127416650000104
就是第二姿态相对于第一姿态的坐标变换矩阵。
在实际应用中,逆矩阵的计算非常耗费资源,考虑到旋转矩阵都是正交矩阵,因此逆矩阵和转置矩阵相等,因此可以将第二姿态相对于第一姿态的坐标变换矩阵进一步简化为
Figure BDA0000127416650000105
S203,计算得到三轴陀螺仪感应数据;
首先利用模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度Δα、Δβ、Δγ表示坐标变换矩阵并构成方程组,求解得到Δα、Δβ、Δγ,这里需要再次注意的是:由于本发明实施例中所述的坐标系都是模拟设备的自身坐标系,是会随着模拟设备在空间的姿态变化而改变的,因此并不存在Δα=α′-α″、Δβ=β′-β″、Δγ=γ′-γ″的关系,而是需要按照以下方式进行计算:
其中,第二姿态相对于第一姿态的坐标变换矩阵R′″可以表示为:
cos Δβ cos Δγ - sin Δα sin Δβ sin Δγ cos Δβ sin Δγ + sin Δα sin Δβ cos Δγ - cos Δα sin Δβ - cos Δα sin Δγ cos Δα cos Δγ sin Δα sin Δβ cos Δγ + sin Δα cos Δβ sin Δγ sin Δβ sin Δγ - sin Δα cos Δβ cos Δγ cos Δα cos Δβ
根据
Figure BDA0000127416650000111
可以构建得到以下方程组:
cos Δβ cos Δγ - sin Δα sin Δβ sin Δγ = R 11 ′ ′ ′ cos Δβ sinΔγ + sin Δα sin Δβ cos Δγ = R 12 ′ ′ ′ - cos Δα sin Δβ = R 13 ′ ′ ′ - cos Δα sin Δγ = R 21 ′ ′ ′ cos Δα cos Δγ = R 22 ′ ′ ′ sin Δα = R 23 ′ ′ ′ sin Δβ cos Δγ + sin Δα cos Δβ sin Δγ = R 31 ′ ′ ′ sin Δβ sin Δγ - sin Δα cos Δβ cos Δγ = R 32 ′ ′ ′ cos Δα cos Δβ = R 33 ′ ′ ′
求解该方程组,最终可以得到Δα、Δβ、Δγ。
进一步根据S201中得到的Δt,利用
Figure BDA0000127416650000113
Figure BDA0000127416650000114
Figure BDA0000127416650000115
即可计算得到三轴陀螺仪感应数据:
S204,将三轴陀螺仪感应数据发送至模拟器的模拟设备操作系统模块。
得到三轴陀螺仪感应数据之后,进一步将三轴陀螺仪感应数据发送至模拟器的模拟设备操作系统模块,以供操作系统的各种上层应用程序调用,从而实现了在模拟器中生成三轴陀螺仪感应数据并对设备进行相应的操作。
以上介绍了一种在模拟器中获取三轴陀螺仪感应数据的方法,当然,在实际应用中,用户在S201中的输入操作可能是一个连续的过程:例如使用图像操作界面对角度值进行拖动,而在模拟器系统内部,会预先设置一个取样间隔,例如0.1s,该取样间隔及对应Δt,如果用户的拖动操作持续了1s,那么,在这一过程中,模拟器系统实际获取的是一组取样间隔为0.1s的角度变化的序列:{α0、β0、γ0}、{α1、β1、γ1}、……{α10、β10、γ10},共11组数据,而最终输出的的角速度结果,则是分别利用相邻的两组角度值计算出来的角速度序列,即共10组角速度数据。
需要说明的是,在上述实施例中,只是针对特定的设备坐标定义以及旋转顺序定义进行说明,这些定义不应该理解为对本发明方案的限制。本领域技术人员可以根据以上方案,得到在其他定义方式下的解决方案。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
相应于上面的方法实施例,本发明还提供一种模拟器三轴陀螺仪感应数据获取装置,参见图6所示,包括:
姿态信息获取单元310,用于获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第一姿态相对于基准姿态的三轴旋转角度α’、β’、γ’,第二姿态相对于基准姿态的三轴旋转角度α”、β”、γ”,以及从第一姿态变化到第二姿态的时间间隔Δt;
变换矩阵计算单元320,用于根据α’、β’、γ’、α”、β”、γ”计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;
感应数据计算单元330,用于利用模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度Δα、Δβ、Δγ表示所述坐标变换矩阵并构成方程组,求解得到Δα、Δβ、Δγ,进一步计算得到三轴陀螺仪感应数据:
ω x = Δα Δt ; ω y = Δβ Δt ; ω z = Δγ Δt ;
感应数据发送单元340,用于将三轴陀螺仪感应数据发送至模拟器的模拟设备操作系统模块。
在本发明的一种实施方式中,所述模拟设备自身坐标系为:
X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
在本发明的一种实施方式中,所述α、β、γ分别为:
设备围绕X、Y、Z轴逆时针方向旋转的角度。
在本发明的一种实施方式中,所述变换矩阵计算单元,可以包括:
第一计算子单元,用于根据α’、β’、γ’计算得到模拟设备第一姿态相对于基准姿态的坐标变换矩阵R1
第二计算子单元,用于根据α”、β”、γ”计算得到模拟设备第二姿态相对于基准姿态的坐标变换矩阵R2
第三计算子单元,用于计算模拟设备第二姿态相对于第一姿态的坐标变换矩阵
Figure BDA0000127416650000131
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
Android是一种以Linux为基础的开放源码操作系统,主要使用于智能手机、平板电脑等便携设备。该系统采用Java语言开发,包括操作系统、中间件、用户界面和应用软件等组成部分。随着Android系统的不断发展,各大硬件厂商也在不断推出各种基于Android系统的产品,目前,基于Android系统产品已经在市场上占有重要地位。下面进一步结合Android系统的具体情况,对本发明的方案进行说明。
图7所示为正常android硬件设备的感应架构示意图:从上至下依次为:Java应用层(Java Application Layer)、Java框架层(Java Framework Layer)、感应器本地调用接口层(Sensor JNI Layer)、感应器硬件抽象层(SensorHardware Abstract Layer)、感应器驱动层(Sensor Driver Layer)。
图8为本发明所提供的一种Android模拟器系统架构图,对Sensor进行模拟,可以从Framework层或者Hardware Abstract Layer入手。考虑到对感应器的模拟更多是用作测试,如果在Framework层实现,那么测试时就无法发现针对Framework层的开发工作是否正常,所以,在本发明所提供的方案中,采用自定义的Sensor Mock Library替换原来的Sensor HAL和SensorDriver Layer。
对于本发明而言,可以在Sensor Mock Library的sSensorList[]数组中,添加Gyroscope Sensor的设备基本信息,主要可以包括以下字段:
.name    名称
.vendor    厂商
.version    版本
.handle    感应器的ID
.type    感应器的类型,在本实施例中值为SENSOR_TYPE_GYROSCOPE,
.maxRange    感应器最大测量范围,例如20.0f,表示三轴陀螺仪的最大测量值为20弧度/秒
.resolution    感应器的灵敏度,例如2.0f*3.14f/60.0f,
.power    感应器的功耗信息,例如6.8f,表示感应器运行时的电流为6.8mA
.minDelay    两次上报数据的事件间隔,例如20.0f,表示两次上报的时间间隔为20ms
然后,在Sensor Mock Library的poll函数中,加入解析字符串数据的代码。字符串格式为“gyroscope<x>:<y>:<z>”
Figure BDA0000127416650000141
考虑到模拟实现感应数据的模块Sensor Data Generator不应该属于Android OS的一部分,所以把它的实现部分放到了模拟器中,这样可以使Android系统中的用户性能测试的CPU统计工具不会把数据模拟的计算统计到Android系统负载当中,可以更加客观的反应Android OS的性能状况。
最后,在模拟器系统中,还提供了用户输入控制台Emulator Console,可以让用户按照自己的需求,修改姿态数据的值,以查看应用层App获取的数据是否正常,表现是否满足期望。其中,用户可以采用命令行或图形化操作界面的方式,输入模拟设备的姿态数据。
利用Emulator Console,添加设置姿态数据的命令后,用户可以输入姿态数据。然后,Gyroscope Data Generator将该数据转化成为Gyroscope数据,翻译成字符串的形式:“gyroscope<x>:<y>:<z>”,发送给Sensor Mock Library。Sensor Mock Library接到该字符串后,解析字符串的数据,然后构造一个表示Gyroscope Sensor Data的结构体,传到上层,完成对感应数据的模拟。
应用本发明所提供的方案,可以使Android App运行在模拟器上后,得到Gyroscope的设备信息,并且及时获取Gyroscope的数据。更加重要的是,用户不需要直接控制三轴陀螺仪的信息,而只需要将注意力集中在设备的姿态上,产生的感应器数据中,姿态感应器和三轴陀螺仪的数据关系是符合物理意义的,不会发成冲突的情况。用户可以按照他们的期望修改姿态数据,模拟器产生相应的感应数据之后,正确地返回给上层App。
可以理解的是,在以上实施例中所提供的程序源代码并不构成对本申请方案的限定,例如,本领域技术人员可以在不脱离本申请原理的前提下,根据实际需求对方案进行改进。例如定义不同的函数名称及形式,采取不同的数据结构,等等,这些都不影响本申请方案的实现。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (9)

1.一种模拟器三轴陀螺仪感应数据获取方法,其特征在于,包括:
获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第一姿态相对于基准姿态的三轴旋转角度α’、β’、γ’,第二姿态相对于基准姿态的三轴旋转角度α”、β”、γ”,以及从第一姿态变化到第二姿态的时间间隔Δt;
根据α’、β’、γ’、α”、β”、γ”计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;
利用模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度Δα、Δβ、Δγ表示所述坐标变换矩阵并构成方程组,求解得到Δα、Δβ、Δγ,进一步利用Δα、Δβ、Δγ和Δt计算得到三轴陀螺仪感应数据;
将三轴陀螺仪感应数据发送至模拟器的模拟设备操作系统模块。
2.根据权利要求1所述的方法,其特征在于,所述模拟设备自身坐标系为:
X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
3.根据权利要求1所述的方法,其特征在于,所述α、β、γ分别为:
设备围绕X、Y、Z轴逆时针方向旋转的角度。
4.根据权利要求1所述的方法,其特征在于,所述根据α’、β’、γ’、α”、β”、γ”计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵,包括:
根据α’、β’、γ’计算得到模拟设备第一姿态相对于基准姿态的坐标变换矩阵R1
根据α”、β”、γ”计算得到模拟设备第二姿态相对于基准姿态的坐标变换矩阵R2
计算模拟设备第二姿态相对于第一姿态的坐标变换矩阵
Figure FDA0000127416640000021
5.一种模拟器三轴陀螺仪感应数据获取装置,其特征在于,包括:
姿态信息获取单元,用于获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第一姿态相对于基准姿态的三轴旋转角度α’、β’、γ’,第二姿态相对于基准姿态的三轴旋转角度α”、β”、γ”,以及从第一姿态变化到第二姿态的时间间隔Δt;
变换矩阵计算单元,用于根据α’、β’、γ’、α”、β”、γ”计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;
感应数据计算单元,用于利用模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度Δα、Δβ、Δγ表示所述坐标变换矩阵并构成方程组,求解得到Δα、Δβ、Δγ,进一步利用Δα、Δβ、Δγ和Δt计算得到三轴陀螺仪感应数据;
感应数据发送单元,用于将三轴陀螺仪感应数据发送至模拟器的模拟设备操作系统模块。
6.根据权利要求5所述的装置,其特征在于,所述模拟设备自身坐标系为:
X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
7.根据权利要求5所述的装置,其特征在于,所述α、β、γ分别为:
设备围绕X、Y、Z轴逆时针方向旋转的角度。
8.根据权利要求5所述的装置,其特征在于,所述变换矩阵计算单元,包括:
第一计算子单元,用于根据α’、β’、γ’计算得到模拟设备第一姿态相对于基准姿态的坐标变换矩阵R1
第二计算子单元,用于根据α”、β”、γ”计算得到模拟设备第二姿态相对于基准姿态的坐标变换矩阵R2
第三计算子单元,用于计算模拟设备第二姿态相对于第一姿态的坐标变换矩阵
Figure FDA0000127416640000031
9.一种模拟器系统,其特征在于,包括如权利要求6-10任一项所述的模拟器三轴陀螺仪感应数据获取装置以及模拟设备操作系统模块;
所述模拟设备操作系统模块,用于调用所述模拟器三轴陀螺仪感应数据获取装置所发送的三轴陀螺仪感应数据,将三轴陀螺仪感应数据下发至运行于操作系统中的应用程序。
CN201110457769.2A 2011-12-30 2011-12-30 一种模拟器三轴陀螺仪感应数据获取方法及装置 Active CN103185573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110457769.2A CN103185573B (zh) 2011-12-30 2011-12-30 一种模拟器三轴陀螺仪感应数据获取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110457769.2A CN103185573B (zh) 2011-12-30 2011-12-30 一种模拟器三轴陀螺仪感应数据获取方法及装置

Publications (2)

Publication Number Publication Date
CN103185573A true CN103185573A (zh) 2013-07-03
CN103185573B CN103185573B (zh) 2015-09-02

Family

ID=48676873

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110457769.2A Active CN103185573B (zh) 2011-12-30 2011-12-30 一种模拟器三轴陀螺仪感应数据获取方法及装置

Country Status (1)

Country Link
CN (1) CN103185573B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744512A (zh) * 2014-01-14 2014-04-23 上海斐讯数据通信技术有限公司 利用手机作为输入终端的电脑输入方法和硬件设备
CN109271017A (zh) * 2018-07-10 2019-01-25 广州小鸡快跑网络科技有限公司 iOS系统中陀螺仪事件的控制方法及装置
CN111679329A (zh) * 2019-03-11 2020-09-18 中国科学院声学研究所 一种基于三轴陀螺仪结构的阵列扫描发射机和接收机

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3261970A (en) * 1962-07-10 1966-07-19 Ralph W Snyder Computing gyro simulator
CN2179981Y (zh) * 1992-09-30 1994-10-19 上海市电子物理研究所 一种数字式陀螺模拟器
CN1601447A (zh) * 2004-09-30 2005-03-30 清华大学 手机游戏的互动信息感知方法及手机外挂的智能游戏平台
US20070255533A1 (en) * 2004-03-15 2007-11-01 Asia Optical Co., Inc. Signal compensation systems and methods
CN101377422A (zh) * 2008-09-22 2009-03-04 北京航空航天大学 挠性陀螺仪静态漂移误差模型最优二十四位置标定方法
CN101915580A (zh) * 2010-07-14 2010-12-15 中国科学院自动化研究所 一种基于微惯性和地磁技术的自适应三维姿态定位方法
CN101995824A (zh) * 2010-10-26 2011-03-30 哈尔滨工业大学 星箭一体化航天器姿态控制半物理仿真系统
CN102063183A (zh) * 2011-02-12 2011-05-18 深圳市亿思达显示科技有限公司 一种手套式虚拟输入装置
CN102168978A (zh) * 2010-12-17 2011-08-31 北京航空航天大学 一种船用惯性导航系统摇摆基座开环对准方法
CN202033729U (zh) * 2011-05-27 2011-11-09 深圳市瑞致达科技有限公司 3d体感遥控器
CN102270054A (zh) * 2011-08-16 2011-12-07 江苏惠通集团有限责任公司 姿态感知设备的定位方法、鼠标指针的控制方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3261970A (en) * 1962-07-10 1966-07-19 Ralph W Snyder Computing gyro simulator
CN2179981Y (zh) * 1992-09-30 1994-10-19 上海市电子物理研究所 一种数字式陀螺模拟器
US20070255533A1 (en) * 2004-03-15 2007-11-01 Asia Optical Co., Inc. Signal compensation systems and methods
CN1601447A (zh) * 2004-09-30 2005-03-30 清华大学 手机游戏的互动信息感知方法及手机外挂的智能游戏平台
CN101377422A (zh) * 2008-09-22 2009-03-04 北京航空航天大学 挠性陀螺仪静态漂移误差模型最优二十四位置标定方法
CN101915580A (zh) * 2010-07-14 2010-12-15 中国科学院自动化研究所 一种基于微惯性和地磁技术的自适应三维姿态定位方法
CN101995824A (zh) * 2010-10-26 2011-03-30 哈尔滨工业大学 星箭一体化航天器姿态控制半物理仿真系统
CN102168978A (zh) * 2010-12-17 2011-08-31 北京航空航天大学 一种船用惯性导航系统摇摆基座开环对准方法
CN102063183A (zh) * 2011-02-12 2011-05-18 深圳市亿思达显示科技有限公司 一种手套式虚拟输入装置
CN202033729U (zh) * 2011-05-27 2011-11-09 深圳市瑞致达科技有限公司 3d体感遥控器
CN102270054A (zh) * 2011-08-16 2011-12-07 江苏惠通集团有限责任公司 姿态感知设备的定位方法、鼠标指针的控制方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103744512A (zh) * 2014-01-14 2014-04-23 上海斐讯数据通信技术有限公司 利用手机作为输入终端的电脑输入方法和硬件设备
CN109271017A (zh) * 2018-07-10 2019-01-25 广州小鸡快跑网络科技有限公司 iOS系统中陀螺仪事件的控制方法及装置
CN109271017B (zh) * 2018-07-10 2023-06-09 广州小鸡快跑网络科技有限公司 iOS系统中陀螺仪事件的控制方法及装置
CN111679329A (zh) * 2019-03-11 2020-09-18 中国科学院声学研究所 一种基于三轴陀螺仪结构的阵列扫描发射机和接收机
CN111679329B (zh) * 2019-03-11 2024-05-07 中国科学院声学研究所 一种基于三轴陀螺仪结构的阵列扫描发射机和接收机

Also Published As

Publication number Publication date
CN103185573B (zh) 2015-09-02

Similar Documents

Publication Publication Date Title
CN106227935B (zh) 一种卫星姿态控制一体化仿真的系统及实现方法
Nutt Operating systems
CN101520702A (zh) 利用单指点设备模拟多点手势
CN104111861A (zh) 一种无人机模拟训练系统及其控制方法
CN103513992A (zh) 一种通用的教育娱乐机器人应用软件研制平台
CN102197377A (zh) 多触摸对象惯性模拟
CN100553214C (zh) 移动虚拟环境系统
CN102915232B (zh) 一种3d控件的交互方法及通信终端
CN103185573B (zh) 一种模拟器三轴陀螺仪感应数据获取方法及装置
CN113091769A (zh) 姿态校准方法、装置、存储介质及电子设备
US20140046633A1 (en) Simulation apparatus and method capable of designing and simulating model separately
CN102214365A (zh) 基于骨骼动画原理的通用虚拟人仿真技术
CN103186257B (zh) 一种模拟器旋转向量感应数据获取方法及装置
CN112991526A (zh) 一种图像的三维姿态标注的方法、装置、电子设备及介质
CN103186687A (zh) 一种模拟器重力感应数据获取方法及装置
CN103186688A (zh) 一种模拟器磁力感应数据获取方法及装置
CN110457227A (zh) 辅助开发人员或学生进行vr应用开发的系统及开发方法
CN106796516A (zh) 从演示系统中导出动画
Gonzalez-Sanchez et al. iPhone application development
Karmore et al. Universal methodology for embedded system testing
Henderson An inertial measurement system for hand and finger tracking
CN102915234A (zh) 一种应用程序中程序界面的实现方法及装置
CN114638158A (zh) 卫星仿真环境构建的方法、装置、计算机设备及存储介质
KR101482701B1 (ko) 제스처 인터랙션 디자인 장치 및 제스처 인터랙션 디자인 시스템
Garratt et al. Achieving Interoperability Between Gaming Engines by Utilizing Open Simulation Standards

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant