首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Myo手链:如何从四元数到前臂方向单位矢量?

Myo手链:如何从四元数到前臂方向单位矢量?
EN

Stack Overflow用户
提问于 2018-11-23 09:06:05
回答 1查看 194关注 0票数 0

我在做一个带有肌手镯的项目。手镯使用四元数来跟踪它的方位。我想要的是一个指向我前臂方向而不定向的向量,也就是我只想要一个代表我前臂的单位向量。这有可能吗?有人知道怎么做吗?

我试着按照这个站点数学-四元数变换向量‘上的说明执行P’= QPQ^-1的四元数乘法,但我没有做到这一点。我怀疑这是因为四元数输出的Myo手镯不是一个单一的旋转,而是一个不断变化的方向/旋转,因为我的手臂/手镯。

基本上,我从Myo得到的数据是以X,Y,Z,W的形式,随着我手臂的移动而发生变化。如果有人能帮我一把,我会非常感激的。

干杯,//

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-23 16:02:09

听起来你想从四元数中得到欧拉角,所以本参考可能是一个更好的起点。Myo文档( SDK下载这里的一部分)中的hello-myo示例使用以下代码:

代码语言:javascript
复制
// Calculate Euler angles (roll, pitch, and yaw) from the unit quaternion.
float roll = atan2(2.0f * (quat.w() * quat.x() + quat.y() * quat.z()), 1.0f - 2.0f * (quat.x() * quat.x() + quat.y() * quat.y()));
float pitch = asin(max(-1.0f, min(1.0f, 2.0f * (quat.w() * quat.y() - quat.z() * quat.x()))));
float yaw = atan2(2.0f * (quat.w() * quat.z() + quat.x() * quat.y()), 1.0f - 2.0f * (quat.y() * quat.y() + quat.z() * quat.z()));

与上述不相关,也不确定它是否有用,但如果你试图在现实世界中找到手臂,你总是需要一个已知的参考或开始方向,然后比较以下所有的测量值。对于Myo,这通常是通过让佩戴者把他们的手臂放在一个已知的位置,并按下一个校准按钮。有时候,有更聪明的方法来实现这一点,但这取决于应用程序。一旦您有了引用,您将从未来的度量中减去它以获得真正的方向,本质上是:orientationReal = orientationMeasured - orientationReference,您通常希望先以四元数格式进行计算(请参阅万向节锁),但根据应用程序的不同,欧拉角可能是可以的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53443536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档