nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

О "переходном процессе" - дело было не в бобине

Сегодня утром, ещё дома, меня "осенило", в чём было дело. Когда приехал (с приключениями), понадобилось всего несколько минут, чтобы подтвердить это предположение.

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

А надо было просто проверить ВХОД АЛГОРИТМА. А именно, насколько правильно были найдены яркостные центры:



И у меня даже была процедура, которая это дело замеряет, но она была наиболее привязанной к конкретной конфигурации мишени: по 5 уголков в каждой из 3 мишеней дальней дистанции, и 8 уголков в мишени ближней дистанции. И у меня там было "гениальное" решение для уголков, вышедших за поле зрения указывать бесконечную ошибку (что само по себе допустимо), но потом, когда я разбирался с ковариационной матрицей шума, я решил сюда же добавить ковариационную матрицу "входного шума", убедиться что она диагональная, и вот она очень нервно воспринимала эти "бесконечности", которые на всей траектории, от 300 метров до 0,5 метров, неизбежно возникали! Поэтому в какой-то момент я отключил всё это дело "за ненадобностью".

А сейчас оно очень даже пригодилось! Как мы видим, именно на "проблемном" участке у нас пропадает субпиксельная точность - мы выходим на "плюс-минус пиксель", потом на "плюс-минус полпикселя", и только потом приходим в норму. А виноваты в этом изменённые МИШЕНИ ДАЛЬНЕЙ ДИСТАНЦИИ, хотя казалось бы, на этом интервале они вообще не работают!


Всё дело в выборе радиуса для нахождения яркостного центра пятна с субпиксельной точностью. Когда-то я считал, что с определённой дальности буду работать СО ВСЕМИ УГОЛКАМИ ПО ОТДЕЛЬНОСТИ - не только с 8 уголками мишени ближней дистанции, но и с отдельными уголками мишеней дальней дистанции. Рисовал (генерировал) такую вот картинку:
Frame 3000.png

И логика была такая: ещё при инициализации мы искали самую маленькую дистанцию между точками (в метрах, т.е по физическому расположению, а не по картинке на матрице), умножали её на косинус 30 градусов, т.е закладывались на то, что посмотрим на это всё дело под максимально допустимым углом, из-за чего картинка ужмётся максимум на cos(30°)≈0,866 - и затем в качестве радиуса мы брали ПОЛОВИНУ ОТ МИНИМАЛЬНОЙ ДИСТАНЦИИ, но пересчитанную в пиксели в соответствии с измеренной нами дальностью.

И пока мы работали с мишенями, как на картинке выше, оно успешно моделировалось, без каких-либо выбросов.

Но потом мне указали, что эта картинка выглядит несколько странно - если мишени дальней дистанции (МДД) имеют диаметр 80 мм, а мишень ближней дистанции (МБД) - размеры 250х150х95 мм, то у меня МДД выходят непропорционально большими! И действительно, оказалось что я когда-то давно расположил эти уголки чуть ли не по внешнему диаметру, и в ус не дул.

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

А буквально на прошлой неделе я и вовсе заменил эту мишень в 5 уголков на ту, которую нам, похоже сделают, в 7 уголков меньшего диаметра:


Вот они и заставили алгоритм выбирать очень маленький радиус для нахождения яркостного центра. Для 15 метров это оказывался радиус 2 пикселя, то есть пятнышко 4х4 пикселя. При этом изображение этих уголков генерировалось вот такое:



(вырезан кусок из изображения выше, и увеличен в 4 раза методом "Nearest neigbour", показать пиксельную структуру этого дела)

Как видно, если брать круг 4х4 пикселя, мы попадаем аккурат в центр пятна, из-за чего субпиксельная точность пропадает!

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


Подправил алгоритм - и выброс ушёл:


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

Recent Posts from This Journal

  • Я создал монстра!

    Вот нормальная счастливая пара разъёмов ОНЦ-БС-1-10/14-Р12-2-В и ОНЦ-БС-1-10/14-В1-2-В: У розетки кроме основного выступа, отмечающего "верх",…

  • Нахождение двух самых отдалённых точек

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

  • Слишком общительный счётчик

    Вчера я чуть поторопился отсинтезировать проект,параметры не поменял: RomWidth = 8 вместо 7, RamWidth = 9 вместо 8, и ещё EnableByteAccess=1, чтобы…

  • Балансируем конвейер QuatCore

    В пятницу у нас всё замечательно сработало на симуляции, первые 16 миллисекунд полёт нормальный. А вот прошить весь проект на ПЛИС и попробовать "в…

  • Огари разговаривают

    Сегодня по пути на работу встретил огарей прямо в Лосином острове, на берегу Яузы. Эти были на удивление бесстрашны, занимались своими делами, не…

  • Ковыряемся с сантехникой

    Наконец-то закрыл сколько-нибудь пристойно трубы, подводящие к смесителю, в квартире в Москве: А в воскресенье побывал на даче, там очередная…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 1 comment