реклама на сайте
подробности

 
 
> Угловая компенсация компаса, LSM303D
rat
сообщение May 7 2014, 10:07
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 497
Регистрация: 9-06-05
Из: Новосибирск
Пользователь №: 5 852



День добрый. Запустил LSM303D. Данные с магнитного датчика, акселерометра и датчика температуры идут на ура. Направление на севео посчитал по формуле:

180*atan2f(magnetic_Y, magnetic_X)/3.1415 с коррекцией отрицательного угла.

Работает нормально, если выставлен по уровню(горизонтирован).
Углы крена и тангажа:

pitch = asinf(-acceleration_X);
roll = asinf(acceleration_Y / cosf(pitch));

Тоже считаются верно.

Потом попытался компенсировать углы крена и тангажа, когда компас не горизонтирован. Считал по формуле:

xh = magnetic_X * cosf(pitch) + magnetic_Z * sinf(pitch);
yh = magnetic_X * sinf(roll) * sinf(pitch) + magnetic_Y * cosf(roll) - magnetic_Z * sinf(roll) * cosf(pitch);

angle_compensated= 180*atan2f(yh, xh)/3.1415;

Считает неправильно. Прошу знающих комрадов подсказать - где ошибка в формуле?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01326 секунд с 7
ELECTRONIX ©2004-2016