2014-02-26 1 views
2

나는 내 Windows Phone 8에서 10ms마다 가속도계 판독 값을 얻고 싶지만 그 대신 약간의 지터를 관찰합니다. 판독 값 사이의 간격은 8,10,12,9 등이됩니다. 그래서 대략 10이지만 정확하게는 아닙니다.windows phone accelerometer jitter

누군가 신뢰할 수있는 판독 방법을 제안 할 수 있는지 궁금합니다.

내 코드의 핵심은 다음과 같습니다

var accelerometer = Windows.Devices.Sensors.Accelerometer.GetDefault(); 
accelerometer.ReadingChanged += accelerometer_ReadingChanged; 
accelerometer.ReportInterval = 10; 

전화 보고서 (10)의 MiminumReportingInterval, 즉 잘되어야하므로. 내 콜백은 번호를 목록에 추가하기 만하면됩니다. 마지막에 네트워크를 통해 보낼 것입니다.

나는 AccelerometerReadingChangedEventArgs.Timestamp에서 시간을보고 있는데, 그 시간 간격은 항상 10ms가 아니라는 것을 알 수 있습니다. 여기에 시간이 최신 측정에서 어떻게 생겼는지입니다 : 105118128134146157163177187198208213232238245255263279285295303,313,324,334,345,355,363,375,385

을 그래서 : 내가 더 정확하게 간격 측정을 얻기 위해 할 수있는 일이? 아니면이 특정 하드웨어가 할 수있는 최상의 것입니까?

답변

3

자세한 내용은 가속도계를 다루는 a great article on Windows Phone Developer Blog이 있습니다.

기사의 요점 중 하나는 값의 스트림이 '지저분한'것이므로 대부분 필터링 방법을 구현해야한다는 것입니다. 이러한 방법 중 하나는 저역 통과 필터입니다.

필터링 후 데이터가 더 매끄러 워지면 실제 변경과 읽기 사이의 지연이 커집니다. 즉, 게임에서 가속도계를 '스티어링 휠'로 사용하면 많은 필터링으로 인해 늦은 자동차 선회가 발생하지만 필터링을 수행하지 않으면 불안한 차가 발생할 수 있습니다. 따라서 유스 케이스에 따라 중간에 설정하는 것이 가장 좋습니다.

+0

감사합니다. @igrali,하지만 기사에서는 측정 된 값의 오류에 대해 말했지만, 내가 묻는 것처럼 측정 타이밍의 오류에 대해서는 언급하지 않았습니다. 나는 필터링하는 것을 이해하지만 정확한 측정 값을 얻을 수있는 다른 측정 방법이 있기를 바랬습니다. – fishingpole