Неоднозначность преобразования DCM в Quaternion с использованием блока библиотеки Simulink по умолчанию

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

К сожалению, я не могу прикрепить изображение сюжета.

Хотя это математически правильно, я хочу плавного изменения. Любая идея о том, как избежать этого и получить плавную кривую для кватерниона?

Обновление 1: http://tinypic.com/view.php?pic=33dayap&s=6

Выше - смоделированный сюжет. Первый участок имеет выход кватерниона. Второй сюжет имеет Направление Косинус Матрицы. Как вы видите, хотя компоненты dcm изменяются плавно, знак кватерниона резко меняется.

1 ответ

Решение

Проблема возникает из-за свойства двойного покрытия кватернионов: два единичных кватерниона соответствуют каждому вращению. В какой-то момент, согласно некоторому правилу, реализация Matlab переключилась с одного кватерниона на другой. Вы ничего не можете с этим поделать.

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

Построение кватернионов обычно не требуется в практических приложениях. Скорее всего, вы вращаете объект / вектор. Если вы нанесете на карту этот объект / вектор (или некоторые его проекции), вы не получите резких скачков, даже если в представлении вращения есть скачки. Другое преимущество построения проекций повернутого объекта состоит в том, что интерпретировать эти графики обычно гораздо проще, чем кватернионы. Я не знаю, имеет ли это смысл в вашем приложении; у меня это прекрасно работало.

Другие вопросы по тегам