Как конвертировать ускорение устройства в глобальное ускорение

AminSojoudi спросил: 28 апреля 2018 в 08:33 в: c#

Я разрабатываю приложение единства для Android, которое должно измерять движение устройства с помощью акселерометра. Проблема в том, что эти значения содержат гравитацию. Некоторые говорят, что для снятия гравитации мне нужно преобразовать ускорение в глобальное ускорение, а затем просто удалить гравитацию с оси Z, но я не знаю, как это сделать? Есть ли какая-либо особенная функция единства?

Спасибо


1 ответ

AminSojoudi ответил: 28 апреля 2018 в 11:02

Эта тема на форуме Unity разоблачает:

https://forum.unity.com/threads/unity-and-the-accelerometer-vs-the-gyroscope-a-complete-guide .451496 /

Как "inkredibl" от Unity Technologies говорит:

В Unity Gyroscope.rotationRate отображаются реальные данные гироскопа, все остальные свойства этого класса использовать другие датчики (если они имеются), с более точными оценками реальных движений устройства. Gyroscope.gravity и Gyroscope.userAcceleration относятся к акселерометру, но с помощью других датчиков они имеют гравитацию, отделяемую от устройства ускорение, чтобы облегчить использование разработчиками (но это опять-таки оценка, они неэффективны, достаточно близко).

Итак, Gyroscope.userAcceleration - это ответ на этот вопрос.

Input.acceleration - это данные акселерометра, и он измеряется в мультипликаторах g (гравитация Eearth), поэтому его величина равна 1, когда устройство не перемещается. Попробуйте выполнить его регистрацию, когда устройство поднято в воздухе, и оно должно быть близко к нулю (это потому, что устройство находится в свободном падении в этот момент). Compass.rawVector ismagnetometer, и снова все другие свойства этого класса были получены с использованием различных датчиков не только магнитометра.