Изменения в ограничениях акселерометра/гироскопа для iPhone 5/5th Gen iPod Touch? - программирование
Подтвердить что ты не робот

Изменения в ограничениях акселерометра/гироскопа для iPhone 5/5th Gen iPod Touch?

Назад, когда вышел iPhone 4 и 4-го поколения iPod Touch, я собирался с помощью алгоритмов слияния с Apple Core Motion, чтобы узнать, могу ли я получить какие-либо интересные результаты для очень локальных мертвых расчётов (в диапазоне от нескольких дюймов или ноги). Я не ожидал ничего впечатляющего, учитывая относительно низкие характеристики датчиков MEMS. И хотя свойство "Яблоки" CMDeviceMotion gravity использует достойный (хотя и непрозрачный) алгоритм слияния с датчиком, дополнительное свойство userAcceleration точно не нацелено на мертвую расчёт. Тем не менее, я думал, что там может быть достаточно, чтобы немного повеселиться.

iPhone 4, iPhone 5, 4-го поколения iPod Touch и пятый Gen iPod Touch, по-видимому, используют акселерометр STMicroelectronics LIS331DLH и гироскоп L3G4200D. (На самом деле, я еще не видел номер детали для гироскопа iTouch-5, поэтому он может быть другим.)

Teardowns: iPhone-4, iTouch-4, iPhone-5, iTouch-5

Спецификации ST показывают, что акселерометр может пробовать при 1000 Гц до ± 8 г. И этот гироскоп мог пробовать при 800 Гц до ± 2000 д/с.

Спецификации: LIS331DLH, L3G4200D

Но, играя с моим 4-го поколения iPod Touch (как iOS 5, так и iOS 6), я могу только проверять частоту дискретизации до 100 Гц. Если я установил CMMotionManager deviceMotionUpdateInterval значение менее 0,01, он автоматически сбрасывается до 0,01. То же самое для accelerometerUpdateInterval и gyroUpdateInterval.

Кроме того, выход акселерометра всегда кажется ограниченным примерно на ± 2 г.

Я видел, как другие отмечают подобные оценки для iPhone 4.

Обе эти границы сильно ограничивают локальные вычисления ускорения, которые я могу выжать из устройства (экспериментируя с моим iPod Touch четвертого поколения). Я предполагаю, что Apple установила эти ограничения на низком уровне, чтобы снизить энергопотребление. Хотя я не знаю, установлены ли они в аппаратном обеспечении или в iOS где-то.

Кто-нибудь играл с этими акселерометрами и гироскопами на iPhone 5 или 5-го поколения iPod Touch? (Или любые iPads, если на то пошло?) Любые частоты дискретизации выше 100 Гц? Любые измерения акселерометра вне границ ± 2g?

4b9b3361

Ответ 1

Я тестировал TechBASIC на iPhone 5 и заметил аномалию, которая привела меня к этой дискуссии. По-видимому, акселерометр в iPhone 5 установлен в диапазон 8G! Пока я не могу найти никаких ссылок, чтобы подтвердить это, демонстрация акселерометра TechBASIC показала это, когда я потряс iPhone 5 вверх и вниз:

Plot of Acceleration on an iPhone 5

Это довольно интересно для физических приложений. Я использовал SensorTag для измерения ускорения в модельной ракете, потому что у нее есть дополнительный диапазон 8G, а iPhone - нет - теперь вы можете отказаться от SensorTag и просто использовать iPhone.

http://www.youtube.com/watch?v=8YNjwcNXOK4 iPhone Rocket

Ответ 2

Из прочтения, которое я сделал, вы обычно имеете 2-3 варианта при определении того, какие показания min/max будут считываться акселерометром. 2G - чрезвычайно распространенный вариант для акселерометров, потому что следующий шаг (8G) обычно является грубым показанием для получения точных измерений, необходимых при работе с движением руки. Если вы отбросили его от здания, чтобы измерить силу удара по земле, вы хотели бы использовать 8G (или 16G как некоторое предложение).

Похоже, что Гц намеренно закрывается на 100 Гц согласно людям в Corona Labs. Похоже, это не должно злоупотреблять батареей. Я читал, что акселерометр является наименее энергоемким датчиком, но я думаю, что это все относительно или есть резкое увеличение использования энергии в какой-то точке около 100 Гц.

Ответ 3

Чтобы ответить на другую половину вопроса, я использую iPad Mini, и когда я использую предложение Уоррена Уиппла, я обнаружил, что accelerometerUpdateInterval и gyroUpdateInterval будет reset до 0.01 немедленно, если я установлю их на меньшее значение.

Однако, когда я запускаю диагностические тесты на устройстве, я обнаружил, что реальная скорость обновления акселерометра или гироскопа ближе к 0,02 с, т.е. если я установил значение accelerometerUpdateInterval в 0,01 с и данные акселерометра запроса на 0.01 с, я получаю уникальное чтение для каждой другой выборки, но если я установил ее на 0,02 с (или запрос через 0,02 с), я получаю уникальное чтение для каждой выборки.