Так ли полезна ковариационная матрица шума?

Oct 05, 2021 19:14

Всех причастных, непричастных и невиновных - с прошедшим днём начала космической эры! Бип-Бип-ура!

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

По диагонали у нас лежат дисперсии, корень из которых даст ошибку измерения данного параметра в этот конкретный раз. О том, какая точность должна достигаться, указано в ТЗ, но в реальности она будет получаться гораздо выше на бОльшей части траектории. То есть, скажем, на 300 метрах, когда картинка МААЛЕНЬКАЯ, действительно не особо разгуляешься, но по мере приближения ошибка измерения дальности уменьшается КВАДРАТИЧНО.

То, что эти дисперсии знать ПОЛЕЗНО - особых сомнений нет. На корабле установлены и другие приборы: акселерометры, датчики угловой скорости, спутниковая навигация. Если одну и ту же величину можно будет измерить несколькими приборами, то необходимо также довольно хорошо представлять точность каждой величины, только тогда они будут правильно усреднены. А то написано в ТЗ: дальность "не хуже 5%", а у нас на самом деле уже на миллиметры вышла - но эти миллиметры отправятся "на свалку", потому что другим приборам доверия вышло больше.

Но дисперсии - это лишь 6 коэффициентов из 21, который нужно передать. Матрица 6х6 симметричная, поэтому достаточно передать главную диагональ (дисперсии) и один из треугольников, а это ещё 15 чисел, ковариации между измеренными величинами.

Я считал, что и ковариации очень хорошую службу сослужат, поскольку зачастую несколько измеренных параметров оказываются сильно коррелированными друг с другом. Грубо говоря, мы увидели, что картинка "сдвинулась влево". Это могло произойти потому что мы сдвинулись вправо, т.е сохранили ту же ориентацию в пространстве, включили боковые двигатели и начали поступательное движение. А может быть, совершили поворот вокруг своей оси, "по курсу", из-за чего картинка ушла вбок. Мы ОБЯЗАНЫ разобраться, что же именно произошло, и для этого должны очень внимательно наблюдать, как вынесенные вперёд отражатели смещаются относительно других 6, которые расположены в одной плоскости чуть дальше. Это куда более ШУМНЫЙ процесс - вместо усреднения мы вычитаем близкие величины, вот и получается, что два выданных нами параметра - смещение вправо и поворот вокруг вертикальной оси - будут иметь высокую корреляцию шума. Т.е если мы ошибёмся в смещении на 10 см, то НЕИЗБЕЖНО ошибёмся ещё и в угле поворота, скажем, на 1 градус. В ИЗВЕСТНУЮ СТОРОНУ, потому что суммарный эффект от смещения и поворота мы знаем очень хорошо!

Мне казалось, что это чрезвычайно ценная информация! И в пример я опять ставил датчик угловой скорости и акселерометр. Первый вполне успешно померял, что за секунду корабль повернулся на 1 градус. А второй успешно померял, что ускорение составляло 0,1 м/с2 - НУ И ЧТО С ТОГО??? В смещение оно напрямую не преобразуется, надо ещё было скорость знать, а мы её, может, и знали, но уже накопился дрейф, и для прямой оценки смещения акселерометр практически бесполезен... И вот на фоне этого появились показания ВИПС: поворот на 0,5 градуса и смещение на 20 см, а ещё шум в 0,5 градуса в показаниях углов, 20 см в показаниях смещения и практически единичный коэффициент корреляции (цифры абсолютно с потолка, просто как пример). Тут-то каменный цветок, наконец, складывается: точно зная, что поворот составлял 1 градус, борт решает, что ВИПС ошибся на 0,5 градуса "в минус" (померял 0,5 вместо 1), а исходя из величины и знака корреляции теперь известно, каково правильное смещение - вот мы и его теперь знаем и можем дрейф акселерометра подправить.

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

Начал ковыряться (ковариаться), придумал совсем примитивную "модельную задачку" - и теперь я вовсе не уверен, что от этой матрицы есть какой-то толк...


Задачка такова: есть два числа, X и Y, которые мы жаждем измерить. Но каждый раз, проводя измерение, мы получаем впридачу шум:

xk = X + ξk,
yk = Y + ηk

шум вполне себе "приличный": белый гауссовский с нулевым средним. В такой ситуации нам нужно просто сделать побольше измерений - и посчитать среднее арифметическое для X и Y. Как при этом будет ошибка уменьшаться - вещь давно известная, как корень из N - числа измерений.

И тут нам сообщают совершенно невероятную новость: на самом деле ξ и η имеют 100% корреляцию, т.е на самом деле при каждом измерении у нас одна и та же выборка шума:

xk = X + ξk,
yk = Y + ξk

Позволит ли это хорошо померять X,Y, используя меньшее количество измерений? Похоже, что НЕТ.

Кажется, что уже при 2 измерениях мы имеем 4 уравнения для 4 неизвестных: X,Y, ξ0 и ξ1, и теперь мы получим точный ответ. Но увы, 2 уравнения оказываются вырожденными: мы можем при каждом измерении найти xk-yk, это должно равняться X-Y (шум сам себя погасит за счёт этой 100% корреляции), и теперь, если x0-y0 = x1-y1, мы просто получим два одинаковых уравнения. А если это равенство не соблюдается - мы придём к "уравнению" 0=1.

Ну ладно, точное решение нам не светит, но хоть как-то использовать дополнительную информацию мы можем?

Вряд ли. Оценка X должна быть суммой всех измеренных xk и yk с некоторыми весами:


Чтобы оценка получилась несмещённой, обязано выполняться:




иначе у нас либо Y "пролезет" в X, либо самого X "недосчитаемся". Но в таком случае, если даже мы в одних измерениях уберём случайную величину "начисто", в других придётся её удваивать.

К примеру, если провели всего два измерения, то можем просто положить α1=α2=0,5, β1=β2=0, тогда в оценку X войдёт две выборки случайной величины, каждая с весом 0,5. А если попытаться "выпендриться" и постановить β1=0,5, β2=-0,5, то в ответ войдёт ОДНА выборка случайной величины, но с весом 1, а это хуже - шумит в корень из двух раз сильнее.

Вот и получается, что на точность оценок X,Y знание о корреляции никак не влияет. Разве что мы можем указать, что ошибка их измерения имеет 100% корреляцию, но куда эту информацию приткнуть - уже не знаю.

Ситуация улучшается, если корреляция меняется в процессе работы!

Если мы провели первое измерение, а потом, спустя некоторое время второе, и мы узнали, что каким-то непостижимым образом к этому времени корреляция поменяла свой знак на противоположный - то вообще шикарно! Т.е:

x1 = X + ξ1,
y1 = Y + ξ1,
x2 = X + ξ2,
y2 = Y - ξ2

И в таком случае:



Но это, конечно, очень странный пример, в реальности такое редко бывает.

Возьмём пример, чуть более приближенный к реальности. Первый раз у нас получалась 100% корреляция, но ко второму разу она составляет некоторую величину k (от -1 до +1), при этом уровень шума остался на том же уровне:









(чтобы превратить ковариационную матрицу, в данном случае с единичками на главной диагонали и числом "k" вне её, в линейные комбинации независимых случайных величин, я воспользовался разложением Холецкого)

Оценку величины X будем делать следующим образом:



так мы заведомо получаем несмещённую оценку. От выбора α и β будет зависеть дисперсия результата. Сначала выпишем, как оценка выражается через случайные величины:



Приведём подобные слагаемые:


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



Вот эту штуку нам и надо минимизировать!

Раскрыв все скобки и сгруппировав по степеням α, β, получим:


Взяв частные производные по α и β и приравняв их к нулю, получаем систему линейных уравнений, решение которых по правилу Крамера:





Если мы, к примеру, возьмём k=1 (100% корреляция и во втором случае), получим "ноль делить на ноль" и для α, и для β - есть бесконечно много пар (α,β), дающих одинаковую дисперсию в 1/2.

Подставив k=-1, получим α=1/2, β=-1/2 и дисперсию, равную НУЛЮ. Да, этот вариант мы рассмотрели "ручками" и пришли к тому же выводу.

А вот взять, к примеру, k=0, и получим достаточно интересные результаты: α=2/3, β=-1/3, и дисперсия равна 1/3, тогда как без учёта корреляций мы бы получали дисперсию 1/2. Тем самым, среднеквадратичное отклонение с 0,707 (один на корень из двух) падает до 0,577 (один на корень из трёх), т.е мы получаем улучшение на 22%.

Если k=0,9 (т.е корреляция почти не ослабла с первого измерения), то получится α≈0,7436, β≈-0,2564 и дисперсию 0,475. Улучшение в смысле среднеквадратичного отклонения: 2,6%.

А вот так меняются коэффициенты корреляции в моей задаче.

Сначала - при изменении дальности, ближняя дистанция, заход "прямой наводкой" (все углы нулевые):



"Ступеньки" слева - когда из поля зрения уходит один уголковый отражатель за другим. Эту область мы вряд ли будем использовать при юстировке: хочется всё-таки использовать все отражатели, да и на малых дистанциях лазерный трекер некуда будет поставить, он должен быть где-то посерединке, чтобы с одного штатива "посмотреть" и на мишень, и на корабль.

Так что подавляющее большинство коэффициентов почти не меняются от дальности. И как я понял, в таком случае они особой пользы не приносят - хитро извернуться, как здесь, и улучшить точность они не дадут. И только два коэффициента монотонно меняются - от них может быть польза.

А вот если зафиксировать мишень на одной дальности, после чего начать вращать её вокруг своей оси (менять "пассивные углы стыковки", т.е углы пассивного корабля к линии визирования), картинка для нас интереснее:



Тут все коэффициенты меняются сколько-нибудь прилично, иногда пробегая "полный диапазон" от -0,6 до +0,6. Правда, это я считал на дальности чуть ли не 300 метров, во всяком случае, по мишеням ДАЛЬНЕЙ ДИСТАНЦИИ. По ближней дистанции может быть всё по-другому, надо вспоминать, как я это дело ковырял и поковариаться ещё.

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

Так что ответа на вопрос в заголовке по-прежнему дать не могу. Надо вывести хитрючую формулу, как из N опытов, в каждом из которых измеряется 6 параметров и выдаётся ковариационная матрица шума измерений, наилучшим образом получить вектор и кватернион.

Хотя, по-хорошему, надо сначала промоделировать самый простой способ, где будем усреднять обратно пропорционально квадрату дисперсии каждого измерения (без учёта ковариаций) чтобы потом было с чем сравнивать... Покой нам только снится.

моделирование, странные девайсы, математика, Монте-Карло для чайников, работа

Previous post Next post
Up