Matlab 使用默认Simulink库块进行DCM到四元数转换时的模糊性

Matlab 使用默认Simulink库块进行DCM到四元数转换时的模糊性,matlab,simulink,quaternions,kinematics,Matlab,Simulink,Quaternions,Kinematics,我正在模拟一个需要方向余弦矩阵到四元数转换的系统。我使用simulink中提供的默认DCM到四元数转换块。但是,在模拟的某些点上,输出四元数分量的符号相反 很遗憾,我无法附加绘图图像 虽然这在数学上是正确的,但我希望有一个平稳的变化。你知道如何避免这种情况并为四元数绘制一条平滑的曲线吗 更新1: 上面是模拟图。第一个曲线图是输出四元数的曲线图。第二个图是方向余弦矩阵。正如您所看到的,即使dcm组件变化平稳,四元数符号也会突然变化 问题的产生是因为四元数的特性:两个单位四元数对应于每个旋转。在某

我正在模拟一个需要方向余弦矩阵到四元数转换的系统。我使用simulink中提供的默认DCM到四元数转换块。但是,在模拟的某些点上,输出四元数分量的符号相反

很遗憾,我无法附加绘图图像

虽然这在数学上是正确的,但我希望有一个平稳的变化。你知道如何避免这种情况并为四元数绘制一条平滑的曲线吗

更新1:


上面是模拟图。第一个曲线图是输出四元数的曲线图。第二个图是方向余弦矩阵。正如您所看到的,即使dcm组件变化平稳,四元数符号也会突然变化

问题的产生是因为四元数的特性:两个单位四元数对应于每个旋转。在某个时刻,根据某种规则,Matlab实现从一个四元数切换到另一个四元数。你对此无能为力

一个混乱的解决方法是编写您自己的旋转矩阵到四元数转换,并选择与前一种更接近的两种可能性的表示形式,从而避免突然的跳跃。很乱


在实际应用中通常不需要绘制四元数。很可能您正在旋转一个对象/向量。如果绘制该对象/向量(或其某些投影),即使旋转表示中存在跳跃,也不会得到任何突然的跳跃。绘制旋转对象的投影的另一个好处是,通常比四元数更容易解释这些打印。我不知道这在你的申请中是否有意义;它在我的工作中非常出色。

问题的产生是因为四元数的特性:每个旋转对应两个单位四元数。在某个时刻,根据某种规则,Matlab实现从一个四元数切换到另一个四元数。你对此无能为力

一个混乱的解决方法是编写您自己的旋转矩阵到四元数转换,并选择与前一种更接近的两种可能性的表示形式,从而避免突然的跳跃。很乱


在实际应用中通常不需要绘制四元数。很可能您正在旋转一个对象/向量。如果绘制该对象/向量(或其某些投影),即使旋转表示中存在跳跃,也不会得到任何突然的跳跃。绘制旋转对象的投影的另一个好处是,通常比四元数更容易解释这些打印。我不知道这在你的申请中是否有意义;它在我的电脑里运行得很好。

谢谢你的回答。我之所以对这种突然的转变有问题,是因为我使用了一种基于四元数误差向量的反馈控制律。通过确保标量四元数分量q0的符号始终为正,我能够克服这个问题(但解决方案是针对我的应用程序的)。谢谢您的回答。我之所以对这种突然的转变有问题,是因为我使用了一种基于四元数误差向量的反馈控制律。通过确保标量四元数分量q0的符号始终为正,我能够克服这个问题(但解决方案是针对我的应用程序的)。