Кватернионная интерполяция с согласованием скорости - PullRequest
1 голос
/ 06 декабря 2010

У меня есть объект с ориентацией и скоростью вращения вокруг каждой оси тела.Мне нужно найти плавный переход из этого состояния во второе состояние с другим набором скоростей.Кроме того, у меня есть ограничения на то, как быстро я могу вращаться / ускоряться вокруг каждой оси.

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

Это похоже на упражнение по дифференциальным уравнениям и планированию пути, но я не уверен, как именно сформулировать проблему, чтобы алгоритмы, которые там существуют, могли работать

Будем весьма благодарны за любые предложения по алгоритмам, которые могут помочь решить эту проблему, и / или советы по формулированию проблемы для работы с этими алгоритмами.

[Редактировать - вот примертип проблемы, над которой я работаю]

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

Спасибо!

1 Ответ

0 голосов
/ 07 декабря 2010

Прежде всего ваши скорости вращения вокруг каждой оси должны составлять вектор скорости вращения (т.е. w = [w_x w_y w_z] ^ T). Затем вы можете отделить величину вращения от оси вращения. Величина w_mag = w / | w |. Тогда ось - это единичный вектор u = w / w_mag. Затем вы можете обновить валовое вращение, составив пошаговое вращение, используя ваше любимое представление (то есть матрицы вращения, кватернионы). Если ваше начальное вращение - R_0, и ваше вращение приращения определяется R_inc (w_mag * dt, u ), тогда вы следуете следующим правилам композиции:

R_1 = R_0 * R_inc

R_k+1 = R_k * R_inc

наслаждаться.

...