Troyka - компас - калибровка

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Отец Сергий, 10 ноя 2015.

  1. Уважаемые форумчане, подскажите, плиз, как откалибровать тройку-компас (IMU-сенсор на 10 степеней свободы)?
    Попробовал дефолтную библиотеку с https://github.com/amperka/Troyka-IMU - результат "умопомрачительный" : если модуль положить на стол и повертеть на 360о, то показания из read_Yaw() меняются в диапазоне примерно от 44о до 150о. Если модуль понаклонять в разные стороны, то можно и 200-300 градусов получить в аутпуте.

    Априорное спасибо : )
     
  2. geher

    geher Гуру

    Вопрос уже поднимался в этой теме.
    http://forum.amperka.ru/threads/imu-сенсор-на-10-степеней-свободы-troyka-модуль.5815/

    В коде библиотеки есть вектор bias и матрица calibration_matrix.
    Могу ошибаться (в проблему особо не вникал, рассмотрел весьма поверхностно), но получается примерно следующее.
    С вектором bias вроде все просто. Он задает отклонение показаний по всем осям от реальных. Чтобы получить данные для этого вектора, надо считывать данные по трем осям, возвращаемые методами readX, readY и readZ класса Compass (наследуется от LIS3MDL_TWI), пока модуль вращается во всех направлениях. Дальше определяется среднее значение по каждой оси. Данные значения и составят вектор bias.
    С матрицей сложнее. Тут надо вспоминать про векторы и матрицы, преобразование базиса и т.п., чтобы сформировать правильную матрицу. Руки пока не доходят.

    Простой не очень точный, но все же как-то работающий код для получения угла между осью X и направлением на север приведен в теме по ссылке. Константы, вычитаемые из readX и readY получены вышеописанным методом построения вектора bias,
     
  3. tamerco

    tamerco Нуб

    Подскажите пожалуйста по какой формуле можно расчитать эту матрицу которую на фотке для компса по Arduino
    [​IMG]
     
  4. Unixon

    Unixon Оракул Модератор

  5. geher

    geher Гуру

    Примерно так.
    Берем кучу измерений Xnc, Ync, Znc при разных положениях магнетометра относительно источника магнитного поля и соответствующие им реальные значения Xc, Yc, Zc. Реальные значения либо измеряются калиброванным прибором, либо предполагаются исходя из известных параметров магнитного поля, например, исходя из известной ориентации полюсов магнита рядом с магнетометром (в этом случае рискуем сильно ошибиться с изменением уровня магнитного потенциала, но с направлением примерно все будет нормально).
    Превращаем по формулам умножения матриц (в данном частном случае умножения матрицы на вектор) полученные наборы измерений в систему линейных уравнений.
    Решаем ее численными методами.
    Точность до третьего знака после запятой не гарантируется, но для бытового применения сойдет.