Зачем сливать датчики

Урок про главную идею слияния: взять сильные стороны двух датчиков и закрыть слабые.

Слияние датчиков — объединение данных нескольких источников в одну оценку, которая точнее любого из них по отдельности.

Часто нет идеального датчика для величины — зато есть два неидеальных, ошибающихся по-разному. Один быстрый, но «уплывает»; другой стабильный, но медленный и шумный. Если их грамотно смешать, ошибки частично сокращаются.

Дополняющие слабости

Классический пример — оценка угла из IMU. Гироскоп даёт быстрый, точный угол на коротком интервале, но накапливает дрейф. Акселерометр даёт абсолютный угол без дрейфа, но шумит и врёт при тряске. У них ошибки в разных частотных диапазонах: дрейф гироскопа — низкочастотный, шум акселерометра — высокочастотный.

ДатчикСильная сторонаСлабая сторона
Гироскопбыстрый, точный краткодрейф (низкие частоты)
Акселерометрбез дрейфа, абсолютныйшум, тряска (высокие частоты)

Простейшее взвешенное слияние

Если две оценки $x_1$ и $x_2$ имеют дисперсии $\sigma_1^2$ и $\sigma_2^2$, оптимальная по точности смесь — взвешивание обратно дисперсиям:

$$ \hat{x} = \frac{\sigma_2^2\,x_1 + \sigma_1^2\,x_2}{\sigma_1^2 + \sigma_2^2} $$

def fuse(x1, var1, x2, var2):
    return (var2*x1 + var1*x2) / (var1 + var2)

# датчик 1 точнее (var=0.5), датчик 2 грубее (var=2.0)
print(round(fuse(10.0, 0.5, 11.0, 2.0), 3))
# равная точность -> просто среднее
print(round(fuse(10.0, 1.0, 11.0, 1.0), 3))

Вывод:

10.2
10.5

Как работает под капотом

Взвешивание обратно дисперсиям — это и есть сердце фильтра Калмана в статике: точному датчику верим больше, грубому — меньше. Заметьте: результирующая дисперсия меньше любой из исходных, то есть слияние действительно повышает точность, а не просто усредняет. Когда у датчиков ошибки в разных частотных диапазонах (как у IMU), вместо взвешивания по дисперсии удобнее частотное разделение — это комплементарный фильтр из следующего урока.

Частые ошибки

  • Сливать датчики равными весами, когда их точности сильно разные.
  • Забывать, что слияние помогает, только если ошибки датчиков независимы.
  • Смешивать датчики в разных единицах или с разным смещением без приведения.

Итог

  • Слияние объединяет датчики с разными слабостями в одну лучшую оценку.
  • Оптимальный вес обратен дисперсии: точному датчику — больше доверия.
  • Результирующая точность выше, чем у каждого датчика по отдельности.
Проверьте себя
1. Как распределяются веса при оптимальном слиянии двух оценок?
AПоровну
BОбратно пропорционально дисперсиям (точному — больше)
CПрямо пропорционально дисперсиям
DСлучайно
2. Какая ошибка преобладает у гироскопа при оценке угла?
AВысокочастотный шум
BНизкочастотный дрейф
CГистерезис
DКвантование