本發(fā)明涉及一種手勢(shì)控制裝置和方法,特別涉及基于慣性傳感器的四軸飛行器手勢(shì)控制裝置和控制方法。
背景技術(shù):
:近年來,四軸飛行器作為一種特殊的“自拍桿”,已經(jīng)逐漸在消費(fèi)市場(chǎng)得到普及。然而針對(duì)四軸飛行器的操控方式,目前商用的產(chǎn)品仍然是以手柄操作為主。最近也有些研究人嘗試使用手勢(shì)來控制四軸飛行器,手勢(shì)控制最核心的部分就是手勢(shì)識(shí)別與手勢(shì)指令。目前,手勢(shì)識(shí)別通常有兩種方式,一種方式是基于機(jī)器視覺。即,通過雙目攝像頭,提取所拍攝三維空間的景深信息,然后再對(duì)手勢(shì)做三維重建,典型代表就是kinect和leapmotion。這種方式,最大的優(yōu)點(diǎn)可以實(shí)現(xiàn)裸手操作,這是最理想的操控方式。然而,缺點(diǎn)就是對(duì)環(huán)境光線要求比較苛刻,光照強(qiáng)弱、均勻性等對(duì)識(shí)別率的影響很大。另外,基于圖像的手勢(shì)識(shí)別算法進(jìn)行的都是二階矢量運(yùn)算,需要專用的圖形處理器進(jìn)行加速,整個(gè)處理過程的延時(shí)和功耗都很大,通常都是在主機(jī)設(shè)備上使用。另一種方式是基于傳感器技術(shù),即,利用與手指關(guān)節(jié)貼合的各類傳感器檢測(cè)出手指動(dòng)作。其中,最主要的一類傳感器就是慣性傳感器。這種慣性傳感器通常包含三軸陀螺儀、三軸加速度計(jì)(部分產(chǎn)品還包含三軸磁力計(jì))。這種手勢(shì)識(shí)別方式,最大的優(yōu)點(diǎn)就是測(cè)量的數(shù)據(jù)直接、快速、功耗低以及受環(huán)境影響小,適用于對(duì)實(shí)時(shí)性要求比較高的場(chǎng)景,尤其適合于在戶外操控四軸飛行器。現(xiàn)有的基于慣性傳感器的手勢(shì)控制方法,存在三個(gè)問題:(1)識(shí)別精度和速度無法兼顧,有些使用了9軸慣性傳感器及相應(yīng)姿態(tài)解算算法,片面追求姿態(tài)解算的精度,這種方案解算后穩(wěn)定的延時(shí)要達(dá)到幾十甚至幾百毫秒;要么僅使用3軸慣性傳感器不做姿態(tài)解算和融合,直接使用原始數(shù)據(jù)做判斷,這種方案下傳感器本身的漂移對(duì)后續(xù)識(shí)別精度影響很大。(2)手勢(shì)識(shí)別的魯棒性不夠,只是在手掌保持某一特定姿勢(shì)時(shí)識(shí)別率較高,例如平舉,而當(dāng)手部有一傾斜角度時(shí),則識(shí)別率急劇下降。(3)手勢(shì)指令的差異性不夠明顯,例如,旋轉(zhuǎn)手腕和擺動(dòng)手臂,擺動(dòng)的時(shí)候也會(huì)發(fā)生輕微的旋轉(zhuǎn)動(dòng)作,容易產(chǎn)生誤操作。技術(shù)實(shí)現(xiàn)要素:發(fā)明要解決的問題本發(fā)明要解決的技術(shù)問題在于,如何平衡手勢(shì)識(shí)別精度和速度,提高手勢(shì)識(shí)別魯棒性以及提出一套差異性明顯便于穩(wěn)定識(shí)別的手勢(shì)動(dòng)作指令。用于解決問題的方案有鑒于此,本發(fā)明提出了一種基于慣性傳感器的四軸飛行器手勢(shì)控制裝置和控制方法,針對(duì)上述問題提出解決方案。一方面,提出了一種手勢(shì)控制裝置,包括:控制器、慣性傳感節(jié)點(diǎn)。其中,所述控制器固定在手背上,所述慣性傳感節(jié)點(diǎn)固定在手指第二指節(jié)處。所述慣性傳感器用于采集手指的運(yùn)動(dòng)姿態(tài)角信息并輸出給控制器,所述控制器用于采集所述傳感器的輸出數(shù)據(jù),并向四軸飛行器發(fā)送控制指令。所述慣性傳感節(jié)點(diǎn)必須包含三軸角速度計(jì)和三軸加速度計(jì),三軸磁力計(jì)可不包含在內(nèi)。所述慣性傳感節(jié)點(diǎn)固定在手指第二指節(jié)背部且Y軸正方向指向指尖。所述運(yùn)動(dòng)姿態(tài)融合采用捷聯(lián)導(dǎo)航算法,融合后的俯仰角測(cè)量范圍為-80°~+80°;橫滾角測(cè)量范圍為-180°~180°;地磁導(dǎo)致偏航角持續(xù)漂移,無精確測(cè)量結(jié)果。所述控制方法中,只使用橫滾角判斷手指姿態(tài)。所述控制器上集成一個(gè)慣性傳感器,用作參考點(diǎn),手指的實(shí)際測(cè)量角度是手指關(guān)節(jié)的慣性傳感器與參考點(diǎn)的相對(duì)角度。另一方面,提出了一種控制方法,具體實(shí)現(xiàn)步驟如下:步驟1:配置傳感器并采集誤差值,指的是按照一定要求配置傳感器,并采集角速度和加速度的誤差值。步驟2:采集手指信息并計(jì)算手指的彎曲程度,指的是采集每個(gè)手指的加速度和角速度,計(jì)算出各手指相對(duì)于手背的彎曲程度。步驟3:計(jì)算當(dāng)前手勢(shì)并發(fā)送相應(yīng)的控制命令,指的是根據(jù)雙手的手指彎曲程度,計(jì)算出當(dāng)前手勢(shì),并向四軸飛行器發(fā)送對(duì)應(yīng)的手勢(shì)控制指令。所述左手控制指令,具體為:油門一檔:手心朝地,平伸食指,其余手指蜷曲。所述手勢(shì)以食指為例,也可以是其余任意一根手指的平伸動(dòng)作。油門二檔:手心朝地,平伸食指和中指,其余手指蜷曲。所述手勢(shì)以食指和中指為例,也可以是其余任意兩根手指的平伸動(dòng)作。油門三檔:手心朝地,平伸食指、中指和無名指,其余手指蜷曲。所述手勢(shì)以食指、中指和無名指為例,也可以是其余任意三根手指的平伸動(dòng)作。油門四檔:手心朝地,平伸食指、中指、無名指和小拇指,大拇指蜷曲。所述手勢(shì)以食指、中指、無名指和小拇指為例,也可以是其余任意四根手指的平伸動(dòng)作。油門五檔:表示手心朝地,平伸五根手指。所述右手手勢(shì)指令,具體為:向前飛行:手心朝天,大拇指蜷曲,其余四指平伸。向后飛行:手心朝天,大拇指蜷曲,其余四指蜷曲并壓在大拇指上。向左飛行:手心朝地,大拇指平伸向左,其余四指蜷曲。向右飛行:手心朝天,大拇指平伸向右,其余四指蜷曲。附圖說明圖1:是本發(fā)明的控制裝置的左手勢(shì)命令示意圖;圖2:是本發(fā)明的控制裝置的右手勢(shì)命令示意圖;圖3:是本發(fā)明的控制裝置的示意性結(jié)構(gòu)圖;圖4:是本發(fā)明的控制流程圖;具體實(shí)施方式以下將參考附圖詳細(xì)說明本發(fā)明的各種示例性實(shí)施例、特征和方面。附圖中相同的附圖標(biāo)記表示功能相同或相似的元件。盡管在附圖中示出了實(shí)施例的各種方面,但是除非特別指出,不必按比例繪制附圖。在這里專用的詞“示例性”意為“用作例子、實(shí)施例或說明性”。這里作為“示例性”所說明的任何實(shí)施例不必解釋為優(yōu)于或好于其它實(shí)施例。另外,為了更好的說明本發(fā)明,在下文的具體實(shí)施方式中給出了眾多的具體細(xì)節(jié)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,沒有某些具體細(xì)節(jié),本發(fā)明同樣可以實(shí)施。在一些實(shí)例中,對(duì)于本領(lǐng)域技術(shù)人員熟知的方法、手段、元件和電路未作詳細(xì)描述,以便于凸顯本發(fā)明的主旨。圖1示出本發(fā)明一實(shí)施例的控制裝置的左手勢(shì)命令示意,圖中手指編號(hào)101~105分別依次代表左手大拇指、食指、中指、無名指、大拇指。左手控制四軸飛行器的油門,手勢(shì)106~110分別表示控制油門由低至高依次分為五檔。左手勢(shì)106:表示手心朝地,平伸食指,其余手指蜷曲,此手勢(shì)控制油門為一檔。所述手勢(shì)以食指為例,也可以是其余任意一根手指的平伸動(dòng)作。左手勢(shì)107:表示手心朝地,平伸食指和中指,其余手指蜷曲,此手勢(shì)控制油門為二檔。所述手勢(shì)以食指和中指為例,也可以是其余任意兩根手指的平伸動(dòng)作。左手勢(shì)108:表示手心朝地,平伸食指、中指和無名指,其余手指蜷曲,此手勢(shì)控制油門為三檔。所述手勢(shì)以食指、中指和無名指為例,也可以是其余任意三根手指的平伸動(dòng)作。左手勢(shì)109:表示手心朝地,平伸食指、中指、無名指和小拇指,大拇指蜷曲,此手勢(shì)控制油門為四檔。所述手勢(shì)以食指、中指、無名指和小拇指為例,也可以是其余任意四根手指的平伸動(dòng)作。左手勢(shì)110:表示手心朝地,平伸五根手指。此手勢(shì)控制油門為五檔。圖2示出本發(fā)明一實(shí)施例的控制裝置右手勢(shì)命令示意性結(jié)構(gòu)圖,圖中手指編號(hào)201~205分別依次代表右手大拇指、食指、中指、無名指、大拇指。右手勢(shì)206~209分別表示控制四軸飛行器向前、向后、向左、向右四個(gè)方向飛行,此處所謂前后左右方向是相對(duì)于四軸飛行器的初始位置。右手勢(shì)206:表示手心朝天,大拇指蜷曲,其余四指平伸,此手勢(shì)控制飛行器向前飛行。右手勢(shì)207:表示手心朝天,大拇指蜷曲,其余四指蜷曲并壓在大拇指上,此手勢(shì)控制飛行器向后飛行。右手勢(shì)208:表示手心朝地,大拇指平伸向左,其余四指蜷曲,此手勢(shì)控制飛行器向左飛行。右手勢(shì)209:表示手心朝天,大拇指平伸向右,其余四指蜷曲,此手勢(shì)控制飛行器向右飛行。圖3示出本發(fā)明一實(shí)例的控制裝置300、連接線309和指關(guān)節(jié)檢測(cè)裝置310的示意圖,如圖所示,該控制裝置包括微控制器301、慣性傳感器302、無線傳輸模塊(1)303、無線傳輸模塊(2)304、電源模塊305、LED等其他外設(shè)模塊306,該檢測(cè)裝置包括接線口307、慣性傳感器308。其中,所述微控制器301通過SPI通信分別于所述慣性傳感器模塊302、所述無線傳輸模塊(1)303、所述無線傳輸模塊(2)304、所述接線口307連接。所述接口線307和所述慣性傳感器308直接連接。控制裝置300固定在手背上且所述慣性傳感器302的Y軸正方向指向四個(gè)手指。檢測(cè)裝置310固定于手指第二指節(jié)背部且所述慣性傳感器308的Y軸正方向指向指甲蓋。圖4示出本發(fā)明提供一種四軸飛行器的控制方法。具體實(shí)現(xiàn)步驟如下:步驟1:配置傳感器并采集誤差值在一種可能的實(shí)現(xiàn)方式中,控制器按照一定要求配置慣性傳感器并控制慣性傳感器按照一定的速度采集手指的角速度Gyro和加速度Acc,并將兩種數(shù)據(jù)讀入控制器分別計(jì)算出角速度誤差e_gyro和加速度誤差e_acc。其中,角速度和加速度均為三維矢量。在一具體實(shí)施例中:將雙手五指并攏手背朝上水平放置并保持靜止?fàn)顟B(tài),采集加速度和角速度值并記錄采集次數(shù)num。采集角速度的大小:Gyro(i)=Gyro_Correct()采集加速度的大小:Acc(i)=Acc_Correct()計(jì)算角速度誤差:e_gyro.X=1numΣi=1numGyro(i).Xe_gyro.Y=1numΣi=1numGyro(i).Ye_gyro.Z=1numΣi=1numGyro(i).Z---(1)]]>計(jì)算加速度誤差:e_acc.X=1numΣi=1numAcc(i).Xe_acc.Y=1numΣi=1numAcc(i).Ye_acc.Z=1numΣi=1numAcc(i).Z---(2)]]>步驟2:采集手指信息并計(jì)算手指的彎曲程度在一種可能的實(shí)現(xiàn)方式中,采集角速度Gyro(i)、加速度Acc(i)使用捷聯(lián)慣導(dǎo)算法(IMU)進(jìn)行手指姿態(tài)解算并計(jì)算出手指的彎曲程度。在一具體實(shí)施例中:(1)先對(duì)采集到的Gyro(i)、Acc(i)進(jìn)行校準(zhǔn)Final.Gyro(i).X=Gyro(i).X-e_gyro.XFinal.Gyro(i).Y=Gyro(i).Y-e_gyro.YFinal.Gyro(i).Z=Gyro(i).Z-e_gyro.Z---(3)]]>和Final.Acc(i).X=Acc(i).X-e_acc.XFinal.Acc(i).Y=Acc(i).Y-e_acc.YFinal.Acc(i).Z=Acc(i).Z-e_acc.Z---(4)]]>其中,F(xiàn)inal.Gyro(i).X、Final.Gyro(i).Y、Final.Gyro(i).Z、Final.Acc(i).XFinal.Acc(i).Y、Final.Acc(i).Z分別代表校準(zhǔn)后的角速度、加速度各軸大小。(2)再把校準(zhǔn)后的加速度、角速度單位化,得FN.Gyro(i).X、FN.Gyro(i).Y、FN.Gyro(i).Z、FN.Acc(i).X、FN.Acc(i).Y、FN.Acc(i).Z。(3)把地理坐標(biāo)系中的重力加速度矢量通過姿態(tài)轉(zhuǎn)換矩陣轉(zhuǎn)化成載體坐標(biāo)系中的矢量那么V=Cnb·R---(5)]]>其中,是由四元數(shù)構(gòu)成的矩陣并且四元數(shù)的初值(4)在載體坐標(biāo)系下,計(jì)算慣性傳感器所測(cè)到的加速度FN.Acc(i)和由姿態(tài)矩陣轉(zhuǎn)化的加速度V之間的誤差,記作e。e=FN.Acc(i)×V(6)(5)利用比例、積分修正角速度,修正量δ和修正后的角速度w分別是:δ=Kpe+Ki∫e(7)w=FN.Gyro(i)+δ(8)(6)利用修正后的角速度去更新四元數(shù)由四元數(shù)微分方程得:q0·q1·q2·q3·=0-wx-wy-wzwx0wz-wywy-wz0wxwzwy-wx0q0q1q2q3---(9)]]>其中是更新后的四元數(shù)的各個(gè)分量(7)利用跟新后的四元數(shù)求出歐拉角航向角:俯仰角:pitch=arcsin(2(q0q2-q1q3))橫滾角:橫滾角就是慣性傳感器繞X軸旋轉(zhuǎn)的角度,記作D0,故計(jì)算出手背上的慣性傳感器302繞X軸旋轉(zhuǎn)的角度D0和各手指上(大拇指除外)的慣性傳感器308繞X軸旋轉(zhuǎn)的角度Di,則各手指(大拇指除外)相對(duì)于手背彎曲的角度DTi=Di-D0。步驟3:計(jì)算當(dāng)前手勢(shì)并發(fā)送相應(yīng)的控制命令在一種可能的實(shí)現(xiàn)方式中,當(dāng)五指并攏伸直手背朝上保持靜止時(shí),D0在C1到C2之間。例如,經(jīng)過多次重復(fù)實(shí)驗(yàn),實(shí)測(cè)-3°到+3°為穩(wěn)定狀態(tài)。食指、中指、無名指、小拇指上的慣性傳感器繞X軸旋轉(zhuǎn)的角度D2、D3、D4、D5在C3到C4之間,例如,經(jīng)過多次重復(fù)實(shí)驗(yàn),實(shí)測(cè)當(dāng)四指并攏伸直保持穩(wěn)定時(shí)角度顯示在-3°到+5°之間。大拇指上的慣性傳感器繞X軸旋轉(zhuǎn)的角度D1在C5到C6之間,例如,經(jīng)過多次重復(fù)實(shí)驗(yàn),實(shí)測(cè)在30°到40°之間為穩(wěn)定狀態(tài)。當(dāng)手背水平朝上四指第二指節(jié)緊握,大拇指朝垂直于四指方向張開時(shí),D2、D3、D4、D5均在C7到C8之間,例如,經(jīng)過多次重復(fù)實(shí)驗(yàn),實(shí)測(cè)數(shù)據(jù)顯示穩(wěn)定在75°到+93°之間。D1在C9到C10之間,例如,經(jīng)過多次重復(fù)實(shí)驗(yàn)數(shù)據(jù)穩(wěn)定在70°到87°之間。綜合得知,當(dāng)DTi(i=2、3、4、5)在0°到(C4-C1+ε)°之間時(shí),例如在0°到+10°之間時(shí),認(rèn)為DTi對(duì)應(yīng)的手指相對(duì)于手背處于伸直狀態(tài);當(dāng)D1在0°到(C6+ε)之間時(shí),例如在0°到+40°之間時(shí),認(rèn)為大拇指處于并攏狀態(tài)。其中ε代表很小的角度裕量。當(dāng)DTi(i=2、3、4、5)大于(C7+ε)時(shí),例如大于65°時(shí),認(rèn)為DTi對(duì)應(yīng)的手指相對(duì)于手背處于緊握狀態(tài);當(dāng)D1大于(C9+ε)時(shí),例如大于70°時(shí),認(rèn)為大拇指處于張開狀態(tài)。從而根據(jù)手指張開或者緊握的個(gè)數(shù)就可以判定當(dāng)前處于哪個(gè)手勢(shì),最后向四軸飛行器發(fā)送手勢(shì)所對(duì)應(yīng)的命令。當(dāng)前第1頁1 2 3