Форум программистов, компьютерный форум, киберфорум
Робототехника и умный дом
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 3
1

Алгоритм Маджвика. Углы Эйлера намного меньше реальных

05.04.2021, 18:20. Просмотров 261. Ответов 1
Метки нет (Все метки)


Здравствуйте. Вопрос к величине получаемых расчетных углов от Маджвика.

Использую 2 библиотеки установленных в Arduino. Одна для работы с MPU9250, вторая для Madgwick. Плата MEGA2560.
Визуально, на экране, объект отображается через Processing.
Если использовать собственные функции расчета углов Эйлера из библиотеки MPU9250, углы адекватны реальному повороту платы сенсоров. Конечно дрожит и плывет, но в общем визуально поворот реальной платы совпадает с направлениями и величиной углов в Processing.
Из "сырых" данных MPU9250 получаю три угла Эйлера с помощью алгоритма Маджвика.
Посылаю в фильтр Маджвика те же данные и углы ориентировочно в 16 раз меньше. То есть 4 полных оборота платы сенсоров вокруг одной оси дает поворот примерно на 90 градусов.
Чувствительность акселерометра +-2g, гироскопа +-250 градусов/сек. По умолчанию и они не меняются.
Настройка параметров фильтра:

C
1
2
#define sampleFreqDef   100.0f          // sample frequency in Hz
#define betaDef         0.1f                  // 2 * proportional gain
Реально частота вывзова Маджвика каждые 10-12ms.

Вызов Маджвика. Оси магнетометра X и Y в вызове переставлены, так как в datasheet на MPU9250 указано, что по сравнению с акселерометром и гироскопом у магнитометра оси не совпадают. А ось Z по отношению к акселерометру и гироскопу направлена в другую сторону. Поэтому для данных по оси Z стоит знак минус.

C++
1
2
3
4
   ahrs.update(avgyrx, avgyry, avgyrz, avaccx, avaccy, avaccz, avmagy, avmagx, -avmagz);
        yaw   = ahrs.getYaw();
        pitch = ahrs.getPitch();
        roll  = ahrs.getRoll();
Вызов функции из MPU9250:
C++
1
2
3
  yaw = mpu.getYaw();
      pitch = mpu.getPitch();
      roll = mpu.getRoll();
Кто нибудь может подсказать, что может так влиять на чувствительность, чтобы понять где мне рыть в своем коде.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2021, 18:20
Ответы с готовыми решениями:

Ssd скорость намного меньше заявленной!
Диск Silicon Power Slim S55 https://3dnews.ru/950971 заявленная скорость 550/450 MBps моя...

Конвертировать углы Эйлера
Здравствуйте Есть углы поворота Эйлера и порядок их применения (напр XYZ, ZXY и.т.п) в ПРАВОЙ...

3D вектор направления в углы эйлера
Всем привет! Как правильно произвести операцию поворота объекта в 3D по направлению к точке? ...

Блок CarSource в дорожной библиотеке почему-то выдает намного меньше авто, чем задано
Ни интенсивность, ни интервал не выдерживаются для любой конфигурации дорожной сети. При...

1
0 / 0 / 0
Регистрация: 03.08.2015
Сообщений: 3
09.04.2021, 11:21  [ТС] 2
Все. Разобрался.
Отображение объекта было в Processing. Его библиотечная функция вращения объекта вдоль оси Rotaition принимает входные данные в радианах, а с выхода IMU данные передавались в градусах. Оттуда и неадекватная скорость вращения. Надо было предварительно читать РД.
Всем спасибо. Хотя бы за просмотры .
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2021, 11:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Перевести нормаль в углы Эйлера и кватернион
Доброго времени суток, господа. Есть нормаль в трехмерном пространстве (единичный вектор). Нужны...

Вращения тела в пространстве (углы Эйлера)
Всем здравствуйте! Задача про углы Эйлера: необходимо продемонстрировать анимацию вращения тела....

Какова вероятность, что в образованном тремя точками треугольнике все углы меньше K?
Здравствуйте! Возникла проблема с решением задачи по теории вероятностей: На окружности...

Найти элемент в массиве реальных чисел и его номер среди чисел, больше чем 7.8 и меньше чем 50.2
Найти элемент массиву реальных (дійсних) чисел (12.37, 2.43, 16.55, 0.81, 0.32, 1.345, -12.18,...

Найти элемент в массиве реальных чисел и его номер среди чисел, больше чем 7.8 и меньше чем 50.2
Найти элемент массиву реальных (дійсних) чисел (12.37, 2.43, 16.55, 0.81, 0.32, 1.345, -12.18,...

Дрейф результатов фильтра Маджвика. MPU9250
Добра! Для одного проекта мне потребовалось определять ориентацию объекта в пространстве. Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.