nabbla (nabbla1) wrote,
nabbla
nabbla1

Category:

Ликбез по кватернионам, часть 15 1/2 - проверка и усреднение кватернионов

Часть 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 - разложение кватерниона на повороты

Мехмат МГУ отзывает 500 000 своих выпускников. Причина отзыва: во втором томе Фихтенгольца на странице 187 в формуле XVIII.56 отсутствует нормирующий оператор


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

Методика "проверки на вшивость" и усреднения, приведённая в конце части 15, хорошо работает, если мы задаём достаточно большой допустимый угол рассогласования, хотя бы 10° и выше. В таком случае, cos(10°/2)=0,996, при проверке мы будем по сути смотреть на 3-й значащий разряд, который будет представлен с хорошей точностью.

Но если у нас речь идёт о точности в 1° или 0,1° или ещё лучше (что для звёздных датчиков и систем стыковки совсем не редкость!), то такой метод будет раз за разом ошибаться, иногда отбраковывая вполне себе корректные кватернионы (действительно отличающиеся менее чем на 0,1°), а иногда пропуская откровенный мусор. Причина, как всегда, очень проста: подсчитывая скалярное произведение кватернионов близких поворотов, мы будем получать значения, очень близкие к 1 или -1, и сравнивать их с cos(α/2)≈1-α2/8, поэтому и плохая нормировка (в том числе из-за непредставимости правильно нормированного кватерниона в имеющейся разрядной сетке), и ошибки вычислений способны полностью забить собой "полезный сигнал", выражающий угол.

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


Напомним задачу: есть кватернионы Λ и Μ, а также допустимый угол α - максимально допустимый угол между поворотами, выражаемыми этими кватернионами (см. часть 5 1/2 - введение метрики, "расстояния" между поворотами)

Нужно оценить, действительно ли угол между поворотами не превышает α, и если это так, найти средний кватернион.

Можно поступить, к примеру, так.

Как и прежде, находим скалярное произведение


(p от слова product - произведение),

но в этот раз смотрим только на его знак. Если p>0, то

в противном случае

(это большая греческая Кси)
Иными словами, мы меняем знак у одного из кватернионов (это с тем же успехом мог быть и Λ), если их скалярное произведение меньше нуля.

А далее, чтобы проверить, что кватернионы выражают близкие повороты, найдём всё-таки квадрат модуля разности:


Из нашего определения метрики (часть 5 1/2) получаем



откуда, учитывая малые значения α, можно записать


К примеру, если α=10°, то


Точное решение неравенства (15 1/2.1) даст диапазон:

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

тогда как приближенная оценка (15 1/2.2) даст нам диапазон


Ошибка составляет не более 0,2% - очень неплохо, учитывая, что мы здесь имеем дело всего-то с "проверкой на вшивость". Величина α сама по себе зачастую берётся "по порядку величины", и чересчур усердствовать здесь не надо.

Зато теперь мы можем спокойно проводить использовать и представление компонентов кватерниона с фиксированной точкой 1.15 (точность 12 угловых секунд, но при ошибке менее 0,31° старый метод давал бы скалярное произведение, превышающее единицу!) или с плавающей точкой одинарной точности, без страха, что вполне приличные данные будут забракованы или наоборот, пропущен мусор.

Опишем получившуюся методику.
Есть кватернионы Λ и Μ, а также допустимый угол α - максимально допустимый угол между поворотами, выражаемыми этими кватернионами.

Нужно оценить, действительно ли угол между поворотами не превышает α, и если это так, найти средний кватернион.

1. Находим скалярное произведение


2. Если p>0, то

в противном случае


3. Находим квадрат модуля разности кватернионов:


4. Если


значит расстояние между поворотами не превышает α, можно находить средний. В противном случае "бьём тревогу".

5. Находим ненормированный средний кватернион:



6. Нормируем его. Подойдёт приближенная формула, использующая только сложения и умножения:


Tags: кватернионы-это просто (том 1), математика, работа
Subscribe

  • Формулы приведения, что б их... (и atan на ТРЁХ умножениях)

    Формулу арктангенса на 4 умножениях ещё немножко оптимизировал с помощью алгоритма Ремеза: Ошибка уменьшилась с 4,9 до 4,65 угловой секунды, и…

  • Алгоритм Ремеза в экселе

    Вот и до него руки дошли, причина станет ясна в следующем посте. Изучать чужие библиотеки было лениво (в том же BOOSTе сам чёрт ногу сломит), писать…

  • atan на ЧЕТЫРЁХ умножениях

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

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 2 comments