許洪光 汪思汗 周稷麟 王友學(xué) 劉青林
(哈爾濱工業(yè)大學(xué)(深圳)電子與信息工程學(xué)院 廣東 深圳 518055)
空中鼠標是在無線鼠標的基礎(chǔ)上,利用慣性傳感器采集的姿態(tài)信息,控制屏幕上的光標移動,從而使鼠標不依賴桌面。
空中鼠標的性能指標分為以下幾點:定位的精度、平滑性、易操作性。按鍵抖動一直影響著用戶對空中鼠標的使用和體驗。文獻[1]提出了用低通濾波器消除輸入速率低于每5秒度的所有動作,但是,這也會影響到那些有意而為之的細微動作,造成所謂的動作“死區(qū)”。若用戶不小心大幅度移動空中鼠標,這必然導(dǎo)致光標大幅度移動,使用戶難以找到光標在屏幕中位置,目前還沒有針對此問題的具體解決方案。文獻[2-4]用位移控制光標移動,大量實驗發(fā)現(xiàn),加速度來測量位移存在著較大的誤差[5]。文獻[6-9]用角度變化控制光標移動,但是左右平移鼠標,此時的角度變化不大,光標幾乎不會移動,不符合用戶使用習(xí)慣。
基于以上背景,本文提出了BLE(Bluetooth Low Energy)空中鼠標系統(tǒng)設(shè)計方案,設(shè)計并定義了光標定位法和固定光標法。同時采用角度和加速度相結(jié)合方法來控制光標移動以及采用滑動窗口濾波法來解決數(shù)據(jù)抖動問題,利用加速度標定模型進行系統(tǒng)誤差校正,還設(shè)置了多個功能按鍵以此增加空中鼠標功能的多樣性,從而提高用戶體驗質(zhì)量。
本系統(tǒng)方案采用模塊化設(shè)計,實現(xiàn)BLE空中鼠標系統(tǒng),該系統(tǒng)主要包括兩個部分:手持端和藍牙適配器,系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 BLE空中鼠標系統(tǒng)結(jié)構(gòu)
主控芯片選用TI公司生產(chǎn)的40引腳BLE芯片CC2541,負責(zé)通信協(xié)議的轉(zhuǎn)換。
手持端主要包括主控芯片、數(shù)據(jù)采集模塊、按鍵模塊、電源模塊。數(shù)據(jù)采集模塊MPU6050傳感器,負責(zé)采集手持端的三維空間位置數(shù)據(jù),并通過IIC接口與主控芯片通信。設(shè)置七個按鍵,按鍵數(shù)據(jù)通過IO口傳給主控芯片,分別實現(xiàn)電源開關(guān)、復(fù)位、Enter鍵、鼠標左擊、鼠標右擊、向上翻一頁、向下翻一頁的功能。根據(jù)藍牙通信協(xié)議,主控芯片將接收到的三維空間位置信息和按鍵信息處理編碼并通過藍牙天線發(fā)送給藍牙適配器。
藍牙適配器主要包括主控芯片、電源模塊、USB接口。藍牙適配器接收到手持端發(fā)射的信息流,經(jīng)過主控芯片解析處理為光標位移及按鍵信息,依據(jù)USB協(xié)議編碼,通過USB接口完成和計算機的交互通信,最終實現(xiàn)BLE空中鼠標操作電腦的功能。
本軟件系統(tǒng)采用多任務(wù)操作系統(tǒng),以O(shè)SAL(Operating System Abstraction Layer)作為調(diào)度核心,OSAL是一種任務(wù)分配資源的機制,BLE協(xié)議棧、profile定義、所有的應(yīng)用都圍繞它來實現(xiàn),OSAL是在此基礎(chǔ)上建立和執(zhí)行事件的循環(huán)。
任務(wù)事件實現(xiàn)軟件的功能,創(chuàng)建一個任務(wù)事件需以下三個步驟:
(1) 創(chuàng)建任務(wù)的標識符任務(wù)ID;
(2) 創(chuàng)建任務(wù)初始化進程,然后添加到OSAL初始化進程中;
(3) 編寫任務(wù)處理程序。
系統(tǒng)流程圖如圖2所示。
圖2 系統(tǒng)流程圖
1.2.1 姿態(tài)四元數(shù)
鼠標的姿態(tài)角求取方法分為三種:歐拉角法、方向余弦法、四元數(shù)法。四元數(shù)具有計算精度高的特點,同時可以很好避免奇異性,而且計算量少很適合在嵌入式設(shè)備運行。因此四元數(shù)被廣泛應(yīng)用到各種場合。
四元數(shù)是一種超復(fù)數(shù),最早是由愛爾蘭數(shù)學(xué)家哈密頓提出的數(shù)學(xué)概念,其形式如公式:
Q=q1+q2i+q3j+q4k
(1)
式中:i、j、k代表虛數(shù)單位的基,而q1、q2、q3、q4代表四個實數(shù)。
文獻[10-12],詳細介紹了推導(dǎo)四元數(shù)旋轉(zhuǎn)矩陣。用字母T表示四元數(shù)的旋轉(zhuǎn)矩陣,其公式如下:
(2)
通過四元數(shù)旋轉(zhuǎn)矩陣可以求出,航偏角α(-180°,+180°),俯仰角β(-90°,+90°),橫滾角γ(0°,360°)。其中航偏角和橫滾角存在多解問題,需要在求解航偏角和橫滾角時判斷它們所在的象限,之后就可以明確航偏角和橫滾角的真值。公式如下:
(3)
1.2.2 光標定位法
光標定位法,是通過快速向上或向下移動鼠標,將光標定位到用戶事先設(shè)定的位置。
光標定位法是為了解決用戶難以找到光標在電腦屏幕上位置的問題。電腦的屏幕一般為長方形,假設(shè)用戶在屏幕上設(shè)定的位置為坐標原點,顯示器屏幕的長為x軸,顯示器屏幕的寬為y軸,建立xOy坐標系,記錄每次光標的坐標位置。光標坐標公式如下:
x(n)=x(n-1)+Δx
y(n)=y(n-1)+Δy
(4)
x(n)、y(n)表示當前光標的坐標位置,x(n-1)、y(n-1)表示上一次光標的坐標位置,Δx、Δy表示每次光標移動的距離。
經(jīng)過多次試驗,快速向上或向下采集的絕對值最大z軸加速度如表1所示。
表1 絕對值最大z軸加速度值
由表1可知,每次實驗最大或最小值不同,但相差不大,為了更好識別向上和向下的手勢,設(shè)定一個相關(guān)系數(shù)為0.85。
當檢測到向上或向下手勢后,光標會移動(-x(n),-y(n) )坐標距離。光標在移動之后就會回到用戶設(shè)定的原點,其中用戶設(shè)定的原點為鼠標剛連接到PC機時光標的位置或者空中鼠標系統(tǒng)重啟后光標的位置。具體實現(xiàn)流程圖,如圖3所示。
圖3 光標定位法流程圖
1.2.3 固定光標法
固定光標法,是當用戶按下鼠標鍵后,讓光標在一定時間內(nèi)保持不動。
按鍵抖動問題是一個綜合的問題,按鍵位置、軟硬度都與抖動有關(guān)。本文是在按鍵位置和軟硬度確定的情況下,當用戶按下某一鼠標鍵之后,將光標固定一定時間,能夠很好地消除按鍵帶來的光標抖動而不會造成“死區(qū)”問題。不同的按鍵位置和軟硬度,需要固定不同光標時間。具體實現(xiàn)流程圖,如圖4所示。
圖4 固定光標法流程圖
MPU6050傳感器主要存在兩種誤差,一種系統(tǒng)誤差,一種隨機誤差。系統(tǒng)誤差主要包括:零偏誤差、零偏重復(fù)性、刻度因子非線性、刻度因子重復(fù)性、非敏感軸互耦誤差、安裝誤差[13]。隨機誤差主要源于噪聲。由于環(huán)境噪聲存在,導(dǎo)致傳感器輸出的數(shù)據(jù)具有波動性,傳感器測量精度會對姿態(tài)信息計算產(chǎn)生重大影響,使用前必須對其進行誤差補償。本文采用加速度計標定模型和滑動窗口濾波分別校正系統(tǒng)誤差和減少隨機誤差。
加速度計傳感器測量模型,如圖5所示。
圖5 加速度計測量模型框圖
加速度計傳感器誤差模型公式如下:
f=a0+Kaab
(5)
具體形式如下:
(6)
式中:f=[fx,fy,fz]T為加速度計測量輸出,Kai(i=x,y,z)表示加速度計傳感器標度系數(shù),Kaij(i,j=x,y,z)表示加速度計傳感器的安裝誤差,j軸的輸出對i軸的耦合影響;a0=[ax0,ay0,az0]T表示加速度計傳感器的零偏誤差矩陣;ab=[abx,aby,abz]T表示加速度計的理論輸出。
通過加速度誤差模型可以反解出校正后的加速度,如下公式:
(7)
文獻[14-16],詳細介紹了一種六位置方法,以此求解加速度計模型里矩陣系數(shù)。
利用二軸電動轉(zhuǎn)臺,采用六位置方法,求解矩陣系數(shù),最終解的矩陣系數(shù),如公式所示:
(8)
傳感器輸出的數(shù)據(jù)會受到外界噪聲干擾,即使經(jīng)過系統(tǒng)校正后,輸出的數(shù)據(jù)仍然會有一定波動性,因此,在對傳感器數(shù)據(jù)處理前,需要對數(shù)據(jù)進行平滑濾波。而滑動窗口濾波算法比較好的對傳感器采集的數(shù)據(jù)進行平滑處理,減少數(shù)據(jù)波動性,能夠提高鼠標的動態(tài)性能。
本文采用滑動窗口均值濾波,公式如下:
(9)
式中:βi為采樣點,N為數(shù)據(jù)長度,而i表示第i個采樣點,其中i的取值范圍為i=1,2,…,N。圖6是滑動窗口濾波過程的圖形介紹。
圖6 滑動窗口均值濾波
一般空中鼠標是利用角度控制光標移動而不采用位移控制光標移動,主要由于加速度二重積分,會引起較大的累計誤差,導(dǎo)致光標偏移過大。航偏角α(-180°,+180°)的角度變化控制光標在電腦桌面水平方向移動,俯仰角β(-90°,+90°)的角度變化控制光標在電腦桌面豎直方向移動。本文提出了以航偏角α和x軸加速度相結(jié)合方式來控制光標在水平方向的移動的方法,其中x軸加速度是用來解決左右平移空中鼠標而光標不移動的問題。
在鼠標水平移動一段距離后停止時,x軸加速度是先增加后減少為0,然后反向加速,后反向減速為0。如果把后部分的反向加速和反向減速也用來計算光標移動的位移,那么會出現(xiàn)光標漂移現(xiàn)象。為了防止光標漂移,本文只采用了x軸加速度先增加后減少這部分的加速度值,丟棄了反向加速和反向減速的這部分加速度值。
采用本文方案所設(shè)計的空中鼠標,在Windows7操作系統(tǒng)的PC機上進行實驗驗證,結(jié)果如下。
從以下兩方面來進行:一是光標定位;二是固定光標。下面分別通過實驗對上述方法進行驗證。
空中鼠標連接到PC機時光標的位置為參考位置坐標(0,0);接著移動鼠標,光標會在PC屏幕上移動,停止移動鼠標靜止一段時間后,光標獲得一個新的坐標并記錄;然后向上或向下快速移動鼠標,光標會回到參考位置并記錄坐標,重復(fù)上述操作,采集坐標如表2所示。
表2 定位前后光標的坐標
從表2可以看出,z軸向上或向下加速度滿足定位手勢的條件,從而實現(xiàn)定位功能。
固定光標驗證是通過大量測試某一固定按鍵,然后觀察光標固定時間與對應(yīng)消除按鍵抖動的效果好壞,如表3所示。
表3 光標固定時間所對應(yīng)消除按鍵抖動的效果
從表3可以看出,在本方案中,固定時間介于[400,500]之間,按鍵抖動消除效果較好。將[400,500]區(qū)間繼續(xù)細分,通過大量測試發(fā)現(xiàn),當固定時間近似為420 ms時,按鍵抖動消除效果最佳。不同按鍵軟硬度和按鍵位置,固定時間不同,本文只是提出一種解決此問題的方法。
從以下兩方面來進行:一是加速度計誤差模型驗證;二是滑動窗口濾波驗證。
加速度計誤差模型驗證是以雙軸電動轉(zhuǎn)臺為平臺,測試30度狀態(tài)下三軸加速度數(shù)據(jù),然后對采集的原始數(shù)據(jù)經(jīng)過加速度誤差模型校正。原始數(shù)據(jù)和校正后數(shù)據(jù)如表4所示。
表4 加速度原始數(shù)據(jù)和加速度校正后數(shù)據(jù)
從表4中可以看出校正后的數(shù)據(jù)更接近真實值。
滑動窗口濾波驗證,首先測試靜止狀態(tài)下加速度傳感器三軸的值,然后經(jīng)過滑動窗口濾波。圖7表示有無滑動窗口濾波數(shù)據(jù)圖。從圖7可以看出,在濾波前得到的加速度值波動比較大,而在滑動窗口濾波后,計算得到的數(shù)據(jù)波動較小。
圖7 有無滑動窗口濾波比較
BLE空中鼠標如圖8所示。手持端和藍牙適配器配置好后,在Windows7操作系統(tǒng)下,操作BLE空中鼠標按照數(shù)字“2”軌跡移動,利用畫圖軟件描繪光標軌跡如圖9所示。
圖8 空中鼠標實物
圖9 鼠標運動軌跡
本文提出了一種基于MPU6050六軸傳感器的BLE空中鼠標系統(tǒng)的設(shè)計方案。該方案提出了光標定位法和固定光標法,采用滑動窗口濾波法解決數(shù)據(jù)抖動問題,利用加速度標定模型校正系統(tǒng)誤差,最終實現(xiàn)了BLE空中鼠標功能的優(yōu)化。在Windows7平臺中測試,驗證了方案的正確性和有效性。另外,現(xiàn)有文獻均未提出光標“未知”問題的解決方案,本文創(chuàng)造性地提出了向上或向下手勢來解決該問題。本方案很好地解決了光標“死區(qū)”和光標位置“未知”的問題,并增加了光標移動的多樣性。適合任意場景的應(yīng)用,如火車、床上等無桌面依托的環(huán)境中,尤其適合手腳不靈的殘疾人使用。另外,增加了功能按鍵,也可用作教學(xué)遙控筆。下一步將研究設(shè)計出更符合用戶使用習(xí)慣的硬件外觀和按鍵布局,以此進一步增強用戶的體驗感和舒適度。
[1] Hillcrest Labs.空中鼠標系統(tǒng)設(shè)計的關(guān)鍵因素[B/OL]. 2013-12-12/2017-1-10. http://archive.eet-china.com/www.eet-china.com/ART_8800693044_480501_TA_857d0c44_2.HTM.
[2] 王海紅. 三維鼠標的設(shè)計及其在虛擬現(xiàn)實中的應(yīng)用[D]. 蘇州大學(xué), 2010.
[3] 江朝強, 石睿, 王云飛. 基于MEMS指環(huán)式低功耗無線三維鼠標的設(shè)計[J]. 自動化與儀表, 2013, 28(9):12-14.
[4] 陳建新, 卜翔, 王榮,等. 基于MEMS加速度的三維無線鼠標設(shè)計與實現(xiàn)[J]. 無線互聯(lián)科技, 2011(8):22-25.
[5] 陳建新, 王榮, 章韻. MEMS加速度傳感器的距離測量性能分析[J]. 電腦與電信, 2011(11):30-32.
[6] 李士垚, 唐星陽, 呂迪洋. 基于MPU6050六軸傳感器的懸空鼠標設(shè)計與實現(xiàn)[J]. 電子制作, 2016(15):26-27.
[7] 段建雷, 韓鵬, 樊愛軍,等. 基于手機慣性傳感器空中鼠標的優(yōu)化與實現(xiàn)[J]. 計算機應(yīng)用與軟件, 2015, 32(12):226-230.
[8] 許乃展. 基于MPU6050的空中鼠標的設(shè)計與實現(xiàn)[D]. 東南大學(xué), 2015.
[9] 滕飛, 胡湘娟, 陽泳. 基于STM32F103的空中鼠標設(shè)計與論述[J]. 科技創(chuàng)新與應(yīng)用, 2015(34):40-40.
[10] 徐小明, 鐘萬勰. 四元數(shù)與歐拉角剛體動力學(xué)數(shù)值積分算法及其比較[J]. 計算機輔助工程, 2014, 23(1):59-63.
[11] 王力, 李豪, 姜衛(wèi)平. 一種基于四元數(shù)的三維基準轉(zhuǎn)換簡便模型[J]. 大地測量與地球動力學(xué), 2015, 35(2):243-247.
[12] Gim D W, Alfriend K T. State Transition Matrix of Relative Motion for the Perturbed Noncircu-lar Reference Orbit[J]. Journal of Guidance Control & Dynamics, 2012, 26(6):956-971.
[13] 王如勝. MEMS陀螺捷聯(lián)慣導(dǎo)系統(tǒng)標定方法研究[D]. 哈爾濱工業(yè)大學(xué), 2015.
[14] 石璽文, 李杰, 胡陳君,等. MEMS三軸加速度計6位置標定方法的研究[J]. 電子器件, 2016, 39(2):403-406.
[15] 奔粵陽, 劉新源, 鮑桂清,等. 捷聯(lián)慣性測量組件六位置標定精度分析[Z]. 2012.
[16] 王佳, 丁鑫, 高文超,等. 基于雙軸速率轉(zhuǎn)臺的IMU440慣性測量單元快速標定方法與實驗[J]. 船舶工程, 2015(12):56-59.