CN103186257A - 一种模拟器旋转向量感应数据获取方法及装置 - Google Patents

一种模拟器旋转向量感应数据获取方法及装置 Download PDF

Info

Publication number
CN103186257A
CN103186257A CN2011104569130A CN201110456913A CN103186257A CN 103186257 A CN103186257 A CN 103186257A CN 2011104569130 A CN2011104569130 A CN 2011104569130A CN 201110456913 A CN201110456913 A CN 201110456913A CN 103186257 A CN103186257 A CN 103186257A
Authority
CN
China
Prior art keywords
attitude
transient state
transformation matrix
analog machine
rotating vector
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
CN2011104569130A
Other languages
English (en)
Other versions
CN103186257B (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 CN201110456913.0A priority Critical patent/CN103186257B/zh
Publication of CN103186257A publication Critical patent/CN103186257A/zh
Application granted granted Critical
Publication of CN103186257B publication Critical patent/CN103186257B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种模拟器旋转向量感应数据获取方法及装置。一种模拟器旋转向量感应数据获取方法包括:获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度α、β、γ;根据α、β、γ计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;利用四元数旋转向量表示所述坐标变换矩阵并构成方程组,求解得到模拟设备第二姿态相对于第一姿态的旋转向量感应数据;将旋转向量感应数据发送至模拟器的模拟设备操作系统模块。应用本发明方案,使得在模拟器软件中,也可以实现对旋转向量感应操作方式的模拟。

Description

一种模拟器旋转向量感应数据获取方法及装置
技术领域
本发明涉及模拟器技术领域,特别是涉及一种模拟器旋转向量感应数据获取方法及装置。
背景技术
模拟器(emulator)也称仿真器(simulator),是指通过软件方式模拟硬件设备的功能和操作系统,建立起具有完整硬件功能的、运行在一个隔离环境中的虚拟系统。模拟器的形式多种多样,常见的模拟器多是基于PC机的,例如在PC机中模拟各种游戏机、便携设备,甚至在PC机中模拟另外一台或多台PC机。模拟器的主要作用,一方面是使得在某种平台上能够运行其他平台上的软件,例如在PC机上玩游戏机中的游戏;另一方面是用软件模拟的方式,提供用于测试设备的环境,以便于数据搜集,bug定位等等。
对于游戏机、手机等设备的模拟器而言,一个重要的功能就是实现操作方式的模拟,常见的方式是把游戏机摇杆、按键、手机按键等映射到PC机上的键盘、鼠标等操作设备,然而随着技术的发展,现在各种设备上的输入方式已经不仅仅限于简单的按键操作,例如智能手机、平板电脑上的触屏操作、轨迹球操作、感应操作等等都已经逐渐成为主流的操作方式。
目前,触屏操作和轨迹球操作已经可以用键盘或鼠标的方式模拟实现,但是,对于感应操作而言,需要依赖设备中内置的感应器硬件设备(例如重力感应器、磁力感应器、姿态感应器、旋转向量感应器等等)来实现,在现有的模拟器软件中,还无法实现对各类感应操作方式的模拟。
发明内容
为解决上述技术问题,本发明实施例提供一种模拟器旋转向量感应数据获取方法及装置,以实现在模拟器软件中对旋转向量感应操作方式的模拟,技术方案如下:
一种模拟器旋转向量感应数据获取方法,包括:
获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度α、β、γ;
根据α、β、γ计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;
利用四元数旋转向量表示所述坐标变换矩阵并构成方程组,求解得到模拟设备第二姿态相对于第一姿态的旋转向量感应数据;
将旋转向量感应数据发送至模拟器的模拟设备操作系统模块。
根据本发明的一种实施方式,所述模拟设备自身坐标系为:
X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
根据本发明的一种实施方式,所述α、β、γ分别为:
设备围绕X、Y、Z轴逆时针方向旋转的角度。
根据本发明的一种实施方式,所述根据α、β、γ计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵,包括:
根据γ计算得到从第一姿态变为第一暂态的坐标变换矩阵RZ,其中,设备从第一姿态围绕Z轴旋转角度γ后变为第一暂态;
根据α计算得到从第一暂态变为第二暂态的坐标变换矩阵RX,其中,设备从第一暂态围绕X轴旋转角度α后变为第二暂态;
根据β计算得到从第二暂态变为第二姿态的坐标变换矩阵RY,其中,设备从第二暂态围绕Y轴旋转角度β后变为第二姿态;
则模拟设备第二姿态相对于第一姿态的坐标变换矩阵R=RYRXRZ
一种模拟器旋转向量感应数据获取装置,包括:
姿态信息获取单元,用于获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度α、β、γ;
变换矩阵计算单元,用于根据α、β、γ计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;
感应数据计算单元,用于利用四元数旋转向量表示所述坐标变换矩阵并构成方程组,求解得到模拟设备第二姿态相对于第一姿态的旋转向量感应数据;
感应数据发送单元,用于将旋转向量感应数据发送至模拟器的模拟设备操作系统模块。
根据本发明的一种实施方式,所述模拟设备自身坐标系为:
X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
根据本发明的一种实施方式,所述α、β、γ分别为:
设备围绕X、Y、Z轴逆时针方向旋转的角度。
根据本发明的一种实施方式,所述变换矩阵计算单元,包括:
第一计算子单元,用于根据γ计算得到从第一姿态变为第一暂态的坐标变换矩阵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的具体功能是将用户输入的模拟设备姿态数据转换为旋转向量感应数据。
旋转向量的几何含义是:对于某个物体,通过围绕自身坐标系的三轴分别旋转α、β、γ角度后,从姿态1改变为姿态2,这时,总可以找到一个旋转向量,使物体围绕这个向量旋转ψ角,直接从姿态1转化为姿态2。旋转向量在数学上习惯用四元数表示,定义如下:
q 0 = cos ψ 2 q 1 = i sin ψ 2 q 2 = j sin ψ 2 q 3 = k sin ψ 2
这里,向量(i,j,k)为单位向量,长度为1。而整个旋转向量也是单位向量,长度也为1。
根据一般习惯,可以把设备近似看做一个六面体,具有上侧面、下侧面、左侧面、右侧面、正面、背面六个面,定义X轴为从设备左侧面指向右侧面的方向、Y轴为从设备下侧面指向上侧面的方向、Z轴为从设备的背面指向正面的方向,参见图3所示。
对于模拟器软件而言,模拟一台设备的三轴姿态变化是易于实现的,用户通过命令行或图形界面等方式输入一系列姿态数据,就可以唯一确定出一台模拟设备的空间姿态变化情况,而本发明的方案,就是根据用户输入的姿态变化数据,计算得到模拟设备的的第二姿态相对于第一姿态旋转向量感应数据,这些旋转向量感应数据可以直接发送至操作系统,供上层应用程序调用。相当于模拟了硬件旋转向量感应器的功能,使得在模拟器软件中,也可以实现对旋转向量感应操作方式的模拟。
图4所示,为本发明实施例所提供的一种模拟器旋转向量感应数据获取方法,包括以下步骤:
S201,获取模拟设备当前的模拟姿态变化信息。
前面已经介绍过了设备自身坐标系的概念,如果以第一姿态为参考,那么设备的任意一种空间姿态都可以由第一姿态围绕自身坐标系的三个坐标轴旋转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”旋转β,变到当前状态。
为便于说明,在本实施例中的后续内容中,将统一以这种旋转顺序为例进行说明。
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=RYRXRZ
S203利用四元数旋转向量表示所述坐标变换矩阵并构成方程组,求解得到模拟设备当前姿态相对于标准姿态的旋转向量感应数据;
坐标变换矩阵利用四元数旋转向量表示的方式如下:
R = 1 - 2 q 2 2 - 2 q 3 2 2 q 1 q 2 - 2 q 0 q 3 2 q 1 q 3 + 2 q 0 q 2 2 q 1 q 2 + 2 q 0 q 3 1 - 2 q 1 2 - 2 q 3 2 2 q 2 q 3 - 2 q 0 q 1 2 q 1 q 3 - 2 q 0 q 2 2 q 2 q 3 + 2 q 0 q 1 1 - 2 q 1 2 - 2 q 2 2
此外,根据步骤S202c,可以得到
R y R x R z = 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 β
进一步根据R=RYRXRZ,可以构建得到以下方程组:
1 - 2 q 2 2 - 2 q 3 2 = cos β cos γ - sin α sin β sin γ 2 q 1 q 2 - 2 q 0 q 3 = cos β sin γ + sin α sin β cos γ 2 q 1 q 3 + 2 q 0 q 2 = - cos α sin β 2 q 1 q 2 + 2 q 0 q 3 = - cos α sin γ 1 - 2 q 1 2 - 2 q 3 2 = cos α cos γ 2 q 2 q 3 - 2 q 0 q 1 = sin α 2 q 1 q 3 - 2 q 0 q 2 = sin β cos γ + sin α cos β sin γ 2 q 2 q 3 + 2 q 0 q 1 = sin β sin γ - sin α cos β cos γ 1 - 2 q 1 2 - 2 q 2 2 = cos α cos β
求解该方程组,最终可以得到以α、β、γ表示的四元数旋转向量:
q 0 = 1 + R 11 + R 22 + R 33 2 q 1 = ( R 23 - R 32 ) 1 + R 11 - R 22 - R 33 2 | R 23 - R 32 | q 2 = ( R 31 - R 13 ) 1 - R 11 + R 22 - R 33 2 | R 31 - R 13 | q 3 = ( R 12 - R 21 ) 1 - R 11 - R 22 + R 33 2 | R 12 - R 21 |
S204,将旋转向量感应数据发送至模拟器的模拟设备操作系统模块。
得到旋转向量感应数据之后,进一步将旋转向量感应数据发送至模拟器的模拟设备操作系统模块,以供操作系统的各种上层应用程序调用,从而实现了在模拟器中生成旋转向量感应数据并对设备进行相应的操作。
需要说明的是,在上述实施例中,只是针对特定的设备坐标定义以及旋转顺序定义进行说明,这些定义不应该理解为对本发明方案的限制。本领域技术人员可以根据以上方案,得到在其他定义方式下的解决方案。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
相应于上面的方法实施例,本发明还提供一种模拟器旋转向量感应数据获取装置,参见图6所示,包括:
姿态信息获取单元310,用于获取模拟设备从第一姿态到第二姿态的姿态变化信息,所述姿态变化信息包括:在模拟设备自身坐标系下,第二姿态相对于第一姿态的三轴旋转角度α、β、γ;
变换矩阵计算单元320,用于根据α、β、γ计算得到模拟设备第二姿态相对于第一姿态的坐标变换矩阵;
感应数据计算单元330,用于利用四元数旋转向量表示所述坐标变换矩阵并构成方程组,求解得到模拟设备当前姿态相对于标准姿态的旋转向量感应数据;
感应数据发送单元340,用于将旋转向量感应数据发送至模拟器的模拟设备操作系统模块。
在本发明的一种实施方式中,所述模拟设备自身坐标系为:
X轴从设备左侧面指向右侧面、Y轴从设备下侧面指向上侧面、Z轴从设备的背面指向正面。
在本发明的一种实施方式中,所述α、β、γ分别为:
设备围绕X、Y、Z轴逆时针方向旋转的角度。
在本发明的一种实施方式中,所述变换矩阵计算单元,可以包括:
第一计算子单元,用于根据γ计算得到从第一姿态变为第一暂态的坐标变换矩阵RZ,其中,设备从第一姿态围绕Z轴旋转角度γ后变为第一暂态;
第二计算子单元,用于根据α计算得到从第一暂态变为第二暂态的坐标变换矩阵RX,其中,设备从第一暂态围绕X轴旋转角度α后变为第二暂态;
第三计算子单元,用于根据β计算得到从第二暂态变为第二姿态的坐标变换矩阵RY,其中,设备从第二暂态围绕Y轴旋转角度β后变为第二姿态;
第四计算子单元,用于计算模拟设备第二姿态相对于第一姿态的坐标变换矩阵R=RYRXRZ
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
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[]数组中,添加Rotation Vector Sensor的设备基本信息,主要可以包括以下字段:
.name       名称
.vendor     厂商
.version    版本
.handle     感应器的ID
.type       感应器的类型,在本实施例中值为SENSOR_TYPE_ROTATION_VECTOR,
.maxRange   感应器最大测量范围,1.0f,表示旋转向量的最大测量值为1弧度/秒
.resolution 感应器的灵敏度,例如1.0f/360.0f,
.power      感应器的功耗信息,例如6.8f,表示感应器运行时的电流为6.8mA
.minDelay   两次上报数据的事件间隔,例如20.0f,表示两次上报的时间间隔为20ms
然后,在Sensor Mock Library的poll函数中,加入解析字符串数据的代码。字符串格式为“rotation<x>:<y>:<z>:<w>”
Figure BDA0000127385290000121
考虑到模拟实现感应数据的模块Sensor Data Generator不应该属于Android OS的一部分,所以把它的实现部分放到了模拟器中,这样可以使Android系统中的用户性能测试的CPU统计工具不会把数据模拟的计算统计到Android系统负载当中,可以更加客观的反应Android OS的性能状况。
最后,在模拟器系统中,还提供了用户输入控制台Emulator Console,可以让用户按照自己的需求,修改姿态数据的值,以查看应用层App获取的数据是否正常,表现是否满足期望。其中,用户可以采用命令行或图形化操作界面的方式,输入模拟设备的姿态数据。
利用Emulator Console,添加设置姿态数据的命令后,用户可以输入姿态数据。然后,Rotation Vector Sensor Data Generator将该数据转化成为Rotation Vector数据,翻译成字符串的形式:“rotation<x>:<y>:<z>:<w>”,发送给Sensor Mock Library。Sensor Mock Library接到该字符串后,解析字符串的数据,然后构造一个表示Rotation Vector Sensor Data的结构体,传到上层,完成对感应数据的模拟。
应用本发明所提供的方案,可以使Android App运行在模拟器上后,得到Rotation Vector Sensor的设备信息,并且及时获取Rotation Vector Sensor的数据。更加重要的是,用户不需要直接控制旋转向量感应器的信息,而只需要将注意力集中在设备的姿态上,产生的感应器数据中,姿态感应器和旋转向量感应器的数据关系是符合物理意义的,不会发成冲突的情况。用户可以按照他们的期望修改姿态数据,模拟器产生相应的感应数据之后,正确地返回给上层App。
可以理解的是,在以上实施例中所提供的程序源代码并不构成对本申请方案的限定,例如,本领域技术人员可以在不脱离本申请原理的前提下,根据实际需求对方案进行改进。例如定义不同的函数名称及形式,采取不同的数据结构,等等,这些都不影响本申请方案的实现。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (9)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110456913.0A CN103186257B (zh) 2011-12-30 2011-12-30 一种模拟器旋转向量感应数据获取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110456913.0A CN103186257B (zh) 2011-12-30 2011-12-30 一种模拟器旋转向量感应数据获取方法及装置

Publications (2)

Publication Number Publication Date
CN103186257A true CN103186257A (zh) 2013-07-03
CN103186257B CN103186257B (zh) 2016-03-23

Family

ID=48677456

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110456913.0A Active CN103186257B (zh) 2011-12-30 2011-12-30 一种模拟器旋转向量感应数据获取方法及装置

Country Status (1)

Country Link
CN (1) CN103186257B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019184830A1 (zh) * 2018-03-30 2019-10-03 北京凌宇智控科技有限公司 一种免标定的定位方法及系统
CN115060229A (zh) * 2021-09-30 2022-09-16 西安荣耀终端有限公司 运动物体的测量方法和测量装置

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2179981Y (zh) * 1992-09-30 1994-10-19 上海市电子物理研究所 一种数字式陀螺模拟器
US20020103610A1 (en) * 2000-10-30 2002-08-01 Government Of The United States Method and apparatus for motion tracking of an articulated rigid body
CN1601447A (zh) * 2004-09-30 2005-03-30 清华大学 手机游戏的互动信息感知方法及手机外挂的智能游戏平台
WO2007061746A2 (en) * 2005-11-18 2007-05-31 Cardiac Pacemakers, Inc. Posture detector calibration and use
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 深圳市亿思达显示科技有限公司 一种手套式虚拟输入装置
WO2011100422A1 (en) * 2010-02-15 2011-08-18 Cardiac Pacemakers, Inc. Methods for constructing posture calibration matrices
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 (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2179981Y (zh) * 1992-09-30 1994-10-19 上海市电子物理研究所 一种数字式陀螺模拟器
US20020103610A1 (en) * 2000-10-30 2002-08-01 Government Of The United States Method and apparatus for motion tracking of an articulated rigid body
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 清华大学 手机游戏的互动信息感知方法及手机外挂的智能游戏平台
WO2007061746A2 (en) * 2005-11-18 2007-05-31 Cardiac Pacemakers, Inc. Posture detector calibration and use
CN101377422A (zh) * 2008-09-22 2009-03-04 北京航空航天大学 挠性陀螺仪静态漂移误差模型最优二十四位置标定方法
WO2011100422A1 (en) * 2010-02-15 2011-08-18 Cardiac Pacemakers, Inc. Methods for constructing posture calibration matrices
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 江苏惠通集团有限责任公司 姿态感知设备的定位方法、鼠标指针的控制方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
G. ASTUTI,G. GIUDICE,D. LONGO,C. D. MELITA: "An Overview of the "Volcan Project": An UAS for Exploration of Volcanic Environments", 《J INTELL ROBOT SYST》 *
J. DIEBEL: "Representing Attitude: Euler Angles, Unit Quaternions, and Rotation Vectors", 《TECHNICAL REPORT, STANFORD UNIVERSITY》 *
刘吉富等: "《微计算机信息》", 1 September 2008 *
李宁: "《Android/OPhone开发完全讲义》", 30 June 2010, 中国水利水电出版社 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019184830A1 (zh) * 2018-03-30 2019-10-03 北京凌宇智控科技有限公司 一种免标定的定位方法及系统
US12031825B2 (en) 2018-03-30 2024-07-09 Nolo Co., Ltd. Calibration-free positioning method and system
CN115060229A (zh) * 2021-09-30 2022-09-16 西安荣耀终端有限公司 运动物体的测量方法和测量装置

Also Published As

Publication number Publication date
CN103186257B (zh) 2016-03-23

Similar Documents

Publication Publication Date Title
CN106227935B (zh) 一种卫星姿态控制一体化仿真的系统及实现方法
CN101520702B (zh) 一种模拟多点输入的系统及方法
CN102197377B (zh) 多触摸对象惯性模拟
CN102650966B (zh) 一种面向复用的嵌入式软件测试方法及其测试系统
CN104111861A (zh) 一种无人机模拟训练系统及其控制方法
CN102968377A (zh) 一种基于虚拟机技术的机载软件系统测试通用平台
CN103513992A (zh) 一种通用的教育娱乐机器人应用软件研制平台
CN109697002A (zh) 一种在虚拟现实中对象编辑的方法、相关设备及系统
CN103185573B (zh) 一种模拟器三轴陀螺仪感应数据获取方法及装置
CN105867350A (zh) 一种基于pxi架构的卫星地面闭环模拟器
CN107703775A (zh) 刚‑柔‑液耦合复杂航天器仿真系统及方法
US20140046633A1 (en) Simulation apparatus and method capable of designing and simulating model separately
CN103186257B (zh) 一种模拟器旋转向量感应数据获取方法及装置
CN102541532B (zh) 适用于车载系统模拟器的软件开发工具包系统
CN102929683A (zh) 输入设备的全自动化仿真系统
CN104570741A (zh) 一种柔性机械臂横向振动pd边界控制模拟方法
CN103186687A (zh) 一种模拟器重力感应数据获取方法及装置
CN110457227B (zh) 辅助开发人员或学生进行vr应用开发的系统及开发方法
CN104834410B (zh) 输入装置以及输入方法
CN103186688A (zh) 一种模拟器磁力感应数据获取方法及装置
Karmore et al. Universal methodology for embedded system testing
Gonzalez-Sanchez et al. iPhone application development
Henderson An inertial measurement system for hand and finger tracking
KR101482701B1 (ko) 제스처 인터랙션 디자인 장치 및 제스처 인터랙션 디자인 시스템
TWI460614B (zh) A fully automated simulation system for the input device

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