Магнитометр меряет напряженность магнитного поля, возвращая его проекции на свои три оси координат (оси чувствительности). Магнитное поле Земли довольно сильное и однородное, поэтому, если мы будем вращать датчик и строить его показания как 3Д график, то получим сферу.
В реальности мы получим перекособоченный эллипсоид, сдвинутый от начала координат. Это означает, что рядом присутствуют ферромагнетики и другие источники магнитного поля, а также оси чувствительности магнитометра могут быть не особо взаимно перпендикулярны и не начинаться с нуля.
Чтобы побороться с этим, параметры этого эллипсоида определяют подгонкой методом наименьших квадратов, а потом определяют, что за матрица (т.н. аффинное преобразование) переводит этот эллипсоид в сферу с центром в начале координат.
Вуаля - теперь можно получить неискаженное значение магнитного поля, применив к измерению эту матрицу.
Поэтому для использования магнитометра надо накопить достаточно данных для построения эллипсоида чтобы получить его матрицу. (Для этого, собственно, владельцы квадрокоптеров с магнитометром в автопилоте и вращают их полчаса перед тем как запустить)
Вот результат вращения одного из датчиков, на первом графике отложено Y(X), на втором Z(X) -
Если массив данных магнитометра образовал почти идеальную сферу в пространстве - причем для обоих магнитометров, используемых в проекте, то это очень хорошо - т.к. поэтому для получения неискаженных данных необязательно возиться с эллипсоидом и методом наименьших квадратов, достаточно просто вычесть смещение.
Программы в директории a.calibrator2.pedals и a.calibrator2.stick предназначены для калибровки магнитометров педалей и рукоятки соответственно. Сначала надо собрать данные для эллипса (выбрать соответственный переключатель и запустить таймер выбором соответствующего пункта меню), получив аналогичную картинку. Потом выключить таймер и рассчитать смещение по пункту меню Эллипсоид→рассчитать(от собранных данных). Далее надо проделать процедуру центровки - поместить рукоятку или педали в начальное положение, выбрать соответствующий переключатель, собрать данные опять таки включив и затем выключив таймер, и рассчитать по пункту меню центр→рассчитать, для рукоятки или педалей. Потом выбрать пункт меню файл→сохранить все.
Параметры СОМ-порта (Имя, скорость, parity) содержатся в файле comport.txt