Калибровка магнитометра не дает ожидаемых результатов

Я хочу иметь "направление по компасу" (я хочу знать угол на север) с помощью магнитометра. Я видел в нескольких учебниках, что сначала мне нужно его откалибровать. Когда я посмотрел, как это сделать, я увидел графическое сравнение значений магнитометра с и без калибровки.

Вот ссылки, которые я использовал: link_one и link_two

Обе ссылки показывают, что некалиброванный магнитометр должен отображать несколько кластеров на графике, как показано ниже:

Это график, который должен быть у меня для некалиброванного магнитометра

И откалиброванный магнитометр должен иметь обе 3-оси в одной и той же точке вокруг нуля, например:

Это график, который у меня должен быть после калибровки


Я использую Adafruit LSM9DS1< /а>. Я попытался получить ту же графику со следующим кодом Python:

def save_mag_values():
    f = open("magnetometer.csv","w")
    for i in range(10000):
        value = sensor.magnetic
        f.write(",".join(map(str,value)))
        f.write("\n")

Затем я использую следующую команду gnuplot для печати:

gnuplot> plot "magnetometer.csv" using 1:2 title "XY" pointsize 2 pointtype 7, \
              "magnetometer.csv" using 1:3 title "XZ" pointsize 2 pointtype 7, \
              "magnetometer.csv" using 2:3 title "YZ" pointsize 2 pointtype 7

Как написано в туториале, я просто медленно перемещаю датчик и через 1 минуту печатаю значения. Вот что у меня есть для некалиброванного магнитометра: Мой график некалиброванного магнитометра

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

Это мой график с калибровкой

Может ли кто-нибудь сказать мне, что я сделал неправильно и почему я не могу иметь значения «формы круга», как должно быть? Или форма должна быть идеальным кругом, как я вижу в учебниках, или у меня все в порядке? Спасибо


person MelKoutch    schedule 27.03.2019    source источник
comment
Если вы спрашиваете, почему показания магнитометра группируются на одной стороне картины, я не могу помочь. Если вы спрашиваете, как сделать соотношение сторон координат графика 1:1, команда gnuplot set size ratio -1   -  person Ethan    schedule 27.03.2019
comment
Мне интересно, нормальная у меня форма или нет. Это должен быть круг, но это явно не так, и я не знаю, почему. Спасибо за команду gnuplot, но я думаю, что проблема не в ней.   -  person MelKoutch    schedule 28.03.2019
comment
Вы уверены, что ваш магнитометр работает правильно?   -  person Jack Aidley    schedule 29.03.2019
comment
Я проверил этот эксперимент на двух разных сенсорах (оба lsm9ds1 от adafruit) и получил примерно одинаковый результат. Я не знаю, не работают ли они оба, или проблема может быть связана с окружающей средой (я имею в виду магнитное поле или что-то в этом роде) или с кодом, который я использовал.   -  person MelKoutch    schedule 29.03.2019
comment
Вы уверены, что перемещаете его по всем трем осям (x, y, z) при захвате выборочных данных? На первый взгляд кажется, что у вас недостаточно разнообразных выборочных данных.   -  person RMass    schedule 30.03.2019


Ответы (1)


Если ваш магнитометр работает (не поврежден магнитным полем) и если вы снимаете показания, вращая магнитометр на 360 градусов по трем осям, то ваш график должен показать что-то вроде этого (наихудший сценарий).

введите здесь описание изображения

В идеальном случае показания должны располагаться в 3-х концентрических окружностях, перекрывающихся на одной границе.

В практических случаях из-за смещения мягкого и твердого железа, влияния окружающего магнитного материала показания станут эллиптическими, а их центры сместятся, как показано на рисунке выше.

Калибровка просто сводит их к общему центру и делает эллиптические показания круглыми.

Пару лет назад я заказал несколько магнитометров. Я потратил много времени на отладку кода и позже обнаружил, что все они были повреждены во время транспортировки. Я также написал сообщение в блоге о калибровке магнитометра. .

person ChillarAnand    schedule 03.04.2019
comment
Спасибо за ответ и ссылку!! Я попробую это с другим типом или датчиком (другой марки). Спасибо еще раз !! - person MelKoutch; 04.04.2019