專利背景 截至2011年8月,計算機滑鼠指針的定位大多數都依靠光學感測器或雷射感測器來實現,這些
感測器 都基於物理光學原理,使得感測器需要依靠桌面等平台來實現。但是在很多場合,例如在計算機多媒體教學中,用戶想在空中操控滑鼠指針或是通過在空中操控滑鼠指針來實現多媒體電視播放、網頁瀏覽等套用,僅使用傳統的感測器就無法實現,於是空中滑鼠應運而生。空中滑鼠是一種輸入設備,像傳統滑鼠一樣操作螢幕游標(滑鼠指針),但卻不需要放在任何平面上,在空中晃動就能直接依靠空中運動姿態的感知實現對滑鼠指針的控制。要實現空中運動姿態的感知,一般在空中滑鼠內設定慣性器件,利用慣性器件測量技術實現對運動載體姿態的跟蹤。
利用慣性器件測量技術進行運動載體姿態的跟蹤具有非常廣闊的前景。慣性跟蹤系統的基本原理是在目標初始位置和姿態已知的基礎上,依據慣性原理,利用陀螺儀感測器、加速度感測器等慣性器件測量物體運動的角速度和直線加速度,然後通過積分獲得物體的位置和姿態。其中,陀螺儀基本原理是運用物體高速旋轉時,強大的角動量使旋轉軸一直穩定指向一個方向的性質,所製造出來的定向儀器。當運動方向與轉軸指向不一致時,會產生相應的偏角,再根據偏角與運動的關係,得到目前運動物體的運動軌跡和位置,從而實現定位的功能。而加速度感測器技術是慣性與力的檢測綜合體,2011年8月前在汽車電子和消費電子領域有較多的套用。加速度感測器通過實時採集運動物體加速度信號,通過二階積分的方式得到運動的軌跡實現定位。另外,在器件處於相對穩定的狀態下,可以通過分析感測器件自身重力加速度,得到目前器件的自身姿態。然而,由於陀螺儀感測器技術以及加速度感測器技術都存在運動物體姿態與運動狀態很難完全體現的不足,因此,通常將陀螺儀感測器技術以及加速度感測器技術結合,從而能實現空間定位的準確性和穩定性。
滑鼠的報點率(mouse report rate)又稱為報告率,是衡量滑鼠性能的一個重要指標,報點率的單位是赫茲,它能反映出一秒鐘內滑鼠向系統(通常指計算機系統,也可指包含計算機系統的設備,例如計算機、數位電視機、投影儀等)傳送數據(該數據一般指用於滑鼠指針定位的坐標或坐標的變化量)的頻率,即一秒鐘內滑鼠傳送數據給系統的次數。報點率當然是越高越好,報點率越高滑鼠指針的定位也就越準,因為單位時間內傳送數據給系統的次數越多則表示滑鼠指針(游標)的移動更為細膩滑順,點擊也能更為精準。一般地,普通
USB接口 的滑鼠最高可以達到125赫茲的報點率,而一個PS/2接口的滑鼠卻只能在40赫茲到90赫茲之間徘徊,大多數為60赫茲左右。
但是,對於空中滑鼠來說,由於其向系統傳輸數據(以控制滑鼠指針的移動)通常是通過一無線射頻模組以發射無線信號的方式進行的,每次發射的功耗較大,而單位時間內傳送數據給系統的次數越多則意味著功耗越大,從而減少了空中滑鼠的待機時間(縮短了使用壽命,需要以更高頻率更換電池)。而且,空中滑鼠的報點率通常是預先設定好的,用戶使用空中滑鼠控制滑鼠指針移動時,只能以固定的報點率輸出數據,難以根據空中滑鼠的實際運動情況動態調節報點率。
另一方面,空中滑鼠需要確定其空間坐標的變化,並將所述空間坐標的變化除以一定的靈敏度係數後得到滑鼠指針的坐標變化,從而實現對滑鼠指針的控制。而2011年8月前已有技術中,無論是陀螺儀感測器通過測量其敏感軸的角速度進而利用積分運算得出傾斜角以確定空中滑鼠的空間坐標變化,還是加速度感測器通過測量各敏感軸的加速度分量進而通過反三角函式運算得出傾斜角以確定空中滑鼠的空間坐標變化,都需要進行複雜的運算(積分運算、反三角函式運算等),而且這些運算中大多涉及浮點運算,這對於空中滑鼠中的處理控制晶片來說,例如
微控制器 (MCU,Micro Control Unit),如果選用處理能力相對較弱的MCU,由於其有限的處理能力,在進行複雜而大量的運算時需要耗費較多的資源,導致處理速度較慢,難以使空中滑鼠以較高的報點率輸出數據,而且具有較高的功耗,如果選用處理能力更強的MCU,又會使成本上升。
相關技術還可參考公開號為WO2005108119(A2)的國際專利申請,該專利申請公開了一種帶有傾斜補償和提高可用性的自由空間定位設備。
發明內容 專利目的 《空中滑鼠及控制滑鼠指針移動的方法與裝置》要解決的問題是2011年8月前已有技術中難以根據空中滑鼠的實際運動情況動態調節報點率以控制滑鼠指針的移動。
技術方案 《空中滑鼠及控制滑鼠指針移動的方法與裝置》提供一種控制滑鼠指針移動的方法,利用空中滑鼠控制滑鼠指針的移動,所述空中滑鼠包括至少一種慣性器件,所述慣性器件包括重力加速度感測器,所述控制滑鼠指針移動的方法包括:基於所述重力加速度感測器的各個敏感軸的加速度輸出值的矢量和設定空中滑鼠的報點率;確定空中滑鼠的空間坐標;將所確定的空間坐標或其變化量相應轉換為滑鼠指針的坐標或其變化量;以設定的報點率輸出所述滑鼠指針的坐標或其變化量,以控制滑鼠指針的移動。
可選的,所述基於所述加速度輸出值的矢量和設定空中滑鼠的報點率包括:按加速度由小到大依次設定多個檔次的加速度範圍,每一檔次的加速度範圍對應一個報點率的設定範圍,根據所述加速度輸出值的矢量和所處加速度範圍的檔次確定對應的報點率的設定範圍,所述加速度範圍的檔次越高,對應的報點率的設定越高。
可選的,所述確定空中滑鼠的空間坐標包括:建立索引值與敏感軸的參數之間的對應關係,所述索引值與所述慣性器件的敏感軸的測量值所對應,所述敏感軸的參數包括所述慣性器件的敏感軸的傾斜角及其三角函式值和/或基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值;獲取所述慣性器件的各個敏感軸的測量值;基於與所獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標。
可選的,所述敏感軸的參數包括基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值;基於與所獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標包括:基於與所獲取的測量值對應的索引值查詢所述對應關係,獲得與所述索引值對應的慣性器件的敏感軸的坐標值;基於查詢到的慣性器件的敏感軸的坐標值確定所述空中滑鼠的空間坐標。
可選的,所述敏感軸的參數包括所述慣性器件的敏感軸的傾斜角及其三角函式值;基於與所獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標包括:基於與所獲取的測量值對應的索引值查詢所述對應關係,獲得與所述索引值對應的敏感軸的傾斜角及其三角函式值;基於查詢到的慣性器件的敏感軸的傾斜角及其三角函式值,確定所述空中滑鼠的空間坐標。
可選的,按傾斜角所對應的斜率由大至小的順序逐步降低分割精度確定所述對應關係中敏感軸的參數的配置。
可選的,將與所述索引值對應的傾斜角的三角函式值擴大預定倍數並取整。
可選的,所述確定空中滑鼠的空間坐標還包括以穩定的敏感軸確定所述空中滑鼠的空間坐標;判斷敏感軸是否穩定包括:若快取區內不同的索引值的數量小於或等於第一閾值,且各索引值之間的差值均小於或等於第二閾值,則確定該敏感軸穩定;所述快取區存有每隔預定時間所獲取的索引值。
可選的,所述控制滑鼠指針移動的方法還包括:以連續多個判斷出敏感軸穩定後所獲取的索引值識別空中滑鼠的運動趨勢,若所述運動趨勢為直線運動,則降低所述空中滑鼠的報點率。
可選的,所述以連續多個判斷出敏感軸穩定後所獲取的索引值識別空中滑鼠的運動趨勢包括:若任意兩個連續的索引值之差小於或等於第三閾值,則識別出所述運動趨勢為直線運動。
可選的,所述控制滑鼠指針移動的方法還包括:對至少兩個連續確定的空中滑鼠的空間坐標進行插值運算。
可選的,所述進行插值運算包括:若所述運動趨勢為直線運動,則進行線性插值運算,否則進行拋物線插值運算。
可選的,所述重力加速度感測器為電容式重力加速度感測器,所述測量值為所述電容式重力加速度感測器的敏感軸的電容值。
可選的,所述慣性器件還包括陀螺儀感測器,所述測量值為所述陀螺儀感測器的敏感軸的電壓值。
可選的,所述重力加速度感測器至少包括兩個相互垂直的敏感軸,其中一個敏感軸垂直於地平面。
為解決上述問題,該發明的技術方案還提供一種控制滑鼠指針移動的裝置,利用空中滑鼠控制滑鼠指針的移動,所述空中滑鼠包括至少一種慣性器件,所述慣性器件包括重力加速度感測器,所述控制滑鼠指針移動的裝置包括:報點率設定單元,用於基於所述重力加速度感測器的各個敏感軸的加速度輸出值的矢量和設定空中滑鼠的報點率;坐標確定單元,用於確定空中滑鼠的空間坐標;轉換單元,用於將所確定的空間坐標或其變化量相應轉換為滑鼠指針的坐標或其變化量;控制單元,用於以設定的報點率輸出所述滑鼠指針的坐標或其變化量,以控制滑鼠指針的移動。
為解決上述問題,該發明的技術方案還提供了一種包括上述控制滑鼠指針移動的裝置的空中滑鼠。
改善效果 與2011年8月前已有技術相比,《空中滑鼠及控制滑鼠指針移動的方法與裝置》至少具有以下優點:
通過基於重力加速度感測器的各個敏感軸的加速度輸出值的矢量和設定空中滑鼠的報點率,將所確定的空中滑鼠的空間坐標或其變化量相應轉換為滑鼠指針的坐標或其變化量,並以所設定的報點率輸出所述滑鼠指針的坐標或其變化量以控制滑鼠指針的移動,從而能實現根據空中滑鼠的實際運動情況動態調節報點率,使空中滑鼠在加速度較大的運動情況下以較高的報點率輸出數據,確保滑鼠指針的移動細膩平滑,在加速度較小的運動情況下以較低的報點率輸出數據,降低了功耗。
進一步地,通過建立索引值與敏感軸的參數(傾斜角及其三角函式值和/或基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值)之間的對應關係,當獲取到慣性器件的敏感軸的測量值後,基於與所述測量值對應的索引值查詢所述對應關係,能夠快速得到與所述索引值所對應的傾斜角及其三角函式值和/或基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值,進而快速確定空中滑鼠的空間坐標,由於避免了複雜而大量的計算(積分運算、反三角函式運算等),因此能夠提高處理速度,從而使空中滑鼠能以較高的報點率輸出數據,而且使功耗降低。
通過將與索引值對應的傾斜角的三角函式值擴大預定倍數並取整,避免了浮點運算,從而能夠以相對低端的微控制器實現計算,降低了空中滑鼠的成本。
此外,通過以連續多個判斷出敏感軸穩定後所獲取的索引值識別空中滑鼠的運動趨勢,在識別出所述運動趨勢為直線運動時,降低空中滑鼠的報點率,能夠在不影響滑鼠指針移動平滑度的情況下,降低功耗。
進一步地,根據識別出的空中滑鼠的運動趨勢進行相應的插值運算,能夠獲得更多的空間坐標,確保空中滑鼠能以更高的報點率輸出數據,使滑鼠指針的移動軌跡更為細膩平滑。
附圖說明 圖1是《空中滑鼠及控制滑鼠指針移動的方法與裝置》實施方式提供的控制滑鼠指針移動的方法的流程示意圖;
圖2是根據敏感軸的傾斜角確定空間坐標的示意圖;
圖3是該發明實施例一提供的確定空中滑鼠的空間坐標的方法的流程示意圖;
圖4是該發明實施例一的傾斜角索引表中傾斜角的分割精度示意圖;
圖5是該發明實施例一的重力加速度感測器開啟後的空間姿態識別示意圖;
圖6是該發明實施例一提供的控制滑鼠指針移動的裝置的結構示意圖;
圖7是圖6所示坐標確定單元20的結構示意圖;
圖8是該發明實施例二提供的控制滑鼠指針移動的裝置的結構示意圖;
圖9是圖8所示坐標確定單元60的結構示意圖;
圖10是線性插值運算的示意圖;
圖11是拋物線插值運算的示意圖;
圖12是該發明實施例三提供的控制滑鼠指針移動的裝置的結構示意圖。
權利要求 1.一種控制滑鼠指針移動的方法,利用空中滑鼠控制滑鼠指針的移動,所述空中滑鼠包括至少一種慣性器件,所述慣性器件包括重力加速度感測器,其特徵在於,包括:基於所述重力加速度感測器的各個敏感軸的加速度輸出值的矢量和設定空中滑鼠的報點率;確定空中滑鼠的空間坐標;將所確定的空間坐標或其變化量相應轉換為滑鼠指針的坐標或其變化量;以設定的報點率輸出所述滑鼠指針的坐標或其變化量,以控制滑鼠指針的移動。
2.根據權利要求1所述的控制滑鼠指針移動的方法,其特徵在於,所述確定空中滑鼠的空間坐標包括:建立索引值與敏感軸的參數之間的對應關係,所述索引值與所述慣性器件的敏感軸的測量值所對應,所述敏感軸的參數包括所述慣性器件的敏感軸的傾斜角及其三角函式值和/或基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值;獲取所述慣性器件的各個敏感軸的測量值;基於與所獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標。
3.根據權利要求2所述的控制滑鼠指針移動的方法,其特徵在於,所述敏感軸的參數包括基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值;基於與所獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標包括:基於與所獲取的測量值對應的索引值查詢所述對應關係,獲得與所述索引值對應的慣性器件的敏感軸的坐標值;基於查詢到的慣性器件的敏感軸的坐標值確定所述空中滑鼠的空間坐標。
4.根據權利要求2所述的控制滑鼠指針移動的方法,其特徵在於,所述敏感軸的參數包括所述慣性器件的敏感軸的傾斜角及其三角函式值;基於與所獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標包括:基於與所獲取的測量值對應的索引值查詢所述對應關係,獲得與所述索引值對應的敏感軸的傾斜角及其三角函式值;基於查詢到的慣性器件的敏感軸的傾斜角及其三角函式值,確定所述空中滑鼠的空間坐標。
5.根據權利要求2至4任一項所述的控制滑鼠指針移動的方法,其特徵在於,按傾斜角所對應的斜率由大至小的順序逐步降低分割精度確定所述對應關係中敏感軸的參數的配置。
6.根據權利要求2至4任一項所述的控制滑鼠指針移動的方法,其特徵在於,將與所述索引值對應的傾斜角的三角函式值擴大預定倍數並取整。
7.根據權利要求2至4任一項所述的控制滑鼠指針移動的方法,其特徵在於,所述確定空中滑鼠的空間坐標還包括以穩定的敏感軸確定所述空中滑鼠的空間坐標;判斷敏感軸是否穩定包括:若快取區內不同的索引值的數量小於或等於第一閾值,且各索引值之間的差值均小於或等於第二閾值,則確定該敏感軸穩定;所述快取區存有每隔預定時間所獲取的索引值。
8.根據權利要求7所述的控制滑鼠指針移動的方法,其特徵在於,還包括:以連續多個判斷出敏感軸穩定後所獲取的索引值識別空中滑鼠的運動趨勢,若所述運動趨勢為直線運動,則降低所述空中滑鼠的報點率。
9.根據權利要求8所述的控制滑鼠指針移動的方法,其特徵在於,所述以連續多個判斷出敏感軸穩定後所獲取的索引值識別空中滑鼠的運動趨勢包括:若任意兩個連續的索引值之差小於或等於第三閾值,則識別出所述運動趨勢為直線運動。
10.根據權利要求8所述的控制滑鼠指針移動的方法,其特徵在於,還包括:對至少兩個連續確定的空中滑鼠的空間坐標進行插值運算。
11.根據權利要求10所述的控制滑鼠指針移動的方法,其特徵在於,所述進行插值運算包括:若所述運動趨勢為直線運動,則進行線性插值運算,否則進行拋物線插值運算。
12.根據權利要求2所述的控制滑鼠指針移動的方法,其特徵在於,所述重力加速度感測器為電容式重力加速度感測器,所述測量值為所述電容式重力加速度感測器的敏感軸的電容值。
13.根據權利要求2所述的控制滑鼠指針移動的方法,其特徵在於,所述慣性器件還包括陀螺儀感測器,所述測量值為所述陀螺儀感測器的敏感軸的電壓值。
14.根據權利要求1所述的控制滑鼠指針移動的方法,其特徵在於,所述重力加速度感測器至少包括兩個相互垂直的敏感軸,其中一個敏感軸垂直於地平面。
15.一種控制滑鼠指針移動的裝置,利用空中滑鼠控制滑鼠指針的移動,所述空中滑鼠包括至少一種慣性器件,所述慣性器件包括重力加速度感測器,其特徵在於,包括:報點率設定單元,用於基於所述重力加速度感測器的各個敏感軸的加速度輸出值的矢量和設定空中滑鼠的報點率;坐標確定單元,用於確定空中滑鼠的空間坐標;轉換單元,用於將所確定的空間坐標或其變化量相應轉換為滑鼠指針的坐標或其變化量;控制單元,用於以設定的報點率輸出所述滑鼠指針的坐標或其變化量,以控制滑鼠指針的移動。
16.根據權利要求15所述的控制滑鼠指針移動的裝置,其特徵在於,所述坐標確定單元包括:對應關係生成單元,用於建立索引值與敏感軸的參數之間的對應關係,所述索引值與所述慣性器件的各個敏感軸的測量值所對應,所述敏感軸的參數包括所述慣性器件的敏感軸的傾斜角及其三角函式值和/或基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值;獲取單元,用於獲取所述慣性器件的各個敏感軸的測量值;定位單元,用於基於與獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標。
17.根據權利要求16所述的控制滑鼠指針移動的裝置,其特徵在於,所述敏感軸的參數包括基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值;所述定位單元包括:第一查詢單元,用於基於與所獲取的測量值對應的索引值查詢所述對應關係,獲得與所述索引值對應的慣性器件的敏感軸的坐標值;第一確定單元,用於基於查詢到的慣性器件的敏感軸的坐標值確定所述空中滑鼠的空間坐標。
18.根據權利要求16所述的控制滑鼠指針移動的裝置,其特徵在於,所述敏感軸的參數包括所述慣性器件的敏感軸的傾斜角及其三角函式值;所述定位單元包括:第二查詢單元,用於基於與所獲取的測量值對應的索引值查詢所述對應關係,獲得與所述索引值對應的敏感軸的傾斜角及其三角函式值;第二確定單元,用於基於查詢到的慣性器件的敏感軸的傾斜角及其三角函式值,確定所述空中滑鼠的空間坐標。
19.根據權利要求16至18任一項所述的控制滑鼠指針移動的裝置,其特徵在於,所述對應關係生成單元包括配置單元,用於按傾斜角所對應的斜率由大至小的順序逐步降低分割精度確定所述對應關係中敏感軸的參數的配置。
20.根據權利要求16至18任一項所述的控制滑鼠指針移動的裝置,其特徵在於,所述對應關係生成單元包括擴值取整單元,用於將與所述索引值對應的傾斜角的三角函式值擴大預定倍數並取整。
21.根據權利要求16至18任一項所述的控制滑鼠指針移動的裝置,其特徵在於,還包括穩定判斷單元,用於判斷敏感軸是否穩定,包括:若快取區內不同的索引值的數量小於或等於第一閾值,且各索引值之間的差值均小於或等於第二閾值,則確定該敏感軸穩定;所述快取區存有每隔預定時間所獲取的索引值;所述定位單元以穩定的敏感軸確定所述空中滑鼠的空間坐標。
22.根據權利要求21所述的控制滑鼠指針移動的裝置,其特徵在於,還包括:運動趨勢識別單元,用於以連續多個判斷出敏感軸穩定後所獲取的索引值識別空中滑鼠的運動趨勢;所述報點率設定單元在所述運動趨勢識別單元識別出所述運動趨勢為直線運動時,降低所述空中滑鼠的報點率。
23.根據權利要求22所述的控制滑鼠指針移動的裝置,其特徵在於,所述運動趨勢識別單元當任意兩個連續的索引值之差小於或等於第三閾值時,識別出所述運動趨勢為直線運動。
24.根據權利要求22所述的控制滑鼠指針移動的裝置,其特徵在於,還包括插值單元,用於對至少兩個連續確定的空中滑鼠的空間坐標進行插值運算。
25.根據權利要求24所述的控制滑鼠指針移動的裝置,其特徵在於,所述插值單元包括選擇單元、線性插值單元以及拋物線插值單元,所述選擇單元用於當所述運動趨勢識別單元識別出所述運動趨勢為直線運動時,選擇所述線性插值單元進行插值運算,否則選擇所述拋物線插值單元進行插值運算。
26.根據權利要求16所述的控制滑鼠指針移動的裝置,其特徵在於,所述重力加速度感測器為電容式重力加速度感測器,所述測量值為所述電容式重力加速度感測器的敏感軸的電容值。
27.根據權利要求16所述的控制滑鼠指針移動的裝置,其特徵在於,所述慣性器件還包括陀螺儀感測器,所述測量值為所述陀螺儀感測器的敏感軸的電壓值。
實施方式 操作內容 2011年8月前已有技術中空中滑鼠通常只能以固定的報點率輸出數據,難以根據空中滑鼠的實際運動情況動態調節報點率以控制滑鼠指針的移動。該技術方案通過基於重力加速度感測器的各個敏感軸的加速度輸出值的矢量和設定空中滑鼠的報點率,將確定的空中滑鼠的空間坐標或其變化量相應轉換為滑鼠指針的坐標或其變化量,並以所設定的報點率輸出所述滑鼠指針的坐標或其變化量以控制滑鼠指針的移動,從而能實現根據空中滑鼠的實際運動情況動態調節報點率,使空中滑鼠在加速度較大的運動情況下以較高的報點率輸出數據(滑鼠指針的坐標或其變化量),確保滑鼠指針的移動細膩平滑,在加速度較小的運動情況下以較低的報點率輸出數據,降低了功耗。
圖1是《空中滑鼠及控制滑鼠指針移動的方法與裝置》實施方式提供的控制滑鼠指針移動的方法的流程示意圖。該發明實施方式中利用空中滑鼠控制滑鼠指針的移動,所述空中滑鼠包括至少一種慣性器件,所述慣性器件包括重力加速度感測器,如圖1所示,所述控制滑鼠指針移動的方法包括:
步驟S10,基於所述重力加速度感測器的各個敏感軸的加速度輸出值的矢量和設定空中滑鼠的報點率;
步驟S20,確定空中滑鼠的空間坐標;
步驟S30,將所確定的空間坐標或其變化量相應轉換為滑鼠指針的坐標或其變化量;
步驟S40,以設定的報點率輸出所述滑鼠指針的坐標或其變化量,以控制滑鼠指針的移動。
實施案例 該實施例中,所述空中滑鼠包括至少一種慣性器件,所述慣性器件包括重力加速度感測器,進一步地,該重力加速度感測器為電容式重力加速度感測器,其至少包括兩個相互垂直的敏感軸,其中一個敏感軸垂直於地平面。具體實施時,一般選用的是三軸重力加速度感測器,將垂直於地平面的敏感軸記為z軸,其餘兩個敏感軸相互垂直且分別垂直於z軸,分別記為x軸、y軸,x軸和y軸構成的平面平行於地平面。由於2011年8月前空中滑鼠達到的要求僅為在螢幕上實現的實際上是二維的坐標體系,因此採用三軸中任意兩軸即可達到所需要求(確定二維坐標體系內的坐標),例如選取x軸和z軸(x軸和z軸構成的平面平行於螢幕),雖然在空間上實現的是三維動態,而在螢幕上只要求實現二維坐標即可,故該實施例中暫未使用y軸。當然,在其他實施例中,如果加入y軸則可以實現螢幕三維動態效果的處理(例如3D遊戲中對滑鼠的控制),此外,還可以使用y軸作為其他兩軸數據的校準。
眾所周知,地球表面附近的物體,在僅受重力作用時具有的加速度叫做重力加速度,也叫自由落體加速度,用g表示(通常將g作為常數,一般為9.8米/秒)。而重力加速度感測器的敏感軸的加速度輸出值通常以重力加速度g的倍數進行表示(以g作為參考的加速度),例如0.5g、1g、2g、2.5g、3.8g等,並且,由於加速度為矢量,除了具有大小還有方向,因此重力加速度感測器的敏感軸的加速度輸出值還以正負號表示其方向,例如0.5g、-0.5g、2.5g、-2.5g等。空中滑鼠在空中運動的過程中,某一時間段內運動情況可分為加速運動、減速運動、勻速運動,當重力加速度感測器具有1個以上敏感軸時,各種運動情況可體現為各個敏感軸的加速度輸出值的矢量和的大小,例如,當所述加速度輸出值的矢量和為2g時,則說明空中滑鼠以2g的加速度作加速運動,當所述加速度輸出值的矢量和為-2g時,則說明空中滑鼠以2g的加速度作減速運動,當所述加速度輸出值的矢量和為0或接近0時,則說明空中滑鼠作勻速運動。發明人考慮,當空中滑鼠以較小的加速度(例如為0~2g的加速度)作加速或減速運動時,其空間坐標的變化量較小,因此可以向系統輸出相對較少的數據(用於滑鼠指針定位的坐標點),反之,當空中滑鼠以較大的加速度(例如為4g以上的加速度)作加速或減速運動時,其空間坐標的變化量較大,因此必須向系統輸出相對較多的數據才能確保滑鼠指針的移動能夠細膩平滑。所以,可以針對上述空中滑鼠的實際運動情況,動態地調節空中滑鼠的報點率,使其在加速度較大的情況下以較高的報點率輸出數據,從而確保滑鼠指針的移動細膩平滑,而在加速度較小的情況下以較低的報點率輸出數據,以降低功耗。
具體地,即執行步驟S10,基於所述重力加速度感測器的各個敏感軸的加速度輸出值的矢量和設定空中滑鼠的報點率。其中,所述基於所述加速度輸出值設定空中滑鼠的報點率具體包括:按加速度由小到大依次設定多個檔次的加速度範圍,每一檔次的加速度範圍對應一個報點率的設定範圍,根據所述加速度輸出值的矢量和所處加速度範圍的檔次確定對應的報點率的設定範圍,所述加速度範圍的檔次越高,對應的報點率的設定越高。具體地,該實施例按加速度的絕對值由小到大依次設定三檔加速度範圍,每一檔次的加速度範圍對應一個報點率的設定範圍,分別為:
第一檔加速度範圍為0~2g(包括2g),其對應的報點率的設定範圍為50~60赫茲;
第二檔加速度範圍為2g~4g(包括4g),其對應的報點率的設定範圍為80~100赫茲;
第三檔加速度範圍為4g以上,其對應的報點率的設定範圍為120~150赫茲。需要說明的是,第三檔加速度範圍在實際實施一般為4g~8g,至於大於8g的情況一般發生的可能性較小,故將其合併在第三檔加速度範圍內處理,況且,120~150赫茲的報點率的設定範圍也已經屬於比較高了,基本能滿足控制滑鼠指針平滑移動的目的。此外,由於上述三檔加速度範圍是以加速度的絕對值進行設定的,因此不管敏感軸的加速度分量的方向如何,均以加速度輸出值的絕對值界定所處的加速度範圍的檔次,例如某敏感軸的加速度輸出值為-2.5g,其絕對值為2.5g,則應該處於第二檔加速度範圍(2g~4g)。
在其他實施例中,也可根據實際情況(例如根據加速度輸出值的預計輸出範圍)設定不同檔次的加速度範圍,並為每個檔次的加速度範圍設定對應的報點率的範圍。
如此,當獲取到加速度感測器的敏感軸的加速度輸出值的矢量和後,便可以判斷出所述加速度輸出值的矢量和所處的加速度範圍的檔次,再根據所處的加速度範圍的檔次確定對應的報點率的設定範圍。當然,在實際實施時,需要預先從報點率的設定範圍中選取其中一個報點率的值進行設定,當憑藉敏感軸的加速度輸出值的矢量和識別出空中滑鼠的運動情況後,則切換到與當前運動情況相適應的報點率。例如:假設空中滑鼠從t0至t1這段時間內運動,獲得的敏感軸的加速度輸出值的矢量和為1.5g,可以將空中滑鼠的報點率設定為50赫茲,假設在t1至t2這段時間內獲得的敏感軸的加速度輸出值的矢量和為2.5g,則將空中滑鼠的報點率動態地調整為80赫茲。總之,空中滑鼠在用戶的操縱下在空中運動,其報點率便會隨著其運動情況作動態調節。
除了進行報點率的設定,還需要執行步驟S20,確定空中滑鼠的空間坐標。因為只有當空中滑鼠在運動過程中的空間坐標被確定後,才能將所確定的空間坐標或空間坐標的變化量相應轉換為滑鼠指針的坐標或滑鼠指針的坐標變化量,進而以設定的報點率輸出所述滑鼠指針的坐標或滑鼠指針的坐標變化量以控制滑鼠指針的移動。而確定空中滑鼠的空間坐標的關鍵通常又在於重力加速度感測器對傾斜角的測量。
該領域技術人員知曉,重力加速度感測器以重力作為輸入矢量來決定物體在空間的方向,而傾斜角就是重力與其敏感軸的夾角,當重力與其敏感軸垂直時,它對傾斜最敏感,在該方位上其對傾角的靈敏度最高。當敏感軸與重力平行時,每傾斜1度都引起輸出加速度的變化。下面簡單介紹下重力加速度感測器對傾斜角測量的原理。由於重力的方向是不變的,始終垂直地平面向下,當加速度感測器的某個敏感軸與重力形成傾斜角時,可以基於測量到的該敏感軸的加速度,通過三角函式,可以得出加速度和傾斜角之間的關係,例如在單個敏感軸(x軸)的情況下:
上述表達式中,Ax 為x敏感軸的加速度輸出值;gn 為以重力作為參考的加速度(即重力加速度g);β為傾斜角度。所以,β的值可以通過反餘弦函式方程求得,即β=arccos(Ax /gn )。當然,也可以通過其他反三角函式計算出傾斜角。如果存在多個敏感軸時,則可以根據各敏感軸與重力形成傾斜角以及各敏感軸的加速度分量確定空間坐標。圖2是根據敏感軸的傾斜角確定空間坐標的示意圖。如圖2所示,設原來坐標軸數據分別為X、Y、Z,變化後為X1、Y1、Z1,z軸的傾斜角為α,x軸的傾斜角為θ,明顯地,θ=90°-α,則:
因此,只需要計算出z軸的傾斜角為α,便可以確定變化後的空間坐標(X1,Y1,Z1)。特別地,在x軸和z軸構成的二維坐標系中,僅需要得到坐標(X1,Z1)。當然,通過x軸的傾斜角θ同樣可以確定變化後的空間坐標。
然而,2011年8月前已有技術中,根據測量得到的各個敏感軸的加速度輸出值計算出傾斜角,需要進行反三角函式運算,而計算機在進行反三角函式運算時是非常耗費資源的,對於處理能力相對較弱的MCU,因其有限的處理能力,導致處理速度較慢,進而導致確定空間坐標的速度也會較慢,從而難以使空中滑鼠以較高的報點率輸出數據,特別是當空中滑鼠以較大的加速度進行運動時,如果不能支持以較高的報點率輸出數據,則滑鼠指針的移動軌跡就難以達到細膩平滑的效果,嚴重影響滑鼠指針的定位質量,另外還會導致功耗較高,但如果選用處理能力更強的MCU,又會使成本上升。
因此,該實施例採用了不同於2011年8月前已有技術的確定所述空中滑鼠的空間坐標的方法。圖3是該發明實施例一提供的確定空中滑鼠的空間坐標的方法的流程示意圖,如圖3所示,所述確定空中滑鼠的空間坐標的方法包括:
步驟S101,建立索引值與敏感軸的參數之間的對應關係,所述索引值與所述慣性器件的敏感軸的測量值所對應,所述敏感軸的參數包括所述慣性器件的敏感軸的傾斜角及其三角函式值和/或基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值;
步驟S102,獲取所述慣性器件的各個敏感軸的測量值;
步驟S103,基於與所獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標。
該實施例中,通過建立索引值與所述慣性器件(該實施例中為重力加速度感測器)的敏感軸的傾斜角及其三角函式值之間的對應關係能夠解決上述問題,即步驟S101中所述敏感軸的參數包括所述慣性器件的敏感軸的傾斜角及其三角函式值。具體地,建立索引值與重力加速度感測器的敏感軸的傾斜角及其三角函式值之間的對應關係,所述索引值與所述慣性器件的各個敏感軸的測量值所對應。由於電容式重力加速度感測器會把測量的加速度轉換為電容器的電容量變化,測得的電容值的不同,反映到暫存器中的值也不同,因此可根據敏感軸在不同的加速度下實際測量的電容值或者電容值的範圍設定其所對應的暫存器中的值,並與此時的傾斜角及其三角函式值之間建立對應關係,例如當暫存器中的值為1時,對應的傾斜角為2.69度,2.69度的正弦值約為0.046932,2.69度的餘弦值約為0.998898,將所述對應關係以表的形式存儲於唯讀存儲器(ROM,Read-OnlyMemory)中,在該實施例將該表稱為傾斜角索引表。需要說明的是,步驟S101中的所述索引值具體即為上述暫存器中的值(簡稱為暫存器值)。
在開啟重力加速度感測器後,電容式重力加速度感測器會測得基於各敏感軸的加速度分量所轉化的電容值,即執行步驟S102,獲取慣性器件的各個敏感軸的測量值,其中,所述測量值具體即為測得的電容值,然後,MCU能夠從暫存器中讀取與測得的電容值所對應的暫存器值。
讀取到暫存器值之後,基於所述暫存器值查詢所述傾斜角索引表,能夠憑藉所述對應關係直接得到該暫存器值所對應的傾斜角及其三角函式值,並基於查詢到的所述傾斜角及其三角函式值確定所述重力加速度感測器的敏感軸的坐標值,從而確定空中滑鼠的空間坐標以實現對其的定位,即執行步驟S103,基於與所獲取的測量值對應的索引值查詢所述對應關係(傾斜角索引表),確定所述空中滑鼠的空間坐標。
需要說明的是,建立索引值、所述慣性器件的敏感軸的傾斜角及其三角函式值之間的對應關係(該實施例中即建立傾斜角索引表)時,需要將敏感軸的偏轉(偏轉產生傾斜角)分為四個不同的象限,每個象限中傾斜角的範圍均從0度至90度,不同的角度值對應不同的三角函式值,其中最為關鍵的是以怎樣的分割精度配置所述對應關係(傾斜角索引表)中的傾斜角。一方面,分割精度需要考慮套用的需求進行配置,比如說0.5度或者0.1度,較高的分割精度能保證後續所確定的空間坐標的準確性。但分割精度越高,傾斜角索引表中傾斜角的數量也越多,數據的存儲量也越大,同時也給MCU提出了更高的要求,比如當傾斜角的分割精度精確到0.1度時,就需要MCU的4K的ROM存儲空間。因此,另一方面,對於配置傾斜角索引表中的傾斜角還需要考慮到MCU的存儲空間與運行速度。
該實施例中是按傾斜角所對應的斜率由大至小的順序逐步降低分割精度確定所述傾斜角索引表中傾斜角及其三角函式值的配置(確定了傾斜角的配置即確定了其三角函式值的配置)。
圖4是該發明實施例一的傾斜角索引表中傾斜角的分割精度示意圖。如圖4所示,以0度至90度的傾斜角對應的正弦值為例,A點的斜率是大於B點的,因此在相同分割精度的條件下,A點附近對應的正弦值的變化要大於B點附近對應的正弦值的變化。由此,可以考慮將A點附近對應的傾斜角的分割精度設定得相對高一些,而將B點附近對應的傾斜角的分割精度設定得相對低一些,例如,在0至45度的傾斜角範圍內多選取幾個角度以及三角函式值存入所述傾斜角索引表(分割精度相對較高),而在45至90度則少選取幾個角度以及三角函式值存入所述傾斜角索引表(分割精度相對較低),如此便能在一定程度上既保證後續所確定的空間坐標的準確性,又減小了對MCU的存儲空間與運行速度的要求。
仍參閱圖4,該實施例中,按照傾斜角所對應的斜率由大至小的順序逐步降低分割精度確定所述傾斜角索引表中傾斜角及其三角函式值的配置,即傾斜角從0度至90度,所對應的斜率逐步變小,而存入傾斜角索引表中的傾斜角之間的差值越來越大(角度間差值越大,分割精度越低),舉例來說,傾斜角從0度至90度,最開始選擇0度、2.69度、5.38度、8.08度、10.81度,分割精度分別為2.69度(2.69度-0度)、2.69度(5.38度-2.69度)、2.7度(8.08度-5.38度)、2.73度(10.81度-8.08度),可以看出分割精度在逐步降低,而到後來選擇57.54度、62.95度、69.64度、79.86度,分割精度分別為5.41度、6.69度、10.22度,可以看出分割精度越來越低。
需要說明的是,上述按傾斜角所對應的斜率由大至小的順序逐步降低分割精度確定所述傾斜角索引表中傾斜角及其三角函式值的配置的方式只是一種選取傾斜角的基本原則,具體實施時,在這一基本原則下,可根據實際情況確定傾斜角索引表中傾斜角及其三角函式值的配置,如下表所示,表1是根據實際情況多次測量後所確定的傾斜角索引表的示例。
表1 表1中,列出了從0度至90度所選取的23個傾斜角的角度值,每一個傾斜角的角度值對應有一個索引值,依次為0~22。0度和90度這兩個端點一般是任何一張傾斜角索引表所必選的,而處於0度~90度之間的傾斜角,則可以根據上述按傾斜角所對應的斜率由大至小的順序逐步降低分割精度的基本原則並結合實際情況所確定。
需要說明的是,通常由於反三角函式值參與的運算中涉及浮點運算,而複雜而大量的浮點運算對於處理能力相對較弱的MCU來說難以實現快速的處理,但如果選用處理能力更強的MCU,又會增加成本。因此在該實施例中,採取的方法是將與索引值對應的傾斜角的三角函式值擴大預定倍數並取整後存於所述傾斜角索引表。如表1所示,索引值所對應的傾斜角的三角函式值包括正弦值(sin)和餘弦值(cos),其中,正弦值有兩列,左邊一列是將索引值所對應的傾斜角的正弦值擴大10000倍後取整,右邊一列是將索引值所對應的傾斜角的正弦值擴大100倍後取整;類似地,餘弦值也有兩列,左邊一列是將索引值所對應的傾斜角的餘弦值擴大10000倍後取整,右邊一列是將索引值所對應的傾斜角的餘弦值擴大100倍後取整。所述擴大的預定倍數可以根據實際需求進行設定,如果需要更高的計算精度,則應將三角函式值擴大的預定倍數設定地較大,如果對計算精度的要求相對較低,則可以將三角函式值擴大的預定倍數設定地相對較小些。當然,對三角函式值擴大的預定倍數設定地越大,則意味著MCU需要進行的計算量也會越大。總之,通過將與索引值對應的傾斜角的三角函式值擴大預定倍數並取整後存於所述傾斜角索引表,避免了浮點運算,從而能夠以相對低端的微控制器(例如可以採用8位的MCU)實現計算,降低了成本。在其他實施例中,如果對精度的要求高,並且有處理能力較強的MCU支持,則可以用與索引值對應的傾斜角的三角函式值參與浮點運算。
上述對傾斜角索引表的查詢過程,可以通過二分法查找實現,二分法查找為2011年8月前已有技術中常用手段,在此不再贅述。
此外,該實施例中,所述確定所述空中滑鼠的空間坐標的方法還包括通過判斷敏感軸的是否穩定,以穩定的敏感軸所獲得的傾斜角及其三角函式值確定空中滑鼠的空間坐標的值。由於在具體實施時,所述空中滑鼠的各敏感軸的穩定性可能並不相同,相應得出的傾斜角也不同,由此會產生各自不同的空間坐標的值,此時就需要基於穩定的敏感軸所得到的傾斜角所對應的三角函式值確定出空間坐標的值。例如:可以同時採用x軸和z軸互做補償,哪個軸穩定就採用穩定的敏感軸獲得的索引值。一般地,水平移動時,z軸穩定;垂直移動時,x軸穩定;斜向移動,則x,z軸都不穩定,此時返回之前處於穩定時的索引值。具體判斷敏感軸是否穩定可採取以下方式:若快取區內不同的索引值的數量小於或等於第一閾值,且各索引值之間的差值(絕對值)均小於或等於第二閾值,則確定該敏感軸穩定;所述快取區存有每隔預定時間所獲取的索引值。具體實施時,隨著各敏感軸加速度的變化,位於暫存器中的索引值也會有所變化,將預定時間內所讀取到的索引值存入一快取區中,可以通過分析該快取區中的數據判斷敏感軸是否穩定。所述第一閾值可取3,第二閾值可取2,即:當某個敏感軸在快取區內不同的索引值的數量小於或等於3,且各索引值之間的差值均小於或等於2,可確定該敏感軸穩定。舉例來說,假設x軸在快取區內的索引值包括:22,22,22,21,21,20,20,20,19,19,18,18,17,17,而z軸在快取區內的索引值包括:2,2,2,2,2,2,3,3,3,3,3,3,3,3。通過對快取區內的索引值的分析可知:x軸在快取區內不同的索引值的數量有6個,且最小索引值與最大索引值之間差值為4,已經不滿足各索引值之間的差值均小於或等於2,則確定x軸處於不穩定狀態;而z軸在快取區內不同的索引值的數量僅為2個,且最小索引值與最大索引值之間差值為1,即能滿足各索引值之間的差值均小於或等於2,則確定z軸處於穩定狀態。需要說明的是,該實施例中所述索引值之間的差值指的是索引值之間差的絕對值。
另外,快取區中的數據(索引值)還可以用來判斷停頓,如全正、全負或者最大索引值與最小索引值之差小於某個數時就自動檢測為所述感知設備處於停頓狀態,停頓狀態也屬於穩定狀態的一種。當敏感軸都不穩定時會返回之前的索引值,但只要稍有停頓,重力加速度感測器就會認為是穩定了,就會立即檢測到加速度變化並轉換成空間坐標。以空中滑鼠的控制為例,比如剛開始是水平拿的,突然向斜上方運動,如果沒有檢測到穩定(稍有停頓或其他穩定的情況),則滑鼠會水平移動,一旦檢測到穩定,滑鼠就會沿斜上方運動。因為只要檢測到穩定(如有停頓),重力加速度感測就會輸出正確的值。在現實生活中,當手持空中滑鼠進行控制時,不可能一直處於不穩定的(比如斜向上)的運動狀態,如果稍有停頓或者對快取區中的數據檢測確定敏感軸穩定,就會輸出正確的索引值而不會返回之前處於穩定狀態的索引值。
如前所述,建立傾斜角索引表時,需要將敏感軸的偏轉(偏轉產生傾斜角)分為四個不同的象限(表示偏轉產生的傾斜角所在的象限),每個象限中傾斜角的範圍均從0度至90度,不同的角度值對應不同的三角函式值,具有相同的角度值但處於不同的象限時,所得到的三角函式值有正負之分,對應的索引值也有正負之分。因此,該實施例中,開啟重力加速度感測器後,還可基於所述索引值和垂直於地平面的敏感軸(z軸)的方向確定所述空中滑鼠的空間姿態。所述空間姿態具體指空中滑鼠是正拿、反拿、是否有偏轉以及向哪個方向偏。具體地,可根據索引值是大於零、等於零或小於零,以及表示z軸方向的值是小於零(方向向上)或是大於零(方向向下,以重力的方向為正方向)確定空中滑鼠的空間姿態。所述表示z軸方向的值可以通過對快取區中數據的值(索引值)求均值並經過判定後得到。如前所述,重力加速度感測器在運行過程中,所述快取區存有每隔預定時間所獲取的索引值,通過對快取區中的所述索引值的分析,可以判斷出敏感軸是否穩定。例如:該實施例中設定快取區中的數據(索引值)為14個,這14個數據中如果全正或者全負並且快取區中數據的值不超過3個不同的,且差距不大於2時,判斷目前敏感軸是穩定的。進一步地,可以對快取區中的數據的值進行求均值運算,如果均值為正數就輸出1,如果均值為負數就輸出-1,而輸出的1或-1即為所述表示z軸方向的值。特別地,如果快取區中的數據的值全為正值並且判斷出敏感軸穩定的話是肯定輸出1的,如果全為負值並且判斷出敏感軸穩定的話肯定是輸出-1的。
圖5是該發明實施例一的重力加速度感測器開啟後的空間姿態識別示意圖。如圖5所示,當重力加速度感測器開啟後,即可根據索引值和表示z軸的方向的值對空中滑鼠的空間姿態進行識別,具體地:
若索引值等於零(無偏轉)且表示z軸方向的值小於零,則識別為正拿;
若索引值等於零(無偏轉)且表示z軸方向的值大於零,則識別為反拿;
若索引值小於零(有偏轉)且表示z軸方向的值小於零,則識別為第一象限,此時空間坐標的計算為(以x軸的傾斜角γ為例):
若索引值小於零(有偏轉)且表示z軸方向的值大於零,則識別為第二象限,此時空間坐標的計算為(以x軸的傾斜角γ為例):
若索引值大於零(有偏轉)且表示z軸方向的值大於零,則識別為第三象限,此時空間坐標的計算為(以x軸的傾斜角γ為例):
若索引值大於零(有偏轉)且表示z軸方向的值小於零,則識別為第四象限,此時空間坐標的計算為(以x軸的傾斜角γ為例):
結合表1,基於索引值可獲得其對應的傾斜角及其三角函式值,將三角函式值代入上述公式便可計算出重力加速度感測器的敏感軸的坐標值,從而確定空間坐標的值(該實施例中為二維坐標)。需要說明的是,表1中僅列出索引值大於或等於零時對應的傾斜角及其三角函式值,而對索引值小於零時對應的傾斜角及其三角函式值並未列出,但可參照表1實施。例如:索引值為1時,對應傾斜角為2.69度,而當索引值為-1時,對應傾斜角仍可為2.69度。如前所述,索引值的正負結合表示z軸方向的值便可用於對敏感軸偏轉後產生的傾斜角所處象限進行識別,所述傾斜角在不同的象限所得出的三角函式值有正負之分。
需要說明的是,在步驟S20,通過採用上述確定空中滑鼠的空間坐標的方法所獲得的空間坐標的精度雖然較2011年8月前已有技術有所降低,但是卻能夠以更快的速度確定出所述空間坐標,即使選用處理能力相對較弱的MCU,相對於該技術,在相同的時間內也能夠獲得更多的空間坐標,通過後續步驟能輸出更多的滑鼠指針的坐標或其變化量,從而增強了空中滑鼠以較高的報點率輸出數據的能力,使滑鼠指針的移動軌跡更為細膩平滑,提高了滑鼠指針的定位質量,另外還降低了成本和功耗。在實際實施時,快速確定空中滑鼠的空間坐標的意義比追求空間坐標的更高精度的意義顯得更為重要,因為空中滑鼠在空中運動過程中,只有快速確定其空間坐標,才能及時輸出滑鼠指針的坐標或其變化量以控制滑鼠指針的移動,形成滑鼠指針移動的軌跡,而空間坐標的更高精度雖然能使滑鼠指針的定位更為精準,但是處理速度慢的缺點(尤其是選用處理能力相對較弱的MCU時)使控制滑鼠指針的移動顯得有些滯後,例如用戶操縱空中滑鼠在空中運動,當MCU計算出某個空間坐標的精確值並輸出滑鼠指針的坐標或其變化量以控制滑鼠指針移動時,空中滑鼠的位置卻早已過了那個空間坐標,此時即使計算出具有很高精度的空間坐標的值也顯得意義不大了。
在確定空中滑鼠的空間坐標後,則可執行步驟S30,將所確定的空間坐標或其變化量相應轉換為滑鼠指針的坐標或其變化量。具體地,當通過步驟S20確定空中滑鼠的空間坐標後,還需將所確定的空間坐標除以靈敏度係數後轉換為滑鼠指針的坐標,或者將所確定的空間坐標的變化量除以靈敏度係數後轉換為滑鼠指針的坐標的變化量,以所述滑鼠指針的坐標或滑鼠指針的坐標變化量才能實現對滑鼠指針的定位,控制滑鼠指針移動。需要說明的是,通過步驟S20所確定的空中滑鼠的空間坐標不止一個,而是一系列連續的空間坐標(單位時間內確定的空間坐標的數量與所述慣性器件的採樣頻率有關),因此,上述所確定的空間坐標的變化量具體是指任意連續的兩個空間坐標之間的變化量,該實施例中,所述空間坐標的變化量包括x軸的變化分量和z軸的變化分量。例如:假設先後確定的連續兩個空間坐標分別為
和
,則x軸的變化分量
,z軸的變化分量
。通過將一系列的空間坐標的變化量轉換為滑鼠指針的坐標變化量,同樣能定位滑鼠指針,控制滑鼠指針的移動。此外,所述靈敏度係數包括慣性器件的靈敏度係數和滑鼠的靈敏度係數,是根據實際需求和運行環境,例如準確度要求、螢幕大小和解析度等而設定和調整,此為該領域技術人員所公知,在此不再展開說明。
獲得滑鼠指針的坐標或其變化量後,執行步驟S40,以設定的報點率輸出所述滑鼠指針的坐標或其變化量,以控制滑鼠指針的移動。由於報點率反映的是滑鼠向系統傳送數據(滑鼠指針的坐標或坐標的變化量)的頻率,報點率越高,單位時間內傳送數據給系統的次數越多,則向系統輸出的滑鼠指針的坐標或其變化量的數量也越多,滑鼠指針(游標)的移動也就更為細膩平滑。空中滑鼠每次向系統傳送的數據包括由單位時間內獲得的多個連續的空間坐標或其變化量相應轉換而成的滑鼠指針的坐標或其變化量,可以將每次向系統輸出的多個連續的滑鼠指針的坐標或其變化量稱為一組數據,因此,報點率表示的是單位時間內向系統輸出多少組數據。因為通過步驟S10已經根據空中滑鼠的運動情況設定出相適應的報點率,所以執行步驟S40時,便可基於所設定的報點率控制向系統輸出的滑鼠指針的坐標或其變化量的數據量,由此實現了根據空中滑鼠的運動情況控制滑鼠指針的移動,使空中滑鼠在加速度較大的情況下以較高的報點率輸出數據,從而確保滑鼠指針的移動細膩平滑,而在加速度較小的情況下以較低的報點率輸出數據,以降低功耗。
上述實施例中,所述慣性器件為重力加速度感測器,在其他實施例中,所述慣性器件還可以包括陀螺儀感測器,與上述實施例有所區別的是,由於2011年8月前已有技術中,陀螺儀感測器是通過敏感軸(又稱為檢測軸或檢測臂)測量電壓的變化,根據測得的電壓值與角速度的對應關係,對角速度進行積分運算後獲得傾斜角,因此,為了避免複雜而大量的積分運算、反三角函式運算,提高處理速度,同樣可以建立索引值、陀螺儀感測器的敏感軸的傾斜角及其三角函式值之間的對應關係(傾斜角索引表),通過敏感軸的測量值(一般為電壓值)所對應的索引值(暫存器值)查詢所述對應關係(傾斜角索引表),獲得與所述索引值對應的傾斜角及其三角函式值,基於所述三角函式值確定所述重力加速度感測器的敏感軸的坐標值,進而確定空中滑鼠的空間坐標以實現對其的定位。
基於上述控制滑鼠指針移動的方法,該實施例還提供了一種控制滑鼠指針移動的裝置,並利用空中滑鼠控制滑鼠指針的移動。圖6是該發明實施例一提供的控制滑鼠指針移動的裝置的結構示意圖,如圖6所示,所述空中滑鼠包括至少一種慣性器件,所述慣性器件包括重力加速度感測器,所述控制滑鼠指針移動的裝置包括:報點率設定單元10,用於基於所述重力加速度感測器的敏感軸的加速度值設定空中滑鼠的報點率;坐標確定單元20,用於確定空中滑鼠的空間坐標;轉換單元30,用於將所確定的空間坐標或其變化量相應轉換為滑鼠指針的坐標或其變化量;控制單元40,用於以設定的報點率輸出所述滑鼠指針的坐標或其變化量,以控制滑鼠指針的移動。
圖7是是圖6所示坐標確定單元20的結構示意圖。參閱圖7,圖6所示坐標確定單元20包括:對應關係生成單元201,用於建立索引值與敏感軸的參數之間的對應關係,所述敏感軸的參數包括所述慣性器件的敏感軸的傾斜角及其三角函式值,所述索引值與所述慣性器件的各個敏感軸的測量值所對應;獲取單元202,用於獲取所述慣性器件的各個敏感軸的測量值;定位單元203,用於基於與獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標。所述定位單元203包括:第二查詢單元203a,用於基於與所獲取的測量值對應的索引值查詢所述對應關係,獲得與所述索引值對應的敏感軸的傾斜角及其三角函式值;第二確定單元203b,用於基於查詢到的慣性器件的敏感軸的傾斜角及其三角函式值,確定所述空中滑鼠的空間坐標。
具體實施例中,所述索引值與敏感軸的參數(慣性器件的敏感軸的傾斜角及其三角函式值)之間建立的對應關係以表的形式存於唯讀存儲器中,該表即為圖7所示的傾斜角索引表200。所述對應關係生成單元201包括配置單元(圖中未示出),用於按傾斜角所對應的斜率由大至小的順序逐步降低分割精度確定所述傾斜角索引表200中傾斜角及其三角函式值的配置。所述對應關係生成單元201還包括擴值取整單元(圖中未示出),用於將與所述索引值對應的傾斜角的三角函式值擴大預定倍數並取整後存於所述傾斜角索引表200。仍參閱圖6,所述控制滑鼠指針移動的裝置還包括穩定判斷單元50,所述穩定判斷單元50與所述坐標確定單元20相連,用於判斷敏感軸是否穩定,包括:若快取區內不同的索引值的數量小於或等於第一閾值,且各索引值之間的差值(絕對值)均小於或等於第二閾值,則確定該敏感軸穩定;所述快取區存有每隔預定時間所獲取的索引值;所述坐標確定單元20以穩定的敏感軸所獲得的傾斜角及其三角函式值確定所述空間坐標。
該實施例中,所述空中滑鼠包括的所述慣性器件為重力加速度感測器,其至少包括兩個相互垂直的敏感軸,其中一個敏感軸垂直於地平面。所述空中滑鼠還包括空間姿態識別單元,用於基於所述索引值和垂直於地平面的敏感軸的方向確定所述空中滑鼠的空間姿態。
關於該實施例中所述控制滑鼠指針移動的裝置的具體實施可參考上述控制滑鼠指針移動的方法,在此不再贅述。
該實施例提供的控制滑鼠指針移動的方法基於實施例一所述的控制滑鼠指針移動的方法,與實施例一之間的區別是,對於確定空中滑鼠的空間坐標的方法有所不同。可結合圖3,該實施例中,步驟S101中所述敏感軸的參數包括基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值。為了能夠使步驟S103中確定所述空中滑鼠的空間坐標以實現對其定位的速度更快,該實施例中考慮直接建立所述索引值和基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值之間的對應關係。當然,所述索引值和基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值之間的對應關係同樣可以表的形式存儲於唯讀存儲器中,在該實施例,將該表稱為坐標對應表,即所述坐標對應表包括所述索引值和基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值,所述索引值與坐標值之間具有對應關係。在實際實施時,MCU讀取到暫存器中的索引值後,能夠直接根據所述索引值查詢所述坐標對應表,得到所述索引值對應的坐標值(所述索引值對應的傾斜角的三角函式值所確定的所述慣性器件的敏感軸的坐標值),從而確定空中滑鼠的空間坐標。例如:可以參考實施例一中的表1,讀取到索引值為1(傾斜角為2.69度),則查詢坐標對應表得到對應的坐標值為x1 和z1 ,從而確定的姿態空間坐標為(x1 ,z1 ),讀取到索引值為2(傾斜角為5.38度),則查詢坐標對應表得到對應的坐標值為x2 和z2 ,從而確定的空間坐標為(x2 ,z2 )等,這樣可以免去三角函式值與空間坐標之間的變換計算,從而能夠以更快的速度確定空間坐標以實現對空中滑鼠的定位。當然,在其他實施例中,也可以將所述坐標對應表與實施例一中所述傾斜角索引表進行合併,即合併後形成的傾斜角索引表中除了包括具有對應關係的所述索引值、傾斜角及其三角函式值,還包括與所述索引值、傾斜角及其三角函式值具有對應關係的所述慣性器件的敏感軸的坐標值,如此可根據需要,通過查詢合併後的傾斜角索引表得到對應的所述慣性器件的敏感軸的坐標值和/或傾斜角。
關於該實施例的所述控制滑鼠指針移動的方法的具體實施可參考實施例一中所述控制滑鼠指針移動的方法的相關描述,在此不再贅述。
基於上述控制滑鼠指針移動的方法,該實施例還提供了一種控制滑鼠指針移動的裝置,利用空中滑鼠控制滑鼠指針移動。圖8是《空中滑鼠及控制滑鼠指針移動的方法與裝置》實施例二提供的控制滑鼠指針移動的裝置的結構示意圖,如圖8所示,所述空中滑鼠包括至少一種慣性器件,所述慣性器件包括重力加速度感測器,所述控制滑鼠指針移動的裝置包括:報點率設定單元10,用於基於所述重力加速度感測器的敏感軸的加速度值設定空中滑鼠的報點率;坐標確定單元60,用於確定空中滑鼠的空間坐標;轉換單元30,用於將所確定的空間坐標的變化量除以靈敏度係數後轉換為滑鼠指針的坐標的變化量;控制單元40,用於以設定的報點率輸出所述滑鼠指針的坐標的變化量,以控制滑鼠指針的移動。
該實施提供的控制滑鼠指針移動的裝置與實施例一中所述的控制滑鼠指針移動的裝置的區別在於坐標確定單元的結構有所不同。圖9是圖8所示坐標確定單元60的結構示意圖。參閱圖9,圖8所示坐標確定單元60包括:對應關係生成單元601,用於建立索引值與敏感軸的參數之間的對應關係,所述敏感軸的參數包括基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值,所述索引值與所述慣性器件的各個敏感軸的測量值所對應;獲取單元602,用於獲取所述慣性器件的各個敏感軸的測量值;定位單元603,用於基於與獲取的測量值對應的索引值查詢所述對應關係,確定所述空中滑鼠的空間坐標。所述定位單元603包括:第一查詢單元603a,用於基於與所獲取的測量值對應的索引值查詢所述對應關係,獲得與所述索引值對應的慣性器件的敏感軸的坐標值;第一確定單元603b,用於基於查詢到的慣性器件的敏感軸的坐標值確定所述空中滑鼠的空間坐標。
具體實施例中,所述索引值與敏感軸的參數(基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值)之間建立的對應關係以表的形式存於唯讀存儲器中,該表即為圖9所示的坐標對應表600。所述對應關係生成單元601包括配置單元(圖中未示出),用於按傾斜角所對應的斜率由大至小的順序逐步降低分割精度確定所述坐標對應表600中基於所述敏感軸的傾斜角確定的所述慣性器件的敏感軸的坐標值的配置。
此外,該實施例中同樣可包括實施例一所述的擴值取整單元、穩定判斷單元50,具體可參考實施例一中所述控制滑鼠指針移動的裝置。關於該實施例提供的控制滑鼠指針移動的裝置的具體實施可參考該實施例以及實施例一中所述控制滑鼠指針移動的方法的相關內容。
在實施例一或實施例二的基礎上,發明人考慮到空中滑鼠的運動情況不僅包括加速運動、減速運動或勻速運動,還包括其運動趨勢(軌跡),所述運動趨勢包括直線運動和非直線運動,若能夠判斷出空中滑鼠的運動趨勢為直線運動,則通過降低空中滑鼠的報點率,還能夠在不影響滑鼠指針移動軌跡的平滑度的情況下,降低功耗。
因此,該實施例中,利用空中滑鼠控制滑鼠指針移動的方法還包括:以連續多個判斷出敏感軸穩定後所獲取的索引值識別空中滑鼠的運動趨勢,若所述運動趨勢為直線運動,則降低所述空中滑鼠的報點率。具體地,所述以連續多個判斷出敏感軸穩定後所獲取的索引值識別空中滑鼠的運動趨勢包括:若任意兩個連續的索引值之差小於或等於第三閾值,則識別出所述運動趨勢為直線運動。如實施例一所述,可以通過分析快取區中的數據(索引值)判斷敏感軸是否穩定,當某個敏感軸在快取區內不同的索引值的數量小於或等於3,且各索引值之間的差值(絕對值)均小於或等於2,可確定該敏感軸穩定。在判斷出敏感軸穩定的基礎上,可進一步利用快取區中的數據(索引值)識別空中滑鼠的運動趨勢。舉例來說,通過對快取區內的索引值的分析可判斷出某敏感軸穩定,假設在每次判斷出敏感軸穩定後連續獲取的多個索引值包括2,2,2,3,3,3,3,3,4,4,4,4,4,4,並且所述第三閾值設定為2,則分析可得,任意兩個連續的索引值之差(絕對值)都小於或等於2,可知該時間段內空中滑鼠的運動趨勢為直線運動。再假設在每次判斷出敏感軸穩定後連續獲取的多個索引值包括2,2,2,2,2,3,3,3,4,7,7,8,9,12,則任意兩個連續的索引值之差(絕對值)存在大於2的情況,則這段時間內空中滑鼠的運動趨勢為非直線運動。如果識別出空中滑鼠的運動趨勢為直線運動,則此時即使少輸出一些數據(用於定位滑鼠指針的坐標或坐標的變化量)給系統也不會影響滑鼠指針移動軌跡的平滑度,反而能夠在一定程度上降低功耗,因此可降低所述空中滑鼠的報點率。至於所述空中滑鼠的報點率的降低幅度可預先設定標準,例如降幅的設定範圍為10%~20%。以降幅為10%為例,如果原先設定的報點率為80赫茲,當識別出空中滑鼠的運動趨勢為直線運動後,則將報點率從80赫茲降低為72赫茲。此外,在設定報點率的降低幅度的基礎上,還可設定報點率的下限值,即當識別出空中滑鼠的運動趨勢為直線運動後,將報點率降低一定幅度,如果降低之後的報點率低於所述下限值,則將報點率設定為該下限值。該實施例中,所述下限值設定為50赫茲,例如:原先報點率為60赫茲,將該報點率降低20%後則為48赫茲,那么此時便將報點率設定為50赫茲。一般在實際實施過程中,無論空中滑鼠的運動趨勢為直線運動或是非直線運動,50赫茲的報點率能基本保證滑鼠指針的移動軌跡較為平滑。
需要說明的是,判斷出敏感軸穩定後連續獲取的多個索引值的數量至少為3個,而且必須是判斷出敏感軸穩定後獲取的索引值,因為如果判斷出敏感軸不穩定,會返回之前判斷出敏感軸穩定時的索引值,則該索引值不屬於判斷出敏感軸穩定後獲取的索引值。例如,如果一段時間內連續判斷出某敏感軸穩定,獲取的索引值依次為3,3,3,4,4,假設之後判斷出所有敏感軸都不穩定,則此時返回之前判斷出敏感軸穩定時的索引值4,則這個索引值4不能作為識別所述運動趨勢的依據。
此外,為了能控制滑鼠指針的運動更為細膩平滑,空中滑鼠需要獲得更多的空間坐標,因此,該實施例中,所述控制滑鼠指針移動的方法還包括:對至少兩個連續確定的空中滑鼠的空間坐標進行插值運算。具體地,所述進行插值運算包括:若識別出所述運動趨勢為直線運動,則進行線性插值運算,否則進行拋物線插值運算。
線性插值是代數插值的最簡單形式。圖10是線性插值運算的示意圖。假設變數y和自變數x關係如圖10曲線y=f(x)所示。已知y在點x0 和x1 的對應值y0 和y1 ,現在需要用一線性插值函式g(x)=ax+b,近似代替f(x)。根據插值條件,應滿足:
解該方程組,便可確定線性插值函式g(x)的參數a和b。由圖10可知,線性插值的幾何意義是用通過點
和點
的直線近似地代替曲線y=f(x),可以很容易求的該直線表達式:
或
插值節點x0 和x1 之間的間距越小,那么在這一區間g(x)與f(x)之間的誤差就越小。若插值點x在x0 和x1 之間,稱為內插,否則稱為外插,一般只考慮內插情況。
若識別出所述運動趨勢為非直線運動,如果仍然採用上述的線性插值算法進行運算就顯得不太合適,在插值運算上應體現為非線性插值運算,該實施例中可以採用拋物線插值算法。拋物線插值又稱為二次插值,它是以一元二次多項式去擬合某一段曲線,精度自然要比線性插值高。圖11是拋物線插值運算的示意圖,如圖11所示,已知一條曲線y=f(x)上的三點A(x0 ,y0 ),B(x1 ,y1 ),C(x2 ,y2 );過此三點可以作一條拋物線,即一條二次曲線g(x),且是唯一的。
已知:
g(x
i )=f(x
i ),其中:i=0,1,2;
由此可以得到方程組:
當然解此方程組方法有很多,比如常用的待定係數法,包含拋物線插值的拉格朗日形式、牛頓形式等等,一般可以考慮線上性插值的基礎上進行逐次線性插值,也比較容易用電腦程式實現。
用直線點斜式公式:
第三步:將
、(x
2 ,L
02 )也理解為“點”,過這兩點作“直線”,記為L
012 ,即
第四步:把L01 、L02 代入上式,得:
可以表示出:
所以,L012 就是所要求的二次插值多項式g(x)。
通過仔細研究L
012 ,可以看出,
是一階差商(速度),而方括弧內的分式是二階差商(加速度)。上述通過兩個線性插值的結果得到g(x),所以可以稱作逐次線性插值。由於可以直接調用線性插值算法程式來完成,因此計算起來非常方便,當然該實施例中只考慮內插的情況。
在套用插值算法時,應該考慮下面的兩個具體的問題:
1、關於插值點的選取:在單片機套用中,往往把常用的函式以表格的形式固化在程式存儲器中。例如,對於任一給定的插值點x,x0 和x1 的對應值的函式值y0 和y1 ,然後就可以進行插值運算,求得插值點(x,y)的值。
2、關於精度與複雜度:為了提高插值精度,大多數情況下可考慮採用浮點運算,此時可以考慮將參與插值運算的數據和表格事先轉換成規格化浮點。但此種情況會使程式顯得複雜,影響單片機的運算速度。
圖12是該發明實施例三提供的控制滑鼠指針移動的裝置的結構示意圖。如圖12所示,基於實施例一或實施例二提供的所述控制滑鼠指針移動的裝置,該實施例中的控制滑鼠指針移動的裝置除了包括報點率設定單元10、坐標確定單元20(也可以為坐標確定單元60)、轉換單元30、控制單元40、穩定判斷單元50,還包括運動趨勢識別單元70,所述運動趨勢識別單元70與所述穩定判斷單元50、報點率設定單元10、坐標確定單元20(也可以為坐標確定單元60)相連,用於以連續多個判斷出敏感軸穩定後所獲取的索引值識別空中滑鼠的運動趨勢;所述報點率設定單元10在所述運動趨勢識別單元70識別出所述運動趨勢為直線運動時,降低所述空中滑鼠的報點率。所述運動趨勢識別單元70當任意兩個連續的索引值之差小於或等於第三閾值時,識別出所述運動趨勢為直線運動。
此外,具體實施時,該實施例的控制滑鼠指針移動的裝置還可包括插值單元80,所述插值單元80與所述運動趨勢識別單元70、坐標確定單元20(也可以為坐標確定單元60)連線,用於對至少兩個連續確定的空中滑鼠的空間坐標進行插值運算,坐標確定單元20中的定位單元203(也可以為坐標確定單元60中的定位單元603)以插值運算後獲得的所有空間坐標定位所述空中滑鼠。所述插值單元80具體可包括選擇單元、線性插值單元以及拋物線插值單元,所述選擇單元用於當所述運動趨勢識別單元識別出所述運動趨勢為直線運動時,選擇所述線性插值單元進行插值運算,否則選擇所述拋物線插值單元進行插值運算。
該實施例所述控制滑鼠指針移動的裝置的具體實施可參考該實施例中所述控制滑鼠指針移動的方法。
此外,該發明實施例還提供了一種空中滑鼠,上面任意一個實施例中所述的控制滑鼠指針移動的裝置可以全部或部分集成在所述空中滑鼠中,所述空中滑鼠可通過無線收發裝置(例如射頻收發器、紅外收發器等)與控制滑鼠指針的控制設備(例如投影儀、計算機等)傳送數據(滑鼠指針的坐標或其變化量),無線收發裝置的接收端一般可通過USB接口與所述控制設備連線。所述空中滑鼠的具體實施可參考上面任意一個實施例中所述的控制滑鼠指針移動的方法與裝置,在此不再贅述。
榮譽表彰 2017年5月,《空中滑鼠及控制滑鼠指針移動的方法與裝置》獲得第十屆江蘇省專利項目獎金獎。