【《智能手勢識別手套系統(tǒng)的軟件設(shè)計(jì)案例》5300字】_第1頁
【《智能手勢識別手套系統(tǒng)的軟件設(shè)計(jì)案例》5300字】_第2頁
【《智能手勢識別手套系統(tǒng)的軟件設(shè)計(jì)案例》5300字】_第3頁
【《智能手勢識別手套系統(tǒng)的軟件設(shè)計(jì)案例》5300字】_第4頁
【《智能手勢識別手套系統(tǒng)的軟件設(shè)計(jì)案例》5300字】_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

智能手勢識別手套系統(tǒng)的軟件設(shè)計(jì)案例目錄TOC\o"1-3"\h\u21550智能手勢識別手套系統(tǒng)的軟件設(shè)計(jì)案例 1265071.1總體軟件架構(gòu) 1130901.2信號采集端軟件實(shí)現(xiàn) 2198454.2.1信號采集 372564.2.2數(shù)據(jù)處理 7219151.3手勢識別端軟件實(shí)現(xiàn) 9311204.3.1數(shù)據(jù)融合 1070804.3.2分類識別 13214811.4語音合成 15138811.5手勢應(yīng)用音樂播放器 15智能手勢識別手套系統(tǒng)的軟件開發(fā)是基于嵌入式開發(fā)平臺進(jìn)行的,所用的開發(fā)環(huán)境是KeilμVision5,通過設(shè)計(jì)好的軟件流程,利用在KeilμVision5搭建的平臺來編寫軟件處理算法程序。1.1總體軟件架構(gòu)智能手勢識別手套系統(tǒng)的軟件框圖如圖4-1所示。總體上分為信號采集端軟件實(shí)現(xiàn)和手勢識別端軟件實(shí)現(xiàn)兩個部分。具體工作流程為:1)信號采集,主要由傳感器來完成,微處理器負(fù)責(zé)數(shù)據(jù)的傳輸和存儲;2)數(shù)據(jù)處理,對數(shù)據(jù)進(jìn)行平滑濾波、特征提??;3)數(shù)據(jù)融合,將彎曲度傳感器、加速度計(jì)、陀螺儀采集到的特征數(shù)據(jù)進(jìn)行融合,降低計(jì)算復(fù)雜度提高識別率;4)分類識別,將手勢數(shù)據(jù)與手勢庫中特征模型相匹配,實(shí)現(xiàn)分類識別。圖4-1智能手勢識別系統(tǒng)軟件框圖1.2信號采集端軟件實(shí)現(xiàn)信號采集端的軟件設(shè)計(jì)主要包括信號采集和數(shù)據(jù)處理功能。系統(tǒng)由Flex2.2彎曲度傳感器采集手指關(guān)節(jié)的角度信息,由MPU-6050傳感器采集手部動作時的加速度和角速度信息。再將采集到的數(shù)據(jù)傳輸?shù)轿⑻幚砥髦羞M(jìn)行存儲,對數(shù)據(jù)進(jìn)行均值濾波、特征提取等處理。圖4-2為系統(tǒng)信號采集端的軟件流程圖。圖4-2信號采集端軟件流程圖信號采集對于數(shù)據(jù)的和獲取,一般情況下位于手勢識別系統(tǒng)的最底層。這一步驟最先獲取得到手勢動作的原始數(shù)據(jù)。這些信號的采集質(zhì)量直接影響系統(tǒng)最后對手勢的識別率。在設(shè)計(jì)系統(tǒng)時,需要將采集的原始數(shù)據(jù)傳輸?shù)絻Υ鎲卧M(jìn)行處理。本系統(tǒng)的信號采集包括兩個部分,分別為Flex2.2彎曲度傳感器的信號采集和MPU-6050傳感器的信號采集。Flex2.2彎曲度傳感器的信號采集Flex2.2彎曲度傳感器獲取的是手指的姿態(tài)信息,不同手勢導(dǎo)致Flex2.2彎曲度傳感器的阻值不同,從而獲得不同的電壓信號。STM32F103微處理器通過ADC通道對彎曲度傳感器的電壓信號進(jìn)行采集,微處理器的ADC采集流程如圖4-3所示。圖4-3ADC采集流程圖程序首先對采集通道進(jìn)行初始化,設(shè)置模擬信號的輸入通道,系統(tǒng)設(shè)置了5條采集通道,分別對應(yīng)五根手指。然后進(jìn)行ADC配置,設(shè)置其工作方式,開始進(jìn)行數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換結(jié)束后對數(shù)據(jù)進(jìn)行讀取。ADC采集程序代碼如下:/**********************ADC采集程序**********************/voidAdc_Init(void){ ADC_InitTypeDefADC_InitStructure; GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1 ,ENABLE); //使能ADC1通道時鐘 RCC_ADCCLKConfig(RCC_PCLK2_Div6);//AD采樣時鐘72M/6=12MGPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; //模擬輸入引腳GPIO_Init(GPIOA,&GPIO_InitStructure);voidADC_update_finger_curvature(void){ u16adcx0=0,adcx1=0,adcx2=0,adcx3=0,adcx4=0; ///////第一路采樣程序////////// adcx0=Get_Adc(ADC_Channel_0); ///////第二路采樣程序////////// adcx1=Get_Adc(ADC_Channel_1); ///////第三路采樣程序////////// adcx2=Get_Adc(ADC_Channel_2); ///////第四路采樣程序////////// adcx3=Get_Adc(ADC_Channel_3); ///////第五路采樣程序////////// adcx4=Get_Adc(ADC_Channel_4); ADC_FIFO_newValues(adcx0,adcx1,adcx2,adcx3,adcx4);}MPU-6050傳感器的信號采集利用六軸MPU-6050傳感器采集到的原始數(shù)據(jù)分別為加速度數(shù)據(jù)a=(ax,ay,az)和角速度數(shù)據(jù)ω=(ωx,ωy,ωz)。MPU-6050通過IIC接口與微處理器STM32F103建立通信連接,所以首先要初始化SDA和SCL數(shù)據(jù)線。然后對MPU-6050內(nèi)部寄存器進(jìn)行復(fù)位,使其進(jìn)入正常工作模式。接下來配置參數(shù),包括中斷的關(guān)閉、AUXIIC接口的關(guān)閉、FIFO通道的禁用等。最后設(shè)置系統(tǒng)的時鐘源,對加速度計(jì)和陀螺儀的系統(tǒng)時鐘進(jìn)行使能配置。圖4-4為MPU-6050傳感器的信號采集流程。圖4-4MPU-6050傳感器信號采集流程圖MPU-6050與微處理器STM32F103通過IIC接口通信的時序如圖4-5所示,當(dāng)SCL為高電平時,SDA從高電平轉(zhuǎn)變?yōu)榈碗娖?,此時表示符合信號傳遞的起始條件,MPU-6050傳感器與處理器STM32F103VET6之間可以開始進(jìn)行數(shù)據(jù)傳輸。首先發(fā)送設(shè)備的地址共有7位,緊接第8位是數(shù)據(jù)的讀寫標(biāo)志位R/W(0代表發(fā)送寫,1代表請求數(shù)據(jù)),如果此時總線上存在與請求相對應(yīng)的設(shè)備,則主控制器STM32F103VET6會向被控制器MPU-6050發(fā)送一個ACK作為應(yīng)答信號,并且會發(fā)送一個8位數(shù)據(jù),當(dāng)SCL為高電平時,SDA數(shù)據(jù)位則需要保持不變,當(dāng)SCL變?yōu)榈碗娖綍r,SDA的數(shù)據(jù)位才能夠發(fā)生變化。被控制器MPU-6050的應(yīng)答信號等待主控制器STM32F103VET6發(fā)送完字節(jié)命令,在第九個時鐘信號經(jīng)過后,如果被控制器MPU-6050的應(yīng)答信號可以接收到ACK應(yīng)答信號,則將SDA置為低電平,然后發(fā)送下一個數(shù)據(jù),當(dāng)主控制器STM32F103VET6收到的是非應(yīng)答信號,并且SCL又為高電平時,則表示數(shù)據(jù)傳輸結(jié)束。圖4-5IIC總線協(xié)議時序圖IIC通信的具體程序代碼如下:/*********************讀取MPU-6050的測量值********************/voidMPU6050_getMotion6(int16_t*ax,int16_t*ay,int16_t*az,int16_t*gx,int16_t*gy,int16_t*gz){ /*MPU6050數(shù)據(jù)檢測就緒*/ if(MPU6050_is_DRY()){ IICreadBytes(devAddr,MPU6050_RA_ACCEL_XOUT_H,14,buffer); MPU6050_Lastax=(((int16_t)buffer[0])<<8)|buffer[1]; MPU6050_Lastay=(((int16_t)buffer[2])<<8)|buffer[3]; MPU6050_Lastaz=(((int16_t)buffer[4])<<8)|buffer[5]; MPU6050_Lastgx=(((int16_t)buffer[8])<<8)|buffer[9]; MPU6050_Lastgy=(((int16_t)buffer[10])<<8)|buffer[11]; MPU6050_Lastgz=(((int16_t)buffer[12])<<8)|buffer[13];MPU6050_newValues(MPU6050_Lastax,MPU6050_Lastay,MPU6050_Lastaz,MPU6050_Lastgx,MPU6050_Lastgy,MPU6050_Lastgz); /*提取最新的濾波數(shù)據(jù)*/ MPU6050_getlastMotion6(ax,ay,az,gx,gy,gz);}數(shù)據(jù)處理在手勢數(shù)據(jù)采集過程中,用戶做手勢動作時不經(jīng)意間會產(chǎn)生輕微的抖動,傳感器使用時的測量誤差等因素對于有效手勢信號來說都屬于噪聲干擾,影響最終的識別效率和精度。所以要將采集到的數(shù)據(jù)進(jìn)行處理,排除抖動、測量誤差等干擾信號。本文的數(shù)據(jù)處理過程包括平滑濾波和特征提取。均值濾波為了去除噪聲消除原始數(shù)據(jù)曲線的毛刺,提高算法的識別精度,設(shè)計(jì)平滑濾波器。常見的平滑濾波算法有滑動均值濾波、中值濾波、高斯濾波等[43]。為了減小系統(tǒng)計(jì)算復(fù)雜度,提高識別速率,本文選用基于滑動窗口的均值濾波算法。滑動均值濾波的原理是將連續(xù)n組加速度、角速度數(shù)據(jù)存入緩沖隊(duì)列,依據(jù)先進(jìn)先出原則,將采集的每組新的加速度、角速度數(shù)據(jù)存入緩沖區(qū),同時去除緩沖區(qū)中最早存入的數(shù)據(jù),接著把緩沖區(qū)中的n個加速度、角速度數(shù)據(jù)分別取平均值,得到的結(jié)果就是當(dāng)前的加速度、角速度數(shù)據(jù)[46]。對于噪聲較少的環(huán)境,滑動均值濾波算法能夠得到較為平滑的波形。均值濾波算法的計(jì)算方式如式4-1,其中g(shù)(n)表示平滑濾波后第n個點(diǎn)的數(shù)據(jù)值,為窗口滑動時間長度,合理的取值能夠保證在最大限度的保留手勢數(shù)據(jù)特征基礎(chǔ)上實(shí)現(xiàn)平滑濾波。本文取。(4-1)圖4-6列舉了對角速度數(shù)據(jù)進(jìn)行滑動均值濾波后得到的結(jié)果。從圖中可以看出,滑動均值濾波對噪聲的過濾明顯,可以得到比較好的濾波效果。圖4-6滑動均值濾波效果圖系統(tǒng)的平滑濾波程序代碼如下:/*************************平滑濾波*************************/voidMPU6050_getlastMotion6(int16_t*ax,int16_t*ay, int16_t*az,int16_t*gx,int16_t*gy,int16_t*gz){ *ax=MPU6050_FIFO[0][50]; *ay=MPU6050_FIFO[1][50]; *az=MPU6050_FIFO[2][50]; *gx=MPU6050_FIFO[3][50]-Gx_offset; *gy=MPU6050_FIFO[4][50]-Gy_offset; *gz=MPU6050_FIFO[5][50]-Gz_offset;}特征提取手勢動作包括手指的彎曲、手掌的運(yùn)動和旋轉(zhuǎn)等一系列動作。將采集到的彎曲度、加速度、角速度信號進(jìn)行平滑濾波后分別對其數(shù)據(jù)特征進(jìn)行提取。用戶在做出手勢動作時,對應(yīng)這些動作得到的角速度、加速度數(shù)據(jù)會在合理范圍內(nèi)發(fā)生較大的改變,數(shù)據(jù)的變化使其產(chǎn)生各種特征,例如幅值、時間、斜率等,這些特征均可視為特征向量用作手勢識別的依據(jù)。由于加速度和角速度數(shù)據(jù)的特征點(diǎn)代表了用戶進(jìn)行手勢動作時的各個狀態(tài),而特征點(diǎn)出現(xiàn)的次數(shù)與每個動作的基本規(guī)律有關(guān),所以本文選擇加速度數(shù)據(jù)和角速度數(shù)據(jù)分別在X、Y、Z軸三個方向上的波峰、波谷的數(shù)量作為手勢識別的特征向量。下列的程序代碼以加速度數(shù)據(jù)在X軸方向的波峰數(shù)量作為特征向量為例進(jìn)行了介紹。/************加速度X軸方向波峰數(shù)量特征提取*****************/voidfeature_extraction(){ //波峰預(yù)判 if(ax_bofengdabiao==0&&ax_dong_buff[a_dong_buf_indx]>(ax_baseline+AX_PK)){ ax_bofengdabiao=1; ax_bofeng++;//波峰計(jì)數(shù) if(ax_bofeng==1&&ax_xianbofeng==0) { ax_xianbofeng=1; ax_xianbofengbogu[ee]=1; if(ee==1) ee=0; else ee++; }}elseif(ax_bofengdabiao==1&&ax_dong_buff[a_dong_buf_indx]<(ax_baseline+AX_PK)){ ax_bofengdabiao=0; } }1.3手勢識別端軟件實(shí)現(xiàn)手勢識別端的軟件設(shè)計(jì)主要包括兩個部分。如圖4-7所示,首先對接收到手勢的特征數(shù)據(jù)進(jìn)行數(shù)據(jù)融合,根據(jù)不同手勢的特點(diǎn),確定能夠體現(xiàn)不同手勢動作差異的特征向量,建立手勢模型。然后對提取出的特征向量手勢模型與已有手勢庫的標(biāo)準(zhǔn)特征模型進(jìn)行對比分析,實(shí)現(xiàn)手勢的分類與識別。圖4-7手勢識別端軟件流程圖數(shù)據(jù)融合MPU-6050傳感器采集的加速度信息和角速度信息具有不同的特性,如果分別使用加速度數(shù)據(jù)或角速度數(shù)據(jù)單獨(dú)表示手勢信息的話會存在誤差。因此要將加速度、角速度的數(shù)據(jù)特征進(jìn)行融合來規(guī)避傳感器的誤差,從而得到精度更高的姿態(tài)信息。較為直觀、精確的姿態(tài)信息一般是選用歐拉角來表示,歐拉角包括航向角(Yaw)、橫滾角(Roll)和俯仰角(Pitch)這三種。式4-2為三個角的計(jì)算公式,其中H代表高字節(jié),L代表低字節(jié)。航向角:Yaw=((YawH<<8)|YawL)/32768*180°橫滾角:Roll=((RollH<<8)|RollL)/32768*180°(4-2)俯仰角:Pitch=((PitchH<<8)|PitchL)/32768*180°本文通過運(yùn)動處理器DMP將原始數(shù)據(jù)輸出為四元數(shù)Q,再利用擴(kuò)展卡爾曼濾波算法進(jìn)行數(shù)據(jù)融合,得到姿態(tài)信息歐拉角。解算生成姿態(tài)數(shù)據(jù)歐拉角的程序代碼如下:/******************姿態(tài)解算及姿態(tài)數(shù)據(jù)生成**********************/voidAHRS_getYawPitchRoll(float*angles){floatq[4];/四元數(shù)AHRS_getQ(q);//更新全局四元數(shù)angles[0]=-atan2(2*q[1]*q[2]+2*q[0]*q[3],-2*q[2]*q[2]-2*q[3]*q[3]+1)*180/M_PI;//航向角yawangles[1]=asin(-2*q[1]*q[3]+2*q[0]*q[2])*180/M_PI;//俯仰角pitchangles[2]=atan2(2*q[2]*q[3]+2*q[0]*q[1],-2*q[1]*q[1]-2*q[2]*q[2]+1)*180/M_PI;//橫滾角rollif(angles[0]<0) angles[0]+=360.0f;//將-180°-+180°轉(zhuǎn)換成0-360°}卡爾曼濾波介紹:卡爾曼濾波是目前較為常用的姿態(tài)數(shù)據(jù)融合算法,屬于最優(yōu)化的自回歸數(shù)據(jù)處理算法[47]。具有效果好、效率高的特點(diǎn),比較適用于層次較低和實(shí)時進(jìn)行處理的數(shù)據(jù)融合,系統(tǒng)可以根據(jù)上一個時刻的系統(tǒng)狀態(tài)值和測量值來估算現(xiàn)在時刻的狀態(tài)值[48]。把加速度計(jì)獲取的加速度信息用作觀測量,陀螺儀獲取的角速度信息用作狀態(tài)量。其原理是把最小均方差作為估計(jì)計(jì)算的第一原則,通過利用信號以及環(huán)境噪聲的狀態(tài)空間模型,把當(dāng)前周期的觀測值和之前一個周期的估計(jì)值整合到一起,然后對其分析,計(jì)算出當(dāng)前周期的估計(jì)值[49]。對于卡爾曼濾波,對狀態(tài)的估計(jì)屬于其最重要的一部分。卡爾曼濾波算法可以用來估計(jì)處于離散時間過程內(nèi)的狀態(tài)變量Xk,上述離散時間過程由式4-3表示。公式中的矩陣A是狀態(tài)轉(zhuǎn)移矩陣,矩陣B是控制輸入矩陣,μk-1是陀螺儀測量得到的角度,wk-1是離散時間過程中產(chǎn)生的隨機(jī)噪聲。(4-3)接下來對測試變量進(jìn)行定義。如式4-4所示,取z為測試變量,公式中zk為系統(tǒng)在k時刻加速度計(jì)測量獲取的角度,h作為狀態(tài)變量Xk對測量變量zk的增益值,k是與隨機(jī)噪聲wk-1互為獨(dú)立的正態(tài)分布白噪聲,為觀測噪聲。(4-4)對于以上卡爾曼濾波算法中各式的變量,式4-5給出了計(jì)算過程中涉及到的各變量的表達(dá)式。其中q_acce和q_gyro分別為加速度和角速度數(shù)據(jù)的協(xié)方差,r_acce則是測量誤差的協(xié)方差,Q是過程激勵噪聲的協(xié)方差矩陣,R是測量誤差的協(xié)方差矩陣。 (4-5)卡爾曼濾波算法利用時間方程和狀態(tài)測量方程相互迭代從而確定系統(tǒng)當(dāng)前的狀態(tài),所以卡爾曼濾波的整個過程可以分為兩步進(jìn)行。首先是估算階段,式4-6為系統(tǒng)的時間方程,公式4-6中Xk|k-1表示系統(tǒng)k時刻狀態(tài)的估計(jì)值,由上一時刻的結(jié)果預(yù)測得到,Xk-1|k-1為上一時刻最后的輸出狀態(tài)。接下來更新Xk|k-1的協(xié)方差,與之相對應(yīng)的Pk|k-1表示系統(tǒng)對角度協(xié)方差的估計(jì)值。(4-6)接下來是校正階段,式4-7為系統(tǒng)的測量方程,公式4-7中的Kk為k時刻下的卡爾曼增益,H=[I0],I為單位矩陣,Xk|k和Pk|k分別為角度以及角度協(xié)方差校正之后的值。(4-7)由此可見,卡爾曼濾波實(shí)質(zhì)上是一個狀態(tài)變量,對待測對象連續(xù)不斷的測量,通過得到的測量值來對整個系統(tǒng)進(jìn)行重構(gòu)。卡爾曼濾波通過反饋控制來對系統(tǒng)進(jìn)行姿態(tài)估算,由于卡爾曼增益的存在,能夠有效抑制前向通道的擾動。此外,測量通道中加速度數(shù)據(jù)對誤差也有抑制作用,有著不錯的動態(tài)響應(yīng)效果,這也是本文選用卡爾曼濾波進(jìn)行傳感器數(shù)據(jù)融合的原因。將采集到的手勢數(shù)據(jù)進(jìn)行平滑濾波、數(shù)據(jù)融合等處理解算出手勢的姿態(tài)信息后,接下來要將姿態(tài)數(shù)據(jù)通過ZigBee無線傳輸模塊發(fā)送到手勢識別端進(jìn)行下一步的處理。分類識別手勢識別主要以手勢的特征向量作為判別依據(jù)。本系統(tǒng)將得到的手勢數(shù)據(jù)與手勢庫特征模型進(jìn)行比對,從而達(dá)到對手勢識別的目的。具體的手勢庫特征模型包括手掌的俯仰角(Pitch)數(shù)據(jù)和手指的彎曲度數(shù)據(jù),靜態(tài)手勢庫特征模型存儲在num[][]數(shù)組中,動態(tài)手勢庫特征模型存儲在dy[][]數(shù)組中。靜態(tài)手勢庫特征模型數(shù)組中的前兩位數(shù)據(jù)代表俯仰角(Pitch)的角度范圍,后面10位分別對應(yīng)5根手指的彎曲度傳感器采集到的電壓數(shù)據(jù)范圍。動態(tài)手勢庫特征模型數(shù)組中的前兩位則是Z軸的加速度范圍大小,后面10位對應(yīng)5根手指上彎曲度傳感器采集到的電壓數(shù)據(jù)范圍。下面是本文通過樣本數(shù)據(jù)建立的手勢庫特征模型。/********************手勢庫特征模型*******************/uint16_tnum[11][12]={ {80,120,1000,1420,1000,1420,900,1320,900,1200,2000,2300},//0 {80,120,1000,1420,950,1320,850,1230,2000,2200,2100,2399},//1 {80,120,1000,1440,906,1300,1900,2200,1900,2200,2200,2420},//2 {80,120,900,1340,1960,2200,1960,2200,1960,2200,2300,2540},//3 {80,120,1900,2340,1800,2240,1800,2220,1800,2220,2000,2400},//4 {0,0,1900,2340,1800,2240,1800,2220,1800,2220,2400,2540},//5 {80,120,1900,2340,1000,1400,900,1320,900,1320,2400,2540},//6 {80,120,1000,1440,1200,1600,1850,2220,1850,2220,2420,2550},//7 {80,120,1000,1440,1000,1440,900,1340,1910,2350,2400,2540},//8 {80,120,1000,1420,950,1320,850,1230,1200,1600,2000,2350},//9 {80,120,1000,1420,950,1320,850,1230,1300,1700,2000,2350}//10 };uint16_tdy[2][12]={ {0,0,1900,2340,1800,2240,1800,2220,1800,2220,2400,2540},//方向 {80,120,1900,2340,1800,2240,1800,2220,900,1200,2000,2300}//OK};手勢庫特征模型包括靜態(tài)數(shù)字手勢0-10,動態(tài)方向手勢上、下、左、右和代表確認(rèn)手勢的“OK”。以數(shù)字手勢“0”為例,數(shù)組中前兩位數(shù)據(jù)表示該手勢俯仰角(Pitch)范圍應(yīng)該在80-120°之間,后面兩位數(shù)據(jù)為一組,表示拇指上的彎曲度傳感器采集到的電壓數(shù)據(jù)范圍應(yīng)該在1000-1420之間,后面八個數(shù)據(jù)以此類推為其余四根手指彎曲度傳感器采集到的電壓數(shù)據(jù)范圍。接下來對手勢進(jìn)行識別,以動態(tài)手勢“左”方向?yàn)槔绻铀俣葦?shù)據(jù)在-91至-50之間,且每根手指上彎曲度傳感器采集到的數(shù)據(jù)都滿足手勢庫特征模型中規(guī)定的電壓范圍,則識別出該手勢為方向手勢向左。下面是具體的程序代碼。/********************動態(tài)方向“左”的識別********

溫馨提示

  • 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

提交評論