mr_kikuk Ответов: 3

акселерометр на android


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

Sergey Alexandrovich Kryukov

Кто тебе сказал, что это возможно?
--СА

mr_kikuk

хе-хе, я не знаю Сакрюкова.. как ты думаешь, это возможно?

3 Ответов

Рейтинг:
1

CPallini

Вы практически не могу: пожалуйста, смотрите следующую тему на сайте "конкуренты": "Как использовать акселерометр для измерения расстояния для разработки приложений для Android"[^].


Sergey Alexandrovich Kryukov

Ого, теперь вы видите, что мой коллега действительно кое-что знает по физике; и я уверен-не из упомянутой дискуссии. :-)
Мой 5.
--СА

Sergey Alexandrovich Kryukov

На случай, если кому-то понадобятся реальные объяснения-я постарался их дать, пожалуйста, смотрите.
--СА

Espen Harlinn

5 ЕД! - это не то, для чего он предназначен

Sergey Alexandrovich Kryukov

Согласитесь, вовсе нет.
--СА

Рейтинг:
1

Sergey Alexandrovich Kryukov

Я могу добавить некоторое объяснение к правильному ответу CPallini.

Ускорение-это вторая производная от координаты и единственная измеримая характеристика движения. Согласно принципу относительности Галилея, невозможно определить разницу между системами координат, движущимися с разными скоростями и имеющими разные точки отсчета, используя любые механические измерения. Согласно Эйнштейну, никакие физические явления не могут быть использованы, чтобы сказать это, пожалуйста, см.:
http://en.wikipedia.org/wiki/Principle_of_relativity[^],
http://en.wikipedia.org/wiki/Galilean_invariance[^].

Теоретически можно оценить смещение (и, следовательно, координаты в случае, если начальная координата известна) устройства путем измерения ускорения, но для этого требуется постоянное двойное интегрирование ускорения (опять же, ускорение является второй производной координат). Совершенно очевидно, что все ошибки имеют тенденцию накапливаться в процессе интеграции. А любой акселерометр-это устройство с присущими ему ограничениями точности: его можно поставить в условия (определенные частоты колебаний и ускорения), которые могут привести к фатальной потере точности.

Здесь есть очень важная техническая проблема: измерение и интегрирование должны выполняться непрерывно с регулярными временными интервалами, которые никогда не должны превышать некоторую максимальную частоту дискретизации. Другими словами, вычислительная система должна быть система реального времени или почти в реальном времени. Я не думаю, что Android-это что-то близкое к такой системе. Кроме того, я не уверен, что акселерометр устройства является настоящим 3D-датчиком.

Пожалуйста, смотрите:
http://en.wikipedia.org/wiki/Real-time_computing[^],
http://en.wikipedia.org/wiki/Real-time_operating_system[^].

Тем не менее, такая задача успешно решается в ракетостроении. Но движение в открытом космосе гораздо более плавное и простое, чем на Земле. Я бы сказал, что на Земле эта проблема почти безнадежна.

—СА


Espen Harlinn

Полезные вещи, мои 5 :)

Sergey Alexandrovich Kryukov

- Спасибо, Эспен.
--СА

CPallini

Мой 5.

Sergey Alexandrovich Kryukov

Спасибо.
--СА

mr_kikuk

ладно тебе Сакрюков.", на Земле эта проблема почти безнадежна " .. я устал от акселерометра. я сдаюсь. пыхтеть.
я просто хочу измерить близкое расстояние около 20 см-30 см с помощью android. можете ли вы дать мне идею? что делать, если я использую датчик приближения?

Sergey Alexandrovich Kryukov

Ладно, конечно, не акселерометр. Что касается датчика приближения, то я понятия не имею, как он работает.
--СА

Рейтинг:
1

HoshiKata

Я уже делал это раньше на земле и в ракетостроении.

Самое лучшее, что я видел, - это робот из Лаборатории Дрейпера в Кембридже. У них были ошибки в несколько сантиметров без GPS через десятки минут.
Гораздо лучше гироскопы, акселерометры и хронометраж, чем на телефоне.

На открытом воздухе в хорошую погоду проще использовать GPS и фильтр, чтобы попасть под воду, чем использовать акселерометры.

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

Глядя на 1 сеньор, скажем, ускорение, идущее влево/вправо, мы назовем это "X".
Обратите внимание, как реальное значение "x" сильно отличается от измеренного:

Xmeasured = смещение + guassianNoise + a0*x + a1*x^2 + a2*x^3 + a3*x^3 ...

Где a0-почти 1, а a1 - an-почти (не совсем) ноль, но для большинства приложений вы можете рассматривать их как ноль.
Смещение (незначительный дрейф по температуре) несколько фиксировано, и вы можете найти его для конкретной таблицы датчиков, но оно мало, но не равно нулю.

Вы можете использовать фильтры низких и высоких частот для отклонения шума и смещения (соответственно), или фильтр Калмана оценивает смещение, сравнивая его с GPS в течение нескольких минут, но ни один из них не работает очень хорошо (я пробовал).

Когда вы интегрируетесь, вы в конечном итоге интегрируете все эти ошибки. Очень маленькие вещи вызывают метры ошибок.

Кроме того, когда вы вращаете телефон, вы вращаете свою систему координат, поэтому поиск обновленного положения GPS или местоположения в комнате также усугубляется ошибками гироскопа и тем, как обновляется гироскоп / магнитометр.

Так много ошибок, так много лет, чтобы исправить это :)

Это фантастическая проблема, которую нужно попытаться решить, поэтому, пожалуйста, не отчаивайтесь полностью, но это не то, что вы можете сделать в выходные.

Ракетостроение проще, но это большая проблема, которую нужно решить, и я потратил на нее некоторое время. Очень весело.

Удачи :)


Dave Kreskowiak

Удачи? Ты ведь знаешь, что этому вопросу уже пять лет? Я сомневаюсь, что ОП все еще ищет ответ.