許洪光 汪思汗 周稷麟 王友學 劉青林
(哈爾濱工業大學(深圳)電子與信息工程學院 廣東 深圳 518055)
空中鼠標是在無線鼠標的基礎上,利用慣性傳感器采集的姿態信息,控制屏幕上的光標移動,從而使鼠標不依賴桌面。
空中鼠標的性能指標分為以下幾點:定位的精度、平滑性、易操作性。按鍵抖動一直影響著用戶對空中鼠標的使用和體驗。文獻[1]提出了用低通濾波器消除輸入速率低于每5秒度的所有動作,但是,這也會影響到那些有意而為之的細微動作,造成所謂的動作“死區”。若用戶不小心大幅度移動空中鼠標,這必然導致光標大幅度移動,使用戶難以找到光標在屏幕中位置,目前還沒有針對此問題的具體解決方案。文獻[2-4]用位移控制光標移動,大量實驗發現,加速度來測量位移存在著較大的誤差[5]。文獻[6-9]用角度變化控制光標移動,但是左右平移鼠標,此時的角度變化不大,光標幾乎不會移動,不符合用戶使用習慣。
基于以上背景,本文提出了BLE(Bluetooth Low Energy)空中鼠標系統設計方案,設計并定義了光標定位法和固定光標法。同時采用角度和加速度相結合方法來控制光標移動以及采用滑動窗口濾波法來解決數據抖動問題,利用加速度標定模型進行系統誤差校正,還設置了多個功能按鍵以此增加空中鼠標功能的多樣性,從而提高用戶體驗質量。
本系統方案采用模塊化設計,實現BLE空中鼠標系統,該系統主要包括兩個部分:手持端和藍牙適配器,系統結構如圖1所示。

圖1 BLE空中鼠標系統結構
主控芯片選用TI公司生產的40引腳BLE芯片CC2541,負責通信協議的轉換。
手持端主要包括主控芯片、數據采集模塊、按鍵模塊、電源模塊。數據采集模塊MPU6050傳感器,負責采集手持端的三維空間位置數據,并通過IIC接口與主控芯片通信。設置七個按鍵,按鍵數據通過IO口傳給主控芯片,分別實現電源開關、復位、Enter鍵、鼠標左擊、鼠標右擊、向上翻一頁、向下翻一頁的功能。根據藍牙通信協議,主控芯片將接收到的三維空間位置信息和按鍵信息處理編碼并通過藍牙天線發送給藍牙適配器。
藍牙適配器主要包括主控芯片、電源模塊、USB接口。藍牙適配器接收到手持端發射的信息流,經過主控芯片解析處理為光標位移及按鍵信息,依據USB協議編碼,通過USB接口完成和計算機的交互通信,最終實現BLE空中鼠標操作電腦的功能。
本軟件系統采用多任務操作系統,以OSAL(Operating System Abstraction Layer)作為調度核心,OSAL是一種任務分配資源的機制,BLE協議棧、profile定義、所有的應用都圍繞它來實現,OSAL是在此基礎上建立和執行事件的循環。
任務事件實現軟件的功能,創建一個任務事件需以下三個步驟:
(1) 創建任務的標識符任務ID;
(2) 創建任務初始化進程,然后添加到OSAL初始化進程中;
(3) 編寫任務處理程序。
系統流程圖如圖2所示。

圖2 系統流程圖
1.2.1 姿態四元數
鼠標的姿態角求取方法分為三種:歐拉角法、方向余弦法、四元數法。四元數具有計算精度高的特點,同時可以很好避免奇異性,而且計算量少很適合在嵌入式設備運行。因此四元數被廣泛應用到各種場合。
四元數是一種超復數,最早是由愛爾蘭數學家哈密頓提出的數學概念,其形式如公式:
Q=q1+q2i+q3j+q4k
(1)
式中:i、j、k代表虛數單位的基,而q1、q2、q3、q4代表四個實數。
文獻[10-12],詳細介紹了推導四元數旋轉矩陣。用字母T表示四元數的旋轉矩陣,其公式如下:
(2)
通過四元數旋轉矩陣可以求出,航偏角α(-180°,+180°),俯仰角β(-90°,+90°),橫滾角γ(0°,360°)。其中航偏角和橫滾角存在多解問題,需要在求解航偏角和橫滾角時判斷它們所在的象限,之后就可以明確航偏角和橫滾角的真值。公式如下:
(3)
1.2.2 光標定位法
光標定位法,是通過快速向上或向下移動鼠標,將光標定位到用戶事先設定的位置。
光標定位法是為了解決用戶難以找到光標在電腦屏幕上位置的問題。電腦的屏幕一般為長方形,假設用戶在屏幕上設定的位置為坐標原點,顯示器屏幕的長為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表示每次光標移動的距離。
經過多次試驗,快速向上或向下采集的絕對值最大z軸加速度如表1所示。

表1 絕對值最大z軸加速度值
由表1可知,每次實驗最大或最小值不同,但相差不大,為了更好識別向上和向下的手勢,設定一個相關系數為0.85。



當檢測到向上或向下手勢后,光標會移動(-x(n),-y(n) )坐標距離。光標在移動之后就會回到用戶設定的原點,其中用戶設定的原點為鼠標剛連接到PC機時光標的位置或者空中鼠標系統重啟后光標的位置。具體實現流程圖,如圖3所示。

圖3 光標定位法流程圖
1.2.3 固定光標法
固定光標法,是當用戶按下鼠標鍵后,讓光標在一定時間內保持不動。
按鍵抖動問題是一個綜合的問題,按鍵位置、軟硬度都與抖動有關。本文是在按鍵位置和軟硬度確定的情況下,當用戶按下某一鼠標鍵之后,將光標固定一定時間,能夠很好地消除按鍵帶來的光標抖動而不會造成“死區”問題。不同的按鍵位置和軟硬度,需要固定不同光標時間。具體實現流程圖,如圖4所示。

圖4 固定光標法流程圖
MPU6050傳感器主要存在兩種誤差,一種系統誤差,一種隨機誤差。系統誤差主要包括:零偏誤差、零偏重復性、刻度因子非線性、刻度因子重復性、非敏感軸互耦誤差、安裝誤差[13]。隨機誤差主要源于噪聲。由于環境噪聲存在,導致傳感器輸出的數據具有波動性,傳感器測量精度會對姿態信息計算產生重大影響,使用前必須對其進行誤差補償。本文采用加速度計標定模型和滑動窗口濾波分別校正系統誤差和減少隨機誤差。
加速度計傳感器測量模型,如圖5所示。

圖5 加速度計測量模型框圖
加速度計傳感器誤差模型公式如下:
f=a0+Kaab
(5)
具體形式如下:
(6)
式中:f=[fx,fy,fz]T為加速度計測量輸出,Kai(i=x,y,z)表示加速度計傳感器標度系數,Kaij(i,j=x,y,z)表示加速度計傳感器的安裝誤差,j軸的輸出對i軸的耦合影響;a0=[ax0,ay0,az0]T表示加速度計傳感器的零偏誤差矩陣;ab=[abx,aby,abz]T表示加速度計的理論輸出。
通過加速度誤差模型可以反解出校正后的加速度,如下公式:
(7)
文獻[14-16],詳細介紹了一種六位置方法,以此求解加速度計模型里矩陣系數。
利用二軸電動轉臺,采用六位置方法,求解矩陣系數,最終解的矩陣系數,如公式所示:
(8)
傳感器輸出的數據會受到外界噪聲干擾,即使經過系統校正后,輸出的數據仍然會有一定波動性,因此,在對傳感器數據處理前,需要對數據進行平滑濾波。而滑動窗口濾波算法比較好的對傳感器采集的數據進行平滑處理,減少數據波動性,能夠提高鼠標的動態性能。
本文采用滑動窗口均值濾波,公式如下:
(9)
式中:βi為采樣點,N為數據長度,而i表示第i個采樣點,其中i的取值范圍為i=1,2,…,N。圖6是滑動窗口濾波過程的圖形介紹。

圖6 滑動窗口均值濾波
一般空中鼠標是利用角度控制光標移動而不采用位移控制光標移動,主要由于加速度二重積分,會引起較大的累計誤差,導致光標偏移過大。航偏角α(-180°,+180°)的角度變化控制光標在電腦桌面水平方向移動,俯仰角β(-90°,+90°)的角度變化控制光標在電腦桌面豎直方向移動。本文提出了以航偏角α和x軸加速度相結合方式來控制光標在水平方向的移動的方法,其中x軸加速度是用來解決左右平移空中鼠標而光標不移動的問題。
在鼠標水平移動一段距離后停止時,x軸加速度是先增加后減少為0,然后反向加速,后反向減速為0。如果把后部分的反向加速和反向減速也用來計算光標移動的位移,那么會出現光標漂移現象。為了防止光標漂移,本文只采用了x軸加速度先增加后減少這部分的加速度值,丟棄了反向加速和反向減速的這部分加速度值。
采用本文方案所設計的空中鼠標,在Windows7操作系統的PC機上進行實驗驗證,結果如下。
從以下兩方面來進行:一是光標定位;二是固定光標。下面分別通過實驗對上述方法進行驗證。
空中鼠標連接到PC機時光標的位置為參考位置坐標(0,0);接著移動鼠標,光標會在PC屏幕上移動,停止移動鼠標靜止一段時間后,光標獲得一個新的坐標并記錄;然后向上或向下快速移動鼠標,光標會回到參考位置并記錄坐標,重復上述操作,采集坐標如表2所示。

表2 定位前后光標的坐標
從表2可以看出,z軸向上或向下加速度滿足定位手勢的條件,從而實現定位功能。
固定光標驗證是通過大量測試某一固定按鍵,然后觀察光標固定時間與對應消除按鍵抖動的效果好壞,如表3所示。

表3 光標固定時間所對應消除按鍵抖動的效果
從表3可以看出,在本方案中,固定時間介于[400,500]之間,按鍵抖動消除效果較好。將[400,500]區間繼續細分,通過大量測試發現,當固定時間近似為420 ms時,按鍵抖動消除效果最佳。不同按鍵軟硬度和按鍵位置,固定時間不同,本文只是提出一種解決此問題的方法。
從以下兩方面來進行:一是加速度計誤差模型驗證;二是滑動窗口濾波驗證。
加速度計誤差模型驗證是以雙軸電動轉臺為平臺,測試30度狀態下三軸加速度數據,然后對采集的原始數據經過加速度誤差模型校正。原始數據和校正后數據如表4所示。

表4 加速度原始數據和加速度校正后數據
從表4中可以看出校正后的數據更接近真實值。
滑動窗口濾波驗證,首先測試靜止狀態下加速度傳感器三軸的值,然后經過滑動窗口濾波。圖7表示有無滑動窗口濾波數據圖。從圖7可以看出,在濾波前得到的加速度值波動比較大,而在滑動窗口濾波后,計算得到的數據波動較小。

圖7 有無滑動窗口濾波比較
BLE空中鼠標如圖8所示。手持端和藍牙適配器配置好后,在Windows7操作系統下,操作BLE空中鼠標按照數字“2”軌跡移動,利用畫圖軟件描繪光標軌跡如圖9所示。

圖8 空中鼠標實物

圖9 鼠標運動軌跡
本文提出了一種基于MPU6050六軸傳感器的BLE空中鼠標系統的設計方案。該方案提出了光標定位法和固定光標法,采用滑動窗口濾波法解決數據抖動問題,利用加速度標定模型校正系統誤差,最終實現了BLE空中鼠標功能的優化。在Windows7平臺中測試,驗證了方案的正確性和有效性。另外,現有文獻均未提出光標“未知”問題的解決方案,本文創造性地提出了向上或向下手勢來解決該問題。本方案很好地解決了光標“死區”和光標位置“未知”的問題,并增加了光標移動的多樣性。適合任意場景的應用,如火車、床上等無桌面依托的環境中,尤其適合手腳不靈的殘疾人使用。另外,增加了功能按鍵,也可用作教學遙控筆。下一步將研究設計出更符合用戶使用習慣的硬件外觀和按鍵布局,以此進一步增強用戶的體驗感和舒適度。
[1] Hillcrest Labs.空中鼠標系統設計的關鍵因素[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] 王海紅. 三維鼠標的設計及其在虛擬現實中的應用[D]. 蘇州大學, 2010.
[3] 江朝強, 石睿, 王云飛. 基于MEMS指環式低功耗無線三維鼠標的設計[J]. 自動化與儀表, 2013, 28(9):12-14.
[4] 陳建新, 卜翔, 王榮,等. 基于MEMS加速度的三維無線鼠標設計與實現[J]. 無線互聯科技, 2011(8):22-25.
[5] 陳建新, 王榮, 章韻. MEMS加速度傳感器的距離測量性能分析[J]. 電腦與電信, 2011(11):30-32.
[6] 李士垚, 唐星陽, 呂迪洋. 基于MPU6050六軸傳感器的懸空鼠標設計與實現[J]. 電子制作, 2016(15):26-27.
[7] 段建雷, 韓鵬, 樊愛軍,等. 基于手機慣性傳感器空中鼠標的優化與實現[J]. 計算機應用與軟件, 2015, 32(12):226-230.
[8] 許乃展. 基于MPU6050的空中鼠標的設計與實現[D]. 東南大學, 2015.
[9] 滕飛, 胡湘娟, 陽泳. 基于STM32F103的空中鼠標設計與論述[J]. 科技創新與應用, 2015(34):40-40.
[10] 徐小明, 鐘萬勰. 四元數與歐拉角剛體動力學數值積分算法及其比較[J]. 計算機輔助工程, 2014, 23(1):59-63.
[11] 王力, 李豪, 姜衛平. 一種基于四元數的三維基準轉換簡便模型[J]. 大地測量與地球動力學, 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陀螺捷聯慣導系統標定方法研究[D]. 哈爾濱工業大學, 2015.
[14] 石璽文, 李杰, 胡陳君,等. MEMS三軸加速度計6位置標定方法的研究[J]. 電子器件, 2016, 39(2):403-406.
[15] 奔粵陽, 劉新源, 鮑桂清,等. 捷聯慣性測量組件六位置標定精度分析[Z]. 2012.
[16] 王佳, 丁鑫, 高文超,等. 基于雙軸速率轉臺的IMU440慣性測量單元快速標定方法與實驗[J]. 船舶工程, 2015(12):56-59.