繁体   English   中英

在C#中使用四元数表示陀螺仪角度

[英]Using Quaternion to represent gyroscope angle in C#

我正在使用WiiM +陀螺仪来计算旋转。

我整合了沿偏航,俯仰和横滚轴的旋转速率,并将其存储在称为angleSum的向量中

因此,对于每个读数,angleSum(reading)表示从初始方向开始的y,p和r旋转。

然后,我使用四元数(我完全不熟悉)表示如下:

q =四元数.createfromyawPitchRoll(angleSum.yaw,angleSum.pitch,angleSum.roll *(-1))

但是,当我将Wiimote方向旋转90度并打印出转弯处的qx,qy和qz时,所有读数都会受到转弯的影响(它们都显示90度转弯和向后旋转,尽管其中两个幅度较小)

我的问题很基本:我如何使用四元数结构来表示方向? 就偏航,俯仰和横滚而言,我需要一个绝对(或至少相对)的方向。

谢谢!

四元数是一个松散地定义为轴和围绕所定义轴(通常表示为{x, y, z, w} )的旋转分量的四维构造。 看一下您引用的方法后,我假设您提供的是偏航角,俯仰角和弧度而不是度数。 这将消除表中最常见的实现错误。

假设您的实现是正确的(似乎是正确的),则qxqyqz都将随旋转而变化。 请记住,您正在定义一个四维对象; 四元数是一样的欧拉角。

如果您获得更多的人性化Euler标记读出,考虑将你的四元数回偏航,俯仰和滚转。 这是在XNA中这样做的讨论

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM