桌面虛擬現(xiàn)實(shí)系統(tǒng)中數(shù)據(jù)手套的應(yīng)用研究_第1頁
桌面虛擬現(xiàn)實(shí)系統(tǒng)中數(shù)據(jù)手套的應(yīng)用研究_第2頁
桌面虛擬現(xiàn)實(shí)系統(tǒng)中數(shù)據(jù)手套的應(yīng)用研究_第3頁
桌面虛擬現(xiàn)實(shí)系統(tǒng)中數(shù)據(jù)手套的應(yīng)用研究_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第 13 卷增刊2001 年 11 月系統(tǒng)仿真學(xué)報journal of system simulationvol. 13 suppl.nov. 2001文章編號:1004-731x (2001) 0b-0553-03桌面虛擬現(xiàn)實(shí)系統(tǒng)中數(shù)據(jù)手套的應(yīng)用研究劉賢梅, 李從信, 賈惠柱(大慶石油學(xué)院計(jì)算機(jī)科學(xué)系,安達(dá) 151400)摘 要:在人機(jī)交互中數(shù)據(jù)手套的引入,能夠充分發(fā)揮手在交互過程中的自然性。介紹了數(shù)據(jù)手 套在虛擬環(huán)境中進(jìn)行交互的過程。在變電所培訓(xùn)系統(tǒng)中實(shí)現(xiàn)了基于 5dt data glove 5 的人機(jī)交互 操作,并設(shè)計(jì)了數(shù)據(jù)手套校準(zhǔn)函數(shù)和校準(zhǔn)步驟,設(shè)計(jì)了在 vrt 場景中用手勢進(jìn)行漫游的

2、程序,利 用 vrt sdk 編制了獲取數(shù)據(jù)手套傳感器測量值的程序。上述方法對于其它虛擬系統(tǒng)引入數(shù)據(jù)手 套的設(shè)計(jì)將具有一定的啟發(fā)作用。關(guān)鍵詞:虛擬現(xiàn)實(shí);人機(jī)交互;數(shù)據(jù)手套;vrt sdk;手勢映射中圖分類號:tp391.9文獻(xiàn)標(biāo)識碼:athe research of using data glove on desktop virtual reality systemliu xian-mei, li cong-xin, jia hui-zhu(dept of computer science, daqing petroleum institute, anda 151400, china)abst

3、ract: the data glove is used in the human computer interactive system, by which the natural character of hand is fully exerted. the interactive process of data glove used in virtual environment is introduced. human computer interactive operation based on 5dt data glove 5 is realized in transformer s

4、ubstation training system. adjusting function, adjusting step and touring system program are designed. the program for getting the scaled data of data glove sensor is worked out by vrt sdk. it also has the elicitation for designing other virtual reality system with data glove.keywords: virtual reali

5、ty; human computer interaction; data glove; vrt sdk; gesture mapping利用數(shù)據(jù)手套進(jìn)行人機(jī)交互的過程如圖1所示。1引言鼠標(biāo)是最常見的人機(jī)交互設(shè)備,但是通過鼠標(biāo)操縱時, 不能直接將自己的意圖表達(dá)在應(yīng)用環(huán)境中。如果條件許可的 話,引入數(shù)據(jù)手套作為交互工具更符合人們的習(xí)慣。使用手 與計(jì)算機(jī)進(jìn)行交互,將日常生活中獲得的經(jīng)驗(yàn)技能直接運(yùn)用 到交互活動中,則大大提高了計(jì)算機(jī)的可操作性。數(shù)據(jù)手套 的出現(xiàn)為在人機(jī)交互中充分發(fā)揮手在交互過程中的自然性、 靈巧性和適應(yīng)性創(chuàng)造了條件。計(jì)算 機(jī)控 數(shù) 制 據(jù)圖 1 利用數(shù)據(jù)手套進(jìn)行人機(jī)交互的過程2數(shù)據(jù)手套

6、與虛擬環(huán)境進(jìn)行交互的過程在虛擬現(xiàn)實(shí)環(huán)境中,用戶通過數(shù)據(jù)手套,與虛擬世界 進(jìn)行各種交互操作。數(shù)據(jù)手套可以實(shí)時地檢測人在工作時的 手形和手部各關(guān)節(jié)的彎曲角度,把用戶手的狀態(tài)信息輸入到 計(jì)算機(jī),用一個虛擬手跟隨用戶手運(yùn)動,在虛擬環(huán)境中穿行、 抓取、釋放物體,如果手套有力反饋,還能給用戶以力的反 饋,讓用戶感覺到物體的重量和材質(zhì)等。在虛擬場景中模擬 手的動作,這就需要在計(jì)算機(jī)中利用某種算法把手描述出 來,然后將其顯示在場景中,而且它能隨著用戶手的動作而 刷新手的圖形顯示。有關(guān)這方面的內(nèi)容請參閱文獻(xiàn)1-4,本 文不再論述。計(jì)算機(jī)接收來自數(shù)據(jù)手套的手形、手位數(shù)據(jù),計(jì)算出手的當(dāng)前坐標(biāo)和運(yùn)動方向,然后根據(jù)可操

7、縱物體的空間位置 進(jìn)行交互檢測判定,并將判定結(jié)果送往計(jì)算機(jī),由圖形生成 系統(tǒng)更新模型的顯示,輸出到顯示器,同時將觸覺信號送數(shù) 據(jù)手套以產(chǎn)生觸覺。3數(shù)據(jù)手套在培訓(xùn)系統(tǒng)中人機(jī)交互的實(shí)現(xiàn)我們以pc機(jī)為硬件平臺,superscape公司的虛擬環(huán)境構(gòu) 造平臺vrt5.6為軟件開發(fā)平臺,開發(fā)了桌面型虛擬現(xiàn)實(shí)系 統(tǒng)變電所培訓(xùn)系統(tǒng),并在培訓(xùn)系統(tǒng)中引入了數(shù)據(jù)手套和 頭盔顯示器作為人機(jī)接口工具,如圖2所示。下面主要介紹 數(shù)據(jù)手套在變電所培訓(xùn)系統(tǒng)中的應(yīng)用原理和實(shí)現(xiàn)過程。3.1 5dt data glove 5 簡介我們以5dt(fifth dimension technologies)公司生產(chǎn)的收稿日期:2001-

8、08-14作者簡介:劉賢梅 (1968-), 女, 山東日照人, 碩士, 研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò)、 虛擬現(xiàn)實(shí)等的研究。圖象圖象生成輸出屏幕或 頭盔顯示器數(shù)據(jù)手套手形數(shù)據(jù)手的坐標(biāo)和運(yùn)動 狀態(tài)的確定 手與虛擬空間 的交互檢測手形傳感器觸覺信號位置傳感器手位數(shù)據(jù)(3)用戶應(yīng)用程序用于 vrt 系統(tǒng)內(nèi)用戶自定義的任務(wù)。可以利用第一種方式編制 vrt 對數(shù)據(jù)手套的設(shè)備驅(qū)動 程序,這是最直接的方法。由于該數(shù)據(jù)手套提供了以 c/c+ 頭文件(.h)、vc+庫(.lib )、和動態(tài)鏈接庫(.dll)形式存在的 驅(qū)動程序,可以調(diào)用該驅(qū)動程序提供的功能,來完成對數(shù)據(jù) 手套的驅(qū)動。所以我們利用數(shù)據(jù)手套驅(qū)動程序建立第三

9、種類 型的應(yīng)用程序。在 vrt sdk 框架中不能很好地直接調(diào)用數(shù)據(jù)手套驅(qū) 動程序來驅(qū)動數(shù)據(jù)手套,所以為了將 vrt sdk 同數(shù)據(jù)手套 驅(qū)動程序聯(lián)系起來,利用 vc+編制了一個中間動態(tài)鏈接庫 sdk_glovedriver.dll,在該動態(tài)鏈接庫中定義了 vrt sdk 中 所要調(diào)用數(shù)據(jù)手套驅(qū)動程序的函數(shù)原型。所有要使用的如打開、關(guān)閉數(shù)據(jù)手套設(shè)備,獲取數(shù)據(jù)手 套參數(shù)等功能的函數(shù)原型都在 sdk_glovedriver.dll 中定義。 通過中間動態(tài)鏈接庫,利用 vrt sdk 設(shè)計(jì)一個獲取數(shù)圖 2 培訓(xùn)系統(tǒng)中數(shù)據(jù)手套和頭盔顯示器的引入5dt data glove 5作為人機(jī)交互設(shè)備,在vrt

10、平臺上,設(shè)計(jì) 實(shí)現(xiàn)利用數(shù)據(jù)手套的手勢與虛擬場景進(jìn)行交互。5dt data glove 5 5數(shù)據(jù)手套是黑色的有彈性的雙層 紡織品,夾層中是用光學(xué)纖維制造的皮線傳感器,每個手指 上有一個傳感器,用于測量手指的平均屈伸度(即手指中部 關(guān)節(jié)的屈伸度)。在手腕部位還有兩個傳感器,分別測量手 掌的俯仰角和傾斜角。5dt data glove 5通過標(biāo)準(zhǔn)的rs-232 串行口與計(jì)算機(jī)相連。5dt data glove 5具有命令、報告數(shù) 據(jù)、連續(xù)數(shù)據(jù)、模擬鼠標(biāo)等工作方式。數(shù)據(jù)手套的采樣速率 最高可達(dá)200hz,從手套采樣得到的數(shù)據(jù)串共9個字節(jié),格式 如下:據(jù)手套數(shù)據(jù)的應(yīng)用程序。該應(yīng)用程序包括以下幾個主要的

11、部分:(1)初始化 app_init;(2)功能實(shí)現(xiàn);(3)退出 app_exit。圖 3 表示了 sdk 程序的的工作過程。其中:header=80h為領(lǐng)頭字節(jié),表示新的數(shù)據(jù)串的開始;f1f5為對應(yīng)的手指的屈伸度,對于右手依次是拇指、食指、中 指、無名指、小指(若是左手則順序相反)。每個屈伸度的 變化范圍是0255,即最小屈伸度為 0(手指伸直的時候), 最大屈伸度為255(手指最彎屈的時候);pitch為手上下擺動的 傾斜角度,roll為手掌轉(zhuǎn)動的傾斜角度,這兩個值的范圍同 樣是0255,當(dāng)手掌與地面平行的時候?yàn)?28;checksum為 校驗(yàn)和。由于該數(shù)據(jù)手套沒有位置傳感器,所以不能從數(shù)

12、據(jù)手套 的輸入數(shù)據(jù)中得到手在三維空間的位置信息,因而在應(yīng)用系 統(tǒng)中不考慮通過數(shù)據(jù)手套來獲取手在三維空間的位置變化。3.2 基于 vrt sdk 的編程在變電所培訓(xùn)系統(tǒng)中使用數(shù)據(jù)手套,首要的是能夠讀 取數(shù)據(jù)手套各個傳感器的測量值。由于在vrt中不能直接驅(qū) 動并讀取數(shù)據(jù)手套的信息,需要通過vrt的sdk使用vc+ 進(jìn)行編程,擴(kuò)展此功能。擴(kuò)展后得到的函數(shù)作為vrt的scl(superscape control language)命令的一部分,可以提供給scl程序直接調(diào)用。sdk 是 vrt 的應(yīng)用程序開發(fā)工具包6。利用 sdk,用 戶可以建立自己的應(yīng)用程序,這些應(yīng)用程序通過應(yīng)用程序接 口(api)將

13、結(jié)果返回 vrt 系統(tǒng)。利用 sdk 建立的應(yīng)用程序主要有三種:(1)設(shè)備驅(qū)動程序特定硬件的接口。(2)數(shù)據(jù)轉(zhuǎn)換程序用于 vrt 數(shù)據(jù)和其它文件格圖 3 sdk 程序工作過程初始化主要完成注冊新 scl 函數(shù)名、打開中間動態(tài)鏈 接庫等任務(wù)。退出時取消新函數(shù)的注冊,釋放資源。功能實(shí) 現(xiàn)部分主要獲取數(shù)據(jù)手套相關(guān)數(shù)據(jù),其簡要流程如下描述:static void vrtcall scl_ getglovedata(void) /*新 scl 函數(shù)代碼*/float *sensorvalue;sensorvalue=popp(e_sspfloat);/* 有參數(shù),則參數(shù)退棧*/下面使用參數(shù)編寫相關(guān)的函數(shù)

14、代碼 初始化和數(shù)據(jù)手套連接的串行口; mpglove=fdopen(port)/*打開數(shù)據(jù)手套端口*/if (m_pglove)vrt應(yīng)用程序初始化api注冊指令表scl注冊 scl退出 取消注冊新 scl 指令中間動態(tài)鏈接庫數(shù)據(jù)手套驅(qū)動程序headerf1f2f3f4f5pitchrollchecksum第 13 卷增刊劉賢梅等:桌面虛擬現(xiàn)實(shí)系統(tǒng)中數(shù)據(jù)手套的應(yīng)用研究555如 fdgetglovetype(),fdgetglovehand(),fdgetgloveinfo(),fdgetnumsensors()等;fggetglvda(m_pglove,sensorvalue);/*取得數(shù)據(jù)手

15、套的 7 個傳感器的測量值f1f5,roll,pitch*/(2)獲得所有手指的最大彎曲度;(3)獲得手上下擺動的傾斜角度和手掌轉(zhuǎn)動的傾斜角 度的最小值;(4)獲得手上下擺動的傾斜角度和手掌轉(zhuǎn)動的傾斜角 度的最大值。當(dāng)這些步驟完成以后,程序生成校準(zhǔn)表。 校準(zhǔn)過程決定了每個傳感器的最佳校準(zhǔn)曲線。對于用戶的每一次使用,最好都進(jìn)行上述操作。校準(zhǔn)程序 cdadjust()是在 vrt 世界中用 scl 語言實(shí)現(xiàn) 的,實(shí)現(xiàn)了 7 個傳感器 f1f5、pitch 和 roll 測量值的校準(zhǔn)。 其中 7 個傳感器 f1f5、pitch 和 roll 的測量值是通過調(diào)用 getglovedata()獲得的。3

16、.4 手勢映射數(shù)據(jù)手套可以報告手指各關(guān)節(jié)的狀態(tài),從而實(shí)現(xiàn)手勢 輸入。人的手是由五個手指和手掌組成的,可以用五個手指 來定義手勢集,用手掌的運(yùn)動定義運(yùn)動方向和速度。這樣就 可以用數(shù)據(jù)手套的手勢和虛擬場景進(jìn)行交互操作。通過給5個手指指定1或0(表示手指的平伸/彎曲)來定 義手勢集。這樣共有25=32種可能的組合(手勢號0手勢號31,記g0g31)。例如,手勢0 g0定義為所有手指都為0(即 彎曲),則是握拳的姿勢。手勢31 g31定義為所有手指都為1(即平伸),則是平伸的姿勢。 用戶通過手勢表達(dá)自己的操作意愿,這就需要計(jì)算機(jī)具備將用戶手勢翻譯成操作命令的功能,為此先要將待實(shí)現(xiàn) 的操作命令(如選擇、

17、按下、旋轉(zhuǎn)、瀏覽)與一定的手勢動作 對應(yīng)起來,這樣在系統(tǒng)運(yùn)行時,如果用戶當(dāng)前手勢與預(yù)先定 義好的參考手勢匹配,計(jì)算機(jī)就執(zhí)行相應(yīng)的操作,對用戶手 勢作出響應(yīng)。如前所述,從5dt data glove 5得到的手勢信 息是一個7維向量,因此,事先建立了多個手勢動作對vrt sdk 應(yīng)用程序用 vc+語言編寫,sdk 程序在 vc+中調(diào)試后,需要編譯為 32 位的動態(tài)鏈接庫 dll,如 getglovedata.dll,將此 dll 導(dǎo)入 vrt 中,作為 vrt 的 scl 命令的一部分直接被引用,來獲取數(shù)據(jù)手套的相關(guān)數(shù)據(jù)。3.3 數(shù)據(jù)手套校準(zhǔn)數(shù)據(jù)手套出廠前已經(jīng)進(jìn)行過校準(zhǔn),但在工廠校準(zhǔn)數(shù)據(jù) 手套時

18、,是盡可能地獲得最大的動態(tài)范圍。動態(tài)范圍是指最 大輸出值(平直手,flat hand)和最小輸出值(彎曲手,flexed hand)之間的不同。動態(tài)范圍表示如下:dynamic range= valuemax valuemin但是不同人不同大小的手使用數(shù)據(jù)手套時,動態(tài)范圍 可能有所不同。因此,對于所有數(shù)據(jù)手套應(yīng)用程序,都應(yīng)該 帶一個軟件校準(zhǔn)程序。軟件校準(zhǔn)將對不同大小手的不同動態(tài) 范圍的效果進(jìn)行規(guī)格化。所以本系統(tǒng)同時設(shè)計(jì)了校準(zhǔn)程序。 針對本系統(tǒng)使用的5dt data glove 5數(shù)據(jù)手套,主要校 準(zhǔn)7個傳感器(f1、f2、f3、f4、f5、pitch、roll)的輸出值。軟件校準(zhǔn)程序存儲最大和

19、最小值,并根據(jù)最大動態(tài)范圍校準(zhǔn)輸出。數(shù)據(jù)手套默認(rèn)的屈伸度、傾斜度的變化范圍是0255,即最小屈伸度、傾斜度為0,最大屈伸度、傾斜度 為255;這個變化范圍根據(jù)實(shí)際系統(tǒng)的要求,可以自行設(shè)定。 在本系統(tǒng)中,設(shè)定其變化范圍為0180。例如:最小值是:40 = valuemin最大值是:206 = valuemax動態(tài)范圍是:valuemax valuemin=206 40 = 166為了通過整個動態(tài)范圍校準(zhǔn)測量的值,按如下公式計(jì)算(該公式即為校準(zhǔn)函數(shù)):(gesture ,action ),0in。其中g(shù)esture =( g ,pitch ,roll ),iii jii0j 31 ,action

20、是要執(zhí)行的動作。i本系統(tǒng)對手勢動作對作如下定義:手勢g0控制使當(dāng)前的動作停止(action1),g2控制視點(diǎn)前進(jìn)(action2),g1控valuescaled = (valuemeasuredrange) valuemin) x (180/dynamic制視點(diǎn)后退(action ), roll控制視點(diǎn)的旋轉(zhuǎn)(action ),pitch34控制視點(diǎn)移動的速度(action );當(dāng)虛擬手與各種柜上的各5對于40,則變成:(40 40) x (180/166) = 0對于206,則變成:(206 40) x (180/166) = 180 因而,利用上述公式校準(zhǔn)所有輸出。 在校準(zhǔn)過程中,在每一步

21、用戶被要求使帶上手套的手形成一種簡單姿勢,然后等一切就緒后按下指定的鼠標(biāo)按 鈕。一旦鼠標(biāo)按鈕被按下,程序就讀取數(shù)據(jù)手套的原始彎曲 數(shù)據(jù)值,這些值其后被用來生成一張有關(guān)每一個手指關(guān)節(jié)的 校準(zhǔn)表,在每一步程序顯示相應(yīng)的數(shù)值來描述手的彎曲度。 校準(zhǔn)步驟如下:(1)獲得所有手指的最小彎曲度;種開關(guān)接觸時表示選擇該開關(guān),此時,g 表示按下該開關(guān),4g5表示旋轉(zhuǎn)該開關(guān),g6表示搬動該開關(guān)。在該交互系統(tǒng)中,用戶接收來自于數(shù)據(jù)手套的手勢信息 gesture , 在 (gesture ,action ) 中查找和 gesture 匹配的 ciicgesturej(相同或相近),則執(zhí)行g(shù)esturej對應(yīng)的動作a

22、ctionj。上述過程在vrt場景中通過對象的scl編程實(shí)現(xiàn),其框 架如下:(1)調(diào)用getglovedata(),得到f1f5、pitch、roll值;(2)調(diào)用cdadjust(),得到校正后的f1f5、pitch、roll值;(3)利用f1f5、pitch、roll計(jì)算其屈伸度;出相應(yīng)的改變,以保持各仿真場景的一致性。在 corba 中,采用回調(diào)(callback)機(jī)制或者事件服 務(wù)來實(shí)現(xiàn)模型同步中的數(shù)據(jù)傳送等功能會使得程序的耦合 性加強(qiáng),不利于系統(tǒng)的擴(kuò)展和維護(hù),因此,我們采用事件服 務(wù)來實(shí)現(xiàn)模型的同步功能。標(biāo)準(zhǔn)的 corba 事件服務(wù)(corbaevent service)規(guī)范缺少實(shí)時

23、系統(tǒng)所必須的許多特征,這些特征包括:事件過濾、 事件關(guān)聯(lián)、以及事件定期處理等。tao 的實(shí)時事件服務(wù)(real-time event service)正是為了彌補(bǔ)這些缺點(diǎn)而發(fā)展起 來的。我們采用的事件模型是推模型,如下圖所示:遙操作技術(shù)是當(dāng)前國內(nèi)外研究的一個熱點(diǎn),分布式網(wǎng)絡(luò)環(huán)境下的多人協(xié)作遙操作又是其中的一個難點(diǎn)。本文利用 預(yù)測仿真遙操作技術(shù),在分布式環(huán)境下由多個操作者分別控 制不同的機(jī)器人,實(shí)現(xiàn)了多機(jī)器人協(xié)調(diào)工作。實(shí)驗(yàn)表明 corba 技術(shù)是實(shí)現(xiàn)分布式協(xié)同網(wǎng)絡(luò)遙操作的一個解決方案。pa10 robotsupplierconsumerarobot dataevent channelconsum

24、ermodule robotsupplierconsumer圖 5 事件模型當(dāng)機(jī)器人的數(shù)據(jù)發(fā)生變化是,提供者(supplier)會實(shí)時 的通知所有需要這些數(shù)據(jù)的消費(fèi)者(consumer),從而實(shí)現(xiàn)了 各個仿真環(huán)境中的模型同步更新。5實(shí)驗(yàn)和小結(jié)我們利用本分布式仿真系統(tǒng)做了一些實(shí)驗(yàn),達(dá)到了較 好的效果,下面是我們實(shí)驗(yàn)過程中的一些場景。圖 6a 為分布式仿真系統(tǒng)遙操作的實(shí)際受控對象 pa10 機(jī)器人和模塊機(jī)器人;圖 6b 為仿真系統(tǒng)的開始狀態(tài); 圖 6c 中,仿真系統(tǒng)正在進(jìn)行協(xié)調(diào)抓持。cb圖 6 分布式仿真遙操作實(shí)驗(yàn)參考文獻(xiàn):1游松. 基于國際互聯(lián)網(wǎng)的遙操作機(jī)器人系統(tǒng)研究 d. 北京: 北京航空航天大學(xué), 2001.par klingstam, per gullander. overview

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論