Я предполагаю, что вы используете телефон для сбора gyroscope+magnetometer
данных.
Вы не можете вычислить заголовок с Gyro+Magnetometer
, если не знаете начального состояния устройства. Вы должны попробовать Accelerometer+Magnetometer
. Вы можете получить значения курса от rotation-matrix' or
yaw` компонента от API датчика движения устройства Android/IOS.
Если вы хотите реализовать свой собственный алгоритм компенсации наклона. Все, что вам нужно сделать, это реализовать компенсацию наклона с помощью accelerometer
и magnetometer
. Вы получаете accelerometer
и magnetometer
показания в раме устройства. Accelerometer
и Magnetometer
дает показания как функцию вращения устройства. Это вращение содержит информацию о Roll, Pitch и Heading устройства. Ниже приводится объяснение и вывод оценки курса с использованием accelerometer+magnetometer
.

Tilt compensation algorithm
Пусть accelerometer
и magnetometer
дать вам

показания соответственно. Они находятся в раме устройства, а устройство повернуто на
.
Адрес:
Адрес: Таким образом, вращение матрица устройства будет
*R_x(%5Cphi)*R_z(%5Cpsi))
*R_x(%5Cphi)*R_z(%5Cpsi)*%5Cbegin%7Bbmatrix%7D&space;0%5C%5C&space;0%5C%5C&space;g&space;%5Cend%7Bbmatrix%7D)
*R_x(%5Cphi)*R_z(%5Cpsi)*%5Cbegin%7Bbmatrix%7D&space;Bcos%5Cdelta%5C%5C&space;0%5C%5C&space;Bsin%5Cdelta&space;%5Cend%7Bbmatrix%7D)
Мы должны решить для
. Так шаг за шагом решение для
.
*R_y(-%5Ctheta)*%5Cbegin%7Bbmatrix%7D&space;G_x%5C%5C&space;G_y%5C%5C&space;G_z&space;%5Cend%7Bbmatrix%7D&space;=&space;R_z(%5Cpsi)*%5Cbegin%7Bbmatrix%7D&space;0%5C%5C&space;0%5C%5C&space;g&space;%5Cend%7Bbmatrix%7D)
С выше, приравнивая к нулю, мы получаем
%5C%5C&space;tan%5Cphi&space;=&space;G_y/(-G_x*sin%5Ctheta&space;+&space;G_z*cos%5Ctheta))
Имея
из выше
*R_y(-%5Ctheta)*%5Cbegin%7Bbmatrix%7D&space;B_x%5C%5C&space;B_y%5C%5C&space;B_z&space;%5Cend%7Bbmatrix%7D)

Это основной метод получения значения заголовка от accelerometer+magentomete
. Yaw/Heading значение обеспечивается API-интерфейсом датчика движения, присутствующим в мобильных телефонах.
Довольно много вещей, которые вам нужно искать при реализации алгоритмов sensor-fusion
. Accelerometers
не всегда дает правильные показания, устройства под линейными ускорениями. Magnetometer
показания подвергаются искажениям из-за наличия ферромагнитных веществ. Точность зависит от компонента белого шума в датчике gyroscope
.
Существует множество алгоритмов для оценки точных значений курса. Некоторые из них являются
stackoverflow не о поиске/написании кода для вас, речь идет о проблемах с исправлением, которые у вас есть в вашем [существующем] коде. Покажите нам, что вы пробовали, и программисты здесь смогут вам помочь, иначе я могу предложить вам [искать с google] (https://www.google.com.ua/search?q=calculate+heading + из + Гироскоп + и + магнитометр + данные) (или просто посмотрите на боковую панель в разделе _Related_) и прекратите тратить наше время на поиск вас – ankhzet
Вопрос слишком широк в его текущей форме. Какой алгоритм вы пробовали, и где именно вы застряли? Обратите внимание, что запросы на ресурсы за пределами сайта рассматриваются здесь не по теме. – njuffa
Проверьте обратный ход, возвращенный API-интерфейсом телефона – nbsrujan