nabbla (nabbla1) wrote,
nabbla
nabbla1

Category:

Ликбез по кватернионам, часть 6 1/4, кратчайший поворот в общем случае

Часть 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-го порядка
Часть 11 - интегрирование угловых скоростей, методы высших порядков (в разработке)
Часть 12 - навигационная задача
Часть 13 - Дэвенпорт берёт след!
Часть 14 - линейный метод Мортари-Маркли
Часть 15 - среднее от двух кватернионов
Часть 15 1/2 - проверка и усреднение кватернионов
Часть 16 - разложение кватерниона на повороты

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

Кватернион поворота по кратчайшему пути, общий случай
Нам даны два вектора и произвольной длины (но не нулевые!). Мы хотим найти такой поворот, который переведёт направление в направление по кратчайшему пути.
Разумеется, задачу можно свести к предыдущей, отнормировав векторы и , но тогда нам понадобится в общей сложности три извлечения квадратного корня – мы можем и лучше!


Запишем, чему равны скалярное и векторное произведение и :

(7.10)


Снова выпишем кватернион поворота по кратчайшему пути:
(7.5)


и преобразуем его, принимая во внимание (7.10):



Принимая во внимание формулу косинуса двойного угла:


Получаем выражение:



Как и раньше, нам не требуется считать знаменатель «в лоб». Лучше найдём сначала ненормированный кватернион:


Причем можно заметить, что первое слагаемое требует извлечения только одного квадратного корня,


Далее, если , нормируем его и получаем ответ. Нулевое значение, как и раньше, возникает в ситуации, когда и направлены в противоположные стороны, . Тогда поворот на 180 градусов по любому из направлений будет одинаково «коротким», и нам придётся выбрать какой-нибудь из них самостоятельно, например, тем же способом, что в главе 7.1.

Тогда, итоговый метод выглядит так:


(7.11)



Одна из задач, где может пригодиться данный метод, такова.
Мы делаем бесплатформенную инерциальную навигационную систему, причем иногда возникают моменты, когда нам говорят - никакого ускорения сейчас не действует, всё, что чувствует акселерометр - это сила тяжести. И тогда нам хочется подправить кватернион ориентации, чтобы хоть вертикальная ось стала сонаправлена вектору силы тяжести.

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

UPD. Страшно подумать - я начал писать этот ликбез уже чуть более года назад... Но не беспокойтесь - у меня в загашниках лежит 3 главы, которые я пока не переложил в формат ЖЖ, 2 приложения, список литературы, да и коллекция упражнений потихоньку набирается.
Tags: кватернионы-это просто (том 1), математика, работа
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 2 comments