【技術領域】
本發明涉及一種數據手套接口模塊的設計方法。
背景技術:
近年來,隨著科學技術的不斷發展,人們對于先進技術服務于生活越來越重視。虛擬現實技術是實現此要求的很好的一個途徑。虛擬現實技術是利用計算機建立一個逼真的虛擬世界,用戶可以在其中通過聽、視、觸、嗅等感官獲取對周圍環境的感知,有身臨其境的感覺。虛擬現實技術在軍事、教育、娛樂、科研等多方面都有很廣泛的應用。在虛擬現實技術里面,數據手套是很重要的交互工具,讓用戶可以更加自然和真實的與虛擬環境交互。它可以捕捉到人手的動作和姿態信息。數據手套的外觀和普通手套的外觀類似,但是其材質上與普通手套不同,其中裝有捕捉姿態信息的傳感器,通過計算機接口把數據傳輸到計算機內,完成虛擬手的動作和姿態的實時更新。以便更加直觀和真實的進行虛擬現實操作。
數據手套的關鍵在于手掌、手指以及手腕的各個有效部位的彎曲、外展等測量以及此基礎上的外演。國內外許多單位和公司在數據手套的研究開發方面做了大量的工作,并推出不同類型的數據手套,下面對這些做一些介紹:
1)dataglove是vpl公司于20世紀90年代推出的最早的數據手套,該手套結構緊湊,佩戴舒適,輕便易用,采用桌面控制模塊,可以同時支持系四副手套;但是容易受到用戶手大小的影響。被設計試用于vr的醫學應用、可以作為醫學應用的輸入設備。
2)virtualtechnologies公司于1991年推出了cyberglove數據手套,該手套重量較輕,舒適結構完整,使用權電阻技術來發送實時角度數據,cyberglovetouch系統提供了震動觸覺技術。
3)解放軍理工大學在2002年成功研制出一款數據手套,針對關節的彎曲和外展研究了光學行程傳感器和光纖彎曲傳感器,具有精度高,體積小等特點,且使用opengl的雙緩沖技術回執三維圖像。在使用過程中因用戶的差異要對手套進行校正。
4)北京視景科技開發的wiseglove數據手套常用于測量人手指動作,廣泛應用于人手的運動捕捉,游戲動畫制作以及醫學評估等領域。
simulink是matlab中最重要的組件之一,它可以提供一個動態系統建模、仿真和綜合分析的集成環境。廣泛應用于線性系統、非線性系統、數字控制以及數字信號處理的建模和仿真中。利用matlab虛擬現實工具箱(virtualrealitytoolbox)可以在三維虛擬現實環境中進行可視化操作和動態系統交互,使用標準的vrml技術,可以進行matlab和simulink的交互,動態系統可以通過虛擬現實工具箱將simulink模型隨時間的變化以視景和圖形化方式進行交互,這對模型對象能有很好的理解,很方便的進行虛擬操作的模擬。在simulink中建立系統的結構圖,選擇合適的虛擬現實環境連接到simulink結構圖中,虛擬現實模塊就會為有效的vrml節點掃描出能夠由simulink驅動的虛擬世界。
目前,針對simulink虛擬現實技術的數據手套開發比較少,使得在其下的虛擬現實實現缺少了很大的操作性。無法真是的實現人機交互,增強沉浸感,實現更加逼真的虛擬現實。
技術實現要素:
本發明的目的是針對數據手套在simulink下應用匱乏的情況,提供了一種simulink下的數據手套接口模塊的設計方法,實現了數據手套在simulink下的使用,為simulink虛擬現實操作技術打下基礎。
為達到上述目的,本發明采用以下技術方案予以實現:
一種數據手套接口模塊的設計方法,包括以下步驟:
1)進行數據手套歸一化處理,標定手套的最大值和最小值;定義一個最大值為a和一個最小值為b,數據手套的數值為c,c在a和b之間滿足如下關系:
通過線性算法對數據手套的彎曲角度進行計算,加入手套某個手指的活動角度是e,其彎曲角度為:
e*(c-b)/(a-b)(2)
然后用滑動均值法對數據手套的數據進行標定,滑動均值法取連續n個數據手套數據作為平均值然后設定為當前的值,表示如下:
s=(s1+s2+…+sn)÷n(3)
其中,s是當前傳感器的值,n是其個數且為整數;
2)掃描各個串口判斷手套是否連接,讀取數據手套的型號,然后新建一個數據手套數據結構,利用手動標定對數據手套進行標定;同時利用上述的方法對數據手套數據進行標定,以得到正確的傳感器數據;與此同時對采樣時間以及輸入輸出接口進行設計;完成s函數編寫工作;
3)驅動s函數使其在simulink下運行并且讀取數據手套的數據;把s函數編譯為一個能夠調用的動態鏈接庫,使用此動態鏈接庫就能夠進行s函數的使用;
4)搭建調用s函數的模塊并進行封裝,把輸入直接設置在界面上;搭建結構框圖,運行次模塊,開始收集讀取到的數據,然后通過數據手套的數值得到手勢姿態;
5)在虛擬實現操作平臺上搭建手模型、定義父子關節,然后把數據傳到對應的各個關節上,實現手的驅動,完成虛擬現實操作。
本發明進一步的改進在于:
步驟2)中,手動標定是確定初始時刻的手的姿態。
步驟4)中,輸入是采樣時間和數據手套的串口號。
步驟5)中,虛擬實現操作平臺包括simulink虛擬現實工具箱、unity3d或osg。
與現有技術相比,本發明具有以下有益效果:
本發明基于simulink對數據手套接口進行了設計,通過歸一化算法和滑動均值法對數據進行了處理。使得數據穩定且有效。然后通過編寫串口函數把數據手套與simulink結合,使其可以有效交互,增加了simulink下的虛擬現實技術的可操作性。
【附圖說明】
圖1為是基于simulink接口設計流程圖;
圖2為s-function運行模式流程圖;
圖3為大拇指數據手套數據;
圖4為食指數據手套數據;
圖5為中指數據手套數據;
圖6為無名指數據手套數據;
圖7為小拇指數據手套數據。
【具體實施方式】
下面結合附圖和實施例對本發明作進一步詳細的說明:
如圖1-2所示,simulink中s函數主要是采用回調函數的形式來實現各種功能。其設計的模塊可以重復使用,大大增加了效率。
本發明針對simulink的特點,利用數據手套的接口方法,提供了一種基于simulink的數據手套接口模塊的設計方法,包括以下步驟:
第一步是歸一化數據手套值。對數據手套最大值和最小值進行標定,保證數據手套的活動在某一個范圍內。同時由于在實際的測試中數據手套的數據可能會有抖動,因此需要對數據手套數據進行濾波,使用滑動均值法對其進行濾波,保證數據的準確和穩定。具體方法如下:
進行數據手套歸一化處理,標定手套的最大值和最小值。定義一個最大值a和一個最小值b,數據手套的數值是c,那么要滿足c在a和b之間,如下:
以上就可以保證數據手套的值在規定的手勢范圍內,即在a和b之間,通過線性算法可以對數據手套的彎曲角度進行計算,加入手套某個手指的活動角度是e,那么其彎曲角度為:
e*(c-b)/(a-b)(2)
然后用滑動均值法對數據手套的數據進行標定,滑動均值法取連續n個數據手套數據作為平均值然后設定為當前的值,表示如下:
s=(s1+s2+…sn)÷n(3)
其中s是當前傳感器的值,si是連續的相鄰傳感器的值。n是其個數。
第二步編寫s函數,獲取數據手套的端口并打開數據手套,使用先前的標定方法對數據手套進行標定。設定傳感器數據結構讀取傳感器的值。同時把數據手套的數據進行輸出,確定手勢。具體方法如下:
首先,掃描各個串口判斷手套是否連接,讀取數據手套的型號,然后新建一個數據手套數據結構,利用手動標定對數據手套進行標定,這里的手動標定主要是確定初始時刻的手的姿態,這樣才可以定義具體的手勢。同時利用上述的方法對數據手套數據進行標定,以得到正確的傳感器數據。與此同時根據自身需要可以對采樣時間以及輸入輸出接口進行設計。這樣就初步完成了s函數編寫工作。
第三步主要是對編寫好的s函數進行編譯,生成simulink可以使用的動態鏈接文件,然后將編譯好的動態鏈接文件導入到我們預先建立的s函數模塊中,使其成為一個可以使用的模塊。具體方法如下:
有了s函數,則可以不斷的調用其中的回調函數來進行數據的讀取。下面就是驅動s函數使其可以在simulink下運行并且讀取數據手套的數據。把s函數編譯為一個可調用的動態鏈接庫,使用此動態鏈接庫就可以進行s函數的使用。
第四步是對s函數模塊進行封裝并且搭建框圖,滿足數據手套在simulink下的使用,通過數據手套的數據可以正確的定義手勢,然后用于虛擬現實操作。具體方法如下:
對所搭建的模塊進行封裝,把輸入直接設置在界面上,這里面的輸入時采樣時間和數據手套的串口號。有了輸入,搭建結構框圖,運行次模塊,就可以開始收集讀取到的數據,然后就可以通過數據手套的數值知道手勢姿態。
第五步是將其運用到一些常見的虛擬現實操作平臺的一些方法,使其可以和虛擬現實技術結合,提高虛擬現實的交互性。具體方法如下:
數據手套可以用于很多虛擬現實操作平臺,例如simulink虛擬現實工具箱、unity3d以及osg(opensourcegraph)等等。在這些平臺上基本流程都是先搭建手模型,定義父子關節,然后把數據傳到對應的各個關節上,實現手的驅動,以此來完成虛擬現實操作。
實施例:
本發明具有實用性和可實施性,已經通過仿真驗證。圖3到圖7是進行了仿真實例的驗證,連接數據手套,然后設計的模塊選擇手套連接的串口號,驅動程序運行,通過對手勢的初始標定(這里定義的是手掌伸開時的姿態為初始姿態),然后就可以進行手勢姿態角的讀取,這里,圖3到圖7分別是大拇指、食指、中指、無名指和小拇指在手掌抓緊伸開過程的姿態角信息。其中橫坐標是時間,縱坐標是以初始姿態為參考的角度。
以上內容僅為說明本發明的技術思想,不能以此限定本發明的保護范圍,凡是按照本發明提出的技術思想,在技術方案基礎上所做的任何改動,均落入本發明權利要求書的保護范圍之內。