Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить координаты телефона, акселерометр 
:(
    Опции темы
Logo
Дата 11.5.2012, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Акселерометр телефона по запросу выдает 3 значения, x, y, z - вектор гравитации - в milli G (1000 единиц - 1 G)

Если положить телефон на стол экраном вверх, то ось z будет направлена снизу вверх, ось x справа налево, ось y от наблюдателя вперед.

Нужно
  • Запомнить положение телефона и его ориентацию, из предположения, что он находится неподвижно.
  • Отслеживать изменение положение телефона, и вычислять:
    •  Положение (Радиус-вектор) и ориентацию телефона в пространстве относительно исходной точки
    •  Вектор скорости телефона в данный момент времени относительно исходной точки
Если это возможно. Причем угловую скорость тоже хотелось бы считать.

Это сообщение отредактировал(а) Logo - 11.5.2012, 18:31
PM MAIL   Вверх
nworm
Дата 11.5.2012, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Если акселерометр всё точно выдаёт, то радиус вектор находится вычитанием из координат текущей точки координат начальной.

Скорость - первая производная радиус-вектора.
Находится численным методом, например как центральная разностная производная.

Что Вы подразумеваете под угловой скоростью не ясно.

PM MAIL WWW   Вверх
Logo
Дата 11.5.2012, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Цитата

Если акселерометр всё точно выдаёт, то радиус вектор находится вычитанием из координат текущей точки координат начальной.

Акселерометр не выдает координат начальной и конечной точки, он по сути выдает лишь вектор перегрузки. От которого и нужно посчитать радиус вектор. И ориентацию (наклон).

Цитата

Что Вы подразумеваете под угловой скоростью не ясно.

Скорость вращения телефона.
PM MAIL   Вверх
nworm
Дата 11.5.2012, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Что именно выдаёт акселерометр7
Что за вектор гравитации?
PM MAIL WWW   Вверх
Logo
Дата 11.5.2012, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Цитата

Что именно выдаёт акселерометр7
Что за вектор гравитации? 

Вектор перегрузки, не знаю как точнее сформулировать.

3 числа (x y z). Если телефон лежит на столе экраном верх, то, в идеале
Код

0 0 -1000

То есть - вдоль оси Z 1000 milli G или 1G. Если его начать резко поднимать, значение возрастет.

Вот кстати девайс, на котором тестирую в данный момент http://wiki.maemo.org/N900_accelerometer
PM MAIL   Вверх
nworm
Дата 11.5.2012, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



По ссылке в википедии скалярная величина. Надо знать что именно выдаёт акселерометр.
PM MAIL WWW   Вверх
Logo
Дата 11.5.2012, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Там не совсем полная статья, вот еще статья из вики
Цитата

Перегрузка — векторная величина, направленная в сторону изменения скорости.


Вот тут табличка, примеров значений акселерометра в зависимости от положения телефона http://wiki.maemo.org/N900_accelerometer#sysfs

Если он лежит на столе - x = 0, y = 0, z = -1000 -- 1G (ускорение свободного падения)
Если его отпустить падать (невесомость) x = 0, y = 0, y = 0
Если перевернуть, то тогда x = 0, y = 0, z = +1000 (то есть, вектор уже направлен _по_ оси Z, а не против)

Добавлено через 1 минуту и 29 секунд
Цитата

Перегрузка — векторная величина, направленная в сторону изменения скорости.

Только здесь получается вектор направлен в противоположную сторону.
PM MAIL   Вверх
nworm
Дата 11.5.2012, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



Там надо более детально разбираться. Телефон лежит, изменение скорости 0, а перегрузка есть.
PM MAIL WWW   Вверх
Logo
Дата 11.5.2012, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Да 1G.
Цитата

Перегрузка (авиация) --- Перегрузка в 1 единицу (или 1g) означает прямолинейный полет,

В норме перегрузка равна 1G.

Фактически выходит, что вектор, выдаваемый акселерометром, равен
 -(вектор ускорения телефона) + (вектор от силы тяжести, или ускорения свободного падения)
Где вектор ускорения свободного падения всегда направлен в сторону земли и равен по модулю 1G или 1000 mili G.

Это сообщение отредактировал(а) Logo - 11.5.2012, 22:14
PM MAIL   Вверх
Logo
Дата 11.5.2012, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Или, если представить датчик акселерометра как некий шарик в нем, вектор показывает ускорение этого шарика относительно телефона, которое он бы получил, если бы его отпустили. Под действием сил тяжести и инерции.
PM MAIL   Вверх
maxim1000
Дата 12.5.2012, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



по одному только вектору ускорения не получится, и проблема именно в поворотах

телефону можно придать горизонтальное и вертикальное ускорение так, что длина вектора ускорения останется 1G, а направление изменится

при повороте телефона будут те же показатели

нужна дополнительная информация (гироскоп, компас, второй акселерометр)


--------------------
qqq
PM WWW   Вверх
Logo
Дата 12.5.2012, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



Да, прочитал статьи, походу с одним акселерометром не получится определять положение телефона, по крайней мере точно. Придется искать другую машинку.

Правда я не очень понял, почему.
Цитата

при повороте телефона будут те же показатели

При повороте, поидее, вследствии центробежной силы, кажущуюся ускорение должно быть больше 1G.

P.S.
Цитата

Вектор перегрузки, не знаю как точнее сформулировать.

Правильно называется кажущуюся ускорение, оказывается.

Добавлено через 4 минуты и 57 секунд
Цитата

Да, прочитал статьи, походу с одним акселерометром не получится определять положение телефона, по крайней мере точно. Придется искать другую машинку.

Можно, наверно, использовать камеру вместо гироскопа, но без готовой библиотеки замучаешься писать, да и костыль.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.