Я працюю над магнітометром AK8975, будучи частиною IMU. Що здається мені дуже складним. Цей чіп дає тривимірний вектор як вихід, що описує магнітне поле Землі в будь-якому місці Землі або біля нього.
Я спробував два типи алгоритмів обчислення заголовків: один простий, arctan(-y/x)
а інший - математика нахилу (крок) та скасування банку (рулон), як зазначено нижче. Як за нахилом, так і банки дають неправильний вихід.
Я в змозі отримати правильний заголовок wrt земля (використовуючи прості доступні відкриті ресурси дослідження), коли він повертається, зберігаючи горизонтальний wrt план за допомогою будь-якого з двох альгів.
Я спробував калібрування для м'яких і твердих помилок заліза. Я міг би побудувати його в 3D і показує ідеальну 3D-сферу. Все ще не працює на нахилі чи нахилі.
Будь-який вказівник буде корисним.
Код та його реалізація наведені нижче:
void Compass_Heading()
{
double MAG_X;
double MAG_Y;
double cos_roll;
double sin_roll;
double cos_pitch;
double sin_pitch;
cos_roll = cos(roll);
sin_roll = sin(roll);
cos_pitch = cos(pitch);
sin_pitch = sin(pitch);
//// Tilt compensated Magnetic filed X:
MAG_X = magnetom_x*cos_pitch + magnetom_y*sin_roll*sin_pitch + magnetom_z*cos_roll*sin_pitch;
//// Tilt compensated Magnetic filed Y:
MAG_Y = magnetom_y*cos_roll-magnetom_z*sin_roll;
//// Magnetic Heading
MAG_Heading = atan2(-MAG_Y, MAG_X) ;
}
Там , де magnetom_x
, #_y
і #_z
є компонентами 3D вектора , який на самому справі є значенням RAW від магнитометра. рулон і крок - це таємничий вихід фільтра Кальмана з бортового акселерометра та гіроскопа. Ці три датчики знаходяться в ATAVRSBIN1 . До цього етапу рулон і крок нормальні.
Тепер простий розрахунок заголовка відповідно до journal_of_sensors_renaudin et al_2010c.pdf повинен був бути MAG_Heading = atan2(-magnetom_y, magnetom_x) ;
і з компенсацією, як зазначено вище.
Загальний код просто від OPEN AHRS .
Дані у форматі Roll, Pitch та Jow. Я обертав пристрій лише рукою. Перші три були зосереджені відповідно лише на Roll, Pitch та Yaw. Решта два спочатку обертають пристрій приблизно на 45 градусів уздовж Х (прокату), потім обертають уздовж локального магнітометра Z. Потім те саме повторюють з обертанням близько 45 градусів уздовж Y (нахилене), потім обертають уздовж локального Z магнітометра.
Графіки побудовані в межах від -180 до 180 градусів.
Кути в градусах у файлі Характеристики YAW на Roll.
Кути в градусах у файлі Характеристики YAW на Pitch.
Кути в градусах у файлі YAW характеристики для самого Yaw.
Кути в градусах у файлі Властивості YAW на навантаженні з накидом на 45 градусів.
Кути в градусах у файлі ЯМК характеристики на Яу з 45 градусами.
Примітка. Для останніх 2 фотографій: спочатку зберігається в домашньому положенні, тобто однаково для всіх (див. Файли txt). Потім прокатували на 45 градусів, потім за допомогою площинного пристрою (з магнітометром) обертали по осі Z магнітометра.
Аналогічно для останнього зображення пристрій було розміщено на 45 градусів, а потім по осі Z магнітометра.
Сподіваюсь, це допоможе вирішити мою проблему.
Нові розробки такі:
Я працював над заголовком. Я отримав наступний результат. csv