此文主要描述并使用MMA7260QT三軸加速計和低功耗的9S08QG8八位單片機實現(xiàn)求解位置的算法?。
在今天先進的電子市場,有不少增加了許多特性和智能的多功能的產(chǎn)品。定位和游戲只是得益于獲取到的位置信息的一部分市場。一個獲取這種信息的可選方案是通過使用慣性傳感器。從這些傳感器中取得的信號需要進行一些處理,因為在加速度和位置之間沒有一種直接轉(zhuǎn)換。
為了獲得位置,需要對加速度進行二次積分。本文介紹一種簡單的算法實現(xiàn)加速度的二重積分。為了獲取加速度的二重積分,一個簡單的積分要進行兩次,因為這樣也可以順便獲取速度。
接下來要展示的算法,能夠應(yīng)該于任何傳感軸,所以一維、二維、三維的位置都可以被計算出。當在獲取三維位置信息時,要特別地除去重力加速度的影響。下面的算法實現(xiàn)還包括了一個二維系統(tǒng)的例子(比如鼠標)。
?
應(yīng)用潛力
這種算法的應(yīng)用潛力在于個人導(dǎo)航、汽車導(dǎo)航和(back-up)GPS、防盜設(shè)備、地圖追蹤、3D游戲、計算機鼠標等等。這類產(chǎn)品都需要用到求解位置信息的算法。
本文所介紹的算法在位移精度要求不是很嚴格的情況下很有用。其他的情況和影響特別是應(yīng)用,當采用本文算法時,需要考慮一下。對最終程序進行微小的修改和調(diào)整,這種算法能夠達到更高的精度。
?
理論知識和算法
理解本文算法的最好方法是回顧一下數(shù)學(xué)上的積分知識。
加速度是一個對象速度的變化速率。同時,速度是同樣一個對象位置的變化速率。換句話說,速度是位置的導(dǎo)數(shù),加速度是速度的導(dǎo)數(shù),因此如下公式:

積分和導(dǎo)數(shù)相反。如果一個物體的加速度已知,那么我們能夠利用二重積分獲得物體的位置。假設(shè)初始條件為0,那么有如下公式:

一個理解這個公式的方法是將積分定義成曲線下面包圍的區(qū)域,積分運算結(jié)果是極小區(qū)域的總和,區(qū)域的寬度趨近于0。換句話說,積分的和表示了一個物理變量的大小(速度)。

利用前面的一個概念——曲線下面的區(qū)域,我們能得出一個結(jié)論:對一個信號采樣,得到該信號大小的瞬時值,所以能夠在兩次采樣之間得到一個小的區(qū)域。為了獲得連貫的值采樣時間必須相同。采樣時間代表這塊區(qū)域的寬,同時采樣得到的值代表區(qū)域的高。為了消除帶有分數(shù)的乘法(微秒或毫秒),我們假定時間為一個單位。
現(xiàn)在,我們知道了每個代表區(qū)域?qū)挾鹊牟蓸訒r間等于1。下一個結(jié)論是:
積分的值可以約等于區(qū)域面積之和。
如果采樣時間趨近于0,那么結(jié)論將是正確的。但在實際中,將會產(chǎn)生如下錯誤,在處理的過程中,這個誤差將會一直累積。

這些錯誤稱為采樣損失。為了減少這些錯誤,我們再做進一步的假設(shè)。結(jié)果區(qū)域能夠看成由兩塊小的區(qū)域的組合:

區(qū)域1是前一次采樣的值(方形),區(qū)域2是一個三角形,是前一次采樣和當前采樣之差的一半。
通過這種方法,我們現(xiàn)在有一個一階近似(插值)的信號。

現(xiàn)在的錯誤比以前的近似的低得多。
盡管加速度有正有負,但采樣的值總是正的(基于MMA7260QT的輸出特性),因此需要做一個偏移判斷,換句話說,需要一個參考。這個程序即為校準程序。
校準程序用于在沒有移動情況下的加速度值上。這時,獲得的加速度值可以看成是零參考點。低于零參考點的值代表負值(減速),高于零參考點的值代表正值(加速)。
加速度計的輸出范圍為0v到Vdd,并且它通常由AD轉(zhuǎn)換器得到。0值接近Vdd/2。前面獲得的校準值會被芯片的方向和分解在各軸的靜態(tài)加速度(重力加速度)所影響。如果裝置剛好平行于地球表面,那么校準值將會很接近Vdd/2。
接下來的這張圖用于展示校準程序的結(jié)果。

從采樣的信號減去零參考值,我們獲得真正的采樣加速度。

A1代表正加速度,A2代表負加速度。
如果我們將這數(shù)據(jù)看作是采樣數(shù)據(jù),那么信號值將和下圖非常接近。


通過使用上面的積分公式,F(xiàn)ormula 1,我們將獲得速度的比例近似值。同樣,為了獲取位置,需要再進行一次積分。在獲得的速度數(shù)值上應(yīng)用相同的公式和步驟,我們現(xiàn)在獲得了一個瞬時位置的比例近似值。(見圖6)

軟件設(shè)計相關(guān)注意事項
當在現(xiàn)實世界的實現(xiàn)中應(yīng)用這種算法,應(yīng)該考慮一下下面的步驟和建議:
1.信號存在一定的噪聲,所以信號必須經(jīng)過數(shù)字濾波。本算法中的濾波是一種移動平均算法,要處理的值是一定數(shù)量采樣值的平均結(jié)果。
2.即使以前過濾的一些數(shù)據(jù)可能由于機械噪聲導(dǎo)致錯誤,所以必須實現(xiàn)另一個濾波器。根據(jù)過濾的樣品數(shù),一個真實加速度的窗口能夠被選擇(一般為16±2采樣次數(shù))。
3.無運動狀態(tài)對獲得正確的數(shù)據(jù)是至關(guān)重要的。校準例程需要在應(yīng)用程序的開頭。該校準值必須盡可能準確。
4.加速度的真實值等于采樣值減去校準值;它可以是正數(shù)或負數(shù)。當你在定義變量的時候,這絕對不能被忽略,需要定義為有符號數(shù)。
5.更快的采樣頻率意味著更精確的結(jié)果,因為采樣頻率越快誤差越少。但是需要更多的內(nèi)存、時間和硬件方面的考慮。
6.兩次采樣之間的時間必須要相同。如果這個時間不相同,將會產(chǎn)生錯誤。
7.兩次采樣結(jié)果之間的線性近似值(插值)被推薦用于更精確的結(jié)果。