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)?
Близок к отчаянию - вторую неделю бьюсь ( Буду признателен за любой дельный совет.
Вопрос
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)?
Близок к отчаянию - вторую неделю бьюсь (
Буду признателен за любой дельный совет.
Ссылка на комментарий
26 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.