gpt4 book ai didi

orientation - 如何基于3D陀螺仪数据更新四元数?

转载 作者:行者123 更新时间:2023-12-03 11:26:15 25 4
gpt4 key购买 nike

我有一个初始四元数q0。我得到了角速度测量结果,对速度进行了积分,所以在50Hz左右获得了3个角度。如何基于3个角度制作四元数?我不能只做3个四元数,可以吗?

所以要说清楚。

Q.new = Q.new * Q.update(alfa,beta,gamma)

Q.new代表我当前的四元数方向,我想乘以Q.update四元数来更新它。如何使用角度进行Q.update?

谢谢!

最佳答案

原谅我线程坏死,但答案似乎都很复杂,有些人,例如我,可能更喜欢这种“方便”的方法:
假设ω=(alpha,beta,gamma)是陀螺仪的测得角速度矢量。然后我们旋转

theta = ||omega||*dt; //length of angular velocity vector
周围有许多单位(度数或弧度取决于陀螺仪)
v = omega / ( ||omega|| ); // normalized orientation of angular velocity vector
因此,我们可以将旋转四元数构造为:
Q.update = (cos(theta/2),v_x * sin(theta/2), v_y * sin(theta/2), v_z * sin(theta/2));
现在剩下的就是通过 Q.update旋转我们当前的旋转。这很简单:
Q.new = multiply_quaternions(Q.update,Q.new); 
// note that Q.update * Q.new != Q.new * Q.update for quaternions
完毕。四元数很漂亮,不是吗?
关于陀螺仪和四元数的一些幻灯片可能会有用:
http://stanford.edu/class/ee267/lectures/lecture10.pdf

关于orientation - 如何基于3D陀螺仪数据更新四元数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23503151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com