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

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

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

Разборка: iPhone-4, iTouch-4, iPhone-5, iTouch-5

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

Технические характеристики: LIS331DLH, L3G4200D

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

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

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

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

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


person Warren Whipple    schedule 20.10.2012    source источник
comment
Небольшое пояснение к вышеизложенному: Раньше я обнаруживал пределы 100 Гц и ± 2g для iTouch-4. Я нашел их экспериментально. Другие говорили то же самое об iPhone-4. Мой вопрос: кто-нибудь экспериментировал с iTouch-5, iPhone-5 или iPad и обнаружил те же ограничения? Или разные лимиты?   -  person Warren Whipple    schedule 23.10.2012


Ответы (3)


Я тестировал techBASIC на iPhone 5 и заметил аномалию, которая привела меня к этому обсуждению. Судя по всему, акселерометр в iPhone 5 настроен на диапазон 8G! Хотя я не могу найти никаких ссылок, подтверждающих это, демонстрация акселерометра techBASIC показала это, когда я встряхнул iPhone 5 вверх и вниз:

График ускорения на iPhone 5

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

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

person Mike    schedule 29.01.2013
comment
Это здорово и отвечает на половину моего вопроса! Спасибо! Хотели бы вы проверить, не были ли повышены ограничения на accelerometerUpdateInterval и gyroUpdateInterval со 100 Гц? Простой способ проверки объяснен в моем комментарии здесь. - person Warren Whipple; 30.01.2013
comment
Нет, по крайней мере, с менеджером движения. Я получаю частоту обновления около 0,02 секунды на выборку, иногда немного быстрее, но ничего подобного надежной частоте 100 МГц. Однако есть много способов проверить акселерометр. Возможно, вам удастся извлечь из этого немного больше. - person Mike; 01.02.2013

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

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

person BluMo.us    schedule 20.10.2012
comment
:) Я не защищал произвольные решения, я их тоже не понимаю, но подумал, что вам нужна информация. Я пытался найти способ изменить настройки через iOS, но ничего не нашел. При работе с Arduino или другими микроконтроллерами слишком легко настроить датчик, чтобы разрешить изменение этих параметров программно (на лету), чтобы поверить, что они зашиты. Пожалуйста, дайте мне знать, если вы найдете способ изменить их, даже если для этого вам понадобится разблокированный телефон. Я сделаю то же самое для тебя. - person BluMo.us; 23.10.2012
comment
Прости. Не означало, что это будет опровержением. :) Я нашел этот поток stackoverflow, где кто-то утверждает, что они смогли изменить диапазон акселерометра до ± 8g на своем взломанном iPhone со сторонним программным обеспечением. Тем не менее, нет никаких подробностей о том, как именно. - person Warren Whipple; 23.10.2012
comment
Что ж, я буду искать ответ получше. Я не уверен, что они позволят нам изменить частоту, если она была установлена ​​для ограничения использования батареи, но, как вы сказали выше, изменение минимального / максимального значения на 4G кажется очень разумным. Особенно учитывая, что большинство приложений используют акселерометр только для определения ориентации, а 2, 4 или 8G делают это с одинаковой точностью, я думаю. И вы действительно хорошо замечаете, что 1G нужен только для преодоления земного притяжения. В любом случае, я потрачу немного времени и дам вам знать, если найду что-нибудь стоящее. - person BluMo.us; 23.10.2012
comment
Если у вас есть приложение, которое вы написали для iPhone 4, и оно выводит на то, что я мог бы опубликовать (или отправить по электронной почте, что угодно), я был бы счастлив поставить его на телефон жены и встряхнуть, чтобы посмотреть, что случилось. - person BluMo.us; 23.10.2012
comment
Конечно! Вы можете проверить диапазон акселерометра с помощью AccelerometerGraph образца кода от Apple. Чтобы проверить ограничения интервала обновления: Ссылка CoreMotion.framework. Импортировать CoreMotion.h. Беги где угодно: CMMotionManager *mm = [[CMMotionManager alloc] init]; mm.accelerometerUpdateInterval = 0.001; mm.gyroUpdateInterval = 0.001; NSLog(@"%f, %f", mm.accelerometerUpdateInterval, mm.gyroUpdateInterval);. Я сразу же сбрасываю оба на 0,01. - person Warren Whipple; 24.10.2012
comment
Я прошу прощения за предложение, а затем вынужден сказать вам подождать, но мне нужно ехать по работе, и я вернусь не раньше вторника. Но тогда я попробую. B - person BluMo.us; 24.10.2012
comment
так кто нибудь узнал конфиг чипа? мои выводы таковы, что iphone 5 по какой-то причине показывает намного большее g. падение со стула дает около 3 на iphone 4, но около 7 на iphone 5 очень странно - person cjensen; 19.12.2012

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

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

person ntayefeh    schedule 26.06.2014