2012-05-22 64 views
4

我正在工作的自行車電腦應用程序。我希望能夠使用加速度計計算出斜坡的傾斜度,但事情並不是很順利。不好加速度計數據與振動

我已經把測試碼獲取傳感器數據,我只是在UI速率smapeling並保持移動平均值超過128個樣本,其是大約6秒的價值。手中的電話數據是好的,我可以計算一個很好的角度相比,我的校準平面向量。

隨着手機安裝在自行車上的事情並不是很好。我期望得到一點點的噪音,但我希望大時間窗口內的大量樣品可以消除振動效應和一般的自行車運動。不幸的是,這只是不起作用,加速度矢量的大小並不是真的停留在9.8的標記附近,而是下降,這表明我的某個地方不對。

下面是來自測試騎行部分的數據圖。 enter image description here

正如你可以看到當靜止在開始時的幅度是確定的,但一旦我走了它下降。我相當確定問題在於我最初下降的振動,然後我爬了一下,然後振動較小,幅度回到9.8,但隨後我在一條不好的路上快速下降,幅度最終小於3 。

這是與SonyErricson的Xperia主動其使用BMA250 sensor的datasheat看起來像傳感器應當能夠。我唯一的理由是問題的原因是範圍設置爲2g範圍,振動導致數據超出範圍,這是我的問題。

有沒有人看過類似的東西? 有沒有人對問題的原因有任何想法?
有沒有辦法改變我沒有找到的靈敏度?

其他信息。

OK我在過濾之前記錄了原始傳感器數據。一個非常小的部分這裏 Small sample of raw data 長軸是在綠色和在平坦呈現爲我相信這應該是沒有振動它應該是約8.5。數據沒有明顯的限制,但是我得到的數值比8.5數值低8.5以上。即使傳感器設置爲最敏感的2g範圍,它看起來像振動shgould應該我有一個最大值在這裏剛剛超過15和最低-10井ib a + - 20 ragnge只是沒有正確居中8.5應該是。

我會挖掘出我的其他手機,它看起來有一個稍微不同的傳感器BMA150,然後嘗試使用,但除非它是完美的,我認爲我將不得不放棄這個想法。

+0

等一等。你下降了,G下降了,你爬了,G上升了?這不正是應該發生什麼?至少,當你加速下來,或加速。 +1的美妙數據,順便說一句。 –

+1

我以較慢的速度加速下行,反向上行。情節中的x軸以秒爲單位,因此在情節中約值10分鐘。如果我真的可以做這種加速數分鐘,我會很高興.... – Ifor

回答

1

我懷疑加速度計在如此大的G範圍內不是線性的。如果是這樣,並且如果有任何不對稱,它會做你所看到的。

該解決方案是墊加速度計安裝有點多,泡沫橡膠,蹦極簾線,不管,可能將其安裝在一個更重的階段來過濾振動更多。

或者(不是一個好的解決方案)嘗試對錯誤進行建模並對其進行補償。

+0

是的,我會修改我的坐騎試圖阻止最壞的振動,看看這會有所幫助。長期來看,如果典型的傳感器是這樣的,我認爲我不能將該功能放入發佈的應用程序中。數據表並未表明BMA250的不良非線性。它說±0.5%的最適合的直線對我來說聽起來不錯。 – Ifor

+0

我沒有看到線性規範(某些信息在我的PDF查看器中作爲方塊字符出現)。但是,在曲線彎曲的地方必須限制,儘管可能超出了數字化儀限制的範圍。應該很容易去除你的移動平均值,並且在某個最大值處查看各個點的鉗位。夾緊,你可以用一個噪音分佈模型來處理,基本上可以預測有多少被夾住。 –

+1

雖然看起來像鉗位或限制,因爲g(z> y> x)越高,傾角越大。 –

1

我幾年前使用相同的手機和巧合的6秒相同的平均間隔爲一個應用程序,我不記得看到圖中的行爲。

我想知道問題是否以6秒平均值的方式積累。我遇到的一個問題是採樣間隔不是恆定的,而是取決於處理器的繁忙程度。在指定的時間內獲取樣本,但事件處理程序的調用取決於調度程序。當處理器卸載時,採樣頻率是固定的,但隨着處理器工作的越來越頻繁,採樣頻率變得越來越慢,越來越不穩定。您可以編寫應用程序以在採樣時保持處理器負載較低。我們所做的是6秒鐘樣本,不做其他事情,然後停止採樣並處理最後一個樣本集,但這只是部分成功,因爲您無法控制同時運行的其他應用程序,並且調度程序正在他們之間共享處理器資源所有。在Xperia Active上,我發現它偶爾可能會在樣本間隔幾秒之後被歸因於其中一個JVM的垃圾回收。我們的解決方案是對每個樣品進行時間標記,然後對樣品組進行一些質量檢查,並丟棄質量檢查不合格的樣品。這是一個糟糕的解決方案,因爲定義足夠好的內容不夠精確,而當用戶運行使用大量資源的另一個應用程序時,大多數樣本集可能會被丟棄,因此應用程序需要額外的邏輯來處理該問題。

當前的Android API在Xperia Active上不可用,應該已經消除了這種情況,因爲可以按照https://source.android.com/devices/sensors/hal-interface.html#batch_sensor_flags_sampling_period_maximum_report_latency中所述批量抽樣。

如果算法採用了特定數量的樣本,而不是計數它們,並且處理器工作得越快,儘管我不確定它爲什麼會這樣,但它會產生類似於第一張圖的內容,因爲當自行車正在走下坡路,下山時走上坡路時會上升。這裏有很多猜測,但是根據我對這種傳感器的經驗,6秒的平均值小於3米/秒^ 2看起來難以置信。

+0

感謝您的意見。我仍然沒有看到我會看到一致的閱讀錯誤。我真的應該用我的新Z3 Compact重新啓用代碼(假設我沒有太多的東西),看看它的樣子。 – Ifor