nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

О "переходном процессе" - 2

Начало здесь.

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

Поведение его сильно не изменилось, проблема сохранилась. Ещё включил измерение ковариационной матрицы шума измерений, от её диагональных элементов взял квадратный корень, получив среднеквадратичные отклонения измеренных параметров, какие ОЖИДАЕТ получить алгоритм. Они также приведены на графике.

Ну и сделал его с логарифмической осью X, чтобы захватить весь диапазон 0,5 .. 300 метров, почему бы и нет.


Как видно, во всём диапазоне измерений оценка точности, даваемая ковариационной матрицей, совпадает с полученной точностью, КРОМЕ
ЭТОГО ЗЛОПОЛУЧНОГО ВЫБРОСА на 10..15 МЕТРАХ. То есть, алгоритм не просто тупит, но и НЕ ДОГАДЫВАЕТСЯ О ТОМ, ЧТО ОН ТУПИТ!

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


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

Дальше нужно понять, что означают эти невязки. Для этого мы по сути брали формулы, как спроецировать точки мишени при заданных 6 параметрах сближения - "степеней свободы" - и берём частную производную от каждого из них. В итоге у нас для каждой из точек получается матрица 2х6. К счастью, я уже как-то написал про неё (см. Дуальные числа рулят), так что сейчас стырю кусочек из того поста:















Эту матрицу можно представить как 6 двумерных векторов. Физический смысл каждого вектора - "куда, и насколько далеко двинется точка на фотоприёмной матрице, если сделать малое приращение по данному параметру".

И дальше нам остаётся спроецировать вектора невязок по каждому из векторов - и просуммировать. Так мы ненормированную оценку параметров сближения. Дальше остаётся лишь немножко "причесать" эту оценку, домножив на нормирующую матрицу J-1 (или решив систему линейных уравнений, не обращая матрицу в явном виде), что придаст этим параметрам правильную размерность, а также устранит "перекрёстные связи". Это всё здорово, но уже "рюшечки".

Давайте попробуем найти все эти векторы в экселе.

Убираем оттуда сдвиг влево из-за "левого глаза", и даже убираем пассивный курс, оставляем только пассивный тангаж. Когда мы расположили прибор по центру, неправильные показания "упростились": теперь это пассивный тангаж в -2,7° и практически нулевые крен с пассивным курсом, дальность реальная 14,452 метра, а измеренная 14,466 метра.


(mn11; mn21) - векторы, по которым мы находим крен, т.е ϕx,
(mn12; mn22) - для пассивного тангажа, т.е ϕy,
(mn13; mn23) - для пассивного курса, т.е ϕz,
(mn14; mn24) - для нахождения дальности, т.е tx,
(mn15; mn25) - для нахождения активного курса, т.е ty, (мы изначально находим смещение вправо, а потом уже превращаем это в курс)
(mn16; mn26) - для нахождения активного тангажа, т.е tz (та же история)

Начнём с самого простого параметра - параллельного переноса по горизонтали. Здесь mn25=0, а mn15 практически все одинаковые, по крайней мере на дальности в 15 метров, когда вынесенный на 6 см вперёд уголок не шибко-то по-другому себя ведёт при сдвиге вправо, чем его соседи. Вот набор из 8 векторов, по одному на каждый уголок:



Физический смысл очень простой: мы берём только горизонтальную составляющую наших невязок, складываем всё практически с равными весами - и таким образом получаем оценку смещения вправо. Глянем, что будет, если варьировать как раз-таки "активный курс" на 0,1°:



Таким нехитрым образом можно оценить "масштаб" этих величин. Вообще, здесь измеряется не угол, а смещение всей мишени в метрах, а это при повороте на 0,1° и расстоянии в 15 метров должно выходить 26 мм. То есть это измерение получается грубо В САНТИМЕТРАХ.

Теперь вернём на место "активный курс" и подвинем "активный тангаж" на 0,1°:


ВООБЩЕ НИКАКОГО ЭФФЕКТА! И это правильно, уж эти оси у нас всегда ортогональны! Собственно, в идеале каждая "ненормированная оценка" должна реагировать только на изменение СВОЕГО параметра, а если это не так - мы говорим о наличии перекрёстных связей, и стараемся их потом устранить.

А если вернуть на место "активный тангаж" и подвинуть "пассивный курс" на 0,1°:


Эффект существенно меньше. Оно и понятно, когда мы свой космический корабль поворачиваем на 0,1°, находящаяся в 15 метрах мишень сдвигается на 26 мм В НАШЕЙ СИСТЕМЕ КООРДИНАТ, а вот когда мишень поворачивается вокруг своей оси на тот же 0,1°, заметно лишь смещение выдвинутых вперёд уголков на 0,1 мм, остальные точки и вовсе остаются на месте.

Но всё-таки перекрёстная связь наличествует.

Ещё попробуем вернуть на место "пассивный курс" и подвинуть "пассивный тангаж" на 0,1°:


Не реагирует и, наверное, это хорошо.

И наконец, посмотрим реакцию на изменение дальности на 1 метр:

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

В общем, параллельный перенос (пересчитываемый потом в "активный курс") вычисляется очень неплохо, никаких нареканий.

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

Изменение дальности на 1 метр всё-таки влияет на оценку "активного тангажа":


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

Самое интересное - измерение пассивного тангажа. Скорее всего, именно здесь "зарылась собака"

Приведём этот вектор и оценку тангажа, когда пассивный тангаж отличается от правильного значения на -1°:


Видно, что перемещение вынесенных вперёд точек (две верхних в списке) по вертикали БЕРЁТСЯ С ВЕСОМ 4, тогда как их же перемещение по горизонтали, а также все остальные точки тоже влияют, но на порядки слабее. Самый большой из этих, остающихся весов: 0,057, т.е в 72 раза меньше.

Тем не менее, видно, что при варьировании измеряемого параметра (мерим пассивный тангаж - и меняем ЕГО ЖЕ) ВСЕ проекции имеют одинаковый знак, т.е они все работают согласованно! Это обязательное свойство данного алгоритма.

Видим, что изменение на -1° даёт нам оценку -1,5. Запомним это.

А теперь вернём пассивный тангаж на место - и поменяем АКТИВНЫЙ ТАНГАЖ на 0,1°:


Да, здесь перекрёстная связь совершенно чудовищная. Изменение по ЧУЖОМУ углу воспринимается в 200 раз сильнее, чем по РОДНОМУ.

Но, как ни странно, само по себе это ещё не катастрофа. Пока мы увидели, как оценка параллельного переноса по вертикали зависит от активного тангажа с коэффициентом 260 (т.е 26 единиц на 0,1° поворота) и от пассивного тангажа с коэффициентом 0,02472:



а также, оценка пассивного тангажа зависит с коэффициентом 354 от активного тангажа, и с коэффициентом 1,48 от пассивного:



Или, в матричной записи:



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

И здесь (вблизи правильных значений) всё обстоит именно так, детерминант равен 260·1,48-354·0,02472 ≈ 376. Значит, несмотря на перекрёстные связи, всё это должно "стянуться" в правильное значение...

На пальцах это можно объяснить так: уже на первой итерации мы очень точно найдём активный тангаж, поэтому к следующей итерации он практически занулится (мы уже будем линеаризовать всё это дело в окрестностях новой точки) и даст нормально померять пассивный тангаж!

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


Увы, проблема по-прежнему до конца неясна... Продолжение следует.
Tags: ПЛИС, математика, программки, работа, странные девайсы
Subscribe

  • Великая Октябрьская резня бензопилой

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

  • Очередная несуразность в единицах измерения

    Когда-то я написал программу PhysUnitCalc - калькулятор, умеющий работать с размерностями. Мне казалось, что я наступил уже на все грабли, которые…

  • Big Data, чтоб их... (3)

    "В предыдущих сериях": мой прибор выдаёт 6 значений: 3 координаты и 3 угла, т.е все 6 степеней свободы твёрдого тела. Причём ошибки измерения этих 6…

  • Покрышки с взрывным характером

    Продолжаю кататься на велосипеде на работу и назад, а также время от времени в РКК Энергию. С 17 мая (когда решил записывать, сколько проехал,…

  • Big Data, чтоб их... (2)

    Вчера получил упоротое уравнение, чтобы найти, с какими весами нужно брать результаты измерений, чтобы получить наименее шумную и при этом…

  • Big Data, чтоб их...

    Решил всё-таки вывести оптимальную обработку N измерений x k, каждое по M компонент (т.е вектор M×1), и на каждое дана своя ковариационная…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 4 comments