Калибровка компаса

На Магнитометр/компас (Troyka-модуль) действуют помехи, искажающие его показания. Существуют два типа искажений, действующих на компас.

  • Hard Iron Distortion добавляет к изначально измеряемому полю дополнительное, создаваемое постоянным магнитом (динамиками звуковых колонок, цепи контроллера, провода питания, аккумуляторная батарея).
  • Soft Iron Distortion создается посторонними предметами, искажающими уже имеющееся магнитное поле (корпус двигателя, проводка, металлические болты)

Рассмотрим калибровку компаса.

Железная часть

Прошейте Arduino скетчем приведённым ниже.

compassCalibrationMatrix.ino
// скетч используется для калибровки компаса
// подробности читайте на:
// http://wiki.amperka.ru/продукты:troyka-compass
 
// библиотека для работы I²C
#include <Wire.h>
// библиотека для работы с модулями IMU
#include <TroykaIMU.h>
 
// создаём объект для работы с компасом
Compass compass;
 
void setup()
{
  // открываем последовательный порт
  Serial.begin(9600);
  // инициализация компаса
  compass.begin();
  // устанавливаем чувствительность компаса
  // ±4 gauss — по умолчанию, ±8 gauss, ±12 gauss, ±16 gauss
  compass.setRange(RANGE_4_GAUSS);
}
 
void loop()
{
  // Выводим «сырые» значения компаса по трём осям
  Serial.print(compass.readX());
  Serial.print(",");
  Serial.print(compass.readY());
  Serial.print(",");
  Serial.println(compass.readZ());
  delay(100);
}

Программная часть

  1. Скачайте и установите утилиту MagMaster.
  2. В открывшимся окне выберите номер «COM-порта» и нажмите «Open»
  3. Последовательно нажимайте на вопросительные знаки и устанавливайте датчик в положение, соответствующее всплывающей картинке.
  4. После каждого замера сохраняйте текущие значения компаса с помощью кнопки «Point».
  5. Далее нажмите на кнопку «Calculate Transformation Matrix and Bias», после чего получите:
    1. Transformation Matrix — матрицу масштаба и ортогонализации.
    2. Bias — значения смещения по всем трем осям

Сохраните полученную корректировочную матрицу и значения сдвигов по трем осям. Теперь можно продолжить работу с компасом или IMU-сенсором