【问题标题】:Mindstorm NXT Programming Loop Exit ConditionsMindstorm NXT 编程循环退出条件
【发布时间】:2011-12-01 21:43:06
【问题描述】:

我正在为工程课开发一个机器人。就课程而言,我需要使用 NXT 编程语言。要移动,机器人需要遵循一条实心黑线。

如果机器人松了线,我让它向左扫描 1 秒钟,或者直到它到达一条黑线。如果没有找到线,它会向右扫描 2 秒,以便到达初始位置,然后再多 1 秒或实现旋转。

我已经设置了循环,如果没有找到线,机器人会继续移动。运行整整 1 秒的时间段。如果找到这条线,则运动停止,但整秒仍需完成。最终,这意味着我的程序可以完美运行,但速度真的很慢。

tl;dr 有没有办法在 LEGO Mindstorm 编程环境中创建具有两个退出条件的循环?是在 1 秒过后,还是传感器获得所需的输入?

【问题讨论】:

  • 我重新标记它是否正确?

标签: robotics nxt mindstorms


【解决方案1】:

最后两个块是设置为“OR”的逻辑块。在这种情况下,正在监视 3 个传感器。如果任何一个被绊倒,程序就会退出循环。

这是http://www.hightechkids.org/sites/default/files/CoachingLibrary/fll_programming_101_nxt_g.pdf的第86页

【讨论】:

    【解决方案2】:

    您可以做的是缩短超时时间(例如 100 毫秒)并在找到线路或循环运行 10 次时停止。

    我不是头脑风暴专家,但我希望它具有 OR 功能。

    【讨论】:

    • Logical 块位于 IIRC 的高级部分下。
    【解决方案3】:

    Mindstorms 没有 OR 函数。

    解决方案是创建一个退出变量,然后有两个 switch 语句。在上面的示例中,我有一个带有计时器的 switch 语句,另一个带有传感器输出。将 exit 变量设置为 false,然后在 while 循环内运行,直到 exit 变量为 true。

    如果计时器到期,则将该变量设置为 true,否则忽略退出变量。对传感器的输出执行相同操作。

    这是一个混乱且相当冗长的解决方案,但它在相当有限的 LEGO Mindstorms 系统内完美地解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 2012-03-01
      相关资源
      最近更新 更多