Comments 22
Классно!
Данный метод используется для калибровки в Ardupilot. Всегда было интересно как это делается
Данный метод используется для калибровки в Ardupilot. Всегда было интересно как это делается
+2
Магнетометр-то откалибруете, а вот акселерометр так калибровать смысла никакого нет. Как раз потому что он стоит немного неровно. Его калибруют просто поставив коптер на ровную горизонтальную поверхность (желательно с уровнем) — от него требуется держать коптер горизонтально, чтобы дрифта постоянного не было.
0
Боюсь Вы не уловили суть. Пожалуйста, обратите особое внимание на текст статьи, начиная со слов «Например, мы знаем, что если акселерометр поставить в уровень с горизонтом...»
+1
А нафига? Вы хотите сделать уровень электронный, что-ли? Акселерометр нужно калибровать по горизонтальности коптера, а не самого акселерометра или его платы. Это коптер должен быть горизонтален (а не акселерометр), иначе просто будет лететь в сторону наклона.
+3
Хорошо. Представьте, что коптер неподвижно лежит ровно по уровню на земле, а его датчик показывает ускорение, направленное на юго-восток, величиной = 3g.
Вопрос: что вы, как разработчик коптера, планируете делать с показаниями датчика?
Вопрос: что вы, как разработчик коптера, планируете делать с показаниями датчика?
0
У всех контроллеров на этот случай есть ручная калибровка, они просто запомнят, что нужно -3 вычитать (ставим на ровную поверхность, кликаем на калибровку, контроллер запоминает положение «ноля»). У продвинутых — есть еще и ручные перевороты коптера по определенным осям при калибровке, просто чтобы понять, что контроллер не вверх ногами закреплен.
0
Представьте, что Вы — это датчик. Вас тянет вправо с силой 10g. Вопрос: где земля?
0
10g акселерометр не выдаст в спокойном положении.
0
Это чтобы проиллюстрировать суть проблемы. Представьте, что с датчиком всё в порядке. Но он показывает вот так. Как система должна определить — где земля?
0
Во-первых, не покажет. Во-вторых, контроллеру не нужно знать где земля, ему нужно знать что отклонение коптера от горизонтального положения.
+1
Да какая разница где земля? Контроллер должен зафиксировать значения в положении, в котором точно известно, что он должен показывать (=g=), — и дальше корректировать свои показания по этим значениям. Ему не надо знать, почему. Ему надо показать в таком же положении ровно такое же =g=. Если его показания линейны, то при отклонении на 0.5g по оси он получит значения, смещенные от «калибровочных» на 0.5g по этой оси. Что, собственно, и нужно.
0
«Ему надо показать в таком же положении ровно такое же =g=»
Господа, статья вообще не об этом. Видимо имеет место различные значения, придаваемые слову «калибровка».
Здесь рассматривается задача, с которой не сталкиваются пользователи. Разработчики её решают до того, как изделие к ним попадёт — смещение нуля датчика.
Господа, статья вообще не об этом. Видимо имеет место различные значения, придаваемые слову «калибровка».
Здесь рассматривается задача, с которой не сталкиваются пользователи. Разработчики её решают до того, как изделие к ним попадёт — смещение нуля датчика.
0
Как представитель той самой когорты «разработчиков» смею уверить, что смещение нуля датчика — данные совершенно несущественные (за исключением откровенно лажовых случаев, когда масштаб бедствия намекает на какие-то конкретные ошибки в сборке). Значение для ориентации устройства в пространстве имеет только отклонение от «нормы» по трем осям. Норма должна фиксироваться в собранном виде, ибо никакая сборка в настоящее время не даст точную установку датчика и отсутствие его деформаций.
Вопросов должно быть только два: линейность и изотропность показаний в зависимости от смещений, и «нормальное» положение.
Вопросов должно быть только два: линейность и изотропность показаний в зависимости от смещений, и «нормальное» положение.
0
Ниже в комментариях некто HomoLuden правильно пишет: "… статья… про компенсацию чисто инструментальной погрешности изготовления и установки датчика на плату контроллера."
И это верно.
На смещение нуля действительно можно не обращать внимание (если Вас не смущает сдвиг нуля на пару дм/с2), и, как я и пишу в статье, его может скомпенсировать фильтр. Так же как и дрейф нуля.
Если Вы под «нормой» понимаете определение некоего опорного направления (например g) — согласитесь, что это другая задача.
И это верно.
На смещение нуля действительно можно не обращать внимание (если Вас не смущает сдвиг нуля на пару дм/с2), и, как я и пишу в статье, его может скомпенсировать фильтр. Так же как и дрейф нуля.
Если Вы под «нормой» понимаете определение некоего опорного направления (например g) — согласитесь, что это другая задача.
0
Пользователь получает коптер либо с уже откалиброванным датчиком, либо эта процедура вообще не производится и смещение нуля компенсирует фильтр. Вы описываете процедуру определения положения в пространстве по вектору силы тяжести. Это вообще о другом.
0
Центр шара можно найти в одно действие. А именно, он будет лежать на пересечении плоскостей, перпендикулярных отрезкам между точками сферы и проходящих через их центры. Ну или на пересечении перпендикуляров к треугольникам, проведённых через центры их описанных окружностей. Хотя, конечно, всё равно он будет с ошибкой, и надо будет уточнять.
> Не забывайте ставить плюсик
Попрошайничать нехорошо.
> Не забывайте ставить плюсик
Попрошайничать нехорошо.
0
Вместо жесткой фиксации 10%-ного трешхолда на выбросы я бы использовал кластеризацию. Например, даже с евклидовой метрикой расстояний. При корректной организации измерений нибольший кластер должен оказаться искомым.
Вопрос использования алгоритма K-means при этом осложняется необходимостью задания K — количества кластеров. Но это вполне можно обойти многократным прогоном с возрастающими K. В определенный момент искомый кластер начнет дробиться на более мелкие — это можно отследить.
Вопрос использования алгоритма K-means при этом осложняется необходимостью задания K — количества кластеров. Но это вполне можно обойти многократным прогоном с возрастающими K. В определенный момент искомый кластер начнет дробиться на более мелкие — это можно отследить.
0
Например, если перевести типичную величину смещения нуля для акселерометра датчика MPU9250 в м/с2, то это получается в районе 0,2 м/с2. Т. е. датчик неподвижен, но при этом показывает ускорение, а через 5 секунд мы получаем скорость в 1 м/с. С одной стороны, все данные датчиков всегда пропускают через какой-либо фильтр (например такой). Но с другой стороны зачем фильтру постоянно компенсировать это смещение? Ведь датчик будет показывать движение там, где его нет. Это снижает точность результата. А всего то нужно один раз найти величину смещения и потом во время работы датчика вычитать эту величину из его показаний.
Спешу расстроить, но дрейф MEMS датчиков (гироскопов особенно, но и акселерометры страдают в значительной степени) величина случайная. Она меняется во время работы и между запусками. Калибровать нужно непосредственно перед запуском, т.к. играет роль величина питающего напряжения, температура и другие факторы текущих условий эксплуатации.
Я понял про что статья. Она про компенсацию чисто инструментальной погрешности изготовления и установки датчика на плату контроллера. Но эта задача, во-первых, теряет актуальность в изложенном виде в виду сложности проведения такой калибровки в поле (если принять факт, что дрейф меняется). А во-вторых, на практике важнее знать, что нужно вычесть из показаний датчика, чтобы при абсолютно горизонтальном положении коптера (всего БПЛА, а не платы с контроллером) акселерометр выдавал {0;0;g}.
0
Статья действительно про компенсацию чисто инструментальной погрешности изготовления и установки датчика на плату. Предполагается, что компенсация выявляется на этапе изготовления один раз, но метод настолько прост, что можно это сделать и в поле. Для потребителей это действительно не актуально.
Про дрейф нуля гироскопа — это отдельная история. Установка горизонта — тоже отдельная история, не имеющая отношения к данной статье.
Про дрейф нуля гироскопа — это отдельная история. Установка горизонта — тоже отдельная история, не имеющая отношения к данной статье.
0
Sign up to leave a comment.
Заметка о калибровке датчиков положения в домашних условиях