簡體   English   中英

在加速度計數據上應用一些過濾器-Windows Phone 8,C ++

[英]Applying some filter on my accelerometer data - Windows phone 8, C++

我將來自加速度計X的數據放入一艘太空飛船中,以便當您左右傾斜手機時,它會左右搖擺(略微滾動)。

我之所以設定一個比率,是因為如果手機傾斜到-1或1(全傾斜),我希望太空飛船僅旋轉一半。

// accelerometer = Accelerometer::GetDefault();
// player->maxTitle = 0.5 (half of full accelerometer tilt)
double accelX = accelerometer->GetX();
player->currentRotation = ( accelX * player->maxTilt );

最初,這種方法確實工作得很愉快而且效果很差,所以我在間隔設置方面發揮了作用,雖然有了很大的改進,但仍然很爛……現在相當敏感。

accelerometer = Accelerometer::GetDefault();
int reportInterval = 16;
if( accelerometer->MinimumReportInterval > reportInterval )
{
    accelerometer->ReportInterval = reportInterval;
}

所以我假設我需要做某種低過濾的事情,維納過濾器是嗎? 平滑價值...我可以在進行此類操作時獲得一些提示和技巧嗎?

我已經嘗試了一些公式,但是很難讓它們起作用... http://forum.arduino.cc/index.php/topic,10716.0.html

低通濾波器的離散等效項是為了限制多個讀數之間的差異。 這種差異不應太大,否則會出現生澀的行為。 因此,如果是這樣,則忽略加速度計值,並用先前的值加上最大允許差值代替。

假設讀數為1 6 9且最大變化為4,則將6替換為5。現在差異變為4 4而不是5 3,這確實更平滑。 甚至還有更平滑的過濾器(使用更多狀態),但這應該已經有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM