我的目標是識別安裝在太陽穴上的加速度計的簡單手勢。手勢可以像旋轉設備或以多種不同運動移動設備一樣簡單。該設備目前只有加速度計,但我們正在考慮添加陀螺儀,如果它可以更容易/更準確。如何使用加速度計進行手勢識別
有沒有人有如何做到這一點的建議? Java中的任何可用庫?您推薦的示例項目我退房了嗎?您推薦的論文?
Sun spot是一個Java平臺,可幫助您快速製作系統原型。它使用Java進行編程,並可將命令傳回給連接到計算機的基站。如果我需要解釋硬件的工作方式,請發表評論。
我的目標是識別安裝在太陽穴上的加速度計的簡單手勢。手勢可以像旋轉設備或以多種不同運動移動設備一樣簡單。該設備目前只有加速度計,但我們正在考慮添加陀螺儀,如果它可以更容易/更準確。如何使用加速度計進行手勢識別
有沒有人有如何做到這一點的建議? Java中的任何可用庫?您推薦的示例項目我退房了嗎?您推薦的論文?
Sun spot是一個Java平臺,可幫助您快速製作系統原型。它使用Java進行編程,並可將命令傳回給連接到計算機的基站。如果我需要解釋硬件的工作方式,請發表評論。
加速度計將被登記的恆定重力加速度,加上任何加速度的設備是由用戶,加噪聲進行。
您需要對樣品進行低通濾波以儘可能消除無關噪音。最差的噪音一般會比任何可能的人爲加速度都要高。
實現的是,當設備沒有被用戶加速,唯一的力是由於重力,因此就可以在空間deduce its attitude。而且,當總加速度從1g變化很大時,它必然是由於用戶加速了設備;通過減去上次已知的重力估計值,您可以粗略估計用戶在何種方向上加速設備,從而獲得數據,您可以開始與已知手勢列表進行匹配。
使用單個三軸加速度計可以檢測當前的俯仰和滾動,並且在一條直線上還加速度的設備。積分加速度減去重力會給你一個當前速度的估計值,但由於噪聲的原因,估計值會很快偏離現實;您必須對手勢之前/之間/之間的用戶行爲做出假設,並通過您的用戶界面指導他們,以提供設備未加速的點數,並且您可以重置估算值並可靠估計重力方向。再次整合以找到位置不可能在任何有用的時間長度內提供可用的結果。
如果有兩個三軸加速度計隔開一定距離,或一個與一些陀螺儀,也可以檢測該設備的轉動(通過比較加速度矢量,或者直接從陀螺儀);在幾秒鐘內積分角動量將會給你一個相對於當你開始積分時的當前偏航的估計,但是這又會很快偏離真實。
添加到月影的點大約有重置基線重力和自轉...
除非該設備預計將有休息的時刻,穩定(其中作用於它的唯一力是重力)重置其測量基線,你的系統最終會發展出相當於眩暈。
尚未提及的是實際的手勢識別。這是困難的部分。清理完數據後(低通濾波,正常化等),您仍然有大部分工作要做。
看看隱馬爾可夫模型。這似乎是最流行的方法,但使用它們並不是微不足道的。通常有一個預處理步驟。首先進行STFT並將合成矢量聚類成字典,然後將其輸入HMM。在java代碼中查看jahmm的代碼。
因爲似乎沒有人提到現有庫,由OP的要求,這裏有雲:
http://www.wiigee.org/
意味着與Wiimote的使用,wiigee是模式匹配一個開源的基於Java的實現基於加速度計讀數。它使用隱馬爾可夫模型 [1]來完成此操作。
它是由一個公司,索恩技術顯然是用來很大的影響,他們已經在這裏提到他們的經驗:http://www.thorntech.com/2013/07/mobile-device-3d-accelerometer-based-gesture-recognition/
或者,你可以考慮FastDTW(https://code.google.com/p/fastdtw/)。它不如常規的DTW [2]準確,但是在計算上也較不昂貴,這在涉及嵌入式系統或移動設備時是很重要的。
[1] https://en.wikipedia.org/wiki/Hidden_Markov_model
[2] https://en.wikipedia.org/wiki/Dynamic_time_warping
編輯:OP已經在一個評論,他完成了他的計劃中提到,在該領域90%的準確率和亞毫秒計算時間,使用$1 Recognizer的變體。他還提到輪換不是他項目的標準。
非常感謝這非常有幫助。 – smaclell 2008-10-13 21:20:15
他們是否真的註冊了一個恆定的加速度?我的意思是他們應該,但它似乎反直覺:-) – 2008-10-13 23:51:06
是的,他們這樣做。把它們想象爲泉水上的羣衆,實際上報告的是「加速」的伸展/壓縮量;那麼它很直觀。 – moonshadow 2008-10-14 07:45:54