Мне недавно пришлось конвертировать скорости вращения Эйлера в векторную angular скорость. Из того, что я понимаю, в локальной референции мы можем express векторную angular скорость:
R = [rollRate, pitchRate, yawRate] (which is the correct order relative to the referential I want to use).
Я также знаю, что мы можем преобразовать angular скорости в вращения (кватернионы) для заданный временной шаг через:
alpha = |R| * ts
nR = R / |R| * sin(alpha) <-- normalize and multiply each element by sin(alpha)
Q = [nRx i, nRy j, nRz k, cos(alpha)]
Когда я проверяю это для каждой оси индивидуально, я нахожу результаты, которые я полностью ожидаю (то есть шаг 90 ° / единица времени для 1 единицы времени => угол шага 90 ° ).
Когда я использую две оси для своих скоростей вращения, я не до конца понимаю результаты:
Например, если я использую rollRate = 0, pitchRate = 90, yawRate = 90, применив вращение для заданного временного шага и преобразовав полученный кватернион обратно в эйлер, я получаю следующие результаты:
(ts = 0.1) Roll: 0.712676, Pitch: 8.96267, Yaw: 9.07438
(ts = 0.5) Roll: 21.058, Pitch: 39.3148, Yaw: 54.9771
(ts = 1.0) Roll: 76.2033, Pitch: 34.2386, Yaw: 137.111
I Понимаю, что «плавное» непрерывное вращение может изменить компонент ролика в середине
Что я не понимаю, тем не менее, после полной единицы времени с pitchRate в единицах времени 90 ° / единица времени в сочетании с yawRate в единицах времени 90 ° / я заканчиваю с этими углами шага и рыскания и почему у меня еще есть крен (я бы ожидал, что они окажутся в [0 °, 90 °, 90 °].
Я довольно уверен как по моей оси + угол к кватерниону, так и по моему кватерниону по формулам Эйлера, пока я '' Я проверил их всесторонне (как с помощью юнит-тестирования, так и с помощью полевых испытаний), однако я не уверен насчет скорости вращения Эйлера в angular -скорость "конверсии".
Моя первая ставка была бы на то, что я Я не понимаю, как оси скоростей вращения Эйлера взаимодействуют друг с другом, моя вторая мысль: это «преобразование» между скоростями вращения Эйлера и вектором скорости angular неверно.