專利名稱:一種模擬器重力感應(yīng)數(shù)據(jù)獲取方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及模擬器技術(shù)領(lǐng)域,特別是涉及一種模擬器重力感應(yīng)數(shù)據(jù)獲取方法及裝置。
背景技術(shù):
模擬器(emulator)也稱仿真器(simulator),是指通過軟件方式模擬硬件設(shè)備的功能和操作系統(tǒng),建立起具有完整硬件功能的、運(yùn)行在一個(gè)隔離環(huán)境中的虛擬系統(tǒng)。模擬器的形式多種多樣,常見的模擬器多是基于PC機(jī)的,例如在PC機(jī)中模擬各種游戲機(jī)、便攜設(shè)備,甚至在PC機(jī)中模擬另外一臺(tái)或多臺(tái)PC機(jī)。模擬器的主要作用,一方面是使得在某種平臺(tái)上能夠運(yùn)行其他平臺(tái)上的軟件,例如在PC機(jī)上玩游戲機(jī)中的游戲;另一方面是用軟件模擬的方式,提供用于測試設(shè)備的環(huán)境,以便于數(shù)據(jù)搜集,bug定位等等。對于游戲機(jī)、手機(jī)等設(shè)備的模擬器而言,一個(gè)重要的功能就是實(shí)現(xiàn)操作方式的模擬,常見的方式是把游戲機(jī)搖桿、按鍵、手機(jī)按鍵等映射到PC機(jī)上的鍵盤、鼠標(biāo)等操作設(shè)備,然而隨著技術(shù)的發(fā)展,現(xiàn)在各種設(shè)備上的輸入方式已經(jīng)不僅僅限于簡單的按鍵操作,例如智能手機(jī)、平板電腦上的觸屏操作、軌跡球操作、感應(yīng)操作等等都已經(jīng)逐漸成為主流的操作方式。目前,觸屏操作和軌跡球操作已經(jīng)可以用鍵盤或鼠標(biāo)的方式模擬實(shí)現(xiàn),但是,對于感應(yīng)操作而言,需要依賴設(shè)備中內(nèi)置的感應(yīng)器硬件設(shè)備(例如重力感應(yīng)器、磁力感應(yīng)器、姿態(tài)感應(yīng)器、旋轉(zhuǎn)感應(yīng)器等等)來實(shí)現(xiàn),在現(xiàn)有的模擬器軟件中,還無法實(shí)現(xiàn)對各類感應(yīng)操作方式的模擬。
發(fā)明內(nèi)容
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種模擬器重力感應(yīng)數(shù)據(jù)獲取方法及裝置,以實(shí)現(xiàn)在模擬器軟件中對重力感應(yīng)操作方式的模擬,技術(shù)方案如下:一種模擬器重力感應(yīng)數(shù)據(jù)獲取方法,包括:獲取模擬設(shè)備當(dāng)前的模擬姿態(tài)信息,所述姿態(tài)信息包括:模擬設(shè)備在自身坐標(biāo)系下相對于標(biāo)準(zhǔn)姿態(tài)的三軸旋轉(zhuǎn)角度α、β、Y ;根據(jù)α、β、Y計(jì)算得到模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣;以所述坐標(biāo)變換矩陣乘以模擬設(shè)備在標(biāo)準(zhǔn)姿態(tài)下的重力向量,得到模擬設(shè)備在當(dāng)前姿態(tài)下的重力感應(yīng)數(shù)據(jù);將重力感應(yīng)數(shù)據(jù)發(fā)送至模擬器的模擬設(shè)備操作系統(tǒng)模塊。根據(jù)本發(fā)明的一種實(shí)施方式,所述標(biāo)準(zhǔn)姿態(tài)為:設(shè)備正面朝上水平放置,且設(shè)備上側(cè)面朝向正北。根據(jù)本發(fā)明的一種實(shí)施方式,所述模擬設(shè)備自身坐標(biāo)系為:X軸從設(shè)備左側(cè)面指向右側(cè)面、Y軸從設(shè)備下側(cè)面指向上側(cè)面、Z軸從設(shè)備的背面指向正面。
根據(jù)本發(fā)明的一種實(shí)施方式,所述α、β、Y分別為:設(shè)備圍繞X、Y、Z軸逆時(shí)針方向旋轉(zhuǎn)的角度。根據(jù)本發(fā)明的一種實(shí)施方式,所述根據(jù)α、β、Y計(jì)算得到模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣,包括:根據(jù)Υ計(jì)算得到從標(biāo)準(zhǔn)姿態(tài)變?yōu)榈谝粫簯B(tài)的坐標(biāo)變換矩陣RZ,其中,設(shè)備從標(biāo)準(zhǔn)姿態(tài)圍繞Z軸旋轉(zhuǎn)角度Υ后變?yōu)榈谝粫簯B(tài);根據(jù)α計(jì)算得到從第一暫態(tài)變?yōu)榈诙簯B(tài)的坐標(biāo)變換矩陣RX,其中,設(shè)備從第一暫態(tài)圍繞X軸旋轉(zhuǎn)角度α后變?yōu)榈诙簯B(tài);根據(jù)β計(jì)算得到從第二暫態(tài)變?yōu)楫?dāng)前姿態(tài)的坐標(biāo)變換矩陣RY,其中,設(shè)備從第二暫態(tài)圍繞Y軸旋轉(zhuǎn)角度β后變?yōu)楫?dāng)前姿態(tài);則模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣R = RYRXRZ。一種模擬器重力感應(yīng)數(shù)據(jù)獲取裝置,包括:姿態(tài)信息獲取單元,用于獲取模擬設(shè)備當(dāng)前的模擬姿態(tài)信息,所述姿態(tài)信息包括:模擬設(shè)備在自身坐標(biāo)系下相對于標(biāo)準(zhǔn)姿態(tài)的三軸旋轉(zhuǎn)角度α、β、Y ;變換矩陣計(jì)算單元,用于根據(jù)α、β、Y計(jì)算得到模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣;感應(yīng)數(shù)據(jù)計(jì)算單元,用于以所述坐標(biāo)變換矩陣乘以模擬設(shè)備在標(biāo)準(zhǔn)姿態(tài)下的重力向量,得到模擬設(shè)備在當(dāng)前姿態(tài)下的重力感應(yīng)數(shù)據(jù);感應(yīng)數(shù)據(jù)發(fā)送單元,用于將重力感應(yīng)數(shù)據(jù)發(fā)送至模擬器的模擬設(shè)備操作系統(tǒng)模塊。根據(jù)本發(fā)明的一種實(shí)施方式,所述標(biāo)準(zhǔn)姿態(tài)為:設(shè)備正面朝上水平放置,且設(shè)備上側(cè)面朝向正北。根據(jù)本發(fā)明的一種實(shí)施方式,所述模擬設(shè)備自身坐標(biāo)系為:X軸從設(shè)備左側(cè)面指向右側(cè)面、Y軸從設(shè)備下側(cè)面指向上側(cè)面、Z軸從設(shè)備的背面指向正面。根據(jù)本發(fā)明的一種實(shí)施方式,所述α、β、Y分別為:設(shè)備圍繞X、Y、Z軸逆時(shí)針方向旋轉(zhuǎn)的角度。根據(jù)本發(fā)明的一種實(shí)施方式,所述變換矩陣計(jì)算單元,包括:第一計(jì)算子單元,用于根據(jù)Y計(jì)算得到從標(biāo)準(zhǔn)姿態(tài)變?yōu)榈谝粫簯B(tài)的坐標(biāo)變換矩陣Rz,其中,設(shè)備從標(biāo)準(zhǔn)姿態(tài)圍繞Z軸旋轉(zhuǎn)角度Υ后變?yōu)榈谝粫簯B(tài);第二計(jì)算子單元,用于根據(jù)α計(jì)算得到從第一暫態(tài)變?yōu)榈诙簯B(tài)的坐標(biāo)變換矩陣Rx,其中,設(shè)備從第一暫態(tài)圍繞X軸旋轉(zhuǎn)角度α后變?yōu)榈诙簯B(tài);第三計(jì)算子單元,用于根據(jù)β計(jì)算得到從第二暫態(tài)變?yōu)楫?dāng)前姿態(tài)的坐標(biāo)變換矩陣RY,其中,設(shè)備從第二暫態(tài)圍繞Y軸旋轉(zhuǎn)角度β后變?yōu)楫?dāng)前姿態(tài);第四計(jì)算子單元,用于計(jì)算模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣R=RyRxRz。本發(fā)明還提供一種模擬器系統(tǒng),包括如前所述的模擬器重力感應(yīng)數(shù)據(jù)獲取裝置以及模擬設(shè)備操作系統(tǒng)模塊;所述模擬設(shè)備操作系統(tǒng)模塊,用于調(diào)用所述模擬器重力感應(yīng)數(shù)據(jù)獲取裝置所發(fā)送的重力感應(yīng)數(shù)據(jù),將重力感應(yīng)數(shù)據(jù)下發(fā)至運(yùn)行于操作系統(tǒng)中的應(yīng)用程序。本發(fā)明實(shí)施例所提供的技術(shù)方案,利用用戶輸入的模擬設(shè)備相對于標(biāo)準(zhǔn)姿態(tài)的三軸旋轉(zhuǎn)角度信息,計(jì)算得到模擬設(shè)備在當(dāng)前姿態(tài)下的重力感應(yīng)數(shù)據(jù),該重力感應(yīng)數(shù)據(jù)可以直接發(fā)送至操作系統(tǒng),供上層應(yīng)用程序調(diào)用。相當(dāng)于模擬了硬件重力感應(yīng)器的功能,使得在模擬器軟件中,也可以實(shí)現(xiàn)對重力感應(yīng)操作方式的模擬。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。圖1為硬件設(shè)備的感應(yīng)架構(gòu)示意圖;圖2為本發(fā)明實(shí)施例的模擬器系統(tǒng)架構(gòu)示意圖;圖3為本發(fā)明實(shí)施例的設(shè)備坐標(biāo)系示意圖;圖4為本發(fā)明實(shí)施例模擬器重力感應(yīng)數(shù)據(jù)獲取方法流程圖;圖5為本發(fā)明實(shí)施例的坐標(biāo)系變換示意圖;圖6為本發(fā)明實(shí)施例模擬器重力感應(yīng)數(shù)據(jù)獲取裝置的結(jié)構(gòu)示意圖;圖7為Android設(shè)備的感應(yīng)架構(gòu)示意圖;圖8為本發(fā)明實(shí)施例的Android模擬器系統(tǒng)架構(gòu)示意圖。
具體實(shí)施例方式為了使本領(lǐng)域技術(shù)人員更好地理解本發(fā)明中的技術(shù)方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行詳細(xì)地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。圖1所示為正常硬件設(shè)備的感應(yīng)架構(gòu)示意圖:驅(qū)動(dòng)層的作用是提供操作系統(tǒng)與感應(yīng)器硬件的通信接口,獲取感應(yīng)器所獲得的感應(yīng)數(shù)據(jù)提供給應(yīng)用程序進(jìn)行調(diào)用。然而在模擬器中,并不具有感應(yīng)器硬件,操作系統(tǒng)的驅(qū)動(dòng)層無法獲取到相應(yīng)的感應(yīng)數(shù)據(jù),因而無法直接對需要感應(yīng)數(shù)據(jù)作為輸入的應(yīng)用程序進(jìn)行模擬運(yùn)行或測試。為解決以上問題,本發(fā)明提供一種模擬器系統(tǒng),如圖2所示,該系統(tǒng)包括模擬器感應(yīng)數(shù)據(jù)獲取裝置110和模擬設(shè)備操作系統(tǒng)模塊120,其中模擬器感應(yīng)數(shù)據(jù)獲取裝置110的作用是將用戶輸入的模擬設(shè)備姿態(tài)數(shù)據(jù)轉(zhuǎn)換為感應(yīng)數(shù)據(jù)并傳入操作系統(tǒng),相當(dāng)于模擬了硬件感應(yīng)器的功能。模擬設(shè)備操作系統(tǒng)模塊120則是以軟件的方式模擬了設(shè)備的操作系統(tǒng)。對于本發(fā)明而言,模擬器感應(yīng)數(shù)據(jù)獲取裝置110的具體功能是將用戶輸入的模擬設(shè)備姿態(tài)數(shù)據(jù)轉(zhuǎn)換為重力感應(yīng)數(shù)據(jù)。重力感應(yīng)數(shù)據(jù)的含義是:首先定義設(shè)備自身的坐標(biāo)系,在這個(gè)坐標(biāo)系下,對應(yīng)著一個(gè)設(shè)備所受重力加速度的向量表示;當(dāng)設(shè)備的空間姿態(tài)發(fā)生變化時(shí),坐標(biāo)系的方向也會(huì)發(fā)生變化,相應(yīng)的重力加速度向量也會(huì)發(fā)生變化,所謂重力感應(yīng)數(shù)據(jù),就是數(shù)據(jù)處在各種姿態(tài)時(shí),針對當(dāng)前坐標(biāo)系的重力加速度向量表示。
為便于計(jì)算,一般還會(huì)定義一個(gè)設(shè)備標(biāo)準(zhǔn)姿態(tài),在標(biāo)準(zhǔn)姿態(tài)下,設(shè)備僅受到在一個(gè)坐標(biāo)軸方向的、大小為g 9.8的重力加速度分量,而在其他坐標(biāo)軸方向的重力加速度分量為O。一般習(xí)慣定義設(shè)備水平放置(正面朝上、背面朝下)時(shí)為標(biāo)準(zhǔn)狀態(tài)。根據(jù)一般習(xí)慣,可以把設(shè)備近似看做一個(gè)六面體,具有上側(cè)面、下側(cè)面、左側(cè)面、右側(cè)面、正面、背面六個(gè)面,定義X軸為從設(shè)備左側(cè)面指向右側(cè)面的方向、Y軸為從設(shè)備下側(cè)面指向上側(cè)面的方向、Z軸為從設(shè)備的背面指向正面的方向,參見圖3所示。此外,定義設(shè)備正面朝上水平放置、上側(cè)面朝向正北的姿態(tài)為標(biāo)準(zhǔn)姿態(tài),則在標(biāo)準(zhǔn)姿態(tài)下,設(shè)備收到的重力加速度向量表示為:
權(quán)利要求
1.一種模擬器重力感應(yīng)數(shù)據(jù)獲取方法,其特征在于,包括: 獲取模擬設(shè)備當(dāng)前的模擬姿態(tài)信息,所述姿態(tài)信息包括:模擬設(shè)備在自身坐標(biāo)系下相對于標(biāo)準(zhǔn)姿態(tài)的三軸旋轉(zhuǎn)角度α、β、Y ; 根據(jù)α、β、Υ計(jì)算得到模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣; 以所述坐標(biāo)變換矩陣乘以模擬設(shè)備在標(biāo)準(zhǔn)姿態(tài)下的重力向量,得到模擬設(shè)備在當(dāng)前姿態(tài)下的重力感應(yīng)數(shù)據(jù); 將重力感應(yīng)數(shù)據(jù)發(fā)送至模擬器的模擬設(shè)備操作系統(tǒng)模塊。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述標(biāo)準(zhǔn)姿態(tài)為: 設(shè)備正面朝上水平放置,且設(shè)備上側(cè)面朝向正北。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述模擬設(shè)備自身坐標(biāo)系為: X軸從設(shè)備左側(cè)面指向右側(cè)面、Y軸從設(shè)備下側(cè)面指向上側(cè)面、Z軸從設(shè)備的背面指向正面。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述α、β、Y分別為: 設(shè)備圍繞X、Y、Z軸逆時(shí)針方向旋轉(zhuǎn)的角度。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)α、β、Y計(jì)算得到模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣,包括: 根據(jù)Y計(jì)算得到從標(biāo)準(zhǔn)姿態(tài)變?yōu)榈谝粫簯B(tài)的坐標(biāo)變換矩陣Rz,其中,設(shè)備從標(biāo)準(zhǔn)姿態(tài)圍繞Z軸旋轉(zhuǎn)角度Y后變?yōu)榈谝粫簯B(tài); 根據(jù)α計(jì)算得到從第一暫態(tài)變?yōu)榈诙簯B(tài)的坐標(biāo)變換矩陣Rx,其中,設(shè)備從第一暫態(tài)圍繞X軸旋轉(zhuǎn)角度α后變?yōu)榈诙簯B(tài); 根據(jù)β計(jì)算得到從第二暫態(tài)變?yōu)楫?dāng)前姿態(tài)的坐標(biāo)變換矩陣Ry,其中,設(shè)備從第二暫態(tài)圍繞Y軸旋轉(zhuǎn)角度β后變?yōu)楫?dāng)前姿態(tài); 則模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣R = RYRXRZ。
6.一種模擬器重力感應(yīng)數(shù)據(jù)獲取裝置,其特征在于,包括: 姿態(tài)信息獲取單元,用于獲取模擬設(shè)備當(dāng)前的模擬姿態(tài)信息,所述姿態(tài)信息包括:模擬設(shè)備在自身坐標(biāo)系下相對于標(biāo)準(zhǔn)姿態(tài)的三軸旋轉(zhuǎn)角度α、β、Y ; 變換矩陣計(jì)算單元,用于根據(jù)α、β、Υ計(jì)算得到模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣; 感應(yīng)數(shù)據(jù)計(jì)算單元,用于以所述坐標(biāo)變換矩陣乘以模擬設(shè)備在標(biāo)準(zhǔn)姿態(tài)下的重力向量,得到模擬設(shè)備在當(dāng)前姿態(tài)下的重力感應(yīng)數(shù)據(jù); 感應(yīng)數(shù)據(jù)發(fā)送單元,用于將重力感應(yīng)數(shù)據(jù)發(fā)送至模擬器的模擬設(shè)備操作系統(tǒng)模塊。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述標(biāo)準(zhǔn)姿態(tài)為: 設(shè)備正面朝上水平放置,且設(shè)備上側(cè)面朝向正北。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述模擬設(shè)備自身坐標(biāo)系為: X軸從設(shè)備左側(cè)面指向右側(cè)面、Y軸從設(shè)備下側(cè)面指向上側(cè)面、Z軸從設(shè)備的背面指向正面。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述α、β、Y分別為: 設(shè)備圍繞X、Y、Z軸逆時(shí)針方向旋轉(zhuǎn)的角度。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述變換矩陣計(jì)算單元,包括:第一計(jì)算子單元,用于根據(jù)Y計(jì)算得到從標(biāo)準(zhǔn)姿態(tài)變?yōu)榈谝粫簯B(tài)的坐標(biāo)變換矩陣Rz,其中,設(shè)備從標(biāo)準(zhǔn)姿態(tài)圍繞Z軸旋轉(zhuǎn)角度Y后變?yōu)榈谝粫簯B(tài); 第二計(jì)算子單元,用于根據(jù)α計(jì)算得到從第一暫態(tài)變?yōu)榈诙簯B(tài)的坐標(biāo)變換矩陣Rx,其中,設(shè)備從第一暫態(tài)圍繞X軸旋轉(zhuǎn)角度α后變?yōu)榈诙簯B(tài); 第三計(jì)算子單元,用于根據(jù)β計(jì)算得到從第二暫態(tài)變?yōu)楫?dāng)前姿態(tài)的坐標(biāo)變換矩陣RY,其中,設(shè)備從第二暫態(tài)圍繞Y軸旋轉(zhuǎn)角度β后變?yōu)楫?dāng)前姿態(tài); 第四計(jì)算子單元,用于計(jì)算模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣R =RyRxRz。
11.一種模擬器系統(tǒng),其特征在于,包括如權(quán)利要求6-10任一項(xiàng)所述的模擬器重力感應(yīng)數(shù)據(jù)獲取裝置以及模擬設(shè)備操作系統(tǒng)模塊; 所述模擬設(shè)備操作系統(tǒng)模塊,用于調(diào)用所述模擬器重力感應(yīng)數(shù)據(jù)獲取裝置所發(fā)送的重力感應(yīng)數(shù)據(jù),將重力感應(yīng)數(shù)據(jù)下發(fā)至運(yùn)行于操作系統(tǒng)中的應(yīng)用程序。
全文摘要
本發(fā)明公開了一種模擬器重力感應(yīng)數(shù)據(jù)獲取方法及裝置。一種模擬器重力感應(yīng)數(shù)據(jù)獲取方法包括獲取模擬設(shè)備當(dāng)前的模擬姿態(tài)信息,所述姿態(tài)信息包括模擬設(shè)備在自身坐標(biāo)系下相對于標(biāo)準(zhǔn)姿態(tài)的三軸旋轉(zhuǎn)角度α、β、γ;根據(jù)α、β、γ計(jì)算得到模擬設(shè)備當(dāng)前姿態(tài)相對于標(biāo)準(zhǔn)姿態(tài)的坐標(biāo)變換矩陣;以所述坐標(biāo)變換矩陣乘以模擬設(shè)備在標(biāo)準(zhǔn)姿態(tài)下的重力向量,得到模擬設(shè)備在當(dāng)前姿態(tài)下的重力感應(yīng)數(shù)據(jù);將重力感應(yīng)數(shù)據(jù)發(fā)送至模擬器的模擬設(shè)備操作系統(tǒng)模塊。應(yīng)用本發(fā)明方案,使得在模擬器軟件中,也可以實(shí)現(xiàn)對重力感應(yīng)操作方式的模擬。
文檔編號G06F17/50GK103186687SQ20111045663
公開日2013年7月3日 申請日期2011年12月30日 優(yōu)先權(quán)日2011年12月30日
發(fā)明者孫元臻, 冉放, 董海峰 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司