Неоднозначность преобразования DCM в Quaternion с использованием блока библиотеки Simulink по умолчанию
Я моделирую систему, в которой мне нужно преобразование матрицы косинуса в кватернион. Я использую блок преобразования DCM в Quaternion по умолчанию, доступный в Simulink. Однако в некоторых точках моделирования выходные кватернионные компоненты меняют знак.
К сожалению, я не могу прикрепить изображение сюжета.
Хотя это математически правильно, я хочу плавного изменения. Любая идея о том, как избежать этого и получить плавную кривую для кватерниона?
Обновление 1: http://tinypic.com/view.php?pic=33dayap&s=6
Выше - смоделированный сюжет. Первый участок имеет выход кватерниона. Второй сюжет имеет Направление Косинус Матрицы. Как вы видите, хотя компоненты dcm изменяются плавно, знак кватерниона резко меняется.
1 ответ
Проблема возникает из-за свойства двойного покрытия кватернионов: два единичных кватерниона соответствуют каждому вращению. В какой-то момент, согласно некоторому правилу, реализация Matlab переключилась с одного кватерниона на другой. Вы ничего не можете с этим поделать.
Грязный обходной путь - написать собственную матрицу вращения в преобразование кватернионов и выбрать то представление двух возможностей, которое ближе к предыдущему, что позволяет избежать внезапных скачков. Это грязно.
Построение кватернионов обычно не требуется в практических приложениях. Скорее всего, вы вращаете объект / вектор. Если вы нанесете на карту этот объект / вектор (или некоторые его проекции), вы не получите резких скачков, даже если в представлении вращения есть скачки. Другое преимущество построения проекций повернутого объекта состоит в том, что интерпретировать эти графики обычно гораздо проще, чем кватернионы. Я не знаю, имеет ли это смысл в вашем приложении; у меня это прекрасно работало.