国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Arduino的手勢(shì)識(shí)別控制裝置

2017-10-21 07:50梁梓廷葉軍鄭樹(shù)海陳雪松
電腦知識(shí)與技術(shù) 2017年18期
關(guān)鍵詞:手勢(shì)識(shí)別人機(jī)交互

梁梓廷 葉軍 鄭樹(shù)?!£愌┧?/p>

摘要:人機(jī)交互技術(shù)逐步從以計(jì)算機(jī)為中心轉(zhuǎn)移到以人為中心,其中手勢(shì)識(shí)別技術(shù)已廣泛應(yīng)用于電腦、手機(jī)等電子設(shè)備。該文介紹了一種基于Arduino的手勢(shì)識(shí)別控制裝置,傳感器通過(guò)12C總線與Arduino通信,然后將處理的結(jié)果傳輸給電腦對(duì)電腦加以控制。通過(guò)優(yōu)化手勢(shì)識(shí)別算法,提高手勢(shì)識(shí)別效率。設(shè)備具有接線簡(jiǎn)單、操作簡(jiǎn)便的特點(diǎn)。

關(guān)鍵詞:手勢(shì)識(shí)別;人機(jī)交互;Arduino單片機(jī);九軸手勢(shì)傳感器

中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)18-0184-02

1概述

手勢(shì)識(shí)別是人機(jī)進(jìn)行交互的一種方式,它在人民的生活中逐漸運(yùn)用與流行起來(lái),計(jì)算機(jī)的發(fā)展給手勢(shì)識(shí)別提供了強(qiáng)大的計(jì)算平臺(tái),使得人與計(jì)算機(jī)的交互活動(dòng)越來(lái)越頻繁。其目的是運(yùn)用計(jì)算機(jī)通過(guò)某種手段分析出每個(gè)手勢(shì)的具體含義,進(jìn)而獲知手勢(shì)發(fā)起者的整個(gè)表達(dá),以達(dá)到實(shí)現(xiàn)人機(jī)交互的目的。常用的是通過(guò)傳感器采集數(shù)據(jù),然后進(jìn)行數(shù)據(jù)的處理,再做出相應(yīng)的操作。傳感器其方便與專用的特點(diǎn)使得操作起來(lái)較為方便。

2系統(tǒng)總體設(shè)計(jì)

手勢(shì)識(shí)別控制裝置如圖1所示,其由九軸手勢(shì)傳感器(PAJ7620U2)與Arduino Leonardo組成,Leonardo可以模擬為鼠標(biāo)或者鍵盤(pán)連接到其他的微控制器并進(jìn)行通信。手勢(shì)傳感器可以識(shí)別9個(gè)手勢(shì),包括向上移動(dòng),向下移動(dòng),向左移動(dòng),向右移動(dòng),向前移動(dòng),向后移動(dòng),圓周順時(shí)針,圓周逆時(shí)針和波動(dòng)。系統(tǒng)的其工作原理是:手勢(shì)信息通過(guò)簡(jiǎn)單的訪問(wèn)12C總線并與Arduino進(jìn)行數(shù)據(jù)的交換,最后通過(guò)USB數(shù)據(jù)線來(lái)傳輸數(shù)據(jù)控制電腦。

3詳細(xì)設(shè)計(jì)方案

要通過(guò)Arduino Leonardo來(lái)實(shí)現(xiàn)對(duì)電腦等設(shè)備的控制,可以將Arduino模擬為一個(gè)虛擬的鼠標(biāo)和鍵盤(pán)。通過(guò)USB通信功能可以直接通過(guò)USB接口來(lái)與電腦進(jìn)行通信,本文的思路是借鑒鍵盤(pán)的特點(diǎn),通過(guò)算法控制Arduino來(lái)輸出想要功能的ASCII碼從而來(lái)模擬鍵盤(pán)。在不同的系統(tǒng)下輸入鍵的ASCII碼值是一樣的,因此這就使得此控制系統(tǒng)具有了跨平臺(tái)的特性。目前常見(jiàn)的系統(tǒng)Windows、Linux、Unix、Mac 0S、Android等都可以進(jìn)行支持,這使得該裝置的通用性與實(shí)用性進(jìn)一步的提高,因此它可以應(yīng)用在汽車或者助殘裝置等領(lǐng)域。

3.1主程序

首先要定義識(shí)別時(shí)間、進(jìn)入時(shí)間與退出時(shí)間,其單位均為ms。識(shí)別時(shí)間與進(jìn)人時(shí)間越短,識(shí)別的速度越快,但是同樣會(huì)使得識(shí)別的準(zhǔn)確率降低。并且進(jìn)入時(shí)間要小于識(shí)別時(shí)間,否則會(huì)出現(xiàn)識(shí)別不準(zhǔn)確的現(xiàn)象。因此通過(guò)大量實(shí)驗(yàn)結(jié)合實(shí)際情況,在綜合考慮識(shí)別的速度與準(zhǔn)確性下,我們?cè)O(shè)定識(shí)別時(shí)間為500ms,進(jìn)入時(shí)間為800ms,退出時(shí)間為1000ms,在實(shí)際的測(cè)試中發(fā)現(xiàn)有不錯(cuò)的體現(xiàn)。

程序首先進(jìn)入Setupf)函數(shù),目的是初始化鍵盤(pán)庫(kù)、初始化串口并且將波特率設(shè)定為9600。Arduino與電腦之間的通信通過(guò)串口通信來(lái)進(jìn)行的。Arduino IDE里面自帶串口監(jiān)視器,通過(guò)串口檢測(cè)器我們可以清楚的看到傳感器所識(shí)別到的手勢(shì)。通過(guò)分析可以去除干擾的手勢(shì)來(lái)提高控制端輸出的準(zhǔn)確率。

以上程序?yàn)閘oopO函數(shù)內(nèi)的一部分,即初始化之后loop()讓編寫(xiě)的程序循環(huán)地被執(zhí)行,使用它來(lái)運(yùn)轉(zhuǎn)Arduino。Loop與set-up()函數(shù)也是Arduino編寫(xiě)的時(shí)候必須要有的函數(shù),否則程序無(wú)法編譯通過(guò)提示錯(cuò)誤,Arduino自帶循環(huán)函數(shù)。9軸的手勢(shì)傳感器必定會(huì)有九種輸出,那么選擇switch()選擇語(yǔ)句是非常合適的。通過(guò)paj7620ReadReg函數(shù)來(lái)讀取傳感器返回來(lái)的值,paj7620ReadReg是在傳感器頭文件里面已經(jīng)定義好的函數(shù)。

傳感器庫(kù)文件內(nèi)部已經(jīng)定義了相應(yīng)的函數(shù),其中最主要的為WriteReg函數(shù)與ReadReg函數(shù)其分別為讀取與寫(xiě)入函數(shù)。在識(shí)別到“右”信號(hào)的時(shí)候,先進(jìn)行進(jìn)入延時(shí),在800ms的延時(shí)之后,再次的檢測(cè)傳感器的數(shù)值如果是“靠近”信號(hào)那說(shuō)明此時(shí)用戶想輸出的是“靠近”指令下的控制命令,如果是“遠(yuǎn)離”信號(hào),則輸出的“遠(yuǎn)離”指令下的控制命令。因?yàn)橥ㄟ^(guò)測(cè)試發(fā)現(xiàn)在執(zhí)行“遠(yuǎn)離”與“靠近”的指令的時(shí)候用戶可能會(huì)從傳感器的右側(cè)、左側(cè)、上側(cè)或者下側(cè)進(jìn)入來(lái)輸入“遠(yuǎn)離”或者“靠近”的手勢(shì),因此需要去除一開(kāi)始的錯(cuò)誤信號(hào)。同樣“左”、“上”、“下”手勢(shì)都是如此,和“右”手勢(shì)一樣的思路。

3.2相關(guān)子程序

當(dāng)Arduino通過(guò)分析后確認(rèn)用戶輸人的順時(shí)針手勢(shì)后,會(huì)進(jìn)入以下的子程序,在子程序里面就進(jìn)行鍵盤(pán)的模擬。它既可以完成組合間的設(shè)計(jì)也可以進(jìn)行,單獨(dú)鍵盤(pán)的模擬。對(duì)于組合鍵,程序依次的輸入相應(yīng)的按鍵的ASCII值后,延時(shí)一段時(shí)間。延時(shí)的目的是讓其能在一個(gè)時(shí)間段內(nèi)穩(wěn)定的同時(shí)輸出,在完成一次操作后通過(guò)Keyboard.releaseAll()函數(shù)來(lái)釋放所有的鍵盤(pán)值,即停止輸出此組合鍵的ASCII碼,單鍵盤(pán)的模擬就可以使用Keyboard.press()函數(shù)直接實(shí)現(xiàn)。延時(shí)一段時(shí)間后就可以進(jìn)行鍵盤(pán)的釋放,來(lái)實(shí)現(xiàn)相應(yīng)的功能。

表1是本文通過(guò)模擬鍵盤(pán)的功能實(shí)現(xiàn)的對(duì)電腦的控制,對(duì)于手勢(shì)設(shè)定的功能基本上符合日常生活中的使用情況。通過(guò)模擬可以實(shí)現(xiàn)對(duì)電腦鍵盤(pán)的模擬能夠?qū)崿F(xiàn)圖片的切換與放大縮小、網(wǎng)頁(yè)的瀏覽與方法縮小、視頻的快進(jìn)快退、退出確認(rèn)等功能。

4總結(jié)

本文運(yùn)用Arduino單片機(jī)與PAJ7620U2九軸手勢(shì)傳感器,編程實(shí)現(xiàn)了對(duì)電腦的控制??梢詫?shí)現(xiàn)對(duì)應(yīng)的圖片的切換、網(wǎng)頁(yè)的瀏覽、視頻的快進(jìn)快退、退出確認(rèn)、放大縮小等功能。通過(guò)由于ASCII碼的通用性,使得其在其他的平臺(tái)上都可以使用,因此使得其通用性與實(shí)用性大大的提高。在兼顧識(shí)別速度的同時(shí)也保證了識(shí)別的準(zhǔn)確率。但是反應(yīng)速度不迅速,在要求不高的場(chǎng)合可以使用。endprint

猜你喜歡
手勢(shì)識(shí)別人機(jī)交互
基于手勢(shì)識(shí)別的工業(yè)機(jī)器人操作控制方法
人機(jī)交互課程創(chuàng)新實(shí)驗(yàn)