0

我有一个用 Labview 为我的 LEGO Mindstorms NXT 2.0 编写的程序。当目标设置为计算机时,程序运行正常。但是,当我将目标设置为 NXT 时,程序的工作方式与针对计算机的情况不同。

该程序使机器人向前移动,直到距离物体 30 厘米,NXT 的超声波传感器检测到该物体。然后机器人将停止。如果物体移动,NXT 的超声波传感器 30 厘米内没有物体,机器人将再次前进,直到再次距离物体 30 厘米。然后,它将停止。

这在 Labview 中将目标设置为计算机时有效,但在设置为 NXT 时无效。当设置为 NXT 时,一旦检测到第一个物体,它将停止。但是,如果物体被移走,超声波传感器 30 厘米范围内不再有任何物体,机器人将保持静止,不会向前移动。

这是框图的屏幕截图: 框图

这是程序源代码的链接。

任何帮助将不胜感激。

4

3 回答 3

1

我对NXT的经验非常有限,但我建议你使用字符串VI在NXT的屏幕上显示一些调试数据(如i、距离等)。这将允许您确定程序在哪里,并可能帮助您找到问题。

顺便说一句,在 LV 中,通常不建议使用没有控制其执行速率的东西的循环。对于在 NXT 上运行的代码,这可能会有所不同,但我仍然建议在循环中添加一个简单的等待。

于 2011-12-07T11:43:28.873 回答
1

我在您的代码中没有看到错误,但是在部署到 NXT 目标时我会做的是使循环无限(将 Stop 替换为 False 常量)并删除波形图。NXT 不需要它们。

于 2011-12-07T12:32:49.060 回答
1

我通过添加一个 200 毫秒的等待块来降低 NXT 的速度来解决这个问题。这很奏效,似乎砖块正在超越自己。

于 2011-12-08T14:20:07.933 回答