gpt4 book ai didi

distance - 球体 : How to make it move a given length

转载 作者:行者123 更新时间:2023-12-02 19:26:54 27 4
gpt4 key购买 nike

我想让球体向前移动一定的厘米,但到目前为止我还没有设法让任何东西正常工作这是我现在的代码:

EditText distanceText = (EditText) findViewById(R.id.distanceText);
int inputMSec = Integer.parseInt(distanceText.getText().toString());
int time = (inputMSec - inputMSec/2);

// The ball is given the RollCommand at half speed.
RollCommand.sendCommand(mRobot, heading,0.5f);

// A handler is created to delay the Stop command.
final Handler handler = new Handler();
handler.postDelayed(new Runnable(){

@Override
public void run() {
// Makes the ball stop
RollCommand.sendStop(mRobot);
}
// The variable 'time' defines how long the ball rolls until it is told to stop.
}, time);

除了 RollCommand 之外,我还有其他命令可以发送到球吗?或者谁能​​找出如何处理 EditText 的输入以使距离正确?

最佳答案

没有 API 命令可以直接提供驾驶给定距离的能力。我现在唯一的方法是使用定位器的迭代策略,它提供有关球的位置信息。

以下是该策略的概述。如果您需要更多详细信息,请告诉我。

  1. 打开数据流并请求定位器位置数据。您现在应该有一些回调,为您提供每秒 20 倍的 Sphero 位置。这些位置是地板上的 (x, y) 坐标,以厘米为单位。
  2. 记录球的起始位置(x0,y0)。
  3. 在每个时间点,使用毕达哥拉斯定理/距离公式计算球目前已行进的距离。
  4. 用它来计算出球还剩多远。将此距离称为 D。
  5. 给出一个滚动命令,其中速度是根据 D 计算的。

最大的问题是:如何根据 D 决定命令的速度?我通过这样的策略取得了一些成功:(毫无疑问,你可以更好地调整它)。

  1. 如果剩余距离 D > 100cm,则命令全速。
  2. 在 D = 10cm 和 D = 100cm 之间,命令功率范围为 30% 至 100%(线性)。
  3. 如果 D < 10cm,则命令零速度以使 Sphero 停止。

这效果非常好。它会行驶、减速,并在最后几英寸处滑行直至停止。该算法的问题包括:

  1. 您必须对其进行调整以防止过冲/下冲。
  2. 当您想要命令球仅移动很短的距离时,它效果不佳,因此您可能需要对其进行调整以涵盖这些情况。

祝你好运!

关于distance - 球体 : How to make it move a given length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16649283/

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