| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Определить координаты телефона, акселерометр |
| Автор: Logo 11.5.2012, 18:30 |
| Акселерометр телефона по запросу выдает 3 значения, x, y, z - вектор гравитации - в milli http://ru.wikipedia.org/wiki/%D0%93%D1%80%D0%B0%D0%B2%D0%B8%D1%82%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%B0%D1%8F (1000 единиц - 1 G) Если положить телефон на стол экраном вверх, то ось z будет направлена снизу вверх, ось x справа налево, ось y от наблюдателя вперед. Нужно
|
| Автор: nworm 11.5.2012, 18:40 |
| Если акселерометр всё точно выдаёт, то радиус вектор находится вычитанием из координат текущей точки координат начальной. Скорость - первая производная радиус-вектора. Находится численным методом, например как центральная разностная производная. Что Вы подразумеваете под угловой скоростью не ясно. |
| Автор: Logo 11.5.2012, 20:13 | ||||
Акселерометр не выдает координат начальной и конечной точки, он по сути выдает лишь вектор перегрузки. От которого и нужно посчитать радиус вектор. И ориентацию (наклон).
Скорость вращения телефона. |
| Автор: nworm 11.5.2012, 20:55 |
| Что именно выдаёт акселерометр7 Что за вектор гравитации? |
| Автор: Logo 11.5.2012, 21:17 | ||||
Вектор http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_(%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0), не знаю как точнее сформулировать. 3 числа (x y z). Если телефон лежит на столе экраном верх, то, в идеале
То есть - вдоль оси Z 1000 milli G или 1G. Если его начать резко поднимать, значение возрастет. Вот кстати девайс, на котором тестирую в данный момент http://wiki.maemo.org/N900_accelerometer |
| Автор: nworm 11.5.2012, 21:20 |
| По ссылке в википедии скалярная величина. Надо знать что именно выдаёт акселерометр. |
| Автор: Logo 11.5.2012, 21:56 | ||||
Там не совсем полная статья, вот еще http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0_(%D0%B0%D0%B2%D0%B8%D0%B0%D1%86%D0%B8%D1%8F)
Вот тут табличка, примеров значений акселерометра в зависимости от положения телефона 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 секунд
Только здесь получается вектор направлен в противоположную сторону. |
| Автор: nworm 11.5.2012, 22:04 |
| Там надо более детально разбираться. Телефон лежит, изменение скорости 0, а перегрузка есть. |
| Автор: Logo 11.5.2012, 22:14 | ||
Да 1G.
В норме перегрузка равна 1G. Фактически выходит, что вектор, выдаваемый акселерометром, равен -(вектор ускорения телефона) + (вектор от силы тяжести, или ускорения свободного падения) Где вектор ускорения свободного падения всегда направлен в сторону земли и равен по модулю 1G или 1000 mili G. |
| Автор: Logo 11.5.2012, 22:39 |
| Или, если представить датчик акселерометра как некий шарик в нем, вектор показывает ускорение этого шарика относительно телефона, которое он бы получил, если бы его отпустили. Под действием сил тяжести и инерции. |
| Автор: maxim1000 12.5.2012, 09:08 |
| по одному только вектору ускорения не получится, и проблема именно в поворотах телефону можно придать горизонтальное и вертикальное ускорение так, что длина вектора ускорения останется 1G, а направление изменится при повороте телефона будут те же показатели нужна дополнительная информация (гироскоп, компас, второй акселерометр) |
| Автор: Logo 12.5.2012, 09:51 | ||||||
| Да, прочитал статьи, походу с одним акселерометром не получится определять положение телефона, по крайней мере точно. Придется искать другую машинку. Правда я не очень понял, почему.
При повороте, поидее, вследствии центробежной силы, кажущуюся ускорение должно быть больше 1G. P.S.
Правильно называется кажущуюся ускорение, оказывается. Добавлено через 4 минуты и 57 секунд
Можно, наверно, использовать камеру вместо гироскопа, но без готовой библиотеки замучаешься писать, да и костыль. |