亚洲美女爱爱-夜夜添夜夜添夜夜摸夜夜摸-97碰成人国产免费公开视频-国产午夜大片-www黄av-国产94在线 | 亚洲-亚洲午夜久久久精品一区二区三剧-精品视频亚洲-久久久久国色av∨免费看-黄色片一区二区-69福利视频-国产老头和老头xxxxx免费-99精品视频一区在线观看-日韩三级黄色毛片-亚洲激情图片区-黄色a一级-99re6在线-91九色视频-日本欧美久久久-成人国产精品免费观看

你的位置:首頁 > 傳感技術(shù) > 正文

用加速度傳感器來進(jìn)行手勢識別器的設(shè)計

發(fā)布時間:2008-10-22 來源:中電網(wǎng)

中心論題:

  • 手勢識別的控制原理
  • 系統(tǒng)描述
  • 硬件描述
  • 軟件描述
  • 單片機硬件初始化、數(shù)據(jù)采集、動作檢測
  • 演示終端

解決方案:

  • 利用三軸加速度的值來判定對物體運動預(yù)定義的六種姿勢
  • 系統(tǒng)由CT-298單片機、 MM-2860加速度傳感器、演示終端三個部分組成

  
引言
手機、MP3播放器、硬盤播放器、數(shù)碼相機、PDA等設(shè)備都是通過導(dǎo)航鍵對其進(jìn)行控制的。目前比較流行的導(dǎo)航鍵控制方式有四維鍵、搖桿,這是最常見的兩種導(dǎo)航鍵,此外還有一些手機上有很新穎的導(dǎo)航鍵設(shè)計,例如:LG-KG70的滾軸鍵、LG-KE608的轉(zhuǎn)盤設(shè)計、索愛W830的觸摸式、多普達(dá)D802的飛梭滾輪等等。這里,我們用加速度傳感器設(shè)計一種看不見的導(dǎo)航鍵來代替四維鍵的功能,這種方案更能滿足消費者的好奇心,滿足消費者追逐時尚的需求。
  
手勢識別的控制原理
本系統(tǒng)利用三軸加速度的值來判定對物體運動預(yù)定義的六種姿勢。首先,分別對三個軸采樣,每個軸各獲得50個數(shù)據(jù);然后,分別對每個軸上的數(shù)據(jù)進(jìn)行處理來判定是否發(fā)生了預(yù)定義的動作。動作定義在下面的部分說明,這里僅用Y軸來說明判定的原理。
  
獲得Y軸上的50個數(shù)據(jù)存放到數(shù)組y_data[N]中,將這50個數(shù)求和取平均值。若y_data[N]中數(shù)據(jù)最大值與最小值之差在一個設(shè)定的閾值之內(nèi),則認(rèn)為物體在Y軸向上是沒有動作的、靜止的,此時更新y_init值為y_data[N]求得的平均值;否則,y_data[N]中數(shù)據(jù)最大值與最小值之差超出一個設(shè)定的閾值,則認(rèn)為物體是運動的,y_init值不變,仍然為上一次靜止?fàn)顟B(tài)時的值。
  
圖1和圖2是Y軸分別向左、向右搖動時采樣得到的加速度抽樣值y_data[N]。圖中紅線代表上一次靜止時的采樣值,藍(lán)線代表運動時的采樣值。圖1為向左搖動時的值,可以明顯看出加速度的值較靜止時有明顯的變化,向著增大的方向變。 

      

  
  

   
從圖1和圖2中可以看出,兩條黑線之間的數(shù)據(jù)很難斷定是哪個動作產(chǎn)生的,因為兩個動作都可能產(chǎn)生這樣的值。所以,利用黑線之外的數(shù)據(jù)來判定是向右還是向左搖。因為對于這兩個動作,黑線之外的數(shù)據(jù)有明顯的差異,數(shù)據(jù)相差很多。對于圖1這些數(shù)據(jù)大于150,圖2中這些數(shù)據(jù)小于90。因此這些數(shù)據(jù)至少相差60,可以很容易地將向左、向右的兩個動作區(qū)分開。
  
本系統(tǒng)就是根據(jù)這樣的原理來實現(xiàn)的,首先分別設(shè)定向左、向右搖時的閾值和兩個計數(shù)器;然后,將新采樣得到的50個值存放在y_data[N]中,將每個值與靜止時的值y_init比較,如果數(shù)據(jù)超出某個閾值,則在相應(yīng)的計數(shù)器上累加,直到所有50個數(shù)全部比較完畢;最后,根據(jù)計數(shù)器值的大小來判定執(zhí)行了某個動作。
  
同理,利用Z軸的采樣值來判定向上、向下?lián)u,利用X、Y兩個軸來判定執(zhí)行圖片向左翻轉(zhuǎn)還是向右翻轉(zhuǎn),這里略去。
  
系統(tǒng)描述
a.系統(tǒng)組成及功能
系統(tǒng)由三個部分組成:CT-298單片機控制部分、 MM-2860加速度傳感器部分、演示終端,系統(tǒng)框圖如圖3所示。 

  
CT-298單片機控制部分主要負(fù)責(zé)傳感器數(shù)據(jù)的A/D變換、動作檢測、與演示終端進(jìn)行數(shù)據(jù)通信。MM-2860加速度傳感器部分負(fù)責(zé)加速度值的測量并將其轉(zhuǎn)換為電壓值。演示終端負(fù)責(zé)處理從單片機傳來的動作類型并執(zhí)行相應(yīng)的動作,同時向單片機返回進(jìn)出二級菜單的指令。對于CT-298單片機系統(tǒng)更詳細(xì)的設(shè)計將在下面的部分介紹,這里首先介紹一下本系統(tǒng)設(shè)計的動作姿勢及代碼,以及與演示系統(tǒng)交互的指令。
  
b.預(yù)定義的動作
系統(tǒng)設(shè)計了六種動作,他們分別是左搖、右搖、下?lián)u、上搖、圖片左轉(zhuǎn)、圖片右轉(zhuǎn)。圖4中的圖形象地說明了其中的兩個動作,其它的動作與此類似。 

    
 

系統(tǒng)還為每個動作定義了相應(yīng)的動作代碼,見表1。 

  
當(dāng)單片機檢測到某個動作時會將相應(yīng)的值賦給變量type_action,之后通過SCI將type_action的值發(fā)送到演示終端。如果用戶執(zhí)行的動作不在這六個動作之中,則將NO_ACTION賦給type_action,表示演示終端不執(zhí)行任何動作。
  
系統(tǒng)還定義了單片機與演示終端交互的指令,用于系統(tǒng)在主菜單和二級菜單之間的界面切換,指令從演示系統(tǒng)通過SCI傳給單片機,單片機接收到之后進(jìn)入或退出二級菜單,見表2。

                                      
  
  
這里僅定義了一個二級菜單,即圖片菜單,系統(tǒng)還可以定義更多的二級菜單和三級菜單。此外,需要說明動作MOVE_TURN_LEFT、MOVE_TURN_RIGHT用于圖片翻轉(zhuǎn),僅在圖片菜單中可用,在主菜單不可用。動作下?lián)u執(zhí)行的是換下一幅圖片,動作上搖執(zhí)行的是退出圖片菜單。
  
c.演示終端
本系統(tǒng)目標(biāo)定位在便攜式消費類電子產(chǎn)品上,因此在軟件應(yīng)用程序上必須選擇具有廣泛基礎(chǔ)的應(yīng)用平臺。由于近年來J2ME在便攜式終端中的應(yīng)用非常廣泛,因此本系統(tǒng)也采用了J2ME平臺進(jìn)行開發(fā)。通過比較,選擇了J2ME的WTK開發(fā)包,它是專門針對移動無線設(shè)備而設(shè)計的開發(fā)包,并提供了一個統(tǒng)一的平臺。在WTK的框架下開發(fā)出來的java程序可以被眾多的移動設(shè)備所支持,所以能夠有效解決兼容性的問題。
  
在WTK下我們利用默認(rèn)的一個手機樣機的仿真器DefaultColorPhone進(jìn)行開發(fā),DefaultColorPhone的樣子如圖6。


仿真器的外觀和操作類似一部移動電話,但是并不代表某個特定的設(shè)備,而是提供對其所支持的API 的正確實現(xiàn),每個命令按鈕對應(yīng)著相應(yīng)的API函數(shù)。從圖6中可以看到手機的導(dǎo)航鍵,我們更改了導(dǎo)航鍵的API函數(shù),使其從鼠標(biāo)單擊觸發(fā)的方式轉(zhuǎn)換為串口動作代碼控制。首先,我們編寫了J2ME的串口接收程序,用于接收從單片機傳來的單字節(jié)的type_action值;然后將type_action以參數(shù)的形式傳給API,手機根據(jù)不同的type_action值執(zhí)行不同的動作,包括菜單上下翻、進(jìn)出二級子菜單、圖片翻轉(zhuǎn)等。手機動作與type_action的對應(yīng)關(guān)系如表3。

 
根據(jù)type_action的值,在手機界面上產(chǎn)生相應(yīng)的動作,手機界面發(fā)送不同的變化。演示終端的具體實現(xiàn)在下面的內(nèi)容詳細(xì)介紹。
  
硬件描述
系統(tǒng)硬件分為兩個部分:CT-298和MM-2860。
  
CT-298是由MC9S08QG單片機構(gòu)成、由USB總線電源供電的小型評估板。CT-298上安裝有按鈕開關(guān)、LED燈、蜂鳴器等作為開發(fā)的輸入輸出器件。同時,USB-COM轉(zhuǎn)換電路采用了FTDI公司制造的FT232R,容許單片機與電腦之間通過USB接口進(jìn)行串行通信。BDM用于代碼的燒寫及系統(tǒng)的調(diào)試。
  
MM-2860是含有Freescale公司制造的MMA7260Q型三軸小量程加速度傳感器的模塊,它可以直接安裝在CT-298為其設(shè)計的插口上。MM-2860的電源是由CT-298上的MC9S08QG8單片機的PTB5端口來控制的,當(dāng)PTB5端口為L時電源接通。此外,g-SELECT開關(guān)是選擇傳感器靈敏度的開關(guān),使用時將MM-2860插入到CT-298的接口中即可。本系統(tǒng)采用加速度傳感器的靈敏度選擇為800 mV/g。
  
軟件描述
單片機主程序的流程如圖7所示。

  
系統(tǒng)上電后,首先要對單片機的硬件系統(tǒng)進(jìn)行初始化、配置寄存器等操作,之后才可以進(jìn)行數(shù)據(jù)采集,將加速度的值進(jìn)行A/D轉(zhuǎn)換,得到量化的值。圖片菜單是二級菜單,如果沒有接到演示系統(tǒng)傳給單片機進(jìn)入二級菜單的指令,則單片機一直在主程序運行,不斷地采集A/D值、進(jìn)行動作判定,并向演示系統(tǒng)發(fā)送type_action的指令。演示系統(tǒng)可根據(jù)接收到的type_action的類型采取相應(yīng)的動作。如果單片機接收到進(jìn)入二級菜單的命令,則進(jìn)入圖片菜單,同時也執(zhí)行類似于主程序的動作判定程序,并不斷更新A/D采樣值,發(fā)送type_action,直到接收到退出二級菜單指令才退出。下面詳細(xì)介紹一下各個功能模塊的具體設(shè)置。
  
單片機硬件初始化
單片機系統(tǒng)主要的工作有:將加速度傳感器的模擬數(shù)據(jù)進(jìn)行A/D轉(zhuǎn)換、向演示系統(tǒng)發(fā)送type_action的動作類型、接收演示系統(tǒng)發(fā)來的進(jìn)出二級菜單的指令、設(shè)置采樣值,除此之外還需要對系統(tǒng)時鐘、外部設(shè)備(燈,buzzer)進(jìn)行配置。根據(jù)單片機的主要工作內(nèi)容選擇單片機內(nèi)部的功能設(shè)備,包括A/D轉(zhuǎn)換器、模定時器、串行通信模塊(SCI)、內(nèi)部時鐘源模塊。
  
數(shù)據(jù)采集
系統(tǒng)設(shè)置的采樣頻率為200Hz,每秒鐘分別對X、Y、Z 三軸采樣200個數(shù)據(jù),因此定義了三個大小為N的數(shù)組對數(shù)據(jù)進(jìn)行緩存,他們是:
  
char x_data[N];
  
char y_data[N];
  
char z_data[N];
  
這里N取50,每0.25s存取一次,1s鐘可以存取4次,保證采樣率為200。函數(shù)void acce_meas(void) 負(fù)責(zé)將采樣的數(shù)據(jù)分別放到這三個數(shù)組中,下面是程序的具體實現(xiàn):
  
for(j=0;j<N;j++) //采集N個數(shù)據(jù)
{
for(i=0;i<3;i++)
{
if(i==0)
{
adc_go(0); //選擇A/D信道0
x_data[j]= ADC_val_L; //X軸
}
else if(i==1 )
{
adc_go(6); //選擇A/D信道6
y_data[j]= ADC_val_L; //Y軸
}
else
{
adc_go(7); //選擇A/D信道7
z_data[j]= ADC_val_L; //Z軸
}
}
delay(); //延時函數(shù),用來設(shè)定采樣率
}
  
動作檢測
動作檢測主要是用獲得的三組數(shù)據(jù)值x_data[N]、y_data[N]、z_data[N]來判定當(dāng)前動作是系統(tǒng)設(shè)定動作中的哪一個,如果符合,則發(fā)送這個動作對應(yīng)的預(yù)定義值給演示終端,否則發(fā)送NO_ACTION。type_dectction()用來實現(xiàn)動作檢測,其中type_move為函數(shù)內(nèi)部變量,用于記錄動作代碼。type_dectction()進(jìn)行動作檢測的流程如圖8所示。

  
演示終端
a.J2ME平臺開發(fā)環(huán)境配置
進(jìn)行J2ME的開發(fā)需要從網(wǎng)絡(luò)上下載免費的開發(fā)環(huán)境。運行Eclipse后進(jìn)行最后的配置:Window->preferences->J2ME->Platform Component然后右鍵選擇 Wireless Toolkil,再選擇彈出菜單中的 Add Wireless Toolkil,選擇剛剛安裝的J2ME Toolkit的安裝路徑: C:\WTK22,這樣基本配置就完成了。

J2ME的WTK開發(fā)包是專門針對移動無線設(shè)備而設(shè)計的開發(fā)包,并提供了一個統(tǒng)一的平臺。在WTK的框架下開發(fā)出來的java程序可以被眾多的移動設(shè)備所支持,能夠有效解決兼容性的問題。
  
b.軟件應(yīng)用程序
程序分為主進(jìn)程、串口監(jiān)視模塊和定制化用戶界面三大部分,分別基于J2ME不同的類庫派生而成,三部分之間通過消息機制相互聯(lián)系,共同構(gòu)成整個程序的運行周期。具體每個模塊所實現(xiàn)的功能參考下節(jié)內(nèi)容。
  
c.軟件應(yīng)用程序的組織結(jié)構(gòu)
本軟件應(yīng)用程序在WTK的手機仿真器下進(jìn)行設(shè)計,分為Base和display兩個package。在Base Package中包含MainRoutine.java和RS232Port.java兩個java文件;在display Package中的文件較多,主要實現(xiàn)了UI和基本的key響應(yīng)。下面介紹軟件部分的實現(xiàn)方法:

MainRoutine類:MainRoutine為程序的入口類,它整合了程序中的所有的對象。MainRoutine派生于MIDlet類,重載實現(xiàn)了MIDlet中的startApp、pauseApp、destroyApp等方法,并且在constructor中加入了exitCommand命令,從而實現(xiàn)了手機的關(guān)機功能。
  
可以看出MainRoutine實現(xiàn)了程序的入口和退出,并同時標(biāo)志了程序的基本框架,給具體的功能應(yīng)用打下了堅實的基礎(chǔ)。

vCanvas類:vCanvas繼承了Canvas類,并增加了externalMsg方法。之所以在其中增加externalMsg方法,是因為其超類Canvas不能動態(tài)地響應(yīng)key,而我們對Canvas的要求是能夠通過對串口導(dǎo)入的數(shù)據(jù)(或按鍵)得到的keyCode做出相應(yīng)的動作,比如圖片的翻轉(zhuǎn)、文本的滾動等等。于是,我們可以通過vCanvas派生出一系列的子類,實現(xiàn)我們的具體要求,為將來的開發(fā)提供了方便。

DisplayItem類:DisplayItem是基礎(chǔ)類,提供了通用的string數(shù)據(jù)組合。該類的構(gòu)造方法中需要輸入shortText、longText和extra三個string參數(shù),這樣就保證了每個DisplayItem都可以返回三個不同長度的文本信息,在不同的場合使用。其中shortText用于UI中的標(biāo)題顯示,longText為Item的主體內(nèi)容,extra為Item的附加信息。 DisplayItem類在本系統(tǒng)中會被例化來描述菜單和子功能的內(nèi)容,是應(yīng)用廣泛的一個基礎(chǔ)類。
 
ImageCanvas類:ImageCanvas同樣繼承于基礎(chǔ)類vCanvas,它的主要功能是實現(xiàn)了對圖片的瀏覽及旋轉(zhuǎn)、鏡像等基本操作。
  
考慮到目前使用手機瀏覽圖片、拍攝圖片的多方向性,如果能夠通過加速度傳感器自動校正圖片的方向,使它自動滿足我們想要的方向,那么我們就免除了很多不必要的麻煩。于是我們對圖片的瀏覽功能模塊增加了向左或者向右旋轉(zhuǎn)90°的功能。這樣用戶就會驚喜地發(fā)現(xiàn)無論他的手機怎樣擺放,顯示的圖片將永遠(yuǎn)保持與地面垂直。

ListCanvas類:ListCanvas提供了主畫面的顯示能力,并將用戶操作派生到內(nèi)部聚合成員上面去。具體功能的Item將包含在ListCanvas之中,每一個Item擁有顯示在屏幕上的ShortItem,顯示在detail screen中的LongText,還有不被顯示的ExtraText,當(dāng)然其信息我們也是可以得到的。在ListCanvas中,我們可以用“右鍵”顯示Item的詳細(xì)信息,也可以用SELECT鍵來標(biāo)記每個Item。

ItemListCanvas類:ItemListCanvas同樣繼承了vCanvas類,實現(xiàn)了多條目文本瀏覽的功能,構(gòu)造方法的輸入依次為Display、Displayable、Font、Title和ItemVector。將多條String構(gòu)造為一個Vector傳遞給ItemListCanvas后,該類能夠提供一個多條目文本實現(xiàn)的用戶界面。本系統(tǒng)的“關(guān)于本系統(tǒng)”子功能就是通過實例化該類得到的。
  
結(jié)論
本系統(tǒng)采用Freescale的單片機MC9S08QG和加速度傳感器MMA7260Q實現(xiàn)了便攜式手持設(shè)備的手勢控制,并采用了開放的J2ME平臺實現(xiàn)了終端應(yīng)用程序。系統(tǒng)完整,實用性強,成本低廉,在滿足用戶基本操作需要的同時,增加了移動設(shè)備操作的趣味性和靈活性。同時,加速度傳感器MMA7260Q較小的體積和獨特的節(jié)電模式更使其在移動設(shè)備的應(yīng)用中有著極大的優(yōu)勢。可以預(yù)見,在未來的手持設(shè)備系統(tǒng)中會大量采用類似的手勢識別功能,因此具有廣闊的市場應(yīng)用前景。


 

要采購傳感器么,點這里了解一下價格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索

關(guān)閉

?

關(guān)閉

主站蜘蛛池模板: 波多野结衣在线视频播放 | 亚洲日本va在线视频观看 | 超碰天天操 | 国产视频一区二区在线观看 | 天天躁恨躁夜躁2020优势对比 | 丰满白嫩大屁股ass 亚洲综合日韩精品欧美综合区 | 992tv又爽又黄的免费视频 | 久久精品亚洲一区二区三区浴池 | 久久久亚洲欧洲日产国产成人无码 | 中文无遮挡h肉视频在线观看 | 强侵犯の奶水授乳羞羞漫虐 | 亚欧美无遮挡hd高清在线视频 | 成人在线手机视频 | 亚洲国产精品一区二区动图 | 国产成人精品午夜视频免费 | 国产亚洲自拍av | 国产精品裸体瑜伽视频 | va婷婷在线免费观看 | 国产97视频人人做人人爱 | 国产成人福利在线视频播放下载 | av黄色影院 | av优选在线观看 | 呦系列视频一区二区三区 | 玩弄放荡人妇系列av在线网站 | 韩国三级l中文字幕无码 | 国产精品视频区 | 色播久久人人爽人人爽人人片av | 日本少妇浓毛bbwbbwbbw | 久久天堂视频 | 成人在线免费播放 | 久久99精品国产麻豆不卡 | 国产一区二区三区四区hd | 成人无遮挡裸免费视频在线观看 | 特黄一级毛片 | 99香蕉视频 | 亚洲一区二区三区乱码aⅴ蜜桃女 | 99国产精品久久久久久久 | 亚洲色婷婷综合久久 | 成本人片无码中文字幕免费 | 日日碰狠狠躁久久躁婷婷 | 无码人妻久久一区二区三区不卡 | 久久精品少妇高潮a片免费观 | 国产免费黄视频 | 91精品国产闺蜜国产在线闺蜜 | 视频二区丝袜国产欧美日韩 | 亚洲日本japanese丝袜 | 国产乱子乱人伦电影在线观看 | 性殴美69xoxoxoxo| a∨无码天堂av | 18禁动漫美女禁处被爆桶出水 | 中文字幕av在线一二三区 | 国产自偷自拍 | 国产精品视频一区二区三区四区国 | 国产免费视频一区二区裸体 | 成年人视频在线播放 | 成人午夜在线观看 | 五月天中文字幕 | 国产午夜无码片在线观看影院 | 无码国产玉足脚交极品播放 | 九九在线视频免费观看精彩 | 国产777 | 成人网色 | 欧美黑人乱大交 | 波多野结衣精品一区二区三区 | 国产精品成人观看视频 | 解开乳罩喂领导吃奶 | 精品无码免费专区毛片 | 成人日皮视频 | 国产偷国产偷亚洲高清人乐享 | 又黄又粗又爽免费观看 | 国产精品久久久久久亚洲毛片 | 在线啪 | 日日夜夜伊人 | 森泽佳奈作品在线观看 | 亚韩无码av电影在线观看 | 欧美 丝袜 自拍 制服 另类 | 夜天干天干啦天干天天爽 | 欧美一区二区三区啪啪 | 亚洲色大成网站www永久在线观看 | 精品国产91久久久久久久 | 亚洲精品无码中文久久字幕 | 亚洲卡一卡二乱码新区仙踪 | 久久东京伊人一本到鬼色 | 日本少妇b| 亚洲熟妇无码av不卡在线 | 在线 国产 欧美 亚洲 天堂 | 国产真实乱对白精彩久久老熟妇女 | 亚洲成人中文字幕 | 熟人妇女无乱码中文字幕 | 久久精品噜噜噜成人av | 久久国产亚洲精选av | 久久无码高潮喷水 | 日韩a在线播放 | 国产高清在线自在拍网站 | 九九色影院 | 日韩视频在线观看一区二区 | 性欧美一区 | 欧美成人手机视频 | 免费观看黄色一级片 |