Переориентация акселерометра/компаса.

Интро.

Чип LSM303DLHC совмещает в себе три устройства: трёхосевой акселерометр, трёхосевой компас и термометр. В конечном устройстве, однако, собственные оси X, Y и Z акселерометра (ну и компаса тоже) могут не совпадать с осями аппарата, в котором находится печатная плата, могут иметь разный масштаб, могут вообще быть не совсем перпендикулярны. Мало ли — при при пайке перегрелся там ну или приложили об пол его как следует… Раз такое может быть, то оно, наверняка и случится. Особенно опасно, если механику делает не то же лицо, что и электронику. Вот это как раз мой случай: электроника сделана, но до сих пор не знаю, как и в какой ориентации она будет стоять в корпусе. К счастью, на помощь приходит линейная алгебра. Хочу поделиться решением этой проблемы с общественностью.

Решил, что только потреблять чужие статьи плохо и надо посильными средствами внести вклад. Первый раз что-то пишу. Извините, если что не так!


Матричные преобразования

Для решения проблемы используются линейные преобразования вида R(x) = a*r + b, только в трёхмерном пространстве. В этом параграфе речь пойдёт о матрицах, векторах и о том, как линейное преобразование системы координат можно представить в виде только произведения матрицы на вектор (без добавления столбца). Знакомым с этим вопросом этот параграф лучше пропустить.

Если вы не очень хорошо знакомы с матрицами и линейной алгеброй, вам будет удобно читать дальше, предварительно просмотрев соответствующую статью на Википедии: статья. Ключевым для понимания написанного ниже является раздел «линейные трансформации». Звучит чуднО и дико, но на самом деле это просто «линейные преобразования» :).

Начнём с одномерного случая. R и r — просто числа. Чтобы представить преобразование R(x) = a*r + b в виде произведения матрицы на вектор следует из одномерного пространства перейти в двумерное. Вместо числа a будет матрица A. А число b хочется убрать совсем. Зачем — для удобства.

Матрица A будет такая: .

Вместо результирующего числа R будет вектор R:

Получившееся выражение — это то же самое преобразование плюс тождество 1=1. Преимущество такой записи в том, что обратное вычисление вектора r по известному вектору R делается в одно действие — домножением на обратную матрицу слева обеих частей равенства.

Конечно, для одномерного случая это имеет мало смысла — проще вычислить тупо «влоб» r = (R-b)/a. Но зато для трёхмерного случая с акселерометром (ну и компасом тоже), сильно упрощает дело.

Линейное преобразование (см. статья, раздел «линейные трансформации») системы координат в матричном виде в трёхмерном пространстве будет представляться в виде произведения матрицы 4х4 на вектор 4х1. Почему 4х4, а не 3х3 — одно измерение добавляется, чтобы столбец сдвига «вписался» внутрь матрицы.



Суть процедуры переориентации акселерометра.

Представим себе, что плата с напаянным акселерометром LSM303DLHC помещена внутрь готового устройства. Но проблема в том, что она там не то что вверх ногами, а вообще под неизвестным углом на проводах висит. Да ещё и все оси имеют разный масштаб и взаимно не ортогональны. А хочется, чтобы показания были 1) в м/с^2, 2) направление вектора силы тяжести g совпадало бы с вертикальной осью корпуса/робота/etc и 3) чтобы оси были одного масштаба и взаимно ортогональны (если по одной оси максимум, то по остальным 0). Ну а когда он положен на бок, то g должен совпадать с горизонтальной осью (ну там X или Y — по обстоятельствам), а по двум другим должно иметь нули.

Добиться желаемого невероятно просто. Для этого нужно провести 4 маленьких эксперимента: 4 раза сориентировать робота/корпус в такие положения, когда направления силы тяжести относительно робота/корпуса известны и запомнить или записать на бумажке, что при этом показывает акселерометр.

После этого у нас имеются 4 матрично-векторных уравнения вида

R = A*r

.
При этом R — это то, что хочется; r — то, что реально показывал акселерометр; а A — неизвестная матрица преобразования системы координат. В матрице A 12 неизвестных, а у нас как раз 4 измерения по 3 числа в каждом — тоже 12 измерений. Итого 12 неизвестных и 12 уравнений — система может быть решена.

Но для окончательного решения нужно сделать ещё два дополнительных шага.

Шаг 1.
Вместо системы четырёх векторно-матричных уравнений с неизвестной матрицей A хочется иметь одно матричное уравнение. Это можно сделать, скомпоновав столбцы R и r разных уравнений в матрицы. Получится уравнение следующего вида.

Можно проверить, ну или поверить на слово Википедии (см. статья), что это уравнение соответствует системе из четырёх векторно-матричных уравнений.

Шаг 2.
Выражение для матрицы A получится, если домножить справа обе части уравнения на обратную матрицу r.

Собственно, это всё. Теперь для получения человеческой ориентации и масштабов осей нужно реальные показания акселерометра умножать на матрицу A. Матрица A постоянна. Её нужно вычислить только один раз и потом пользоваться.

Заключение.
Для калибровки/переориентации своего акселерометра я клал корпус с оным внутри на пузо, на спину, на бок и на морду. При этом столбцы матрицы R состоят из нулей по всем осям, кроме той, которая в данный момент вертикальная. Значение в этом месте равно 9.81. Матрица R у меня была такая:


А какая получается матрица A — даже не интересовался: показывает правильно — и хорошо.
Скорее всего, если во всём тексте заменить слово «акселерометр» на слово «компас», то будет работать не менее правильно. Но с компасом я пока не проверял. В приложении хедер файл для C++ для работы с матрицами и векторами: matrix.zip.

Прилеплено.
По просьбе вытащил матрицу A. Посчитал её для двух значений силы тяжести g. Для нормальной 9.81 и для 65535. Второй случай чисто для того, чтобы можно было нормально проанализировать числа, а не сравнивать количества нулей после запятой.
Матрица для силы тяжести 9.81.
Матрица для силы тяжести 65535.
Видно, что неортогональность довольно маленькая — порядка 1%. А сдвиги присутствуют и они порядка 20% — 30%. Ну и оси развёрнуты и переставлены.
  • +16
  • 06 февраля 2013, 13:37
  • dr_livsey
  • 1
Файлы в топике: matrix.zip

Комментарии (46)

RSS свернуть / развернуть
Здорово, конечно, что постарались, но раз уж начали что-то пояснять, то уж делайте это до конца:
Матричные преобразования
и далее в этом подразделе вы как-то быстрой проскочили основные понятия, добавив фразы типо «очевидно», «легко заметить» и тд. Для знающих Вы дали совет пропустить этот пункт, а не знающие прочитав его скорее всего тож ничего не поймут, поэтому могут его пропустить=)
+2
Опс, спасибо за пояснение! Я вставлю какую-нибудь ссылку про матрицы. Ну и постараюсь расписать подробнее.
0
Вроде учёл Ваши замечания. Посмотрите, пожалуйста!
0
А добавили бы правила перемножения «матрица — вектор, матрица матрица» и все было бы еще проще. Ну а так получше, да!
0
Я решил, что описать лучше, чем в Википедии всё равно вряд ли получится. Ну и за разъяснениями скроется собственно тема повествования. Извините.
+1
Вообще, неплохие объяснения по этой тематике водятся у программистов-трехмерщиков, в геймдеве. Достаточно лаконично, но накрывается именно тема матричных преобразований координат.
0
Автор фанат Лифшица и Ландау =)
0
[Оффтоп]
ИМХО, хуже учебника Ландау-Лифшица просто нет. Им хорошо пользоваться как справочником, когда уже знаешь, но немного подзабыл.
[/Оффтоп]
0
Это все хорошо.
Кстати, раз уж про акселерометры пошла речь. Просто ради интереса — у меня есть ITG-3205 — это 3-х осевой гироскоп, так там одна из осей имеет более чем в два раза заниженную чувствительность, оставшиеся две — нормально. Но MEMS повреждена это факт.
У кого опыт (статистика) есть- как там у MEMS в плане температуры с живучестью. Феном все равно термопрофиль не выдержать. В датащите еще указана выживаемость (шок) до 10 000 g. Цифра настолько огромная, что представить ее сложно. Например, если в ультразвуковой ванне отмывать — это как можно численно выразить?
Сам много раз паял акселерометры, всегда успешно. А вот у этого гироскопа — не знаю, высока вероятность что это брак и что с осью одной он такой уже был.
0
IMHO в кватернионном представлении это выражение получается значительно проще
0
Честно говоря, я всегда был уверен, что кватернионы только для систем координат, где есть понятие угла и только для преобразований поворота, т.е. когда детерминант матрицы равен +1 Ну или просто неотрицателен, тогда будет ещё масштабирование.

А в данном случае 1) система координат только линейная, но не ортогональная и не ортонормированная и 2) есть смещение.

Возможно, я не прав, но кватернионное преобразование ~L~ * R * L может дать поворот и масштабирование, но не может дать сдвиг и отражение.
+1
Пардон, был невнимателен. Думаю Вы правы.
0
А матрица А далеко спрятана? Инетерсно было бы посмотреть, насколько аксель криво стоит и коряво показывает.
0
Эээээ, да, довольно далеко :) Но я попробую её вытащить. Внизу к статье прилеплю.
0
Вот. Матрица A для разных значений силы тяжести g. Одна для 9.81, а другая — для 65535. Ну это чтобы числа были разумные и можно было понять, какие из них существенные без подсчёта числа нулей после запятой.
Для 9.81.
Для 65535.
0
Не, я вас обманул, матрица не совсем такая :) Извините, не из того места выписал.
Для 9.81: Для 9.81.
Для 65535: Для 65535.
Неортогональность довольно маленькая — порядка 1%. А вот сдвиги по всем трём осям есть и весьма ненулевые. Процентов так 20 — 25.
0
Спасибо!
Любопытство удовлетворено, статья положена в копилку знаний.
0
Коллега, большое спасибо за статью. Попробую применить Ваш метод для калибровки акселерометра в своей плате управления квадрокоптером. Давно хотел попробовать нормальный метод калибровки – но не встречал такого понятного и простого описания алгоритма.

Обычно (по крайней мере, в тех проектах, которые я видел), на подобные «тонкости» забивают (ИМХО – зря). Датчик пытаются разместить так, чтобы оси датчика и аппарата приблизительно совпадали, а нелинейность чувствительности по разным осям вообще игнорируют.
0
  • avatar
  • e_mc2
  • 06 февраля 2013, 21:58
Если я понял правильно — про нелинейность чувствительности здесь речь не идёт.
0
Да, Вы правы. Думал о компенсации нелинейности, но тут в голову приходит только методом наименьших квадратов подбирать коэффициенты полиномов. А для этой задачи придётся не 4 точки снимать, а гораздо больше. Т.е. процедура калибровки будет механически довольно сложная. И мне кажется, что вряд ли получится провести калибровку достаточно точно, чтобы ошибки, допущенные при калибровке не превысили в итоге изначальную нелинейность.

Простите, не могу проще сформулировать.
0
про нелинейность чувствительности здесь речь не идёт

Извиняюсь, неправильно высказался. Я имел ввиду разную чувствительность по осям (разный масштаб).
0
Закинь топик обратно в «Теорию»
0
  • avatar
  • Vga
  • 06 февраля 2013, 22:05
А мне кто-то минусов наставил :) Рейтинг ушёл в минус. Ну и статья перешла в личный раздел.
0
При редактировании ушла, видимо… Ну верни обратно, теперь рейтинга хватит.
0
Сэр, так точно, сэр!
0
[злостный оффтоп]
>>Особенно опасно, если механику делает не то же лицо, что и электронику. Вот это как раз мой случай: электроника сделана, но до сих пор не знаю, как и в какой ориентации она будет стоять в корпусе.

Мне, как человеку, окончившему ВУЗ по специальности навигационные приборы, эта фраза порвала шаблон почти полностью… До чего техника дошла =).
[/злостный оффтоп]
0
«Это не техника дошла — это я сама к вам дошла на лыжах» (С) :)
Я внутренне понимаю, что должно быть по-другому. Но две фирмы, у каждой свои понты — вот и результат :)
0
Скорее всего, если во всём тексте заменить слово «акселерометр» на слово «компас», то будет работать не менее правильно.
C компасом не совсем все просто. Его просто так «набок» не положить. Его калибровка проводится в два этапа. Сначала калибруют масштабный коэффициент, чтоб он был одинаков по всем трем направлениям, а уже потом «устраняют» перекосы осей датчика и осей объекта.
В статье предлагается сделать определение матрицы с использованием одного замера в каждом из положений, но лучше использовать несколько замеров в каждом положении. Это позволит точнее определить матрицу, т.к. измерения всех датчиков «шумят».
В качестве информации предлагаю посмотреть документ Using LSM303DLH for a tilt compensated electronic compass. В нем достаточно подробно расписана методика калибровки акселерометра и магнитометра, ну разве что на английском. Методика позволяет провести масштабирование коэффициентов по всем осям, убрать смещения нуля и перекосы осей датчиков и объекта. Лично я использовал эту методику для своих задач — работает!
0
В качестве информации предлагаю посмотреть документ Using LSM303DLH for a tilt compensated electronic compass.
403 Forbidden говорит.
0
Странно. У меня по этой ссылке осуществляется переход. Но если что, то ищите через поиск AN3192. Это название документа.
0
у меня пдф-ка грузиться по ссылке…
на на всяк случай — вот она с сайта производителя
0
Эээээ, а с чего бы этому в одном случае работать, а в другом нет, если изначально условия одинаковые?

И почему его на бок нельзя класть? Я ж, когда калибрую акселерометр, во-первых, неизбежно компас тоже ориентирую (они ж в одном корпусе). Ну и в принципе могу одновременно его калибровать — разницы нет. Просто надобности в компасе не было.

В обоих (акселерометр/компас) случаях просто вычисляется матрица перехода из внутренней системы координат акселерометра/компаса в систему координат ящика, в котором оный установлен. Нормировкака осей и вычисление сдвигов автоматом происходит при вычислении матрицы перехода. Нет?
0
Как мне кажется матрицу, полученную для калибровки акселерометров, для магнитометров можно использовать только для устранения несоответствия осей датчика и объекта. Масштабировать оси магнитометра и убрать смещение нуля не получится.
0
Я Вашу мысль не очень понимаю, честно сказать. Устранение несоответствия осей — это и есть в том числе масштабирование и сдвиг. А помимо этого поворот, отражение и, забыл, как называется, ...., в общем, когда квадратик в параллелограмм превращается.

Пожалуй, проще попробовать и раз и навсегда установить, работает или нет :) Попробую для компаса, результаты выложу…
0
Вот, небольшой отчётик. Действительно, калибровать не так просто, как акселерометр. Перед калибровкой компаса, понятное дело, надо сначала найти направление, а куда, собственно, магнитное поле направлено. Делал это так. Ориентировал плату руками так, чтобы показания по двум осям из трёх были нулевые.

Я был сильно удивлён тем фактом, что у меня дома магнитное поле направлено под углом градусов эдак 50 к горизонтали. Это вообще нормально? Калибровку/переориентацию потом проводил на наклонно стоящей картонной коробке с нарисованной стрелочкой. :)

Масштабы по осям у меня такие. По X и Z порядка 450, а по Y — 770. Про точность сказать ничего не могу. Она зависит от того, как хорошо я определил направление магнитного поля, как точно потом ориентировал плату с компасом, ну и как усреднял показания оного.

В общем, надо много подумать над тем, можно ли упростить калибровку/переориентацию компаса.
0
Я был сильно удивлён тем фактом, что у меня дома магнитное поле направлено под углом градусов эдак 50 к горизонтали. Это вообще нормально?
Ага, вполне. На полюсах (магнитных) оно вообще вертикально направлено. Не ты первый это отмечаешь. Просто нормальный компас только на горизонтальную составляющую реагирует.
Алсо, оно изрядно чувствительно к внешним источникам магнитных полей. В том числе всяким проводам.
0
Не, ну я был морально готов получить градусов 10-20, ну может 30. Но не 50. Я ж вроде далеко от полярного круга живу всё-таки :)
0
Я был сильно удивлён тем фактом, что у меня дома магнитное поле направлено под углом градусов эдак 50 к горизонтали. Это вообще нормально?
Очень сильно улыбнуло. :)

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

Что касается самой матрицы калибровки. Она по сути состоит из трех матриц.
Одна матрица служит для поворота осей измерения датчика к осям объекта (немного грубо, но смысл думаю понятен). При умножении единичного вектора на эту матрицу длина вектора не изменяется, т.е. остается единичной. Происходит только поворот этого вектора.
Вторая матрица убирает смещения нуля или с точки зрения математики осуществляет сдвиг системы координат.
Ну и третья матрица служит для масштабирования коэффициентов передачи по каждому из направлений. В идеале это должна быть единичная матрица (по главной диагонали — 1, а остальные элементы — 0). Но после калибровки элементы главной диагонали будут иными.
Так вот, если все эти три матрицы перемножить, то получится необходимая нам матрица, на которую необходимо умножать измерения датчиков.

В одном из комментариев выше я говорил, что после калибровки акселерометра только часть полученной матрицы можно использовать для магнитометров, для поворота осей датчика. Устранить нули и провести масштабирование измерений магнитометра калибровкой одного только акселерометра не получится. Но пообщавшись сегодня с одним специалистом выяснилось следующее. Даже в этом датчике направление осей магнитометра и акселерометра не совпадают. К примеру оси Z у датчиков направлены в разные стороны. Кроме того специалист мне подсказал, что нет гарантии, что оси акселерометра и магнитометра вообще соосны, вот почему и проводятся калибровки для этих датчик.
0
Эээээ, а что заставляет думать, что я этот документ не читал? :) Всегда перед тем, как что-нибудь купить, изучаю, как с этим всем работать. А есть те, кто делает по-другому?
В том-то и дело, что направление вектора магнитной индукции зависит от географического местоположения.
Вот я всё не пойму, что это меняет? Пофиг, как оно направлено. Просто нужно перед калибровкой узнать, это самое направление. Оно вроде и логично. Без этого нельзя ведь определить ориентацию корпуса — относительно чего ориентировать то? :)

Устранить нули и провести масштабирование измерений магнитометра калибровкой одного только акселерометра не получится. Но пообщавшись сегодня с одним специалистом выяснилось следующее. Даже в этом датчике направление осей магнитометра и акселерометра не совпадают. К примеру оси Z у датчиков направлены в разные стороны. Кроме того специалист мне подсказал, что нет гарантии, что оси акселерометра и магнитометра вообще соосны, вот почему и проводятся калибровки для этих датчик.
По-моему, нигде выше по тексту не утверждается обратного. :) Да это глупость полная — приборы ж разные совершенно.

Суть текста «переориентация акселерометра/компаса» в другом вроде :) Нет?
0
По-моему, нигде выше по тексту не утверждается обратного.
Может неправ, но мне показалось, что…
Я ж, когда калибрую акселерометр, во-первых, неизбежно компас тоже ориентирую (они ж в одном корпусе). Ну и в принципе могу одновременно его калибровать — разницы нет. Просто надобности в компасе не было.

В обоих (акселерометр/компас) случаях просто вычисляется матрица перехода из внутренней системы координат акселерометра/компаса в систему координат ящика, в котором оный установлен. Нормировкака осей и вычисление сдвигов автоматом происходит при вычислении матрицы перехода. Нет?

как раз и была попытка откалибровать все одним заходом.

Может быть мы по разному понимаем слово калибровка? Под калибровкой я понимаю как раз совмещение осей датчика и объекта, а также масштабирование и устранение нулей.

а что заставляет думать, что я этот документ не читал?
Абсолютно ничего. Я и не думал. Просто как мне кажется, в этом документе хорошо расписано, как проводить калибровки. Способ найти направление вектора магнитной индукции, а после проводить калибровку так же, как и акселерометров — лично мне кажется не очень удобным. Результат сильно зависит от точности нахождения этого направления и возможности его поддержания неизменным (чтоб можно было переворачивать объект). Хотя и способ вращения вокруг осей объекта (метод описанный в документы к прибору) тоже не очень удобен.
0
Размышлял над Вашим способом калибровки магнитометра путем предварительного нахождения направления вектора магнитного поля.
Перед калибровкой компаса, понятное дело, надо сначала найти направление, а куда, собственно, магнитное поле направлено. Делал это так. Ориентировал плату руками так, чтобы показания по двум осям из трёх были нулевые.
Этот метод плох тем, что располагая так датчик вы совместите ось датчика с направлением на вектор, а для устранения перекосов необходимо совмещать ось объекта. Если есть возможность замерить углы, задающие направление вектора магнитного поля, то можно будет откалибровать, путем учета этого направления в математике. Но боюсь, что точность измерения этих углов будет крайне мала, что неизбежно повлияет на точность калибровки. Все же метод, описанный в документе, как мне кажется, более удобен, точен и прост.
0
Этот метод плох тем, что располагая так датчик вы совместите ось датчика с направлением на вектор, а для устранения перекосов необходимо совмещать ось объекта.
Так-так-так, минуточку! В меня закрадываются сомнения :) А не сочтите за труд, в двух словах напишите в явном виде, 1) в чём именно состоит «мой» метод и 2) что получается после калибровки. Вот прям по шагам: что первое, что второе, что получается…
Если есть возможность замерить углы, задающие направление вектора магнитного поля, то можно будет откалибровать, путем учета этого направления в математике. Но боюсь, что точность измерения этих углов будет крайне мала, что неизбежно повлияет на точность калибровки.
При чём тут вообще углы?
Все же метод, описанный в документе, как мне кажется, более удобен, точен и прост.
В описании метода (Appendix C) 5 листов текста и 17 уравнений. 17 уравнений проще 1-го?
0
в двух словах
Попробую, но боюсь, что в пару слов не уложусь. :)
Сначала кратко поясню свое понимание калибровки акселерометров, а после как это можно применить к магнитометрам (как я понял).
Когда акселерометр лежит на горизонтальной поверхности мы знаем, что показания должны быть только по одной оси и значение нам известно. Но реально акселерометр будет показывать по остальным осям не нули, т.к. имеются смещения нуля и возможно оси акселерометра не совпадают с осями объекта. Путем поворота объекта с акселерометром на разные грани, мы получаем 6 измеренных векторов и 6 векторов, которые должны быть. Далее при помощи линейной алгебры мы находим матрицу, которая позволяет путем умножения показаний акселерометра, находящегося на объекте, лежащем на горизонтальной поверхности (к примеру), получить значения ускорения такие, каковыми они должны быть. Таким образом мы рассчитали матрицу, которая убирает «перекосы» осей координат (производит поворот), убирает смещения нуля (производит сдвиг (для этого у нас матрица размерностью 4х4)) и производит масштабирование (лежащий на плоскости объект будет измерять силу реакции опоры, равную ускорению свободного падения, примерно 9.81 м/с^2). Надеюсь правильно понял?

Теперь как этот же алгоритм можно применить к калибровки магнитометра? Для этого нужно знать направление вектора магнитного поля Земли. Далее поочередно ориентируя на это направление разные оси ОБЪЕКТА разными направлениями мы так же получаем 6 векторов измерений, а 6 значений, которые должны быть — мы знаем. Далее все то же самое. При помощи линейной алгебры находим калибровочную матрицу. Вот так я понял Ваши предложения использовать методику, описанную в статье применительно к магнитометрам. Я ошибся? (без сарказма)

Если таким образом калибровать магнитометр, то сначала необходимо найти направление вектора магнитного поля Земли. Идея в том, чтоб вращая магнитометр найти положение, при котором по двум осям будут нули, тогда оставшаяся ось указывает направление вектора магнитного поля. Но как направлена ось магнитометра по отношению к объекту? Или даже по отношению к корпусу микросхемы? Нет гарантии, что линия, вдоль грани микросхемы однозначно соответствует оси чувствительности магнитометра.

Кстати, я предполагал, что после нахождения таким образом «направления», фиксировалось положение объекта и считалось, что он направлен по вектору магнитного поля. В дальнейшем осуществлялось изменение положения объекта (для набора 6 векторов измерений) относительно этого фиксированного положения. Это были мои домыслы. А как делали Вы?

Методика (Appendix C) действительно громоздкая, но она позволяет избежать необходимости определения вектора магнитного поля, которое всегда определяется с ошибкой. Никому не навязываю использовать только ее. Уверен, что существуют и другие методики (проще, сложнее, точнее, грубее). Каждый для себя выбирает ту, которая больше удовлетворяет его задачам.

Вот такие вот пару слов. :)
0
Про методику в принципе верно. Единственное, делается не 6, а 4 измерения.

Но как направлена ось магнитометра по отношению к объекту? Или даже по отношению к корпусу микросхемы? Нет гарантии, что линия, вдоль грани микросхемы однозначно соответствует оси чувствительности магнитометра.
Тут да, нужно знать. Ну или как в «Misalignment error compensation» вычислять ориентацию полного круга — это и есть вычисление направления магнитного поля. Но на глазок прикинуть было проще, всё равно (это я только за себя говорю) точно крутить не получится.

Так, Вы меня извините, но
метод, описанный в документе, как мне кажется, более удобен, точен и прост
Методика (Appendix C) действительно громоздкая, но она позволяет


Предлагаю обсуждение уже сворачивать.
0
метод, описанный в документе, как мне кажется, более удобен, точен и прост
Насчет просто — это я промахнулся. :)
Предлагаю обсуждение уже сворачивать.
Поддерживаю. Главное мы друг друга поняли.
0
а сырци можно? спасибо
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.