Перейти к содержанию
Fire Monkey от А до Я
  • 0

Ориентация на Север и углы наклона телефона


Bob32

Вопрос

Добрый день, Друзья!

Имеем Delphi 10.3 Community Edition

Пытаюсь с помощью компонент TOrientationSensor и TMotionSensor получить три адекватных угла - азимут на Север, и два угла наклона телефона.


Действую так :

(алгоритм и теорию взял отсюда https://cache.freescale.com/files/sensors/doc/app_note/AN4248.pdf )


1) получаю данные акселерометра .
Gx:=MotionSensor1.Sensor.AccelerationX;
Gy:=MotionSensor1.Sensor.AccelerationY;
Gz:=MotionSensor1.Sensor.AccelerationZ;
2) получаю данный вектора магнитной индукции
Bx:=OrientationSensor1.Sensor.HeadingX;
By:=OrientationSensor1.Sensor.HeadingY;
Bz:=OrientationSensor1.Sensor.HeadingZ;

далее по формулам из ссылки рассчитываю эти углы. Все получается, но есть такая проблема:
- Углы скачут, нет плавности, стоит пошатать немного телефон и получаешь разброс по 20..30 градусов.
Это жутко контрастирует с плавностью хода, которые демонстрируют другие приложения, например компаса, на ПлейМаркете.

Ставил в качестве теста apk-шку приложения под андроид, которое использует два метода -
GetRotationMatrix и GetOrientation - работает офигенно плавно.
Но алгоритм, исползуемый в этих методах неизвестен.

ВОПРОС: решали ли кто-то адекватно эту задачу под Дельфи? как ? может как-то можно из среды Дельфи вызывать эти методы (GetRotationMatrix и GetOrientation)?

Близок к отчаянию - вторую неделю бьюсь (
Буду признателен за любой дельный совет.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Ребята, есть проблемы.

1) наши углы - не верные. особенно третий угол- он вообще непонятно что представляет.

понимаю, что все что мы делаем - это вызываем стандартные методы (и они вызываются и работают) - но факт остается фактом.

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

 

Для того, чтобы это было понятней - привожу две программы - первая это апк файл из первой статьи этого автора с хабра (где используется устаревший метод) - файл androidsensors.zip

вторая программа - это наш проект в "доповоротоном" виде (в первоначальном виде) - файл sensman.zip

третья программа - это наша программа с фиксом по ориантации экрана - sensman_fix.zip

AndroidSensors.zip

SensMan.zip

SensMan_fix.zip

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...