2

Sphero ロボット ボールを端に沿って操縦して部屋をマッピングするアプリを開発しています。

このためには、sphero から (android) アプリに継続的にストリーミングされる 3 つのデータセットが必要です。

  • 部屋の「内側」に入るコーナーを検出する衝突検出
  • 検出されたコーナーがどこにあるかを知るためのロケータ データ
  • 部屋の「外側」に出る角を検出するために、Sphero を横に動かし、端に向かって少し傾けて運転します。

衝突検出とロケータ データ ストリーミングの実装は問題なく動作していますが、移動データの追加ストリーミングについていくつか質問があります。

最初の大きな問題は、ロケーター データと移動データが非同期データ ストリーミングを介して同じ方法でストリーミングされるため、これを行う方法です。この質問は、Sphero サポートに電子メールで問い合わせたときにすでに回答がありました。

SetDataStreamingCommand で宣言された複数のデータ ストリーミング マスクをビットごとの OR (|) でリンクすることにより、複数のデータセットを同時にストリーミングするように Sphero を構成できます。

ただし、まだ未解決の質問があります。

  1. 移動データに速度 x マスクを使用することを計画しています。このデータは球相対 (運転方向に対して 90° の角度での移動) またはワールド相対 (ロケータ速度データなど) ですか?

  2. リスナーに渡されるイベント データの中で、速度 x データはどこに格納されますか?

あなたの答えを前にありがとう

4

1 に答える 1

1

Velocity X値はロケーターの一部であるため、ロケーターグリッドに対する相対速度です。

AsyncDataListenerでデータを取得すると、ロケーター情報に使用したのと同じLocatorDataオブジェクトで値を見つけることができます。

LocatorData#getVelocityX():float

そのようです:

data.getVelocityX();

ただし、今回は、以前にSetDataStreamingCommandで速度を要求していたため、値にはゼロではなく実際に情報が含まれます。

于 2013-03-14T19:19:19.740 に答える