Уважаемые форумчане, подскажите, плиз, как откалибровать тройку-компас (IMU-сенсор на 10 степеней свободы)? Попробовал дефолтную библиотеку с https://github.com/amperka/Troyka-IMU - результат "умопомрачительный" : если модуль положить на стол и повертеть на 360о, то показания из read_Yaw() меняются в диапазоне примерно от 44о до 150о. Если модуль понаклонять в разные стороны, то можно и 200-300 градусов получить в аутпуте. Априорное спасибо : )
Вопрос уже поднимался в этой теме. http://forum.amperka.ru/threads/imu-сенсор-на-10-степеней-свободы-troyka-модуль.5815/ В коде библиотеки есть вектор bias и матрица calibration_matrix. Могу ошибаться (в проблему особо не вникал, рассмотрел весьма поверхностно), но получается примерно следующее. С вектором bias вроде все просто. Он задает отклонение показаний по всем осям от реальных. Чтобы получить данные для этого вектора, надо считывать данные по трем осям, возвращаемые методами readX, readY и readZ класса Compass (наследуется от LIS3MDL_TWI), пока модуль вращается во всех направлениях. Дальше определяется среднее значение по каждой оси. Данные значения и составят вектор bias. С матрицей сложнее. Тут надо вспоминать про векторы и матрицы, преобразование базиса и т.п., чтобы сформировать правильную матрицу. Руки пока не доходят. Простой не очень точный, но все же как-то работающий код для получения угла между осью X и направлением на север приведен в теме по ссылке. Константы, вычитаемые из readX и readY получены вышеописанным методом построения вектора bias,
Ага, супер, спасибо большое : ) Нашёл ещё такую любопытную статью:http://diydrones.com/profiles/blogs/advanced-hard-and-soft-iron-magnetometer-calibration-for-dummies Попробую с таким алгоритмом составить матртцу
Подскажите пожалуйста по какой формуле можно расчитать эту матрицу которую на фотке для компса по Arduino
Примерно так. Берем кучу измерений Xnc, Ync, Znc при разных положениях магнетометра относительно источника магнитного поля и соответствующие им реальные значения Xc, Yc, Zc. Реальные значения либо измеряются калиброванным прибором, либо предполагаются исходя из известных параметров магнитного поля, например, исходя из известной ориентации полюсов магнита рядом с магнетометром (в этом случае рискуем сильно ошибиться с изменением уровня магнитного потенциала, но с направлением примерно все будет нормально). Превращаем по формулам умножения матриц (в данном частном случае умножения матрицы на вектор) полученные наборы измерений в систему линейных уравнений. Решаем ее численными методами. Точность до третьего знака после запятой не гарантируется, но для бытового применения сойдет.