Что отличается между type_gyroscope и type_gyroscope_uncalibrated?

В Android 4.3 появились новые датчики, которые являются type_gyroscope_uncalibrated, magnet_field_uncalibrated, game_rotation_vector, significant_motion.

Интересно, что отличается между type_gyroscope и type_gyroscope_uncalibrated. (Я могу понять ошибку type_magnetic_field_uncalibrated и hardiron.)

Во-первых, Type_gyroscope может возвращать угловую скорость с радом / сек. Это необработанные данные! Если я использую эти значения для угла, я должен объединить значения [0], [1], [2]. Затем, Интегрированные значения (угол) имеют некоторую ошибку дрейфа.

Во-вторых, Type_gyroscope_uncalibrated может возвращать угловую скорость с значениями смещения rad / sec и смещения. В API (developers.android.com) google говорит, что значения типа_gyroscope_uncalibrated означают, что некалиброванные значения * (они сказали, что это также необработанные данные ..) *.

Вопрос 1. Тогда значения типа_gyroscope являются откалиброванными угловыми скоростями? И какова ссылка на калибровку? Интеграции нет (потому что это просто угловая скорость)!

Итак, я думаю, что смещение смещения (в типе_gyroscope_uncalibrated) означает не интеграционную ошибку смещения. И если это правда, есть ссылка для калибровки, которая является магнитным (или ускорением) значениями. Type_gyroscope может ссылаться на справочные данные и может откалибровать. Значения Type_gyroscope_uncalibrated не имеют ссылочных данных (это просто необработанные данные).

Вопрос 2. Правильно ли это? Если правильно, слово «компенсация дрейфа» API Guide должно быть правильным.

Нормальные датчики гироскопа можно динамически откалибровать, чтобы избавиться от постоянного смещения в показаниях. Большинство разработчиков могут использовать обычный гироскоп напрямую, но продвинутые пользователи, которые хотят спланировать данные (например, с помощью фильтров kalman), могут сами выполнить динамическую калибровку. В этом случае они могут использовать некалиброванный датчик, который сообщает значения [0,1,2] = uncal_x | y | z и значения [3,4,5] = biased_estimate_x | y | z Аналогично для некалиброванного магнитометра. Вас, скорее всего, интересует нормальный магнитометр.

Более подробную информацию об этих датчиках вы можете найти здесь: http://source.android.com/devices/sensors/composite_sensors.html#Uncalibrated http://developer.android.com/reference/android/hardware/SensorEvent.html#values

Вы можете откалибровать гироскоп устройства, рисуя «8» в воздухе, удерживая устройство, когда вы делаете это, вы откалибруете свой гироскоп, а это означает, что данные вашего вращения сброшены, и он вернется [0,0,0], пока он находится на плоской Поверхности и указывает на север, вы можете получить такую ​​ценность, назначив type_gyroscope .

Другая заметка: время от времени будут какие-то дрифты, а север вашего устройства не будет соответствовать фактическому северу, поэтому вы получите [0,0,0], если устройство соответствует его северу, а не фактическому северу, что вы можете Получить путем назначения type_gyroscope_uncalibrated