WedX - журнал о программировании и компьютерных науках

Обнаружение движения независимо от вращения устройства

Я ищу способ обнаружить движение телефона независимо от того, как пользователь держит телефон.

Некоторые примеры:

  • Меня интересует вертикальное движение (например, пользователь тянет телефон вверх), «игнорирующее», если телефон лежит на столе или держится в руке (может быть, вверх ногами).
  • Также интересует горизонтальное движение (например, пользователь отталкивает телефон от тела), а также «игнорирование» того, как пользователь держит телефон.

Фоном является то, что я хочу распознать, вытаскивает ли пользователь телефон из кармана (например, тянет на 30-40 см вверх, а также на несколько сантиметров по горизонтали).

Я думаю, что поэтому мне нужно получить комбинацию из userAcceleration и отношения. Но я не нашел правильной математики ..

12.09.2014

  • Вы хотите обнаружить движение встряхивания? 12.09.2014
  • Нет. Я хочу обнаруживать движения в «пространстве», например, потянуть телефон на несколько сантиметров вверх или вперед, независимо от того, как пользователь держит телефон. 12.09.2014
  • Я думаю, что поэтому мне нужно получить комбинацию из userAcceleration и отношения. Но я не нашел правильной математики .. Можете уточнить это утверждение? (т.е. покажите нам, что вы уже пробовали) 17.05.2016

Ответы:


1

Не уверен, что вы имеете в виду под «правильной математикой». Но я бы считал показания акселерометра и суммировал абсолютные значения для всех трех направлений (x / y / z). Это даст вам единое число для ускорения, независимо от ориентации телефона или направления движения.

Еще лучше было бы вычислить среднеквадратичное ускорение, то есть сложить квадраты ускорения x / y / z и вычислить квадратный корень из суммы.

Очевидным недостатком этого метода является то, что он не дает вам информации о направлении движения. Вы можете добавить некоторый порог или фильтрацию, чтобы отличать одиночное линейное движение от тряски (например, путем измерения времени между двумя событиями ускорения).

Кроме того, вы можете определить изменение высоты (это не зависит от ориентации телефона), хотя я сомневаюсь, что разницу в 30 ... 40 см можно измерить достаточно точно.

17.05.2016

2

Возможно, вы сможете это сделать, если ваше приложение находится на переднем плане. Вы можете определить, в каком ландшафте находится телефон, используя UIDeviceOrientationLandscapeLeft, UIDeviceOrientationLandscapeRight и UIDeviceOrientationPortraitUpsideDown/UIDeviceOrientationPortrait, и оттуда настроить способ расчета движения.

Вероятно, он сместится, когда поднимут трубку. Это изменение с помощью акселерометра может дать вам представление о том, как движется телефон. Однако для этого потребуется тонна тестирования. Я бы настроил ваше практическое приложение и получил бы большой объем данных об изменении ориентации экрана и о том, как акселерометр ведет себя при каждом изменении, и поищу тенденции.

17.05.2016
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]