Как правильно определить крен, тангаж, перемещение?

У меня MPU9250. Я рассчитал акселерометр, гироскоп, магнитометр. Но я хочу знать, как рассчитать шаг рыскания по крену. Я искал в Google. Я нашел много ответов

roll  =  (atan2(-Accel_Y, Accel_Z)*180.0)/M_PI;
pitch =  (atan2(Accel_X sqrt(Accel_Y*Accel_Y + Accel_Y*Accel_Y))*180.0)/M_PI;

источник: https://theccontinuum.com/2012/09/ 24/arduino-imu-pitch-roll-from-accelerometer/

   accelerationX = (signed int)(((signed int)rawData_X) * 3.9);
   accelerationY = (signed int)(((signed int)rawData_Y) * 3.9);
   accelerationZ = (signed int)(((signed int)rawData_Z) * 3.9);
   pitch = 180 * atan (accelerationX/sqrt(accelerationY*accelerationY + accelerationZ*accelerationZ))/M_PI;
   roll = 180 * atan (accelerationY/sqrt(accelerationX*accelerationX + accelerationZ*accelerationZ))/M_PI;
   yaw = 180 * atan (accelerationZ/sqrt(accelerationX*accelerationX + accelerationZ*accelerationZ))/M_PI;

источник: https:/ /engineering.stackexchange.com/questions/3348/calculating-pitch-yaw-and-roll-from-mag-acc-and-gyro-data

  Accroll = atan2( accy / (accy^2 + accz^2) )
  Accpitch = atan2( accx / (accx^2 + accz^2) )

источник: http://franciscoraulortega.com/pubs/Algo3DFusionsMems.pdf

 Accroll = atan2(accy, accz) 
 Accpitch = atan2( -accx, sqrt(accy^2 + accz^2) ) 

источник:https://www.nxp.com/docs/en/application-note /AN3461.pdf

Как правильно определить тангаж по крену?

, 👍2

Обсуждение

Акселерометр шумит, гироскоп дрейфует, и только магнитометр знает направление. Правильный способ — это фильтр, который использует все датчики вместе, иногда называемый: слияние датчиков. Например, фильтр ahrs. См. mpu-9250 и ahrs на sparkfun: https://learn.sparkfun.com/tutorials/mpu-9250-hookup-guide, @Jot

Прежде чем все усложнят эту проблему, первое, что нужно выяснить, это то, движется ли устройство и / или меняет ориентацию. Если это не так, проблема намного проще, и многие из предложенных вещей не нужны., @Chris Stratton


1 ответ


1

Для стационарного акселерометра, воспринимающего ускорение свободного падения, я вижу "мертвые зоны", когда оси тангажа, рысканья или крена параллельны или почти параллельны вектору силы тяжести.

Вероятно, именно поэтому акселерометры используются в сочетании с гироскопами.

См. данный документ NXP (также известный как Motorola, Freescale & Qualcomm). подробное обсуждение необходимой математики. Обратите внимание на раздел «Области нестабильности».

Также см. этот курс от rutgers.edu, который работает со студентами над проектом с использованием Arduino и акселерометра в 1-м классе, а затем добавляет гироскоп в 2-й класс для улучшения ответа.

(Добавлено позже)

Ссылки на rutgers.edu больше не работают, и в качестве альтернативы была предложена эта ссылка. .

,

Ссылки на pdf-файл класса rutgers.edu больше не работают. Кажется, https://aatishb.com/materials/srr/materials.html — новая домашняя страница., @Martin Meixger

Спасибо @MartinMeixger, я добавил вашу новую ссылку., @st2000