gpt4 book ai didi

android - 从作为四元数的旋转到度数 (0 - 360°)

转载 作者:搜寻专家 更新时间:2023-11-01 09:47:31 24 4
gpt4 key购买 nike

我已经在机器人上横向安装了一个 Google Project Tango 设备,并希望从 onPoseAvailable() 事件监听器获取航向。我知道框架会返回 API 中描述的四元数。

我尝试了很多方法将四元数转换为仅以度为单位的测量值。我唯一感兴趣的方向轴是 y ( https://developers.google.com/project-tango/overview/coordinate-systems#project_tango_coordinate_systems ),它决定了我的机器人的航向。

我的第一个方法是使用 TYPE_ROTATION_VECTORTYPE_GYROSCOPETYPE_ORIENTATION(已删除)。但结果值无法使用。后来我读到 Tango 的磁传感器存在重大问题 (How to detect an absolute rotation of an android device)

这就是从探戈本身切换到姿势数据的原因。但这里也一样。要获得适当的结果要么是火箭科学,要么探戈在这里也存在重大问题。我阅读了所有 stackoverflow 文章以及我在互联网上找到的几乎所有内容。我重新实现了几乎所有找到的代码。但对于我目前的情况,没有一 block 能按预期工作。对于其他轴上的其他运动,它是!

我尝试了以下方法:

或者是否有另一种方法来确定机器人应用程序的旋转? (只是标题)。我唯一想要实现的是以预定义的角度(以度为单位)转弯。大多数情况下,我只想向右或向左转 (90°)。

如果有人能提供一段工作代码(针对 Google Project Tango 设备),将会很有帮助。已经失去了几天。对于其他 Android 设备,我很快就找到了解决方案。不排除该设备存在其他重大缺陷。

最佳答案

试试这段代码。请注意,计算出的方向是相对于服务启动时的设备方向。

double orientationRoll = Math.toDegrees(Math.atan2(
2.0 * (rotation[TangoPoseData.INDEX_ROTATION_X] * rotation[TangoPoseData.INDEX_ROTATION_Y] + rotation[TangoPoseData.INDEX_ROTATION_W] * rotation[TangoPoseData.INDEX_ROTATION_Z]),
Math.pow(rotation[TangoPoseData.INDEX_ROTATION_W], 2) + Math.pow(rotation[TangoPoseData.INDEX_ROTATION_X], 2) - Math.pow(rotation[TangoPoseData.INDEX_ROTATION_Y], 2) - Math.pow(rotation[TangoPoseData.INDEX_ROTATION_Z], 2)
));

关于android - 从作为四元数的旋转到度数 (0 - 360°),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37275297/

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