• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于MEMS傳感器的虛擬現(xiàn)實(shí)參觀系統(tǒng)

      2012-07-25 05:35:14劉玉生
      傳感器與微系統(tǒng) 2012年3期
      關(guān)鍵詞:狀態(tài)變量手柄指令

      徐 迅,劉玉生

      (四川大學(xué)電氣信息學(xué)院,四川成都 610065)

      0 引言

      虛擬現(xiàn)實(shí)(virtual reality,VR)是一種模擬人在自然環(huán)境中視、聽、動等行為的先進(jìn)人機(jī)交互技術(shù),能夠?yàn)槭褂谜吣M出與現(xiàn)實(shí)中相同的三維圖像世界。目前,虛擬現(xiàn)實(shí)技術(shù)的研究主要集中在虛擬場景建模開發(fā)和交互控制方法上,常用虛擬場景建模工具主要包括Vega,VRML等;而常用交互控制方法包括傳統(tǒng)鼠標(biāo)鍵盤或者數(shù)據(jù)手套與頭部跟蹤器,其中前者價格低廉但使用不便,后者價格過高,普通應(yīng)用場合難以承受[1,2]。本文提出了一種基于MEMS傳感器、LM3S1138微控制器和Vega虛擬仿真平臺的虛擬現(xiàn)實(shí)參觀系統(tǒng),用戶通過操縱手柄實(shí)現(xiàn)在虛擬場景中的自由參觀。該系統(tǒng)結(jié)構(gòu)簡單、成本低廉、使用方便,只需更改虛擬場景內(nèi)容即可將該系統(tǒng)移植到其他應(yīng)用領(lǐng)域。

      1 系統(tǒng)結(jié)構(gòu)

      本文提出的虛擬現(xiàn)實(shí)參觀系統(tǒng)如圖1所示,由手持模塊和主機(jī)端兩部分組成。

      手柄端微控制器根據(jù)地磁場和重力加速度在傳感器各測量軸方向上的分量計(jì)算出當(dāng)前手柄相對于重力加速度軸和地磁場軸的俯仰角和方位角,將這2個角度作為手柄的狀態(tài)變量并根據(jù)手柄初始狀態(tài)計(jì)算出動作指令。然后動作指令通過串口發(fā)送到主機(jī)端,通信驅(qū)動程序根據(jù)接收的動作指令改變虛擬場景視角。

      圖1 虛擬現(xiàn)實(shí)參觀系統(tǒng)結(jié)構(gòu)圖Fig 1 Structure diagram of virtual reality touring system

      2 手柄模塊設(shè)計(jì)

      操縱手柄是樓宇參觀系統(tǒng)的核心組成部分,用戶通過對手柄水平垂直旋轉(zhuǎn)和前后按鍵的操作,實(shí)現(xiàn)在主機(jī)端虛擬場景視角水平360°、垂直180°的全方位變化和虛擬場景中視角位置的前后平移,從而實(shí)現(xiàn)在虛擬場景中參觀的功能,手柄外觀示意如圖2所示。

      圖2 手柄外觀示意圖Fig 2 The schematic diagram of joystick appearance

      2.1 手柄硬件結(jié)構(gòu)

      虛擬樓宇參觀手柄由MMC212磁場傳感器、MXC6202加速度傳感器和LM3S1138微控制器(MCU)組成。兩種傳感器均有X,Y兩測量軸,在每個軸分量上可分別測量±2 Gs的磁感應(yīng)強(qiáng)度和 ±2gn的加速度,并分別以512counts/Gs和512counts/gn的精度通過I2C總線輸出。

      圖3 傳感器與手柄位置關(guān)系Fig 3 Position relation between sensors and joystick

      傳感器與手柄位置關(guān)系如圖3所示,磁場傳感器與手柄上平面平行,加速度傳感器與手柄側(cè)面平行,初始狀態(tài)下,手柄與地面平行,磁場傳感器X,Y測量軸組成平面垂直于重力加速度,加速度傳感器Y測量軸與重力加速度平行。

      在靠近地表處,重力加速度垂直于地面,地磁場近似平行于地面,當(dāng)以重力加速度相反方向?yàn)閆軸,地磁場方向?yàn)閄軸,可得到如圖4所示的三維空間,其中XOY平面與地面平行。圖4中所示三維空間采用慣性坐標(biāo)系,PD表示手柄在空間中正方向,方位角α為PD在XOY平面投影與X軸夾角(0°~360°),俯仰角β為PD與XOY平面夾角(-90°~90°)。PD在空間中的方向可由圖4中的方位角α和俯仰角β唯一決定,因此,選取α,β作為手柄的狀態(tài)變量。磁場傳感器的X,Y兩測量軸對應(yīng)圖中向量MX,MY;加速度傳感器X,Y兩測量軸對應(yīng)圖中向量AY,AZ。由傳感器特性可知,AX,MY和PD平行,AX,AY與Z軸在同一平面且β=β',β'可由AX,AY求出;同理MYxoy,MX在XOY平面內(nèi)且α=α',α'可由MX,MYxoy求出,其中

      因此,手柄在空間中狀態(tài)完全可以由磁場傳感器和加速度傳感器的測量值計(jì)算得到[3]。

      圖4 手柄在三維空間中狀態(tài)Fig 4 State of joystick in 3D space

      2.2 狀態(tài)變量計(jì)算

      MEMS傳感器輸出數(shù)字量,將待測量物理量±2gn和±2 Gs分別線性映射至0x000~0x7FF的數(shù)字輸出,當(dāng)待測物理量分別為0gn和0 Gs,輸出量為0x400,因此,測量輸出數(shù)字量OD與實(shí)際測量物理量G的關(guān)系可由式(1)表示,當(dāng)G>0時,待測量物理量在測量軸方向分量為正,G<0時,待測量物理量在測量軸方向分量為負(fù)

      通過分析待測向量在測量坐標(biāo)系中所在象限,計(jì)算得到手柄狀態(tài)變量[4]。圖5所示為手柄正方向在YOZ坐標(biāo)系中分別位于第一和第四象限,其中加速度傳感器AX,AY測量軸輸出實(shí)際測量加速度值Gx和Gy,根據(jù)式(2)計(jì)算得到俯仰角β

      圖5 手柄俯仰角計(jì)算示意圖Fig 5 Schematic diagram of pitch angle calculation of joystick

      當(dāng)Bx>0且BYxoy<0時α∈[π/2,π],可由式(4)得到

      當(dāng)Bx<0且BYxoy<0時α∈[π,3π/2],可由式(5)得到

      當(dāng)Bx>0且BYxoy<0時α∈[3π/2,2π],可由式(6)得到

      手柄狀態(tài)變量由x=[αβ]T表示樓宇參觀系統(tǒng)對手柄狀態(tài)的精度要求不高,α和β均精到個位,且α∈[0°,360°],β∈[-90°,90°],因此,選擇α以9 位編碼;β以8 位編碼。

      2.3 動作指令

      為減小傳輸數(shù)據(jù)量,手柄模塊微處理器根據(jù)手柄狀態(tài)和按鍵判斷生成動作指令,傳輸?shù)街鳈C(jī)端。

      虛擬場景中視角變換動作包括視角上仰、視角下俯、視角左轉(zhuǎn)、視角右轉(zhuǎn)、視角前進(jìn)和視角后退,其中是否發(fā)生前4種動作由判斷手柄狀態(tài)決定,后2種動作由從手柄按鍵獲取。圖6所示為以一個字節(jié)編碼動作指令的方法。

      圖6 動作指令編碼規(guī)則Fig 6 Encoding rule of action command

      圖6中每一標(biāo)志位為1表示執(zhí)行該動作,否則,不執(zhí)行該動作。

      手柄模塊初始化后,系統(tǒng)自動記錄手柄初始狀態(tài)下的狀態(tài)變量x0=[α0β0]T,然后進(jìn)入循環(huán)狀態(tài),每次循環(huán)首先讀取按鍵狀態(tài),然后獲取手柄狀態(tài)變量xi=[αiβi]T,得到狀態(tài)變化量Δxi=[ΔαiΔβi]T。

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

      動作指令碼按照表1所示規(guī)則生成

      表1 動作指令生成規(guī)則Tab 1 Generation rules of action command

      多個動作可以同步觸發(fā),例如:視角同時左轉(zhuǎn)、上仰和前進(jìn),此時動作指令碼為00010101b,但左轉(zhuǎn)與右轉(zhuǎn)、上仰與下俯、前進(jìn)與后退不能分別同時發(fā)生。

      3 主機(jī)端設(shè)計(jì)

      主機(jī)端由通信驅(qū)動程序和虛擬場景應(yīng)用程序兩部分組成。通信驅(qū)動程序由C++編寫,根據(jù)接收手柄模塊發(fā)送的動作指令碼,向虛擬場景發(fā)出視角動作。虛擬場景應(yīng)用程序通常需要具備的功能與系統(tǒng)工作流程:

      1)可編輯功能,即用戶可以根據(jù)需求設(shè)計(jì)自己需要的三維虛擬場景模型

      2)接口功能,即虛擬場景中視角變換操作與可以由操作系統(tǒng)或其它應(yīng)用程序調(diào)用

      本文選擇Vega的Lynx圖形用戶界面作為虛擬場景應(yīng)用程序,選擇Walk漫游方式,通過模擬按下鍵盤鼠標(biāo)協(xié)同控制方式定義中對應(yīng)鍵來實(shí)現(xiàn)視角變換功能;通信驅(qū)動程序根據(jù)接收動作指令,調(diào)用WinIO.dll動態(tài)鏈接庫函通過讀寫8042鍵盤鼠標(biāo)控制器的0x60和0x64寄存器,模擬按下Vega程序中設(shè)定的對應(yīng)鍵盤按鍵操作。例如:當(dāng)動作指令為00010101b(視角同時左轉(zhuǎn)、上仰和前進(jìn)),此時通信驅(qū)動程序模擬同時按下Vega程序中設(shè)定的視角左轉(zhuǎn)、上仰和前進(jìn)按鍵[5]。

      3)系統(tǒng)工作流程

      手柄模塊程序與主機(jī)端程序異步執(zhí)行,手柄模塊循環(huán)向主機(jī)端發(fā)送動作指令,每次發(fā)送后開計(jì)時器,等待主機(jī)回應(yīng);主機(jī)端以中斷方式接收,收到指令后模擬鍵盤操作同時向手柄模塊發(fā)送成功接收信息(ACK),若手柄模塊等待回應(yīng)超時則重新發(fā)送動作指令,手柄模塊程序流程如圖7所示,圖8(a)所示為手柄模塊定時器超時中斷子程序流程圖,圖8(b)所示為手柄模塊串口接收中斷子程序流程圖,圖8(c)所示為主機(jī)端串口接收中斷子程序流程圖,圖8(d)所示為主機(jī)端通信驅(qū)動程序流程圖。

      圖7 手柄模塊程序流程Fig 7 Program flow chart of joystick module

      4 測試結(jié)果

      為測試系統(tǒng)能否準(zhǔn)確感應(yīng)狀態(tài)變化并發(fā)出正確動作指令,設(shè)計(jì)如下試驗(yàn),假設(shè)圖4中|PD|=1,首先單獨(dú)在水平和垂直方向轉(zhuǎn)動手柄,直到手柄發(fā)出視角變化指令,然后在空間中任意方向轉(zhuǎn)動手柄,記錄指令發(fā)出和變化邊緣狀態(tài)變量序列{xi|i=1,2,…N},其中,xi=[αiβi]T,由此得到球坐標(biāo)序列{Pi|Pi=[|PD|]T},該坐標(biāo)序列表示的空間曲線在Y-Z平面內(nèi)投影如圖9所示。

      圖9中理論指令邊界和實(shí)測指令邊界分別將Y-Z平面分割成9個子區(qū)域,當(dāng)PD端點(diǎn)在Y-Z平面內(nèi)投影分別在子區(qū)域I至IX時,對應(yīng)發(fā)出指令如表2所示。

      圖8 系統(tǒng)程序流程圖Fig 8 Flow chart of system program

      圖9 動作指令Y-Z平面內(nèi)投影邊界Fig 9 Action command edge projected on plane Y-Z

      此外,從圖9可以看出:系統(tǒng)在實(shí)際使用中動作指令邊界與理論邊界在手柄狀態(tài)變化量Δα,Δβ在超出判斷閾值不大時基本吻合,但偏轉(zhuǎn)角度過大時兩組邊界存在一定偏差,該偏差主要是由于在使用中,人手轉(zhuǎn)動導(dǎo)致手柄繞PD軸旋轉(zhuǎn)一定角度,系統(tǒng)存在未測量的橫滾角。

      表2 區(qū)域指令對照表Tab 2 Area and command comparison

      5 結(jié)論

      該系統(tǒng)根據(jù)加速度和磁場傳感器測量結(jié)果,計(jì)算得出手柄狀態(tài)變量,動作指令通過串口傳送到主機(jī)端,在Vega虛擬場景中完成相應(yīng)虛擬場景動作,實(shí)測結(jié)果表明:在使用當(dāng)中手柄能夠根據(jù)用戶操作發(fā)出正確的動作指令,且在偏轉(zhuǎn)角度不大時實(shí)測動作指令邊緣與理論邊緣相差不大,能夠得到滿意的性能。

      [1]吳 迪,黃 文.騫虛擬現(xiàn)實(shí)技術(shù)的發(fā)展過程及研究現(xiàn)狀[J].海洋測繪,2002,22(6):15 -17.

      [2]花 蕾.具有較高真實(shí)感的網(wǎng)上虛擬校園構(gòu)建技術(shù)研究[D].西安:西安理工大學(xué),2010.

      [3]戎海龍,戴先中,劉信羽.廚師手握鍋具運(yùn)動信息獲取方法[J].儀器儀表學(xué)報,2009,30(11):2291 -2297.

      [4]蔣海濤,郭戰(zhàn)營.基于 MEMS加速度傳感器的飛行器傾角測量系統(tǒng)設(shè)計(jì)[J].計(jì)算機(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.

      猜你喜歡
      狀態(tài)變量手柄指令
      一階動態(tài)電路零狀態(tài)響應(yīng)公式的通用拓展
      聽我指令:大催眠術(shù)
      基于TwinCAT3控制系統(tǒng)的YB518型小盒透明紙包裝機(jī)運(yùn)行速度的控制分析
      基于嵌套思路的飽和孔隙-裂隙介質(zhì)本構(gòu)理論
      基于PLC控制的手柄座鉆孔攻絲一體機(jī)的研發(fā)
      ARINC661顯控指令快速驗(yàn)證方法
      LED照明產(chǎn)品歐盟ErP指令要求解讀
      電子測試(2018年18期)2018-11-14 02:30:34
      一種多功能無線手柄的設(shè)計(jì)
      電子制作(2018年11期)2018-08-04 03:25:44
      為什么廚具的手柄不是金屬的?
      Recent Development and Emerged Technologies of High-Tc Superconducting Coated Conductors
      邹城市| 会昌县| 明水县| 平安县| 买车| 兰坪| 荃湾区| 德清县| 横山县| 昭通市| 安西县| 安阳县| 永登县| 富平县| 定边县| 明星| 江城| 冷水江市| 银川市| 师宗县| 砚山县| 清镇市| 新丰县| 安平县| 酉阳| 陆丰市| 郁南县| 北安市| 陆河县| 乌兰县| 独山县| 东阿县| 浦江县| 襄樊市| 兰西县| 桐柏县| 延吉市| 鄂尔多斯市| 广东省| 儋州市| 新源县|