nabbla (nabbla1) wrote,
nabbla
nabbla1

Categories:

Дэвенпорт VS Мортари-Маркли, раунд 3

Часть 1 - история вопроса
Часть 2 - основные операции
Часть 3 - запись вращения через кватернионы
Часть 4 - кватернионы и спиноры; порядок перемножения
Часть 5 - практическая реализация поворота
Часть 5 1/2 - введение метрики, "расстояния" между поворотами
Часть 6 - поворот по кратчайшему пути
Часть 6 1/4 - кратчайший поворот в общем случае
Часть 6 2/4 - поворот, совмещающий два направления
Часть 6 3/4 - кватернион из синуса и косинуса угла
Часть 7 - интегрирование угловых скоростей, углы Эйлера-Крылова
Часть 8 - интегрирование угловых скоростей, матрицы поворота
Часть 8 1/2 - ортонормирование матрицы и уравнения Пуассона
Часть 9 - интегрирование угловых скоростей с помощью кватернионов
Часть 10 - интегрирование угловых скоростей, методы 2-го порядка
Часть 10 1/2 - интегрирование с поддержанием нормы
Часть 11 - интегрирование угловых скоростей, методы высших порядков (в разработке)
Часть 12 - навигационная задача
Часть 13 - Дэвенпорт берёт след!
Часть 14 - линейный метод Мортари-Маркли
Часть 15 - среднее от двух кватернионов
Часть 15 1/2 - проверка и усреднение кватернионов
Часть 16 - разложение кватерниона на повороты
Часть 17 - лидарная задача
Задачка к части 17
Дэвенпорт VS Мортари-Маркли
Мортари-Маркли берут реванш!
Дэверпорт VS Мортари-Маркли, раунд 3

Всё-таки не давала покоя мне эта тема, решил ещё чуточку поковыряться.

На этот раз выставил угол поворота в 0°. И довольно быстро увидел, что кватернионы поворота, а значит, и ошибки определения поворота у двух методов совпадают эдак до 6-го знака после запятой:



То есть, для нулевого угла методы по сути оказываются эквивалентными. В этом есть смысл...


Ведь чтобы определить, насколько точно один вектор (rk) переходит в другой (тогда мы его называли bk), в методе Мортари-Маркли мы по сути проводим касательную и отмеряем на ней отрезки нужной длины:



Если ось поворота и угол поворота верны, мы, стартуя из точки O, должны по обоим путям (через вектор rk и bk) прийти в одну и ту же точку O'. А там ещё прибавим продольную компоненту каждого вектора, ведь они тоже должны совпасть, если мы правильно выбрали поворот (часть вектора ВДОЛЬ оси поворота должна остаться неизменной).

Так вот, чем больше становится угол поворота - тем больше расстояние OO', и значит, алгоритм обращает "повышенное внимание" на совмещение векторов именно в этой плоскости (изображённой на рисунке), т.к даже малейшая ошибка в угле будет давать довольно приличную разность. Когда угол 90° (как было в первый раз), OO' больше длины векторов в корень из 2 раз, что создаёт некую "анизотропию".

Давайте в кои-то веки посчитаем ошибку измерения поворота не "в целом" по трём осям, а конкретно вдоль оси Z, если именно по оси Z был сделан поворот в 90°, то получим среднюю ошибку в 0,0844° для Дэвенпорта и 0,0841° для Мортари-Маркли, то есть, действительно по этой оси он измеряет точнее! На 0,3% точнее, но всё же!

Сходная картина наблюдается, если смотреть УГОЛ поворота, игнорируя его НАПРАВЛЕНИЕ. Средняя ошибка измерения угла составляет 0,0903° для метода Дэвенпорта и 0,0899° для Мортари-Маркли.

А вот когда угол 0°, у нас длина касательных сокращается до нуля - и расстояние OO' сокращается попросту до длины векторов, в этом случае изотропия восстанавливается - мы оцениваем компоненты разности этого вектора с равными весами. И как только это происходит - два метода начинают выдавать одинаковые данные. Полагаю, небольшие расхождения вызваны уже неточностью моего исполнения метода Дэвенпорта - я сейчас не применял метод Ньютона для уточнения собственного значения.


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

Poll #2113510 Битва титанов

Какой метод поиска поворота, наиболее точно совмещающего набор векторов, лучше?

Дэвенпорта
0(0.0%)
Мортари-Маркли
0(0.0%)
Tags: ПЛИС, кватернионы-это просто (том 1), математика, программки, работа, странные девайсы
Subscribe

  • Ремонт лыжных мостиков

    Вернулся с сегодняшнего субботника. Очень продуктивно: отремонтировали все ТРИ мостика! Правда, для этого надо было разделиться, благо народу…

  • Гетто-байк

    В субботу во время Великой Октябрьской резни бензопилой умудрился петуха сломать в велосипеде. По счастью, уже на следующий день удалось купить…

  • А всё-таки есть польза от ковариаций

    Вчера опробовал "сценарий", когда варьируем дальность от 1 метра до 11 метров. Получилось, что грамотное усреднение - это взять с огромными весами…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments