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

Как реверс-инжиниринг чужой инерциальной навигационной системы перерос в свою собственную разработку

Время на прочтение14 мин
Количество просмотров21K
Всего голосов 48: ↑48 и ↓0+48
Комментарии64

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

А чувствительные МЭМС элементы вы сами изготавливали?
Пока нет. Кроме самих МЭМС есть еще вопрос АЦП. В этом есть наработки.
Мы, в принципе, изготавливаем МЭМС для инерциальных датчиков, если интересно, можем пообщаться.
Конечно можно пообщаться :)
Круто! А стоимость по срвнению с ADIS16480 какая получилась?
Спасибо! Точную цифру не скажу сейчас, но однозначно дешевле, чем было в рознице в России для ADIS16480. Именно было, сейчас их не найти.
НЛО прилетело и опубликовало эту надпись здесь
1 dps — это разве не 1 гр/с? 3600 гр/ч получается. Тут как бы 16-битность ни при чем: датчик лежит на столе неподвижно, и при этом показывает, что он вращается со скоростью до +-1 гр/с, и эту скорость он выдает с 16-битной точностью.
НЛО прилетело и опубликовало эту надпись здесь

Здорово! Молодцы!
Но как всегда: цена, потребление, интерфейсы наружу, механический крепёж?
Как модуль отработает поворот перпендикулярно вертикальной оси со скоростью 0.1 градуса в секунду? bno055, например, при таких условиях в режиме полного фьюжена считает, что у него просто гироскоп врёт и не меняет курсовой угол. Через какое время после включения произойдёт дрейф курса на один градус (модуль лежит на столе неподвижно)?

И что, магнитометр не помогает понять что поворот реальный?

Не-а. В том и боль.

Если прибор будет неподвижен, то все ОК. Бесконечно долго мы сможем держать точность менее 0,5 (и даже лучше) градуса по всем углам. Для этого и нужно комплексирование и субоптимальная фильтрация.
А на остальные вопросы можете ответить? Или только по звонку? А если звонить, то куда конкретно и кому?
Но как всегда: цена, потребление, интерфейсы наружу, механический крепёж?

По присоединительным размерам, интерфейсу и схеме подключения — соответствует оригинальному ADIS16480. По протоколу взаимодействия тоже, но не полностью. Т.е. есть шанс, что если Вы уже используете где-то ADIS16480 мы его может заменить без доработок Вашего прибора.
Как модуль отработает поворот перпендикулярно вертикальной оси со скоростью 0.1 градуса в секунду? bno055, например, при таких условиях в режиме полного фьюжена считает, что у него просто гироскоп врёт и не меняет курсовой угол

По поводу такого поворота я не пробовал, но скорее всего оценка будет верной у нашего прибора. По цене c bnо055 мы не можем конкурировать, но наш прибор рассчитан для использования в динамичных объектах. Для описываемых Вами моделей движения он подойдет, но это как из «пушки по воробьям», по цене в том числе. Самое близкое что у нас сейчас на выходе — это модуль для наземного транспорта, но в тех же габаритах и идентичен по взаимодействию. Цену не скажу, но можете узнать у нашего маркетинга.
Спасибо!

С такими точностями датчиков полноценную бесплатформенную инерциальную навигацию не сделать. Через сколько времени ваше местоположение будет неправильным? В лучшем случае вы будете знать свое положение в помощь к gps с частотой знания места чаще 1гц, но это не автономная навигация.

Насколько конкретно неправильным? :) Поскольку ошибка знания угла присутствует всегда, то и ошибка счисления координаты тоже есть всегда. Особенно в вертикальном канале. Какая величина ошибки достаточна, чтобы считать местоположение «неправильным»?

Проблема наверное не только в погрешности угла, но и в акселерометрах? Сможет ли беспилотный аппарат вернутся в точку старта с неработающим gps с инерциальной системой на Мемс? От этой задачи и погрешности

Проблема наверное не только в погрешности угла, но и в акселерометрах? Сможет ли беспилотный аппарат вернутся в точку старта с неработающим gps с инерциальной системой на Мемс? От этой задачи и погрешности

Акселерометры в гораздо меньшей степени. Вернуться сможет, но с соответствующей точностью, которая зависит от времени работы без поддержки от приемника GPS/ГЛОНАСС.
Судя по табличке испытаний — полтора километра за 5 минут — я бы не расчитывал на то, что без GNSS дрон вернется в точку старта.
Ну вот да. Что Вы считаете неправильным? Я вроде привожу таблицу с летных испытаний, там указана накопленная «неправильность» за время полета по всем трем координатам в метрах. Координаты от приемника GPS тоже «неправильные», но уже с гораздо меньшими цифрами.
0
Как-то я может не понял, я в своих разработках использую LSM6DSO(X) — так вот там написано, что для гироскопа Angular rate zero-rate level +-1 dps, а с учетом 16-битности — это менее 0.005 градусов в секунду… И цена у нее — 150 рублей…
Кроме того, было бы интересно упомянуть абсолютные гироскопы, точность которых не зависит от времени работы…
.
005 — это речь о чувствительности, но не о нуле. А вот Angular rate zero-rate level для этой микросхемы ±1 гр/с (как Вы и указали), и это с калибровкой и на диапазоне ±125 гр/с, также тут надо учитывать температурную зависимость как нуля, так и чувствительности. Если посмотрите свой реальный прибор, то увидите там много интересного в плане этого нуля.
А что такое абсолютные гироскопы?
НЛО прилетело и опубликовало эту надпись здесь
Про кварц не очень понимаю. Но есть лазерные и волоконно-оптические гироскопы, но даже их точность зависит от времени, только в гораздо в меньшей степени (на порядки), чем у MEMS.
НЛО прилетело и опубликовало эту надпись здесь
Наше устройство по набору датчиков похоже на устройство Analog Devices …

А какие датчики использовали? в статье так и не увидел.

Практически те же
Чуть-чуть пояснений про инерциальную навигацию. Допустим, мы плывём в подводной лодке и хотим узнать свои координаты. Можно измерять скорость относительно воды, брать интеграл и вычисленный путь наносить на карту. Но вода сама течёт, это не годится. Можно измерять ускорение, вычислять второй интеграл и наносить путь на карту. Но как измерить ускорение? Допустим, есть прибор с пружинками. Пока лодка идёт горизонтально, он измеряет ускорение. Но как только она наклонилась, он измеряет силу тяжести. Или, допустим, маятник. Вот он отклонился назад — это лодка ускорилась или наклонилась носом вверх? Можно определять горизонтальную плоскость с помощью гироскопа, он вращается в одной плоскости. Но тут другая проблема — Земля круглая. Когда лодка плывёт, горизонтальная плоскость поворачивается, а гироскоп нет! И вот решение. Возьмём математический маятник (тяжёлая точка на невесомой нити) с длиной нити, равной радиусу Земли (называется «маятник Шулера»). Для него эти два эффекта (отклонение назад при ускорении и поворот горизонтальной плоскости) полностью уравновешивают друг друга и он качается всегда вертикально (с периодом 84 минуты с копейками). И вот мы можем определить вертикаль, горизонталь и измерить настоящее ускорение! Дальше уже инженерная задача — сделать устройство, работающее как маятник Шулера, но поменьше размером.
Маятник Шулера или Фуко не дает знаний о собственных поворотах, а всего лишь показывает направление вращения Земли и геодезическую вертикаль. Для определения местной вертикали есть акселерометры, а хороший гироскоп может почувствовать вращение Земли (скорость примерно 15 градусов в час). Но даже если гироскоп не таков, то в любом БИНСе математика учитывает вращение Земли в каждой оси в соответствии с текущими координатами. Частота Шулера сидит в виде ошибки при долговременной (несколько часов) инерциальной навигации. Например, этот период можно хорошо увидеть в данных гироскопов самолета пролетевшего из Москвы в Петропавловск-Камчатский.
Ровно на этом принципе и основаны гирокомпасы. Но чтобы оно работало, надо, чтобы собственная скорость дрейфа гироскопа была существенно меньше 15 градусов в час.
Проделана огромная работа, респект! Ответьте на вопросы, какие сможете:
1) Почему по несколько (два?) ДУС и акселерометров на ось? Снижаете шумы или есть какой-то другой смысл?
2) В статье не увидел, была ли выполнена калибровка датчиков, если да, то какие методы применялись? Где брали оборудование, делали сами? Была ли калибровка температурной зависимости? Для некоторых систем стоимость опциональной калибровки может составлять половину стоимости самого «железа»…
3) Какова полоса пропускания сигнала угловой скорости и общая задержка распространения? Это позволит оценить, насколько он подходит для использования в системах стабилизации с обратной связью.
Почему по несколько (два?) ДУС и акселерометров на ось? Снижаете шумы или есть какой-то другой смысл?

Несколько датчиков в оси — увеличивается точность, особенно при воздействии вибрации на ДУСы за счет их встречного расположения, при изменении температуры есть компенсация за счет разнонаправленного сдвига нуля. Также мы дорабатываем ПМО в части использования этого момента для резервирования датчиков.
В статье не увидел, была ли выполнена калибровка датчиков, если да, то какие методы применялись? Где брали оборудование, делали сами? Была ли калибровка температурной зависимости? Для некоторых систем стоимость опциональной калибровки может составлять половину стоимости самого «железа»…

Калибровка была обязательно и температурная обязательно. Очень объемная публикация, поэтому не все описано, и в комментариях тоже много не расскажешь. Могу только сказать, что никакого специального оборудования не было применено. Использовались горизонтированная плоскость, строительный уровень, ну и был специально изготовлен куб на 3D-принтере с ребром 300 мм. Плюс морозильная камера и руки. Также очень большую роль тут сыграли наши наработки по части вторичной обработки телеметрии — использование метода наименьших квадратов, скользящих фильтров и прочих математических аппаратов.
Какова полоса пропускания сигнала угловой скорости и общая задержка распространения? Это позволит оценить, насколько он подходит для использования в системах стабилизации с обратной связью.

Ну если вас это интересует, то заметили, что проводилось моделирование с воздействием вибрации вплоть до 1000 Гц и никаких проблем не выявлено. Вся навигация может просчитываться с частотой до 2500 Гц, «сырые» сигналы от датчиков проходят через RC-цепи c частотой среза 350 Гц. Для определения работоспособности системы стабилизации нужно ставить на аттестованный поворотный электромеханический стол и замерять уже фазовые задержки на режимах работы конкретной системы стабилизации с соответствующими угловыми скоростями и амплитудами.
НЛО прилетело и опубликовало эту надпись здесь

Возможно-ли на МЕМС гироскопах (без ВОГ, ЛОГ) сделать инерциальную систему на 5 мин автономного счисления с точностью 5-10 м?

Это гироскоп с дрейфом не более 0.015гр./час. МЕМСы такие не делают, а ВОГ и ЛОГ с такими точностями имеют совсем не гуманный ценник.

НЛО прилетело и опубликовало эту надпись здесь
Да, раскатал губу, согласно утверждению в этой статье...

В той статье модель движения — автомобиль, нету вибраций, нет скольжения, есть остановки, все это можно использовать для улучшения ситуации с точностью координат. Например, для полетов на нормальном коптере фильтр Маджвика не годен, развалится быстро, потому как сильно надеется на данные акселей. В общем «вундервафен» не бывает, для получения оптимального результата надо учитывать как модель ошибок датчиков, так и модель движения объекта.
НЛО прилетело и опубликовало эту надпись здесь
Когда я про скольжение говорю, имею в виду чисто авиационный угол скольжения. Его GPS не помогает выудить. А конусное искажение — это Вы про движение типа «монетка на столе»? Мы с Вами про одно и тоже говорим? :)
НЛО прилетело и опубликовало эту надпись здесь
По поводу угла скольжения для меня роднее и понятнее ГОСТ 20058-80, этот параметр связан с механикой полета летательного аппарата в воздушной среде, т.е. с расхождением вектора движения и продольной строительной оси ЛА, а обычный GPS-приемник измеряет скорости объекта как материальной точки и этот угол сидит в нем как ошибка. Для исключения вычислительного дрейфа при коническом движении или любом другом (типа на воде «весельное») мы просто очень часто вычисляем угол — до 1000 Гц, плюс можно использовать аппроксимации, заточенные на такие модели движения.
0.015 гр/час — это Вы загнули. Это практически миля в час :)Такое на истребители ставят. При таком раскладе за 300 секунд будет меньше метра

откуда миля в час то?

уход=g*ошибка по углу*(t^2)*0.5=

9.8*(0.015*(3.14/180))*3600*3600*0.5=16.6км.

Ваша формула не для ухода, а чистая погрешность знания угла. При таком подходе все будет гораздо хуже, ошибка по углу будет нарастать со временем. Т.е. это будет g*(систематический уход) *(t^3)/6. Мы эту систематику оцениваем и учитываем у себя, как и оцениваем ошибку угла (во время выставки). Поэтому я привожу формулу именно для нестабильности нуля, параметр статистический, который меняется во времени и мы его не можем учесть, он как бы может гулять и в плюс, и в минус.

Мы эту систематику оцениваем и учитываем у себя, как и оцениваем ошибку угла (во время выставки).

и что, за час работы никуда ничего не уходит?

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

Хммм. Ну тут немного о разных вещах говорим. Под дрейфом я понимаю некоторый эквивалент всей БИНС с формулой ухода приведенной выше. Т.е. если сию коробку с БИНС выставить и оставить на столе на час, то по координатам набежит ошибка, из которой можно вычислить эквивалентный дрейф: dX=g*Dreif*3600*3600/2.

Собственно из этого дрейфа можно вычислить и эквивалентное смещение 0 гироскопа.

Уходит, хорошо уходит, но систематику мы выгребаем. Вы думаете как работают всякие домашние леталки? Там в микросхемках уходы по 1000 и более градусов в час, но они более менее работают (без GPS) то небольшое время именно благодаря начальной оценке/выставке.
dX=g*Dreif*3600*3600/2
Слушайте, Вы опять приводите формулу для угла, а не дрейфа. Если есть систематический нескомпенсированный дрейф, то этот угол будет со временем нарастать (пропорционально), поэтому для дрейфа в формуле время влияет уже в третьей степени. Если не оценивать систематический дрейф, то никакого лазерника не хватит, чтобы сделать инерциалку с точностью координат миля в час, что является практически уже стандартом для современной авиации.

Уходит, хорошо уходит, но систематику мы выгребаем. Вы думаете как работают всякие домашние леталки?

по gps иначе с такими точностями никак, ну или:

более менее работают (без GPS) то небольшое время

По хорошему выгребание ошибок БИНС возможно только с помощью корректора (gps, датчики пути, датчики скорости, кэнс, астровизиры итд). Как Вы ее выгребаете без них, в системе с 6 степенями свободы - мне непонятно.

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

В том и суть. Грубо говоря поставили гироскоп на час, проинтегрировали показания, получили некий уход, в градусах в час. При последующих включениях будет другой уход (в другую сторону, на другую величину итд). В итоге после N включений можно даже статистику собрать и чего нибудь посчитать, например СКО и сказать что гироскоп по три сигма - убегает не более столькито градусов в час. Короче говоря дрейф случайный и не систематический, потому и не учесть его никак. И поэтому вводить линейный дрейф нуля не совсем корректно.

По хорошему выгребание ошибок БИНС возможно только с помощью корректора (gps, датчики пути, датчики скорости, кэнс, астровизиры итд)....
Акселерометр — это тоже есть датчик скорости.
ΔR = g0*(t^2/2)* θ + g0*(t^3/6)*m + t*ΔV + ΔR0 — а вот формула для полной ошибки по координате в одной плоскости. Здесь первый компонент — множитель θ начальная ошибка по углу (можно сказать ошибка невыставки), затем m — нескомпенсированный систематический дрейф, ΔV — начальная ошибка знания скорости (по сути неноль акселерометра), ΔR0 — начальная ошибка по координате. А вот предыдущая формула, которую я приводил — это статистическая зависимость, когда мы считаем, что всю систематическую ошибку дрейфа ДУС мы вычислили во время выставки.

Акселерометр — это тоже есть датчик скорости.

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

ΔR = g0*(t^2/2)* θ + g0*(t^3/6)m + tΔV + ΔR0 — а вот формула для полной ошибки по координате в одной плоскости. Здесь первый компонент — множитель θ начальная ошибка по углу (можно сказать ошибка невыставки), затем m — нескомпенсированный систематический дрейф, ΔV — начальная ошибка знания скорости (по сути неноль акселерометра), ΔR0 — начальная ошибка по координате.

Смущает то что у Вас зависимость ошибок по координатам имеет 3-й порядок (обычно квадрат времени - ошибки по координатам, линейная зависимость - ошибки по скорости). Хотя может это мэмс датчики настолько плохи, незнаю.

Ну и ΔV к ненулю аксика не имеет никакого отношения. m - дрейф чего? акселерометра? т.е. по сути смещение 0 акс: m*t?

Ну все ясно. Товарисч, все это азы. Таблицу умножения не желаете покритиковать?
Ну все ясно. Товарисч, все это азы. Таблицу умножения не желаете покритиковать?

Это Ваши азы и Ваши заблуждения. Я их не критикую :) Если Вы считаете что акселерометр — датчик скорости, а начальная ошибка по скорости — смещение 0 акселерометра, ну считайте дальше.

да-да, и интегралы ещё не придумали, и умножение надо считать сложением. Все это заблуждение.

Userpc0101
Возможно-ли на МЕМС гироскопах (без ВОГ, ЛОГ) сделать инерциальную систему на 5 мин автономного счисления с точностью 5-10 м? Если начальную точку счисления глобальных координат получить с RTK точностью (сантиметры) насколько это увеличит время?

Смотрите, зависимость точности счисления координат следующая.
«точность счисления в метрах» = 0.03 (коэффициент, куда входят сила тяжести и время корреляции, т.е. коэффициент этот может немного варьироваться)*«нестабильность нуля ДУС в размерности радиан в секунду»* «время» в степени 7/2 (3.5). Для точности 5 метров за время 300 секунд получается в районе 0.1 градус в час, чуть лучше, для точности 10 метров это будет чуть хуже 0.1 градуса в час. Я слышал, что близкое к этому делают такие фирмы как Sensonor, Tronics и еще кто-то, они заявляют нестабильность нуля ДУС менее градуса в час, но не менее 0.1. Плюс это более объемные, увесистые и дорогие штуки, может даже по этим параметрам они приближаются к самым слабым ВОГ. В этой прикидке я не учитываю начальную ошибку, просто считаю ее нулю, т.е. мне без разницы — RTK или простой приемник.
НЛО прилетело и опубликовало эту надпись здесь
0.03*(0.01*pi/180)*60^3.5 получается не 0.1 а 0.01 а тем более 300 секунд?

У меня по Вашим цифрам 8.76 получается, метров. Только учтите, что 0.01 -градус в секунду, т.е. это на самом деле 36 градус в час, а вот те 0.01 градус в час, в расчете должны быть как 0.0000027777
НЛО прилетело и опубликовало эту надпись здесь
Ну не все так просто, я про Scha63 ничего не знаю. Почитайте внимательно DS на ADIS, что и как: что это за параметр 8 градусов в час, каков его характер, потом все точности обеспечиваются после калибровки. У меня в ADIS16480 нету никаких 6, 25 градусов в час.
НЛО прилетело и опубликовало эту надпись здесь
Может БИНС использовать данные датчика воздушной скорости для уменьшения ошибки счисления координат как это реализовано в EKF3 Ardupilot или каке-то другие способы (оптический поток, радар и п.р.). Ещё-бы не плохо если можно было загружать туда данные лидара для получения высоты относительно земли и компенсации наклона?

Для комплексирования как говорится «каждое лыко в сроку». У себя мы используем бародатчик для уточнения вертикального канала (бароинерциальный фильтр), а можно любой другой высотомер — радио или лидар, если есть такая информация. Но нужно осторожно подходить к выбору информации — как я уже писал «понимать модель ошибок датчика и модель движения объекта». Например, датчик воздушной скорости очень прилично шумит, поэтому польза от него будет только начиная со скоростей 60...80 км/ч, потом его очень важно правильно установить. Так что коррекция нужна, но нужно каждое применение рассматривать отдельно.
Потом Вы вроде в начале писали про автомобильное применение. Там точно уж будет хорошо использовать одометр.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий