Теория калибровки акселерометра.
Здравствуйте.
Хочу обсудить методы калибровки акселерометров. Нашел несколько способов в сети, приведу их все.
- По 6(n)-ти точкам. Данный метод один из самых распространеных. Заключается в помещения датчика в 6-ти позициях, в которых мы знаем теоретическое значение проекций g. Подробно описан тут. Но как мы можем точно знать значение проекций, когда мы не сможем точно параллельно поверхности расположить датчик, так же он скорее всего не идеально припаян к плате, которая возможно сама плоская и деформированная, да и внутри самого датчика оси могут быть не перпендикулярны друг к другу? Значит это очень условный метод.
- По N точкам, если есть возможность получить из них сферу. То есть если мы можем вращать датчик так что на него будет гарантировано действовать 1g. Тогда в теории мы должны получить сферу (ну или почти сферу) исходя из уравнении которой, можно найти смещение ее центра. Подробно описан тут. На практике слабо применим, так как особенности производства и пайки к плате не дают получить сферу даже при таких условиях.
- По N точкам. Тогда в общем случае мы получим повернутый и смещенный эллипс, для которого можно вычислить матрицу поворота, смещение и градуировочные коэффициенты осей. Но как я понимаю тут мы тоже должны получать данные при 1g. Идея в том что найдя данные описанные выше мы получим возможность преобразовать эллипс в единичную сферу. То есть для каждой точки эллипса можно будет поставить в соответствие точку на данной сфере (для получения из ед сферы нужную просто домножаем координаты на g). Таким образом можно получить достаточно хорошую точность откалиброванных данных. Однако реализовав алгоритмы, я нашел что методы не сошлись на моем эллипсе что говорит что данные достаточно зашумлены и так как вращал датчик в руках на него не всегда действовало 1g. Подробно описан тут. Не могу сказать про эти методы от себя так как они на моем эллипсе не сошлись 😦.
- По N точкам с гарантией воздействия только 1g. Подробно описан тут. Автор опирается на то что сумма квадратов проекций есть g в квадрате. Само по себе говорит что метод не для домашних условий и требует установки.
Идеально было бы найти метод дающий калибровочные данные (матрицу поворота, смещение и гейн) просто по эллипсу не опираясь на то что на него действует 1g. С магнитрометром в этом плане проще, так как магнитная индукция зависит только от железа, магнитов вокруг и поля Земли и при вращении ее величина не меняется. Для него есть программа Magneto, которая в любительских кругах стала дефакто стандартом калибровки магнитрометров. С гироскопом еще проще - просто оставить его в покое и взять средние значение по точкам это и будет смещение. Конечно на него будет действовать вращение Земли, но оно не очень быстрое (порядко нескольких сотен градусов в секнду) и им можно пренебречь. Но вот калибровка акселерометра как задача сложнее.
А как Вы калибруете акселерометры? Какие можете еще посоветовать методы? Какое Ваше мнение относительно приведенных методов? Все ли на Ваш взгляд я правильно из сети понял?
А Вам для чего? Какой у Вас полетный контроллер?
Самый распространенный метод калибровки для большинства полетных контроллеров - первый, по 6ти точкам. Есть контроллеры, которые калибруются по одной точке, и Вы будете смеяться, они самые распространенные, за последние 5-6 лет их продано десятки миллионов…) Смысл в том, что точность калибровки весьма условна, нужно всего лишь записать в память контроллера некоторые значения смещений, которыми потом будут оперировать алгоритмы стабилизации. Несовершенство самих алгоритмов, ограниченные ресурсы вычислителя, условия применения, температурный дрейф, вибрации и так далее, делают точную калибровку ненужной. В самых (крутых, наворочанных, прогрессивных и т. д.) контроллерах применяется избыточность датчиков, и то, не для точности, а для компенсации ошибок и глюков друг друга…
Не задумывался об этом, тогда действительно наверно по 6-ти точкам для дешевых мэмс датчиков оптимальный вариант. Однако, а улучшает ли такая калибровка заводские калибровочные данные (акселерометры имею ввиду)? Есть ли смысл тогда в такой условной калибровке?
Контроллер NAVIO2.
Есть ли смысл тогда в такой условной калибровке?
Смысл есть, аппараты у всех разные, контроллеры, большей частью, тоже отличаются. Даже если софт одинаковый, само железо может отличаться разводкой, качеством, производителем… У нас же калибруется модель в целом, а не отдельно акселерометр.
В Вашем случае, насколько я понимаю, навио это навигационный модуль для малинки, правильно? Он же сам по себе не управляет полетом? Тогда получается, что алгоритмы полета и стабилизации считает сама малинка, а у нее вычислительные ресурсы огромны, по сравнению с обычными полетниками, может тогда и имеет смысл писать процедуру точной калибровки. Но я все равно не представляю - зачем. Идеальных условий для точных измерений на движущейся модели не получить, да и абсолютные значения не нужны. Кроме того, инерциальная система навигации, сама по себе относительная. Как мне кажется, там имеет значение время разгона/время торможения и приблизительный вектор направления. Это для линейных перемещений, а поскольку в мультироторах все перемещения радиальные(изменение вектора тяги получается поворотом коптера вокруг одной из осей), то показания акселерометров поверяются показаниями гироскопов…
Верно, обсчитывает все малинка. Но как я понял уже точная калибровка это юзласс при данных условиях. Не учел что калибруется по сути модель а не сам датчик. Тогда наверно калибровка по 6-ти точках оптимальный вариант.