2

我正在开发一个应用程序,它通过沿房间边缘操纵 Sphero 机器人球来映射房间。

为此,我需要三个数据集从 sphero 连续流式传输到(android)应用程序:

  • 碰撞检测以检测进入房间“内部”的角落
  • 定位器数据以了解检测到的角落在哪里
  • Sphero 向一侧移动,同时驱动稍微向边缘倾斜,以检测房间“外面”的角落。

我的碰撞检测和定位器数据流的实现没有问题,但是关于额外的流运动数据有一些问题。

第一个大问题是如何做到这一点,因为定位数据和移动数据通过异步数据流以相同的方式流式传输。当我通过电子邮件联系 Sphero 支持时,这个问题已经得到解答:

通过按位或 (|) 链接在 SetDataStreamingCommand 中声明的多个数据流掩码,可以将 Sphero 配置为同时流式传输多个数据集。

但是,我仍有未解决的问题:

  1. 我计划使用velocity-x 掩码来获取运动数据,这些数据是相对于球体(与行驶方向成90° 角的运动)还是相对于世界(如定位器速度数据)?

  2. 在传递给侦听器的事件数据中,velocity-x 数据将存储在哪里?

谢谢你的回答

4

1 回答 1

1

速度 X 值是定位器的一部分,因此它是相对于定位器网格的速度。

当您在 AsyncDataListener 中取回数据时,您可以在用于定位器信息的同一 LocatorData 对象中找到值:

LocatorData#getVelocityX():float

像这样:

data.getVelocityX();

然而,这一次,这些值实际上将包含信息而不是零,因为您之前在 SetDataStreamingCommand 中询问了速度。

于 2013-03-14T19:19:19.740 回答