Sphero:多个数据集的异步数据流

时间:2013-03-14 08:19:13

标签: android sphero-api

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

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

  • 碰撞检测以检测“在房间内”的角落
  • 定位器数据,以了解检测到的角落
  • 的位置
  • Sphero移动到侧面,同时朝向边缘倾斜一点,以检测到“房间外”的角落。

我对碰撞检测和定位器数据流的实现没有问题,但是有一些关于其他流媒体移动数据的问题。

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

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

但是,我仍然有疑问:

  1. 我打算将velocity-x蒙版用于移动数据,这些数据是相对的(与行进方向成90°角的移动)还是世界相对的(如定位器速度数据)? / p>

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

  3. 感谢之前的答案

1 个答案:

答案 0 :(得分:1)

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

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

LocatorData#getVelocityX():float

像这样:

data.getVelocityX();

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