3

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

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

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

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

4

3 回答 3

1

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

.

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

于 2013-10-14T00:16:09.043 回答
0

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

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

于 2011-12-02T12:06:56.530 回答
0

Mindstorms 没有 OR 函数。

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

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

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

于 2011-12-19T15:57:05.067 回答