Как стать автором
Обновить

Использование инерциальной навигационной системы (ИНС) с несколькими датчиками на примере задачи стабилизации высоты квадрокоптера

Время на прочтение8 мин
Количество просмотров87K
Всего голосов 38: ↑37 и ↓1+36
Комментарии37

Комментарии 37

Вот всегда было интересно, 3-x осевые акселрометры показывают угол рысканья или это так не понятно, что показывается. Чиста конструктивно вроде понятно, такие же опкладки конденсатора расположили тока относительно другой оси, но работают ли они? и Что там на выходе?
Акселерометр показывает только ускорения. Рыскание и прочие вращения он не «видит». Их «видит» гироскоп (быстро и точно), компасс (медленно и плохо)
Тоесть ускорения по оси Z как такового нет?
При поворотах — нет. Возможно есть сложные наводки на датчик из-за его неидеального расположения и центробежных сил, но это все не относится к «полезной» информации.
Тогда получается нет смысла в трех осевых акслерометрах, но их выпускают=)))
Как это нет, без 3-х осей никуда :) Ведь система постоянно меняет ориентацию, и начинают рабоать все 3-оси акселерометра при наклонах. Да и линейные перемещения возвожны по всем трем осям. А при вычислении проекций нужны все три компонента вектора.
Трех осевой датчик измеряет в проекциях на оси координатной системы, жестко привязанной к подвижному объекту.
Чё-то я совсем запутался. У нас допустим коптер, он находится на какой-то высоте параллельно земли, тоесть все углы равны нулю (тангаж, крен, рысканья). Тут он начинает вращаться относительно свой оси Z, вообщем изменять курс. На выходе 3-х осевого акселерометра, ускорение по углам тангажа и крена будет равно нулю, а по курсовому углу тоже 0 (лично на простой плате проверял). Или я не прав? Или это только в этом случаи там будет 0. Помогите разобраться=((
Да, ускореня по всем осям будут 0 — это ж акселерометр, он не меряет углы. По моему, вы путаете его с гироскопом — это совсем другой прибор, в вашем примере именно он начнет выдавать ненулевые показания.
Если коптер четко выставлен в горизон, то ускорения относительно осей, связанных с коптером будут следующие: Ox — 0g; Oy — 0g; Oz — 1g (со знаком минус, если быть совсем точно).
Ускорения в географической СК (относительно поверхности Земли) проецируются на оси коптера. Если коптер в горизонте, то углы между осями географии и самого коптера нулевые => проекции на коптер будут такими же как у географической СК. И тогда действительно трехосевой аксель не нужен.
А вот если коптер повернется (наклонется или отклонится от направления на север), то ускорения на его СК спроецируются иначе.
Возвращаюсь к своему вопросу. Все верно вами описано, вроде как трехосевой аксель не нужен. Но вот хорошая статья bitaks.com/resources/inclinometer/ugol_naklona.pdf в которой объясняется необходимость других осей. Вдруг кто-то будет читать и пригодится заодно.
МММ Вроде годная статья. Тока по акселям корректировать ориентацию черевато необходимостью ограничивать маневренность аппарата. Иначе собственное ускорение введет в заблуждение коррекцию по вектору g.
Это понятно, что одними «акселями» сыт не будешь.
Я имел в виду не коррекцию «только лишь по одним акселям». Я хотел сказать, что сама по себе коррекция по вектору g с использованием акселерометров заставляет ограничивать динамику дрона. Мне кажется от нее следует либо вообще отказаться где возможно, либо быть с ней осторожным.
> Да, ускореня по всем осям будут 0 — это ж акселерометр, он не меряет углы.
Вы и сами запутались. Хотели, как я понял, написать: «угловые скорости будут ноль, т.к. это аксель и он не измеряет углы». Но и эта фраза будет некорректной.
Да, все верно, запутался — акселерометр в покое всегла выдает 1G, а не 0. Угловые скорости он не меряет, но по направлению 1G можно определить, где земля, с поправками на линейные ускорения. Т.е. им можно мерять углы по двум осям (крен и тагнаж), но для точного измерения ориентации в любых ситуациях он не подходит.
"* довольно хорошие 3-х осевые гироскопы.
* средние по качеству 3-х осевые акселерометры"
«Довольно хорошие» на мой взгляд — это датчики серии iSensor от Analog Devices с ценой за 20+ тыс. р. И то у них точностные характеристики не супер (если говорить о трех осевых комбаинах с акселями, гирами и магнетами на борту). Зато цифровой выход и все в одном корпусе.

«Но у них есть проблема — показания уплывают со временем. Для коррекции этого дрифта применяется акселерометр, который всегда (ну или почти всегда в долгосрочной перспективе) знает, где земля.»
«Ну или почти всегда» — в литературе называется "кажущимся ускорением" (ссылка на тему космоса, но и в авиации вопрос очень актуален). Если аппарат будет расчитан на статику (движение с постоянной скоростью или зависание), то можно скорректировать по акселерометру. А иначе вы будете корректировать черти знает по чему.

Разьве что воткнете в Андрюшу уравнения моделирования БИНС — тогда да, и магнетометры и акселерометры помогут снизить случайный дрейф гироскопов. Но дешевые гироскопы за $10-20 не лучшая сенсорная база.
1. Речь идет в первую очередь о любительнском применении, а для него гироскопы из серии ITG3200 действительно очень хороши: я пробовал отключить коррекцию по акселеромтеру и посмореть динамику уплывания — даже при наличии вибраций от моторов она очень мала.

2. В в данном применении навигации СРЕДНЕЕ ускорение равно нулю: аппарат или движется с постояной скростью или висит. Комплементарный фильтр с достаточно высоким k практически не замечает кратковременные линейные ускорения, которые «смещают» 1G, и хорошо усредняет их в 0. Таким образом, на 99.9 процентов углы меряет гироскоп.

3. «Разьве что воткнете в Андрюшу уравнения моделирования БИНС» — для задач стабилизации по крену и тангажу высокая точность не сильно важна… Для задачи, которую я решаю в статье, уже важнее — но и тут алгоритма с комплементраный фильтром вполне хвататет. Если хочется ещё точнее — есть фильтр Калмана, но тут придется искать компромисс между малым временем цикла (и соответсвеннно точностью измерений и бытртой реакции) или более высокой точность вычислений и увеличением требуемого на них времени. Сейчас MultiWII в рекордсменах по времени цикла (порядка 3-4мс) и за это его ценят любители «акробатического» полета.
> я пробовал отключить коррекцию по акселеромтеру и посмореть динамику уплывания… она очень мала.
В цифрах есть возможность привести? И как оценивали?
Я предлагаю так: в течении минуты совершить пару маневров в сторону, сделать несколько оборотов вокруг вертикали и вернуть аппарат в исходную позицию. Вычислить разности углов ориентации до маневров и после. Получим угловой дрейф за минуту.

> Комплементарный фильтр с достаточно высоким k практически не замечает кратковременные линейные ускорения
и
> есть фильтр Калмана, но тут придется искать компромисс между малым временем цикла (и соответсвеннно точностью измерений и бытртой реакции) или более высокой точность вычислений и увеличением требуемого на них времени
Во-первых, как я понял «компл. ф-р с большим коэфф.» как раз и фильтрует всплески за счет большой инерционности (аналогично ФК с глубокой инерцией); во-вторых, инерционность фильтра приводит к смещению сигнала по амплитуде/фазе (в зависимости от того что оценивать); в-третьих, ФК можно несложно настроить на компромисс между сглаживанием, минимальным смещение оценок и широтой полосы пропускания. К тому же можно реализовать два ФК, работающих параллельно (в разных режимах) либо каскадированно.
комплементарный фильтр — это не совсем Low-pass фильтр. Не знаю можно ли его сравнить с Калманом (я его так и не осилил), но он не режет ни фронты, ни фазу. При k = бесконечности, либо если A1 совпадат с A2 — он вообще не меняет сигнал A1 (проверьте это, подставив экстремалные значения в формулу выше). Если рассогласование A1 и A2 большое, то да — результат уже не идеален, но полезную работу фильтр все равно делает.
> он не режет ни фронты, ни фазу.
и
> Комплементарный фильтр с достаточно высоким k практически не замечает кратковременные линейные ускорения
Как то невяжется вроде? Если он съедает кратковременные всплески, стало быть он режет фронт, т.е. резкое увеличение амплитуды. Стало быть при подаче на его вход синусоиды, к примеру, он изменит амплитуду, а может и задержку внесет. Не так разьве?
Вы не учитываете, что фильтруется две величины, которые имеют разное поведение. Фильтруя показания акселерометра, мы не съедаем всплески, а наоборот пропускаем их абсолютно без изменений. Съедается только дрейф.

Вот удачная аналогия: комплементарный фильтр пропускает одну величину через High-Pass фильтр, вторую через Low-Pass, и степень фильтрации зависит от разности величин. Если они достаточно близки, влияние фильтра стремится к 0.
Вот ссылка на видео Youtube. На видео показан процесс тестирования ITG3200. В конце видно как «плавает» среднее. Насколько я смог разглядеть, в диапазоне ± 2 (гр/сек?). Видимо датчик плохо сопротивляется вибрациям.
Если дрифт постоянный и всегда в одну сторону — это всего лишь говорит о неправильной калибровке 0. В MultiWii 0 гир калибруется при каждом включении, но неидеально (округляется до целого), если ввести хотя бы десятые становится намного лучше. Но в данном применении гироскопа, даже ощутимый дрейф не страшен, так как есть референсная ориентация (компасс и акселерометр) по которой он исправляется.
> Если дрифт постоянный и всегда в одну сторону
С систематической ошибкой и вправду не проблема разобраться. Но в том то и проблема, что у микромеханики случайный дрейф нуля слишком велик. И тут осреднением не помочь (нуль дрейфует в характерных промежутках времени в минутах и более). Дрейф вызывают сразу несколько факторов: колебания напр. питания, вибрации, колебания температур и многое другое.

> Но в данном применении гироскопа, даже ощутимый дрейф не страшен, так как есть референсная ориентация (компасс и акселерометр) по которой он исправляется
Про аксель писали выше — придется сильно ограничивать динамику объекта. А компас дает точность, насколько мне известно ± пол градуса. Точность компаса, возможно и достаточна.
>А компас дает точность, насколько мне известно ± пол градуса. Точность компаса, возможно и достаточна.

Если бы :) После включения моторов с перемеными токами в 40А компас дает шум +- 30 градусов ну и просто дрейфует. Но и этого вполне достаточно чтобы аппарат стабильно держал курс.
Акселерометра тоже достаточно, турбулентности и ветер дают большИе возмущения чем погрешности, связанные с динамикой объекта. Каким бы точным не был измеренный угол, аппарат все равно будет дрейфовать и держать его на месте можно тольок по GPS или камере.
А заэкранировать магнеты не получается?
Наводка ещё и из-за тока в проводах. Магнитное поле экранирется только большим кол-вом метала, в данном случае боремся за каждый грамм и это не выход :)
Если компасс нужен для более точных целей (полетам по GPS например) — его выносят на отдельном луче подальше.
> Наводка ещё и из-за тока в проводах. Магнитное поле экранирется только большим кол-вом метала
Я имел в виду заэкранировать магнетометры от мощной электро-механики.
Надо на досуге покурить про экранирование от эл/маг помех. Помнится был у нас курс «про Это» — кажется важно не количество металла, а слоистость и ячеистая структура экрана. К примеру, микроволновки экранируются, как недавно выяснил, тонкой сеткой на дверце и резонатором по периметру дверцы. Немного металла.
При проектировании гироприборов масса-габариты + помехозащищенность — это одни из важнейших критериев. Мне кажется правильно расчитанный экран не должен весить много.
Реквестирую спеца по экранированию.
Спасибо за пост, проникся.

Я пока собрал 4-коптер на плате Hobbyking V2 (она же плата от KaptainKuk). На ней, как я понял, только 3 гироскопа. Соответственно, она не корректирует медленные наклоны, когда угловое ускорение по осям близко к нулю, и коптер, повисев секунду-другую, начинает плавно сваливаться в какую-нибудь сторону.

Монстры RC, конечно, запросто корректируют это вручную с аппы, но мне хочется, чтобы коптер хоть как-то зависать умел. Поэтому хочу поменять систему управления на нунчаку от Wii с имеющейся у меня платой AVR-Crumb128 (баро, сонар и GPS в перспективе).

Есть такое вот видео моего прототипа: www.youtube.com/watch?v=lg9BNtJFJXs
с КК не сталкивался, но вроде говорят что да — сложно в управлении. Как первый контроллер не посоветовал бы, даже несмотря на дешевизну. Стоимость крашей будет выше съэкономленной суммы.
А вот мой коптер
www.youtube.com/watch?v=yPc5uTRlf1g
собран еще на платке HK v1.
Недавно как раз прошил 4.7 прошивку и настроил — летает.
Действительно на плате только гироскопы, причем по одному на направление.
По платке очень помог форум forum.rcdesign.ru/f123/thread236143.html

У меня все крутится идея к HK плате добавить акселерометр и датчики расстояния (что бы определять стены и вообще преграды и не налетать на них), но просто к этой плате уже не добавишь. Похоже надо будет делать дополнительную плату с датчиками и отдавать уже готовые данные на плату HK. Вот тут опыт автора темы очень бы пригодился, так как я в программировании AVR новичок, а в алгоритмах обработки данных с датчиков вообще пока ноль.
Вообще я не сильный знаток AVR (ещё и ста строк кода не написал), я просто смотрю код проекта и пишу по аналогии. Ну и с датчиками так же — ищу в инете как их люди подключают… IR сенсоры вроде широко применяются в DIY-робототехнике, так что все реально. Посмотрите на ArduCopter — там больше всего датчиков уже навешано, и исходники открыты.
Вопрос о датчиках в смартфоне: там давно есть все эти гироскопы, акселометры, компасы и прочее. Появилась ли хоть одна программа например для Android и Galaxy S (и выше), которые продолжают определять положение при перемещениях внутри зданий? Например внутри ТЦ с привязкой к картам ТЦ, с привязкой к этажу. Или внутри смартфонов не хватает ещё каких-нибудь датчиков?
В смартфонах только недавно стали ставить гироскопы (и то в топовые модели, т.к. это дорогой датчик). Но даже наличия «всего набора» датчиков ИНС недостаточно для определеня положения без помощи GPS. Возможно определение только ориентации. И я даже не представляю какой датчик надо добавить, чтобы смартфон выдавал координаты без GPS (акселерометр это может в теории, но он должен быть сверхточный и малощумящий).
Есть решения (по карйней мере я видел публикации), где ИНС на транспортном или летательном средстве используется в связке с GPS, чтобы подменить его в туннелях, пролетах под мостами — когда кратковременно теряется сигнал GPS.
Относительно дорогой, например уже появился STM330D (гироскоп + акселерометр в одном корпусе) всего за $3, думаю точности такого вполне для смартов хватит, так что скоро везде такого типа ставить будут.
Разъясните, пожалуйста методику корректировки показаний гироскопа по показаниям акселерометра с использованием комплементарного фильтра.
Вот формула:
image
Если приводить размерности, имея в виду: k — безразмерная величина, А1 — м/сек^2, А2 — гр/сек.
Даже если у k есть размерность — все равно не стыкуется, вроде.
Я думаю об этом стоит написать в данном посте или даже в отдельном.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории