Ликбез по кватернионам, часть 10: Интегрирование угловых скоростей, методы 2-го порядка

Mar 22, 2018 11:14

Оглавление "Ликбеза по кватернионам":
[Spoiler (click to open)]
Часть 1 - история вопроса
Часть 2 - основные операции
Часть 3 - запись вращения через кватернионы
Часть 4 - кватернионы и спиноры; порядок перемножения
Часть 5 - практическая реализация поворота
Часть 5 1/2 - введение метрики, "расстояния" между поворотами
часть 5 5/8 - метрика ненормированных кватернионов
часть 5 11/16 - красивая псевдометрика произвольных кватернионов
Часть 5 3/4 - исследуем "пространство поворотов"
Часть 5 7/8 - почти изотропный ёжик
Часть 6 - поворот по кратчайшему пути
Часть 6 1/4 - кратчайший поворот в общем случае
Часть 6 2/4 - поворот, совмещающий два направления
Часть 6 3/4 - кватернион из синуса и косинуса угла
Часть 6 7/8 - "уполовинивание угла" на плоскости
Часть 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


Интегрирование угловых скоростей с помощью кватернионов

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

Методы второго порядка

Разумеется, нам всегда хочется большего. Попробуем дать чуть лучшую аппроксимацию истинному кватерниону поворота:


Осторожно, спойлеры!


Снова применим обозначение


(без него нам было бы совсем туго, с коэффициентами наподобие 3840)

Норма этого кватерниона составит:


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

Отнормируем кватернион:


Сравнивая с разложением синуса и косинуса в ряд, обнаруживаем, что первой будет проявляться ошибка в синусе - в нашем Μ2норм вообще нет слагаемого с третьей степенью! Ошибка в кватернионе составит:


Ошибка по углу будет вдвое больше (поскольку в кватернионах используются половинные углы) и составит


то есть ошибка уменьшилась всего лишь в два раза, сохранив ту же самую кубическую зависимость от шага интегрирования!

При использовании метода «первого порядка» нам было нужно 12 умножений и 12 сложений для перемножения кватернионов. Добавим сюда ещё три умножения на Δt/2 - получится 15m + 12a.

В данном методе 2-го порядка придётся использовать 16 умножений и 12 сложений для перемножения кватернионов, ведь скалярная часть больше не равна единице! К тому же, нам нужно найти квадрат модуля вектора конечного поворота, после чего поделить его на 8 - эти операции требуют ещё 4 умножения и 2 сложения, так что в итоге получаем 23 умножения и 14 сложений, что делает этот метод на 40..50% более затратным, чем предыдущий.

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

Проверка на нашем примере позволяет подтвердить изложенные оценки - ошибка действительно снижается в два раза, а норма за 72 шага становится равной 1,000033.

Модифицированный метод второго порядка
Оценивая ошибки двух методов, приведённых выше, можно заметить интересную особенность: введение слагаемого второго порядка не влияет (разве что слагаемым четвёртого порядка) на скалярную (действительную) часть кватерниона после его нормировки, тогда как слагаемое третьего порядка в векторной части явно от него зависит. Так почему бы не найти такое слагаемое, чтобы и его «подогнать» под правильный ответ?

Ответ будем искать в виде:


Норма будет равна:


Отнормируем кватернион:


(здесь мы учитывали слагаемые до третьего порядка включительно)

Как и ожидалось, скалярная компонента не зависит от α, тогда как коэффициент при φ3 в векторной компоненте мы можем задать какой угодно. Выберем его так, чтобы векторная компонента соответствовала разложению синуса в ряд:


Искомая формула для модифицированного метода второго порядка выглядит так:


Всё отличие - вместо 1/8 у нас тут стоит 1/12.

И мы уже знаем, что ошибка третьего порядка (связанная с нелинейностью - с угловым ускорением мы здесь ничего сделать не можем!) у нас уйдёт. А как насчёт четвёртого порядка?
Снова запишем норму кватерниона:


Разложим величину, обратную к норме, в ряд Тэйлора, до 4-го порядка включительно:


Теперь отнормируем кватернион, оставляя слагаемые до пятого порядка включительно:


Обнаруживается чудесная вещь: слагаемое четвёртого порядка тоже оказалось абсолютно верным, тогда как расхождение кроется в пятом порядке и составляет:


Ошибка по углу будет вдвое больше (поскольку в кватернионах используются половинные углы) и составит


потрясающий результат, ведь не только ошибка интегрирования при уменьшении шага вдвое падает в 16 раз, но и число в знаменателе стоит огромное!

В нашем примере, всё так же используя шаг 5 градусов и сделав 72 шага (полный оборот), получаем ошибку по углу 2,9×10-5 градуса, или 0,1''.

Улучшение по сравнению с методом «первого порядка» составило 7 500 раз (!). Норма кватерниона растёт втрое медленнее, чем в методе «первого порядка», в нашем примере она достигла значения 1,023 за весь оборот. Это не так хорошо, как в обычном методе «второго порядка», рассмотренного выше, но всё равно очень достойно.

Данный метод был предложен в статье [Захарин М.И., Сокол В.Ф., Вычисление координат вектора ориентации при переменном шаге получения квазикоординат // Кибернетика и вычислительная техника - 1986 - Вып. 69. - С. 52-57]. Если она у кого-то есть в бумажном или электронном виде - напишите, пожалуйста, в ЛС.

Эта статья и её основные результаты были упомянуты в книге "Введение в теорию Бесплатформенных Инерциальных Навигационных Систем (БИНС)" Бранца и Шмыглевского, 1992 года.

Осталось обсудить методы интегрирования более высоких порядков, и разобраться: а какой же из них применять? И практические примеры.

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

Previous post Next post
Up