Pull to refresh

На пороге дополненной реальности: к чему готовиться разработчикам (часть 2 из 3)

AR and VR

Это продолжение (см. часть 1) стенограммы одноименного доклада с конференции ADD-2010.

В этой части речь пойдет о том, как обрабатывать данные с сенсоров, а именно: акселерометров, гироскопов и магнитных компасов. И зачем в современных устройствах ставят все три вида датчиков.
Читать дальше →
Total votes 64: ↑62 and ↓2 +60
Views 50K
Comments 15

Фильтр Калмана — !cложно?

Algorithms *
Недавно прочитал пост из «Дополненной реальности», в котором упоминается Фильтр Калмана в сравнении с более простым «альфа-бета» фильтром. Давно собирался сочинить нечто вроде сниппета по составлению ФК, и вот думаю самое время. В статье я вам расскажу как на практике можно составить расширенный ФК не особо утруждая себя высоконаучными размышлениями и глубокими теоретическими изысканиями.
Под катом попытка рассказать по-простому о сложном
Total votes 73: ↑69 and ↓4 +65
Views 80K
Comments 14

Без запаха фильтрации и нелинейного оценивания*

Algorithms *
image * от англ. «unscented filtering and nonlinear estimation» (by Переводчик Google)
По просьбе dmitriyn решил опубликовать свое видение на так называемый «Unscented Kalman filter», который является распространением линейной фильтрации Калмана на случай, когда уравнения динамики и наблюдения системы нелинейны и не могут быть адекватно линеаризованы.
Как название данного метода фильтрации «кошерно» удобочитаемо переводится на русский я пока не знаю, что отражено в названии статьи, поэтому решил просто скопипастить довольно забавный, на мой взгляд, машинный перевод. Еще одна забавная версия перевода — нечуткий фильтр.
Под катом моя попытка по-простому рассказать про UKF
Total votes 32: ↑27 and ↓5 +22
Views 32K
Comments 12

Фильтр Калмана

Algorithms *Mathematics *
Tutorial


В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
Читать дальше →
Total votes 178: ↑173 and ↓5 +168
Views 362K
Comments 84

Генератор Федеративного Фильтра Калмана с использованием Генетических Алгоритмов

.NET *Algorithms *Concurrent computing *
В рамках своей научной активности реализовал так называемый Федеративный Фильтр Калмана (Federated Kalman Filter). В этой статье рассказывается о том, что такое «Федеративный ФК», чем он отличается от обобщенного, а также описывается консольное приложение, реализующее данный фильтр и генетические алгоритмы для подбора параметров его математической модели. Приложение было реализовано с использованием TPL (Task Parallel Library), поэтому пост будет интересен не только специалистам по цифровой обработке сигналов.

UPD1: после прочтения двух недавних статей решил тоже присоединиться к эксперименту/исследованию/авантюре (называйте как хотите). В конце статьи добавил еще один опрос — "Стали бы Вы поощрать рублем такие узко специализированные статьи на Хабрахабре?".

Под катом описание и ссылка на сорцы
Total votes 60: ↑57 and ↓3 +54
Views 24K
Comments 11

Использование фильтра Калмана для определения производных измеряемой величины

Python *Mathematics *
Sandbox
Недавно занимался решением задачи передачи вектора состояния из имеющейся модели движения в специальное устройство формирования навигационного сигнала. При этом существовали следующие ограничения:
  • модель движения примерно периодически отправляет ранее рассчитанные координаты и скорость объекта с меткой времени в известном формате по UDP;
  • имитатор навигационного сигнала умеет устанавливать TCP-соединение и через него принимать вектор состояния, включающий кроме координат и скоростей еще ускорения и джерки — производные ускорения или третьи производные координат;
  • при скоростях до 10^4 м/с возмущающее ускорение не превышает 0.001 м/с2;
  • координаты можно считать независимыми;
  • в имитатор навигационного сигнала должен поступать прогноз вектора состояния на заданный момент в будущем.

Необходимость вычислять ускорения и джерки привела меня к мысли о том что для прогнозирования следует использовать полином соответствующего порядка, однако оставался открытым вопрос определения коэффициентов полинома.
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Views 16K
Comments 7

Простая модель адаптивного фильтра Калмана средствами Python

Python *

Проблема


Вечная проблема любых измерений их низкая точность. Основных способов повышения точности два, первый состоит в повышении чувствительности к измеряемой величине, однако при этом как правило растёт чувствительность и к неинформативным параметрам, что требует принятия дополнительных мер по их компенсации. Второй способ состоит в статистической обработке многократных измерений, при этом среднеквадратичное отклонение обратно пропорциональна корню квадратному из числа измерений.

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

Адаптивность методов повышения точности динамических измерений следует понимать, как использование прогнозирования значений дисперсий и погрешности для следующего цикла измерений. Такое прогнозирование осуществляется в каждом цикле измерений. Для этой цели применяются фильтры Винера, работающие в частотной области. В отличии от фильтра Винера, фильтр Калмана работает во временной, а не в частотной области. Фильтр Калмана был разработан для многомерных задач, формулировка которых осуществляется в матричной форме. Матричная форма достаточно подробно описана для реализации на Python в статье [1], [2]. Описание работы фильтра Калмана, приведенная в указанных статьях, рассчитана на специалистов в области цифровой фильтрации. Поэтому возникла необходимость рассмотреть работу фильтра Калмана в более простой скалярной форме.
Читать дальше →
Total votes 34: ↑31 and ↓3 +28
Views 24K
Comments 3

Измерение уровня жидкости в топливном баке ракеты

Python *Algorithms *Mathematics *Industrial Programming *Development for Windows *


Введение


Топливо из резервуара окислителя и резервуара горючего поступает в камеру сгорания ракетного двигателя. Синхронная подача топлива в заданной пропорции обеспечивает эффективную работу ракетного двигателя.

Эффективная работа зависит от точного измерения уровня топлива в баке. Для этой цели топливный бак имеет систему управления топливом. Система представляет собой вертикальный измерительный канал с датчиками внутри канала для фиксации свободного уровня жидкости в канале [1]:


Рисунок. Схема топливного бака. 1- резервуар, 2- топливо, 3- измерительный канал, Po — давление газа, — уровень жидкости в канале, H — уровень жидкости в баке, r,x — координатные оси.

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

В результате расхода топлива его уровень в баке меняется. Таким образом, уровень топлива в канале должен определять уровень топлива в баке. Проблемы две. Первая методическая состоит в том, что свободная поверхность топлива в баке не совпадает с поверхностью топлива в канале.

Вторая проблема в колебаниях уровня при изменении ускорений ракеты в полёте, что приводит к ложным срабатываниям датчиков и, как следствие, к погрешностям измерения.

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

Далее рассмотрим, как можно определить методическую погрешность от первой проблемы и уменьшить погрешность измерения от второй.
Читать дальше →
Total votes 17: ↑13 and ↓4 +9
Views 12K
Comments 6

Мультикоптеры научились подсаживаться на крыши движущихся автомобилей

Multicopters

Беспилотник садится на крышу легкового автомобиля на скорости 50 км/ч

Способность мультикоптеров статично зависать в воздухе делает их отличным инструментом для выполнения различных задач, в том числе для видеонаблюдения, доставки посылок или участия в поисково-спасательных операциях. В то же время, им приходится мириться с ограничением по времени автономной работы и относительно небольшим радиусом действия. Заряда аккумуляторов не хватает, чтобы добраться на место, если то расположено за много километров от базы. Инженеры из лаборатории мобильных роботехнических и автономных систем Политехнической школы Монреаля (Канада) предложили оригинальное решение проблемы: беспилотник по пути своего маршрута научили подсаживаться на крыши попутных автомобилей, движущихся со скоростью до 50 км/ч. Попутные машины буквально превращаются в авианосцы.
Читать дальше →
Total votes 34: ↑30 and ↓4 +26
Views 13K
Comments 27

Удаление высокочастотных шумов из сигналов вибродатчиков при вибродиагностике подшипников

Python *System Analysis and Design *Mathematics *Development for Windows *Popular science
Tutorial

Фото взято из публикации

Введение


Одна из наиболее актуальных задач цифровой обработки сигналов – задача очистки сигнала от шума. Любой практический сигнал содержит не только полезную информацию, но и следы некоторых посторонних воздействий помехи или шума. Кроме этого, при вибродиагностике сигналы от вибродатчиков имеют не стационарный частотный спектр, что усложняет задачу фильтрации.

Существует множество различных способов удаления высокочастотного шума из сигнала. Например, библиотека Scipy содержит фильтры, основанные на различных методах фильтрации: Калмана; сглаживание сигнала путём его усреднения по оси времени, и другие.

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

Целью настоящей публикации является анализ методов фильтрации сигналов вибродатчиков с применением DWT преобразования сигнала, фильтра Калмана и метода скользящего среднего.

Исходные данные для анализа


В публикации работу фильтров основанных на различных методах фильтрации будем анализировать используя набор данных НАСА. Данные получены на экспериментальной платформе PRONOSTIA:



Набор содержит данные о сигналах вибродатчиков по износу подшипников различных типов. Назначение папок с файлами сигналов приведено в таблице:



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



Сигналы получены для трёх различных нагрузок:

  • Первые рабочие условия: 1800 об / мин и 4000 Н;
  • Вторые рабочие условия: 1650 об / мин и 4200 Н;
  • Третьи рабочие условия: 1500 об / мин и 5000 Н.

Читать дальше →
Total votes 21: ↑21 and ↓0 +21
Views 11K
Comments 4

Индикатор качества канала серверного WebRTC через TCP

Flashphoner corporate blog Website development *Working with video *Programming *Video conferencing


Publish и Play


Существует две основных функции работы WebRTC на стороне сервера в области потокового видео: публикация и воспроизведение. В случае публикации видеопоток захватывается с вебкамеры и двигается от браузера к серверу. В случае воспроизведения, поток двигается в обратном направлении — от сервера к браузеру, декодируется и воспроизводится в браузерном HTML5 <video> элементе на экране устройства.

Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Views 2.4K
Comments 1

Опыт работы с фильтром Калмана на примере NMEA данных

Algorithms *Mathematics *Matlab *
Sandbox

Цель статьи не в объяснении принципов Калмановского фильтра, а в его демонстрации на примере реальных (сырых) данных. Желающие могут модифицировать исходники и поэкспериментировать с алгоритмом, я надеюсь что моя работа поможет тем, кто столкнется с подобной задачей.


Используемые данные — c GPS-приемника в формате NMEA-0183, в часности сообщения GGA и VTG.


Фильтрация необходима по причине зашумленности GPS. Причины помех в GPS данных разные. Основные:


  • атмосферные помехи.
  • препятствия для сигнала.
  • положение орбиты GPS. Например, невысокое наклонение орбит GPS (примерно 55°) серьёзно ухудшает точность в приполярных районах Земли.

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


Дело в том что скорость, измеряемая оборудованием и передаваемая в сообщении VTG давала неправдоподобные показания (скачки и т. д.), которые крайне затрудняли задачи управления.
Поэтому было решено построить модель фильтр в Octave, и получив скорость как производную от GPS данных, представленных сообщением GGA, сравнить с оригинальными данными скорости из сообщения VTG.


Для удобства сравнения данные требуется вывести на один график.


С фильтрацией данных и их производных прекрасно справляется фильтр Калмана.


Применение фильтра для задач автопилота и курсовертикали является «классикой».

Читать дальше →
Total votes 21: ↑18 and ↓3 +15
Views 4.8K
Comments 5

Как работает Object Tracking на YOLO и DeepSort

Mathematics *Machine learning *Artificial Intelligence
Object Tracking — очень интересное направление, которое изучается и эволюционирует не первый десяток лет. Сейчас многие разработки в этой области построены на глубоком обучении, которое имеет преимущество над стандартными алгоритмами, так как нейронные сети могут аппроксимировать функции зачастую лучше.

Но как именно работает Object Tracking? Есть множество Deep Learning решений для этой задачи, и сегодня я хочу рассказать о распространенном решении и о математике, которая стоит за ним.

Итак, в этой статье я попробую простыми словами и формулами рассказать про:

  • YOLO — отличный object detector
  • Фильтры Калмана
  • Расстояние Махаланобиса
  • Deep SORT
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Views 29K
Comments 3

Фильтр Калмана — это легко

Singularis Lab corporate blog Algorithms *


Много людей, в первый раз сталкивающихся в работе с датчиками, склонны считать, что получаемые показания — это точные значения. Некоторые вспоминают, что в показаниях всегда есть погрешности и ошибки. Чтобы ошибки в измерениях не приводили к ошибкам в функционировании системы в целом, данные датчиков необходимо обрабатывать. На ум сразу приходит словосочетание “фильтр Калмана”. Но слава этого “страшного” алгоритма, малопонятные формулы и разнообразие используемых обозначений отпугивают разработчиков. Постараемся разобраться с ним на практическом примере.
Читать дальше →
Total votes 73: ↑71 and ↓2 +69
Views 40K
Comments 33

А ваш фильтр Калмана правильно работает?

Auriga corporate blog Algorithms *Mathematics *Popular science

Фильтр Калмана является одним из самых популярных алгоритмов фильтрации. Он широко распространен в машинном обучении, навигационных системах, автопилотируемых устройствах и пр.

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

В это же время фильтр Калмана применяется в системах с особыми требованиями по функциональной безопасности, отказ или неисправность которых может привести к человеческим потерям, как это имеет место для автопилотируемых устройств. Таким образом, валидация результатов работы фильтра Калмана – это один из первых вопросов, который должен стоять перед инженером при разработке ПО для подобных систем.

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

Читать далее
Total votes 24: ↑23 and ↓1 +22
Views 7.6K
Comments 8

Фильтр Калмана: разбор навигационной системы БПЛА + исходный код

C++ *Algorithms *Mathematics *Unity3D *Robotics
Sandbox

В статье я бы хотел объяснить принципиальную разницу между фильтром Калмана (ФК) и классическими фильтрами, кратко рассмотреть преимущество выбранного ФК поделиться опытом использования данного ФК в во встраиваемой системе квадрокоптера для навигации на основе инерциального и ГНСС датчиков и поделиться исходным кодом с демкой для самостоятельного изучения.

Читать далее
Total votes 33: ↑31 and ↓2 +29
Views 16K
Comments 12

Объяснение фильтра Калмана в картинках

Algorithms *Mathematics *
Translation
image

Я обязан рассказать вам о фильтре Калмана, потому что он выполняет просто потрясающую задачу.

Как ни удивительно, о нём, похоже, знают немногие разработчики ПО и учёные, и это печалит меня, потому что это очень обобщённый и мощный инструмент для объединения информации в условиях присутствия неопределённости. Иногда его способность извлечения точной информации кажется почти магической, а если вы думаете, что я слишком много болтаю, то взгляните на это видео, в котором я показываю, как фильтр Калмана определяет ориентацию свободно плавающего тела, посмотрев на его вектор скорости. Потрясающе!
Читать дальше →
Total votes 116: ↑116 and ↓0 +116
Views 25K
Comments 30