【问题标题】:Body axes to earth axes using rotation matrix? [openGL]使用旋转矩阵的身体轴到地球轴? [openGL]
【发布时间】:2012-08-15 17:14:11
【问题描述】:

我目前正在从事一个项目,该项目应该将从陀螺仪收集的数据表示为一个简单的 3d 图形,但我写的内容并不完全有效 - 我只是整合了轴,然后旋转了对象。

一直在寻找解决方案,发现了一个叫做旋转矩阵的东西,但我不太明白它是如何工作的 - 我想我需要取起始角度 [0,0,0] 并将它们转换成这样的矩阵,然后取陀螺数据 [yaw,pitch,roll] 并将它们转换为相似的矩阵,将它们相乘并根据这个新矩阵计算新的角度?每次我使用以前的矩阵作为“基础”获得新的陀螺仪数据包时重复此操作?

我做对了吗?我需要的是如何旋转已经旋转的对象,在某个地方有关于这个主题的任何资源吗?一直在寻找“3d 旋转矩阵”,但不是我一直在寻找的......

【问题讨论】:

    标签: math rotation linear-algebra gyroscope euler-angles


    【解决方案1】:

    关于旋转矩阵的教程以及您需要的集成在

    中进行了描述

    Direction Cosine Matrix IMU: Theory

    手稿。

    长话短说,你不能“简单地整合轴然后旋转对象”,不幸的是它比这更复杂。 :( 不过别担心,手稿会一步一步告诉你该怎么做。

    欧拉角(又名滚动、俯仰和偏航)是邪恶的,它们会破坏您应用的稳定性,请参见示例

    他们也是not useful for interpolation。只需使用旋转矩阵,您就会很高兴。

    【讨论】:

    • 只是为了我的理解——你认为欧拉角与旋转矩阵有何不同?我是如何学习的,欧拉角三元组总是可以转换为旋转矩阵,反之亦然……我一直在使用 quaternions 来避免您提到的问题;我知道他们有很大的不同......
    • “欧拉角三元组总是可以转换为旋转矩阵,反之亦然”——嗯,大多数时候,如果你忽略了欧拉的双覆盖和奇点(万向锁)问题角度。您还可以将四元数转换为旋转矩阵,反之亦然,但您也有双重覆盖(AFAIK,从未使用过)。欧拉角、旋转配合和四元数都可以用来表示完全相同的东西,旋转,只是要注意极端情况。
    • 如果我错了,请纠正我,但根据第一个链接,我需要做的就是实现方程式 17(第 15 页),其中我将 R(t) 乘以包含陀螺仪数据导数的矩阵?
    • @Benji 是的,等式 17。不,没有陀螺仪数据的导数。陀螺仪给你欧米茄,你必须得到采样率,dt。这就是计算 R(t) 所需的全部内容。
    • @Ali-'陀螺仪给你欧米茄,你必须得到采样率,dt。' - 我不明白这个 - 你的意思是我需要使用根据陀螺仪数据和采样率计算的角度(比如,它显示 300 DPS 采样 100 所以我使用 3?)还有一件事 - 好的,所以我得到了 R(t) ,我需要将它与我的坐标相乘......但是现在,哪个坐标?我有 4 个点形成一个正方形 - 我将 R(t) 与这些点的坐标相乘并得到新的坐标。下一个样本,我有 R(t+1)。我如何乘以我的新 R(t+1) 以获得 (t+1) 点坐标?起始坐标?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多