Я пытаюсь получить курс от датчика MPU-9250, который содержит гироскоп, акселератометр и магнитометр, используя Arduino.
Для моего продукта мне нужно получить рулон и курс от устройства,Я уже понял, как получить рулон.Используя библиотеку Boulderflight MPU-9250, я смог определить бросок, используя:
roll = 180 * atan(accY/sqrt(accX*accX + accZ*accZ))/M_PI;
Я нашел этот расчет где-то, и он, кажется, работает хорошо, я должен признать, что на самом деле не знаю, как онработает.
Для заголовка, который я нашел:
if (magY > 0) { heading = 90 - atan(magX/magY)*(180/M_PI); }
else if (magY < 0) { heading = 270 - atan(magX/magY)*(180/M_PI); }
else if (magY == 0 && magX < 0) { heading = 180; }
else if (magY == 0 && magX > 0) { heading = 0; }
Сначала это, похоже, сработало, но как только вы «свернули» устройство, сохранив заголовок, значениязаголовок повсюду.
Есть ли у кого-нибудь хороший фрагмент кода для определения заголовка с помощью гироскопа, акселерометра или магнитометра (в C ++, с использованием Arduino)?